知識點(diǎn)
1. 了解什么是 TDD、BDD、ATDD
2. 為什么選擇Robot Framework
3. 安裝 Robot Framework 以及常用模塊
4. Robot Framework測試架構(gòu)
TDD
Test Driven Development(測試驅(qū)動開發(fā))有別于傳統(tǒng)技術(shù)人員開發(fā)常常一頭鉆進(jìn)去撰寫代碼,TDD 鼓勵在接收到功能需求時優(yōu)先思考如何測試,譬如網(wǎng)站登入功能必須區(qū)分用戶是否曾經(jīng)注冊、登入失敗顯示的訊息、失敗次數(shù)過多時(可能是攻擊行為)的措施等,TDD 常常拿來跟 User Story(用戶敘述)一起使用,經(jīng)由整體思考測試流程后再投入程序開發(fā),減少開發(fā)途中遺漏重要功能。
BDD
Behavior Driven Development (行為驅(qū)動開發(fā))是一種敏捷軟體開發(fā)的技術(shù),它鼓勵軟體項(xiàng)目中的開發(fā)者、QA和非技術(shù)人員或商業(yè)參與者之間的協(xié)作。主要是從用戶的需求出發(fā),強(qiáng)調(diào)系統(tǒng)行為。BDD最初是由 Dan North 命名,它包括驗(yàn)收測試和客戶測試驅(qū)動等的極限編程的實(shí)踐,作為對測試驅(qū)動開發(fā)的回應(yīng),這篇文章是 Dan North 本人對于 BDD 提出的實(shí)例。
ATDD
Aceptance Test Driven Development (驗(yàn)收測試驅(qū)動開發(fā))
TDD基本上只跟開發(fā)人員有關(guān),如果對功能需求理解錯誤,還是會浪費(fèi)不少時間資源,所以用戶/PM、RD、QA需要坐下來一起討論制定驗(yàn)收 Test Case (測試案例),ATDD的重點(diǎn)不在 How (如何完成功能),而是 What (要達(dá)到什么功能),更重要的是測試案例是使用者最后要驗(yàn)收的方式,所以使用者要看的懂,這也是本實(shí)驗(yàn)介紹 Robot Framework 的主因。
?Robot Framework是基于python的測試框架,基本上python能做到的事情它都能做到,既然如此為什么我們不直接使用python呢? 因?yàn)锳TDD主要主角是沒有技術(shù)經(jīng)驗(yàn)的用戶,怎么利用好懂的自然語言讓用戶可以參與到測試流程之中就是Robot Framework 的一大賣點(diǎn)。
安裝 Robot Framework 以及常用模塊
?1. sudo pip install robotframework(如果提示超時 多運(yùn)行幾次)
2. sudo pip instal lrequests robotframework-requests--upgrade(如果提示超時 多運(yùn)行幾次)
3. 產(chǎn)生 requirements.txt ,以后每次作實(shí)驗(yàn)就可以一個指令安裝完所有需要的套件
?3.1 echo-e"robotframework >= 3.0.2\nrequests > 2.2.0\nrobotframework-requests > 0.4.3"> requirements.txt
3.2 ?sudo pip install -r requirements.txt --upgrade
4. 確認(rèn)安裝成功: robot --version
Robot Framework測試架構(gòu)
Robot Framework 基于 python ,由 Test Libraries 提供的API測試不同的應(yīng)用,基本上它可以做所有 python可以做的事,不同點(diǎn)是 Robot Framework 將 Library 、 Test Cases、Data 之間利用關(guān)鍵字的概念介接起來,發(fā)揮 ATDD 將技術(shù)跟非技術(shù)人員討論整合的基礎(chǔ),由用戶發(fā)起需求,工程師實(shí)作功能關(guān)鍵字,再交由 QA 用關(guān)鍵字拼湊出測試實(shí)例交付用戶實(shí)施驗(yàn)收測試

代碼架構(gòu)
1. 設(shè)置(Settings)
? 設(shè)置整個 Test Suite (測試套件)的相關(guān)資訊、包含庫等等,也可以用Resource來引入自己寫的 robot 檔案,單行註解是以#開頭。
*** Settings ***
Documentation? ? A hello world test suite for Shiyanlou
...? ? ? ? ? ? ? Just output some message on console
Library? ? String
#Resource? ? keyword.robot
2. 變量(Variables)
? 在這個區(qū)域中可以定義變量,如果在 Keywords 或是 Test Cases 就必須使用Set Variable關(guān)鍵字,可定義一般變量或是 Dictionary (字典)。特別要注意的是 Robot Framework 變量名稱并不含大小寫跟下劃線,${showMessage}、${show_message}、${Show_Message}都代表相同的變量。
*** Variables ***
${ACTION}? ? hi
@{MESSAGES}? ? world? ? yhy
3. 關(guān)鍵字(Keywords)
? 關(guān)鍵字設(shè)計是 Robot Framework 的核心,可以在關(guān)鍵字中再利用其他關(guān)鍵字組成復(fù)雜的動作,類似函數(shù)的概念,[Arguments]可帶入變量,而[Return]可將變量帶出關(guān)鍵字。
*** Keywords ***
Print Welcome Message
[Arguments]? ? ${act}? ? ${message}
Log To Console? ? ${act} ${message}!!
[Return]? ? Success
4. 測試案例(Test Cases)
? 測試案例一般依照 User Story 撰寫,一如驗(yàn)收系統(tǒng)功能的精神是在不知道系統(tǒng)的介面及實(shí)作細(xì)節(jié)的前提下,用戶或 QA 一樣知道系統(tǒng)該做什麼。因此,把系統(tǒng)功能步驟以自然語言的描述方式留在 test case 層級,實(shí)作細(xì)節(jié)留在 關(guān)鍵字 / 庫,并把常用的實(shí)作細(xì)節(jié)抽出來方便重複引用。注意測試案例是循序由上執(zhí)行到下,所以測試案例之間的狀態(tài)跟資料會影響到測試結(jié)果。
*** Test Cases ***
Should See Welcome Message and Result
:FOR? ${message}? IN? @{MESSAGES}
\? ? ${result} =? ? Print Welcome Message? ? ${Action}? ? ${message}
\? ? Log To Console? ? Result: ${result}
庫OperatingSystem讀取本機(jī)的檔案所以需要;
庫RequestsLibrary是專門用來處理 HTTP Request 的;
Suite Setup 測試套件setup
http://www.cnblogs.com/laoqing/p/7192301.html