




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Robot Framework是一個通用的自動化測試框架。這是系列文章中的第一篇,重點在全面介紹該框架。你可能可以搜索到很多關于robot框架的文章,但是都比較零散,不成體系。推出這個系列的意圖是為了在這個話題上給出一個更結構化的視圖,并且同時會包含一些已存在的文章便于構建更打的視圖。 請注意,這第一篇文章幾乎沒有包含任何實現的干貨,而是一介紹整體概念為主,只有為后續(xù)文章做一些鋪墊。什么是自動測試框架?由于介紹自動測試框架不是本文的主題,我們只簡單介紹一下。所謂自動測試框架就是為了使測試自動化而開發(fā)的各種工具的集合,通常包括測試用例執(zhí)行、測試報告生成、測試計劃管理,以及各種接口、各種腳本支持等
2、等。有些自動化測試框架的功能更加寬泛,還包括測試用例管理、測試計劃管理、需求管理、bug管理、版本管理、并發(fā)的任務執(zhí)行等等。自動化測試基本框架最小話的測試框架設計*上圖表示的是一個非?;镜淖詣踊瘻y試框架。一個能夠執(zhí)行測試、能夠生成測試報告的核心系統(tǒng),并且預留出插件接口,允許開發(fā)專用的測試功能。這樣的插件結構保證插件的開發(fā)可以變得比較簡單。在robot framework中,可以允許使用非常多的不同語言開發(fā)插件。 在詳細介紹robot framework的結構之前,接下來我們要先討論keyword-driven testing。什么是keyword-driven testing?一個
3、keyword是一個可以被用于測試SUT(System under Test)的功能或者一個方法。一個keyword可以被另外一個keyword定義,也就是說keyword是分層次的:· 高層次keywords: 反映SUT的某個具體的業(yè)務邏輯。· 低層次keywords: 將一個高層次keyword分解為一些低層次keyword,低層次的keyword是高層次keyword的具體實現。· 技術keywords: 提供技術實現以訪問并測試SUT。下面引用一副圖×來說明一下:嵌套的keyword定義下面讓我們看一個實際的例子:
4、googlesearch keyword上面的keyword定義來自Selenium Library的Google Search KeyWord定義. 也就是說已經有許多定義到的keywords存在了,我們叫這些預先定義好的keywords為測試庫(Test Libraries)。Robot Framwork 概述Robot Framework的安裝包包含核心框架以及一套標準庫。另外,還有許多外部庫(additional external Test Libraries)。這些外部庫由robot framework的社區(qū)提供,服務于各種不同目的。可以隨意將所有的keyword和不同的庫
5、混合使用。比如你可以用selenium庫的keywords寫一個測試web應用的例子,甚至可以遠程的控制瀏覽器執(zhí)行測試用例,同時使用數據庫庫去檢查某些操作的結果。甚至不需要寫一行代碼,只需組合現有的keyword,用他們定義出一個高級別keyword即可。Robot Framework還提供了一個圖形界面的的開發(fā)工具(RIDE),用于幫助開發(fā)和管理測試用例。但是,測試庫中的技術keyword是不能使用RIDE開發(fā)的。因為測試庫中的keyword必須與其開發(fā)語言所使用的IDE緊密結合,如使用java語言開發(fā)測試庫時,eclipse通常是一個選擇。測試用例的集合叫做Testsuites,測試用例保
6、存在Resource Files中,這就構成了Robot Framework的三層開發(fā)架構。· Testsuites: 測試用例(或檢查點)在這里被實現。每一個項目至少有一個testsuite。在大一點的項目中,不同的測試功能會被放入不同的Testsuite。· Resource Files: 定義高級別的keywords。Resource Files是可以復用的。· Test Library: 每一個technical keyword需要一個新的Test Library實現。但是除非你用的是非常特出的技術,一般來說不需要寫新的tec
7、hnical keywords。而且實現一個Test Library并不費力。必須強調,當使用keyword時,無論使用本地實現的Test Library還是使用現存的keywords組合,沒有任何區(qū)別。Robot Framework和他的核心庫是Python寫成的. 所以Robot Frameword天然支持Python。通過Jython,我們可以使用java來實現Test Library,或者甚至任何能夠通過Java調用的語言。通過IronPython,Robot Framework可以和.NET集成??赡艿陌惭b是:遠程庫(Remote Libraries)遠程庫使我們可以在沒有安裝Rob
8、ot Framework的機器上運行測試庫(Test Library),并且只要支持XML-RPC的語言就可以編寫測試庫。遠程庫與普通的庫的使用沒有很大區(qū)別,除了在測試用力或者資源文件的導入方式上。RIDE同時也支持遠程庫。如果想學習遠程庫的開發(fā),可以參看數據庫庫(Database Library)。遠程庫的功能實際上是一個測試庫的addon提供的,另外,遠程庫啟動后,成為一個server,而robot framework作為client去連接的它。當使用Robot Framework創(chuàng)建一個新的工程時,首先我們可能需要思考以下幾個問題:1. 使用哪種編程語言:Python、Jython還是J
9、ava?2. 測試腳本應該使用哪種格式(HTML、TEXT、BDD)?3. 是否需要使用Robot IDE(RIDE)?4. 如何在本地或CI環(huán)境上執(zhí)行測試?5. 如何執(zhí)行測試(scripting、ANT、Maven)?Robot Framework提供給我們很多的設置選擇,那么,應該如何取舍?當然,你可以在Eclipse中使用Maven開始Robot測試,然后使用BDD格式編寫你的測試用例(比使用HTML格式更加靈活),這是一個很不錯的方式。但是我們的核心思想是:簡明!那么,讓我們一起來創(chuàng)建一個簡明且穩(wěn)定的Robot Framework工程2.1 初步思考在
10、新建Robot Framework工程前,我們要分析被測系統(tǒng)需要使用哪些測試庫。來看幾個例子:·web程序測試:我們需要導入SeleniumLibrary或者Selenium2Library·數據庫測試:可以使用Database庫(Python或者Java)·SSH/SFTP測試:可以嘗試SSHLibrary庫除了上述例子外,還有許多其他測試庫。如果現有庫無法滿足你的測試要求,你可能需要編寫一個自定義庫文件。測試庫的選擇很重要,因為你在部署Robot Framework之前所安裝的編程語言環(huán)境(Python或Jython/Java),將直接影響你可選擇測試庫的范圍
11、。不過,你也可以在Python環(huán)境中使用遠程庫接口調用Java的測試庫。讓我們設想一下,有一個使用數據庫的web應用程序例子。為了讓例子看上去盡可能像一個web被測應用,我們將用google和本地MySQL數據庫為例。該實例將展示如何混合使用多個不同的測試庫(本例中使用SeleniumLibrary和DatabaseLibrary),并同時使用DatabaseLibrary的遠程庫功能。 Tip:本章的完整的示例源碼可以從GitHub下載 2.2 測試部署結構下圖展示了測試部署結構的模型: 概述Selenium通常需要一個Serv
12、er。你可以把Server和Robot Framework部署在同一臺機器上,也可以部署在任何一臺通過TCP/IP協議連接的計算機上。DatabaseLibrary也是一樣,DatabaseLibrary運行需要RPC。當然,所有的server都是在本地運行的。在一些官方的測試環(huán)境中,通常Robot Framework被集成在一個CI服務器上,而Selenium Server部署在一些Windows系統(tǒng)測試機上執(zhí)行測試,這樣你就可以在不同終端上測試各種版本的瀏覽器。2.3 測試實施&組織終于,我們要開始具體的測試實施章節(jié)了。我們不會講的太細,具體的細節(jié)
13、可以參閱本例工程源文件,但是,有幾個問題我們需要關注一下。測試腳本格式Robot Framework的測試腳本支持HTML, Text, BDD等格式,測試腳本所使用的文件格式將影響我們是否需要使用RIDE編輯器。 Tip:如果已經存在一個可用的數據編輯工具,如Excel,可以把數據編輯好后直接復制粘貼到RIDE里。 當然,很重要的一點是測試既可以在本地也可以在服務器上(CI環(huán)境)執(zhí)行。這對于Robot Framework來說很容易,你可以通過參數化關鍵字來實現分布式部署。舉幾個例子:l web應用程序的起始URLl Seleni
14、um Server的IP地址和端口l JDBC使用Database Library連接數據庫的字符串這些參數通常被存放在變量文件(variable file)中。變量文件可以在命令行中作為可選參數傳遞給Robot Framework。參數化便于我們在本地和CI服務器上操作不同的啟動腳本。文件結構項目文件結構定義一個通用文件結構,以便于不同工程重用。上圖展示了文件結構的布局。 Tip:盡量使用相對路徑。例如:從testsuite中引用一個資源文件或者把一個testsuite作為一個參數傳給robot啟動腳本。 首先,我們新建一個頂級目錄(robot),然
15、后我們把該目錄劃分成實施(implementation)和執(zhí)行(execution)。在implementation目錄中,包含testsuites和resources兩個目錄,分別用來存放測試套件腳本和資源文件。當然,在一些大型的項目中,需要更深的文件結構。需要注意的是,在引用任何其他文件時(e.g.在testsuit中引用資源文件),所有的路徑信息請使用相對路徑。execution文件夾用于處理不同的目標環(huán)境。通常,這包括本地環(huán)境(local)和CI環(huán)境(server)。scripts文件夾用于存放腳本文件(robot腳本,selenium server,DatabaseLibrary遠程
16、server),settings文件夾用于存放指定的變量文件。最后來看下lib文件夾。它是用來存放自己編寫的庫文件或現成的庫文件。2.4 啟動在談到執(zhí)行測試時,我推薦大家使用shell腳本。shell腳本簡單易懂,不容易出現問題,并且在CI環(huán)境中使用方便。在開始前我們在本例中準備了三個腳本,分別用于:1. 啟動robot測試的腳本2. 啟動Selenium Server的腳本3. 啟動Database Library Remote Server的腳本2.5 安裝
17、部署首先我們需要安裝Robot Framework以及所需的測試庫。假設我們的操作系統(tǒng)是Windows。 Tip:Robot Framework不支持3.x版本的Python。 在本例中將需要安裝以下安裝包:1. python-2.6.6.msi Python 2.6.62. robotframework-2.7.1.win32.exe Robot Framework 2.7.13. wxPython2.8-win32-unicode--py26.exe wxPython (RIDE的UI庫)4. rob
18、otframework-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 Database Library Server 2.0按順序安裝前五個安裝包(我一直使用的是默認安裝設置)。然后把以下路徑加到PATH環(huán)境變量中:“C:Python26;C:Python26Scripts”安裝完畢后,你應該可以通過“pybot version”命令來執(zhí)行R
19、obot Framework了,并且可以從“C:Python26Scriptsride.py”啟動RIDE。 Robot Framework & RIDE下載Database Library JAR。Selenium Library通常都附帶相應的Selenium Server JAR。為了能夠從Robot中獨立使用它,你需要定義一個新的環(huán)境變量RF_HOME,執(zhí)行你Python的安裝目錄(默認是“C:Python26)。該變量用于本地腳本啟動selenium server。在 本例中為了使用本地MySQL數據庫,你必須按如下創(chuàng)建測試模式和相應的用戶:C:xamppmysqlbin>mysql -u root pmysql> create database databaselibrarydemo;mysql> create user dblib'localhost identified by dblib;mysql> grant all privileges on databaselibrarydemo.* to dblib;當然,在不同的系統(tǒng)上操作會略有不同。所有的測試腳本都在路徑robot/execution/local/scripts中。robot/implementation/testsuites中包含
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學年河南省開封市龍亭區(qū)金明小學四年級數學第二學期期末統(tǒng)考模擬試題含解析
- 屏南縣2025屆三年級數學第二學期期末預測試題含解析
- 伽師縣2024-2025學年三下數學期末學業(yè)水平測試模擬試題含解析
- 2025年山東省濱州市鄒平縣數學四下期末質量跟蹤監(jiān)視模擬試題含解析
- 2025年河南省新鄉(xiāng)市輝縣小學六年級第二學期小升初數學試卷含解析
- 蘭州外語職業(yè)學院《科技前沿講座》2023-2024學年第二學期期末試卷
- 益陽醫(yī)學高等??茖W校《動畫設計》2023-2024學年第二學期期末試卷
- 新疆石河子2024-2025學年小升初數學自主招生備考卷含解析
- 直播營銷教案
- 2025年02月山東濟南歷城區(qū)所屬事業(yè)單位公開招聘初級綜合類崗位人員50人筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 220kV GIS組合電器安裝施工方案
- 公園綠化養(yǎng)護景觀綠化維護項目迎接重大節(jié)會活動的保障措施
- 國內外旅游公共服務研究的文獻綜述
- 集團公司各職能部管控分權手冊
- 機車電測儀表使用及檢修
- PMS顏色對照表
- 營銷手冊范本匯總(24個共)35.doc
- 2012年北京大學醫(yī)學部外國留學生本科入學考試
- 七年級英語閱讀理解50篇(附答案)
- 乙酸乙酯的制備ppt課件
- 音樂之聲中英文臺詞
評論
0/150
提交評論