版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Robot-Framework 框架Robot Framework是一個(gè)通用的自動(dòng)化測試框架。這是系列文章中的第一篇,重點(diǎn)在全面介紹該框架。你可能可以搜索到很多關(guān)于robot框架的文章,但是都比較零散,不成體系。推出這個(gè)系列的意圖是為了在這個(gè)話題上給出一個(gè)更結(jié)構(gòu)化的視圖,并且同時(shí)會(huì)包含一些已存在的文章便于構(gòu)建更打的視圖。請注意,這第一篇文章幾乎沒有包含任何實(shí)現(xiàn)的干貨,而是一介紹整體概念為主,只有為后續(xù)文章做一些鋪墊。什么是自動(dòng)測試框架?由于介紹自動(dòng)測試框架不是本文的主題,我們只 簡單介紹一下。所謂自動(dòng)測試框架就是為了使測 試自動(dòng)化而開發(fā)的各種工具的集合,通常包括測 試用例執(zhí)行.測試報(bào)告生成、測
2、試計(jì)劃管理,以及各種接口.各種腳本支持等等。有些自動(dòng)化測試框架的功能更加寬泛,還包括測試用例管理.測試計(jì)劃管理.需求管理.bug管理,版本管理.并發(fā)的任務(wù)執(zhí)行等等。Framework Core(Supportive Test-Li braries, Reporting)I /4-eusoun'u_JS212MZu2dsrsl?-eu.2ounu.lu xwds自動(dòng)化測試基本框架最小話的測試框架設(shè)計(jì)*上圖表示的是一個(gè)非常基本的自動(dòng)化測試框架。一個(gè)能夠執(zhí)行測試,能夠生成測試報(bào)告的核心系統(tǒng),并且預(yù)留出插件接口,允許開發(fā)專用的測試 功能。這樣的插件結(jié)構(gòu)保證插件的開發(fā)可以變得 比較簡單。在rob
3、ot framework中,可以允許 使用非常多的不同語言開發(fā)插件。在詳細(xì)介紹 robot framework的結(jié)構(gòu)之前,接下來我們要 先討論 keyword-driven testing。什么是 keyword-driven testing?一個(gè)keyword是一個(gè)可以被用于測試SUT(System under Test)的功能或者一個(gè)方法。 一個(gè)keyword可以被另外一個(gè)keyword定 義,也就是說keyword是分層次的: 高層次keywords:反映SUT的某個(gè)具體的 業(yè)務(wù)邏輯。 低層次keywords.將一個(gè)高層次 keyword分解為一些低層次keyword,低層 次的keyw
4、ord是高層次keyword的具體實(shí) 現(xiàn)。 技術(shù)keywords.提供技術(shù)實(shí)現(xiàn)以訪問并測 試 SUT。F面引用一副圖x來說明一下:嵌套的keyword定義F面讓我們看一個(gè)實(shí)際的例子:Google SearchArguments$SEARCH_ARGInput TextqSleep2sClick ButtonbtnGPage Should Contain$RESULT_ARGCapture Screenshotgooglesearch keyword 上面的 keyword 定義來自 Selenium Library 的Google Search KeyWord定義.也就是說 已經(jīng)有許多定義到的
5、keywords存在了,我們 叫這些預(yù)先定義好的keywords為測試庫(Test Libraries)。Robot Framwork 概述Robot "a/new。成的安短包包含核心框架以及一套標(biāo)準(zhǔn)庫。另外,還有許多外部庫(additional external Test Libraries) o 這 些外部庫由robot framework的社區(qū)提供,服務(wù)于各種不同目的。可以隨意將所有的keyword和不同的庫混合使用。比如你可以用selenium庫的keywords寫一個(gè)測試web應(yīng)用的例子,甚至可以遠(yuǎn)程的控制瀏覽器執(zhí)行測試用例,同時(shí)使用數(shù)據(jù)庫庫去檢查某些操作的結(jié)果。甚至不需要
6、寫一行代碼,只需組合現(xiàn)有的keyword ,用他們定義出一個(gè)高級別keyword 即可。Robot Framework Core(Standard Libraries, Reporting)External LibraryExternalLibraryExternal LibraryTestsuite TestsuiteTestsuiteRobot: Framework -DE(ROE)Robot Framework還提供了一個(gè)圖形界面的 的開發(fā)工具(RIDE),用于幫助開發(fā)和管理測試用 例。但是,測試庫中的技術(shù)keyword是不能使 用RIDE開發(fā)的。因?yàn)闇y試庫中的keyword必 須與其開
7、發(fā)語言所使用的IDE緊密結(jié)合,如使用 java語言開發(fā)測試庫時(shí),eclipse通常是一個(gè)選擇。測試用例的集合叫做Testsuites,測試用例保存在Resource Files中,構(gòu)成了 Robot Framework的三層開發(fā)架構(gòu)。Testsuites:測試用例(或檢查點(diǎn))在這里被實(shí)現(xiàn)。每一個(gè)項(xiàng)目至少有一個(gè)testsuite。在大一點(diǎn)的項(xiàng)目中,不同的測試功能會(huì)被放入不同的 Testsuite。Resource Files:定義高級別的 keyword Resource Files 是可以復(fù)用的。Test Library:每一個(gè) technical keyword 需要-一個(gè)新的Test Li
8、brary實(shí)現(xiàn)。但是除非 你用的是非常特出的技術(shù),一般來說不需要寫 新的technical keywords。而且實(shí)現(xiàn)一個(gè) Test Library并不費(fèi)力。必須強(qiáng)調(diào),當(dāng)使用keyword時(shí),無論使用本地 實(shí)現(xiàn)的Test Library還是使用現(xiàn)存的 keywords組合,沒有任何區(qū)別。Robot Framework和他的核心庫是Python寫成的.所以Robot Frameword天然支持Python。通過Jython ,我們可以使用java來實(shí)現(xiàn)Test Library ,或者甚至任何能夠通過Java調(diào)用的語言。通過IronPython , RobotFramework可以和.NET集成。
9、可能的安裝是:MinimalStack JythonStack JAR StackExternal Test LibsRobotlDE(RIDE)Robot FrameworkPythonExternal Test LibsRobotlDE(RIDE)Robot FrameworkPythonExternal Test LibsRobotlDE(RIDE)RFJAR + LibsJython遠(yuǎn)程庫(Remote Libraries)遠(yuǎn)程庫使我們可以在沒有安裝Robot Framework的機(jī)器上運(yùn)行測試庫(Test Library),并且只要支持XML-RPC的語言就可 以編寫測試庫。遠(yuǎn)程庫與
10、普通的庫的使用沒有很大區(qū)別,除了在 測試用力或者資源文件的導(dǎo)入方式上。RIDE同 時(shí)也支持遠(yuǎn)程庫。如果想學(xué)習(xí)遠(yuǎn)程庫的開發(fā),可 以參看數(shù)據(jù)庫庫(Database Library)。遠(yuǎn)程 庫的功能實(shí)際上是一個(gè)測試庫的addon提供 的,另外,遠(yuǎn)程庫啟動(dòng)后,成為一個(gè)server, 而robot framework作為client去連接的它。當(dāng)使用Robot Framework創(chuàng)建一個(gè)新的工程時(shí),首先我們可能需要思考以下 幾個(gè)問題:1» 使用哪種編程語言:Python、Jython還是Java?2. 測試腳本應(yīng)該使用哪種格式(HTML、TEXT> BDD) ?3. 是否需要使用Robo
11、t IDE (RIDE) ?4. 如何在本地或ci環(huán)境上執(zhí)行測試?5. 如何執(zhí)行測試(scripting、ANT、Maven) ?Robot Framework提供給我們很多的設(shè)置選擇,那么,應(yīng)該如何取舍?當(dāng)然, 你可以在Eclipse中使用Maven開始Robot測試,然后使用BDD格式編寫你的 測試用例(比使用HI見格式更加靈活),這是一個(gè)很不錯(cuò)的方式。但是我們的核心思想是:簡明!那么,讓我們一起來創(chuàng)建一個(gè)簡明且穩(wěn)定的Robot Framework工程2. 1初步思考在新建Robot Framework工程前,我們要分析被測系統(tǒng)需要使用哪些測試庫。 來看幾個(gè)例子: web程序測試:我們需要
12、導(dǎo)入SeleniumLibrary或者Selenium2Library 數(shù)據(jù)庫測試:可以使用Database庫(Python或者Java) SSH/SFTP測試:可以嘗試SSHLibrary庫除了上述例子外,還有許多其他測試庫。如果現(xiàn)有庫無法滿足你的測試要求, 你可能需要編寫一個(gè)自定義庫文件。測試庫的選擇很重要,因?yàn)槟阍诓渴餜obot Framework之前所安裝的編程語 言環(huán)境(Python或Jython/Java),將直接影響你可選擇測試庫的范圍。不過, 你也可以在Python環(huán)境中使用遠(yuǎn)程庫接口調(diào)用Java的測試庫。讓我們設(shè)想一下,有一個(gè)使用數(shù)據(jù)庫的web應(yīng)用程序例子。為了讓例子看上 去
13、盡可能像一個(gè)web被測應(yīng)用,我們將用google和本地MySQL數(shù)據(jù)庫為例。該 實(shí)例將展示如何混合使用多個(gè)不同的測試庫(本例中使用SeleniumLibrary和 DatabaseLibrary),并同時(shí)使用DatabaseLibrary的遠(yuǎn)程庫功能。Tip:本章的完整的示例源碼可以從GitHub下載2. 2 測試部署結(jié)構(gòu)下圖展示了測試部署結(jié)構(gòu)的模型:WebServerSystem under TestDatabaseHTTPJDBCSeleniumServerRobot Framework(Python)XML-RPCDaiabasel ibraryServerj TCP/IP jSelen
14、iumLibraryDatabaseLibraryTest Implementation(Test Suites, Resourc e Files)概述Selenium通常需要一個(gè)Server。你可以把Server和Robot Framework部署 在同一臺(tái)機(jī)器上,也可以部署在任何一臺(tái)通過TCP/IP協(xié)議連接的計(jì)算機(jī)上。 DatabaseLibrary 也是一樣,DatabaseLibrary 運(yùn)行需要 RPC。當(dāng)然,所有的server都是在本地運(yùn)行的。在一些官方的測試環(huán)境中,通常 Robot Framework被集成在一個(gè)CI服務(wù)器上,而Selenium Server部署在一些 Windo
15、ws系統(tǒng)測試機(jī)上執(zhí)行測試,這樣你就可以在不同終端上測試各種版本的瀏 UA-JW 見器。2.3測試實(shí)施&組織終于,我們要開始具體的測試實(shí)施章節(jié)了。我們不會(huì)講的太細(xì),具體的細(xì)節(jié) 可以參閱本例工程源文件,但是,有幾個(gè)問題我們需要關(guān)注一下。測試腳本格式Robot Framework的測試腳本支持HTML, Text, BDD等格式,測試腳本所使 用的文件格式將影響我們是否需要使用RIDE編輯器。Tip:如果已經(jīng)存在一個(gè)可用的數(shù)據(jù)編輯工具,如Excel,可以把數(shù)據(jù)編輯好后 直接復(fù)制粘貼到RIDE里。當(dāng)然,很重要的一點(diǎn)是測試既可以在本地也可以在服務(wù)器上(CI環(huán)境)執(zhí) 行。這對于Robot Fram
16、ework來說很容易,你可以通過參數(shù)化關(guān)鍵字來實(shí)現(xiàn)分 布式部署。舉幾個(gè)例子: web應(yīng)用程序的起始URL , Selenium Server的IP地址和端口 JDBC使用Database Library連接數(shù)據(jù)庫的字符串Z這些參數(shù)通常被存放在變量文件(variable file)中。變量文件可以在命 令行中作為可選參數(shù)傳遞給Robot Framework。參數(shù)化便于我們在本地和CI服 務(wù)器上操作不同的啟動(dòng)腳本。文件結(jié)構(gòu)Directory Structurerobotexecutionimplementationlocalserverlibscriptssettingsscripts項(xiàng)目文件結(jié)構(gòu)
17、定義一個(gè)通用文件結(jié)構(gòu)以便于不同工程重用。上圖展示了文件結(jié)構(gòu)的布局。Tip :盡量使用相對路徑。例如:從testsuite中引用一個(gè)資源文件或者把一個(gè)testsuite作為一個(gè)參 數(shù)傳給robot啟動(dòng)腳本。首先,我們新建一個(gè)頂級目錄(robot),然后我們把該目錄劃分成實(shí)施(implementation)和執(zhí)行(execution)。在 implementation 目錄中,包含 testsuites和resources兩個(gè)目錄,分別用來存放測試套件腳本和資源文件。 當(dāng)然,在一些大型的項(xiàng)目中,需要更深的文件結(jié)構(gòu)。需要注意的是,在引用任 何其他文件時(shí)(e.g.在testsuit中引用資源文件),所
18、有的路徑信息請使用相 對路徑。execution文件夾用于處理不同的目標(biāo)環(huán)境,通常,這包括本地環(huán)境(local) 和CI環(huán)境(server)。scripts文件夾用于存放腳本文件(robot腳本selenium server, DatabaseLibrary遠(yuǎn)程server) , settings文件夾用于存放指定的變 量文件。最后來看下lib文件夾。它是用來存放自己編寫的庫文件或現(xiàn)成的庫文件。2.4 啟動(dòng)在談到執(zhí)行測試時(shí),我推薦大家使用shell腳本。shell腳本簡單易懂,不 容易出現(xiàn)問題,并且在CI環(huán)境中使用方便。在開始前我們在本例中準(zhǔn)備了三個(gè)腳本,分別用于:1. 啟動(dòng)robot測試的腳
19、本2. 啟動(dòng) Selenium Server 的腳本3. 啟動(dòng) Database Library RemoteServer的腳本2.5首先我們需要安裝Robot Framework以及所需的測試庫。假設(shè)我們的操作系 統(tǒng)是 Windows oTip : Robot Framework 不支持 3.x 版本的 Python。在本例中將需要安裝以下安裝包:L python-2. 6 6. msi - Python 2. 6. 62. robotframework-2 7. L Win32, exeRobot Framework 2. 7. 13. wxPython2. 8-Win32-Unicode
20、-2. 8. 12. l-py26. exe - wxPython 2. 8. 12. 1 (RIDE 的 UI 庫)4. robotframework-ride-0. 43. 3. Win32, exe- RIDE 0. 43. 35. robotframework-seleniumlibrary-2. 8. 1.Win32, exe - Selenium2Library 2. 8. 16. dblibrary-2. 0-server. jar - DatabaseLibrary Server 2. 0按順序安裝前五個(gè)安裝包(我一直使用的是默認(rèn)安裝設(shè)置)。然后把以下路 徑加到PATH環(huán)境變量
21、中:“C:Python26;C:Python26Scripts安裝完畢后,你應(yīng)該可以通過“pybot - version” 命令來執(zhí)行 Robot Framework 了,并 且可以從"C:Python26Scriptsride.py”啟 動(dòng) RIDEoRobot Framework & RIDE下載 Database Library JAR。Selenium Library通常都附帶相應(yīng)的Selenium Server JAR。為了能夠從 Robot中獨(dú)立使用它,你需要定義一個(gè)新的環(huán)境變量RF_H0ME,執(zhí)行你Python 的安裝目錄(默認(rèn)是“C:Python26"
22、;)。該變量用于本地腳本啟動(dòng)selenium servero在本例中為了使用本地MySQL數(shù)據(jù)庫,你必須按如下創(chuàng)建測試模式和相應(yīng) 的用戶:C:xamppmysqlbin>mysql -u root - pmysql> create databasedatabaselibrarydemo;mysql> create user 'dblib'' localhostidentified by'dblib,;mysql> grant all privileges ondatabaselibrarydemo. * to 'dblib;當(dāng)然,
23、在不同的系統(tǒng)上操作會(huì)略有不同。所有的測試腳本都在路徑robot/execution/local/scripts中。robot/implementation/testsuites中包含了測試實(shí)施內(nèi)容。你可以在RIDE中 直接導(dǎo)入implementation目錄,RIDE將展現(xiàn)一個(gè)良好的編輯視圖。所有的測試 腳本可以直接被查看或編輯。在開始測試之前,Selenium-Server和DBLibrary-Server必須啟動(dòng)。之后 可以執(zhí)行testsuite。用于啟動(dòng)的批處理腳本可以在 robotexecutionlocalscripts 目錄中找到。2.6 結(jié)語我們看到,Robot Framewor
24、k提供了大量的功能,甚至同一個(gè)功能提供了多 種實(shí)現(xiàn)方式。在RIDE中編輯testsuite和資源文件使用RIDE執(zhí)行功能測試更加便捷,這樣有助于在長期項(xiàng)目中維護(hù)。W.cxeionloceilsc-riptsycd CsKPytbun2Libs»£te-paceeSeL»ni.unLxkrary-libC:、Py£hoG26LIl)3 lte1Mckge«Mte len JLunLi b»Mi爐y'lSb'J,大©.砧.2阿2 14:56 :2i OM .opecqa. grLd.2eleniun .CriAL
25、«istamdAone ac rue rIMP。: laAUlfkC 1%' 1 4 :S6 :露.4病 l 4 :S6 :Z4 .48-1 I 424.48J 4 :!>G :24 .625 14:SG:24 .625 14:SG:?4.625 Lq:M0,t,2:, H6:zq,625 L-q: L4:56:M,718 M;S6;Zi.?SW 1MS?5INFO INFO IWO IHFO INFO INFO INFO INFO INFQ INFQ INFO INFOieiva -Ja r selenlviit-ue»*ver. Jar -pore 444
26、5 -sLng 1 eUindow uncKer enlnJaua: £<in Hici*ony»sitenn Inc. 17 J-Mb?-OS: IHgdm XP 5.1 xSGv2.1S.6, witl» Coi*® u2.15 .0. Built f roi* reuis ion: IS 1%Remot eWebDfiue r uist anc es slwuld. connect to: http: /1 27.0.d. 1 : 444SZvidZhul>Ue-1*5 ion Stzart ed一 St«rt cd一-Slc
27、r,”l -Started -Starved -fitartoilJet tyZS-1 .xHtt pContc xt (/nelentiun-sc rve r-d riveir, Zselcn iu« esc rue rxdrivef VHtt pGo ntvxt (/tic l«r* i«n-se rvc rg/'ac lciiiu«-5®rver 1tntpQn 通"1/】vry:,Q 產(chǎn) trnqd. j“l(fā)y j",ye*rv h?*Sorv】"H門也1日"72347c xK/WLJW)
28、Secret Lis toner on 34-445OB.Qpenq:a.JfiCty.j8tcy«SRifire,bc2358Selenium Server 啟動(dòng)順便說一句,Robot Framework的生成報(bào)告和日志非常棒,有助于發(fā)現(xiàn)測試中存在的問題。嵌入截圖的Robot Framework日志文件Robot Framework在多樣的測試庫中提供了大量預(yù)定義的測試功能。這在開 始編寫測試用例是非常有用。做一些預(yù)測試(原型)以檢查不同的測試庫,對 于我們決定使用哪些測試庫將大有幫助。言 C ;Vfl HDO.exeFC?; 4K7: 4!J« 1 : :
29、 : -19V1: ,W i 491 : 1?1 : “2 : S2 : 49J i 493 : 474 : T* : 19f.: 49b i ”0 : q?6: :-V?7: 心;: :49?; C : i": 3。: 網(wǎng): SRI ; S(12 : h«2 : 時(shí):default . gre t Jccyword docuncntat ion executeilc)SoiPFy no documeHtation availalile.default ge tjey bo i?darguments execute_sq;l_£roni_f ilc JfLJAva
30、. 】cng. St rlngr; Plfl2:bcde_default_. get_ke-yworcUocunentt ionLex<ecute_ac(l_from_f ile_ignore_©rrors JSorry, no dacumcntatiom availahlc._default_. gie t_keiywop(l_aFyuiient<: e xecute-sq;! JFruw_f ile_igno »*e_ei*p()rs J LLJava. lang. St ringr; &3dc0bb_ Act «<il t _ .
31、g»c t_Jkeyword .docunentat ion Cue rlfy.jiunbe r .of _ rows _jn<itchiiny_%fhci*e Sorrv> no dacunentatiom dvailahle.def ault_ . gc t_keyword. arguraents Iucrif y_nunbcr_of rows .mate hing_whcrc J ILjaua. lafig.£tPing;P384065default. t_J<ey wovd_docunentat ion Ci*ov_Ghoul(i_not_eKi3
32、t_in_table JSorry, no documentatlorn av«il«1)lc._def ault_. jje t_keyword_argwnents row_sh«ould._jnot_exiat_in_ta.ble LLjaua. lang. Stringr;PlBbbf9c_aefatilt»et_keywoHd Jwciinentat ionCstore_q<(ery_fcku 1il« 1Sorry, no document at ion available. default, »t.htyword «rgwncntslstort? -query result to f ilc J ILjava* lang.St rincj; P513d61_default_»et_>eyv;orcl_dociinentat ion tconpape _
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024試用期接觸勞動(dòng)合同范本
- 供應(yīng)合同-省級國家機(jī)關(guān)、事業(yè)單位和社會(huì)團(tuán)體計(jì)算機(jī)(或打印機(jī))協(xié)議供貨合同
- 廣東省七年級上學(xué)期語文期中考試試卷5套【附答案】
- 2024年車輛物流運(yùn)輸合同協(xié)議書
- 機(jī)械租賃合同模板集
- 展覽活動(dòng)中的房產(chǎn)贈(zèng)與合同
- 貨物倉儲(chǔ)出租協(xié)議
- 2024年詳細(xì)版租房協(xié)議書
- 手機(jī)銷售合同常見問題解答
- 2024版酒店經(jīng)營合作協(xié)議模板
- 干果加工項(xiàng)目建議書范文
- 人教版初中語文教材分析(課堂PPT)
- 護(hù)理核心制度督查表20179
- 紅色古色綠色文化教育活動(dòng)策劃方案
- 《Monsters 怪獸》中英對照歌詞
- 《正交分解法》導(dǎo)學(xué)案
- 建筑材料知識(shí)點(diǎn)匯總
- 平面構(gòu)成作品欣賞
- 英語管道專業(yè)術(shù)語
- 社會(huì)工作畢業(yè)論文(優(yōu)秀范文8篇)
- 五篇500字左右的短劇劇本
評論
0/150
提交評論