前幾篇我們模擬了一個測試框架的雛形,用的是Human Resources System測試網(wǎng)站:
重申一遍,框架的設計多種多樣也拜,只要能夠滿足一致性、復用性和擴展性就可以了趾痘。這篇我們就來總結一下寫完的框架慢哈。和開發(fā)一個軟件一樣,自動化測試項目的完成也需要經(jīng)歷好幾個步驟永票。雖然每個公司都有自己的計劃和安排卵贱,但大體情況都差不多。我簡單歸納如下:
你看瓦侮,完成一個項目需要合理規(guī)劃艰赞,并不是直接拿來就編程佣谐,寫代碼之前還有好幾步要做肚吏。首先狭魂,項目分析斋泄。其實項目分析的過程就是熟悉應用以及確定測試模塊的過程炫掐。Hrsystem是一個網(wǎng)站應用募胃,打開后默認來到登錄頁面痹束。登錄頁面上有員工代號祷嘶,密碼烛谊,登錄按鈕晒来。我們可以用三個模擬員工登錄:
便選擇一個登錄進去直接跳轉(zhuǎn)到主頁(Home)湃崩。主頁上有一個員工頭像以及一段歡迎辭攒读。導航欄有四項薄扁,分別指向當前主頁(Home)邓梅,員工信息(Employee),員工工時表(Timesheet)匣距,以及網(wǎng)上商城(OnlineStore)毅待。再簡單瀏覽一下網(wǎng)站尸红。點擊Employee來到員工信息頁面外里,它里面記錄了每一個員工的代號(Employee Code)、姓名(Employee Name)疙咸、最近登錄日期(Last Login Date)撒轮,以及該員工是否還在該公司(Active)题山。代號姓名不用說了;對于Last Login Date來說慨菱,只要你一登錄,最近登錄日期就會變成今天协饲;有些員工離職了或調(diào)走了就不再是Active了茉稠。
接下來點擊timesheet跳轉(zhuǎn)到員工工時表而线,員工的每一條工作記錄都會存在此表中。Roster Date,Roster Start和Roster End指的領導排的班次况凉,也就是計劃上班的日期和時間闷营。Actual Start和Actual End指的是實際上下班的時間速蕊。Comments指的是根據(jù)Roster和Actual的對比提示該員工是否遲到或早退(大部分老板都愛搞這個)。
點擊OnlineStore來到網(wǎng)上商城竿奏,琳瑯滿目的商品绿语,只可惜全是假的。雖然都是假的,但還都有標價泌神。點擊某商品的buy按鈕就會彈出一個頁面讓你選擇顏色材質(zhì)個數(shù),然后就可以放入購物車結賬。
瀏覽了一遍網(wǎng)站蒋失,我們也就知道了它的某些功能。通常情況下導航欄中不同的項目代表不同的功能,是個天然的模塊分割器煮落,所以我也是按導航欄來給測試點分模塊殖蚕。項目的測試點分為四個模塊:
我們的框架中暫時只有登錄模塊和員工模塊,剩下的兩個模塊大家有興趣可以去寫寫,我就不做演示了摘刑。
第二步谭胚,測試用例整理灾而。我們有四個模塊,每個模塊都有幾個需要測試的功能橙困。因為只是演示凡傅,我只挑選了幾個有代表性的測試點作為test case像捶,實際項目中或許老板會讓你面面俱到盡可能覆蓋周全亚隅。Test case如下懂鸵,一般會寫在Excel表里:
每個test case的具體步驟如下:
EmpLogin(登錄):
1. 正常登錄(用戶名/密碼輸入正確)
- 打開網(wǎng)站行疏;
- 輸入用戶名匆光;
- 輸入密碼终息;
- 點擊登錄按鈕(斷言點:登錄成功,用戶名與網(wǎng)頁顯示一直時表示登錄成功)贞让;
- 點擊退出按鈕(斷言點:退出成功周崭,登錄按鈕再次出現(xiàn)表示退出成功)。
2. 非正常登錄(用戶名/密碼錯誤)
- 打開網(wǎng)站喳张;
- 輸入用戶名续镇;
- 輸入密碼;
- 點擊登錄按鈕(斷言點:登錄失敗销部,出現(xiàn)” usercode or password is incorrect”表示登錄失敗)摸航。
3. 非正常登錄(用戶名/密碼為空)
- 打開網(wǎng)站
- 輸入用戶名;
- 點擊登錄按鈕(斷言點:登錄失敗舅桩,彈出對話框”Please enter password”表示登錄失敗)酱虎。
Employee(員工信息):
1. 員工登錄后最后登錄時間字段正確
- 打開網(wǎng)站;
- 輸入用戶名江咳;
- 輸入密碼逢净;
- 點擊登錄按鈕;
- 登錄成功后在導航欄上點擊Employee(斷言點:登錄員工Last Login Date應與數(shù)據(jù)庫時間均顯示為當天)。
Timesheet(工時表):
1. 按員工姓名搜索工時表
- 打開網(wǎng)站爹土;
- 輸入用戶名甥雕;
- 輸入密碼;
- 點擊登錄按鈕胀茵;
- 登錄成功后在導航欄上點擊Timesheets社露;
- 輸入員工姓名;
- 點擊查詢(斷言點:返回被查詢員工的工時表琼娘,且數(shù)量正確峭弟。當工時表上員工姓名和查詢字段一致,并且記錄數(shù)的xpath與期望一致即為查詢正確)脱拼。
2. 查看員工遲到早退
- 打開網(wǎng)站瞒瘸;
- 輸入用戶名;
- 輸入密碼熄浓;
- 點擊登錄按鈕情臭;
- 登錄成功后在導航欄上點擊Timesheets(斷言點:Roster Time和Actual Time進行對比,具體寫case時細講)赌蔑;
OnlineStore(網(wǎng)上商城):
1. 查看物品被添加到購物車
- 打開網(wǎng)站俯在;
- 輸入用戶名;
- 輸入密碼娃惯;
- 點擊登錄按鈕跷乐;
- 登錄成功后在導航欄上點擊OnlineStore;
你也可以按照我提供的測試用例來完成工時表和網(wǎng)上商城兩個模塊的開發(fā)趾浅。
第三步愕提,框架選擇(framework selection)。我們用的是Selenium來寫潮孽,這個沒什么疑問揪荣。有些公司基于Selenium自己又開發(fā)新的框架工具,做得比較好的Robot Framework(用Python)往史,Watir(用Ruby)等等仗颈。前三步雖然沒什么技術要求,但它幫你確定了測試模塊和范圍椎例,合理規(guī)劃了整個項目挨决,地位也很重要。
第四步是項目結構定位订歪。我們不斷地在修改加工框架脖祈,最后修成了現(xiàn)在這個樣子:
結構包括以下幾層:
Managers(測試中樞層):最高層,負責測試用例執(zhí)行刷晋、選擇盖高、以及設置測試環(huán)境慎陵,比如用什么driver,打開哪個網(wǎng)站喻奥,執(zhí)行哪些test case席纽。涉及的包是com.testalliance.hrsystem.managers;
Tests(測試用例層):第二層撞蚕,里面包含每個test case以及它們執(zhí)行過程润梯。涉及的包有com.testalliance.hrsystem.tests.login,com.testalliance.hrsystem.tests.employee甥厦。你會發(fā)現(xiàn)我就是按照項目分析得出來的模塊來命名每一個tests子包纺铭;
Page Object(業(yè)務邏輯層):第三層,里面裝了為實現(xiàn)某個功能而寫的方法刀疙,比如登錄(login)舶赔,跳轉(zhuǎn)(navigate),查看(view)等等庙洼,以及該功能實現(xiàn)過程所需要的操作顿痪,也就是關鍵字镊辕,比如點擊(click)油够,輸入(enter),斷言點(verify)征懈。涉及的包是com.testalliance.hrsystem.pageobj石咬;
Obj Repository(Object聲明層):第四層,里面存儲了所有網(wǎng)頁元素的聲明卖哎,在com.testalliance.hrsystem.objrepository中鬼悠;
Utility(功能/應用層):第五層,指的是除業(yè)務邏輯層之外的功能性方法亏娜,比如讀寫文件焕窝、數(shù)據(jù)庫連接、截圖维贺、email測試結果等等它掂。
雛形的結構差不多就是這樣,大家可以根據(jù)自己的需要自行調(diào)整溯泣,方便自己的框架虐秋。總之垃沦,聽你老板的客给。
之后就是寫代碼、代碼檢查和支付了肢簿,基本上就沒什么說的了靶剑。你可以在我們這個框架的基礎上繼續(xù)加工蜻拨,比如用log4j抓運行信息,或是制作一個小的報告桩引,或是重新設計配置文件滿足更高的要求官觅。當然,在修改框架之前我說過阐污,市面上已經(jīng)有很多公司設計了測試框架休涤,它們的功能遠比我寫的這個更豐富、更強大笛辟,大家有空可以去研究研究功氨,相信有了這幾篇的幫助,理解一個框架應該不成問題了手幢。