關(guān)于Web端-UI自動(dòng)化測試
在手工測試階段,針對項(xiàng)目輸出了測試用例,如果這些測試用例需要在版本迭代的過程中,需要進(jìn)行回歸測試,通過手工重復(fù)地執(zhí)行測試用例,將會(huì)耗費(fèi)大量的人力。
為此應(yīng)運(yùn)而生就有了自動(dòng)化測試,通過使用自動(dòng)化工具,將按照測試用例進(jìn)行點(diǎn)點(diǎn)操作,校驗(yàn)的工作,交給代碼程序來執(zhí)行,測試工作,就變得省心省力了。
- 重點(diǎn):測試用例是自動(dòng)化測試腳本的依據(jù),一切不基于測試用例而寫的自動(dòng)化腳本都是耍流氓。
 
關(guān)于UI自動(dòng)化測試
UI 自動(dòng)化的本質(zhì):
- 定位元素
 - 操作元素
 - 模擬頁面動(dòng)作
 - 斷言結(jié)果
 - 生成報(bào)告
 
基于以上5個(gè)本質(zhì),自動(dòng)化測試的整體流程是這樣的,這里百度登陸功能的測試用例為例:
- 對于這條測試用例,需要找到它的定位元素:用戶名輸入框,密碼輸入框,登陸按鈕
 - 操作元素:對于這3個(gè)定位元素的操作有2種,分別是“輸入”與“點(diǎn)擊”
 - 模擬頁面動(dòng)作,也就是測試用例的步驟:
- 輸入用戶名
 - 輸入密碼
 - 點(diǎn)擊登陸按鈕
 
 
4. 判斷結(jié)果:將用例中的預(yù)期結(jié)果與實(shí)際結(jié)果進(jìn)行比對,如果一致,代表成功,否則代表失敗。對于這條測試用例,登陸成功的標(biāo)志是,頁面右上角出現(xiàn)了用戶的頭像與用戶名,那么,可以通過獲取網(wǎng)頁中用戶名的文本信息,與登錄賬戶的用戶名對比,一致的話,代表這條用例通過。
根據(jù)執(zhí)行結(jié)果,自動(dòng)生成報(bào)告,常用的第三方模塊:HtmlTestRunner,Allure2 等
適合UI自動(dòng)化測試的場景
當(dāng)然,不是所有的測試場景都適合用自動(dòng)化測試來實(shí)現(xiàn)。
對此,可以參考以下的標(biāo)準(zhǔn)輔助判斷:
- 項(xiàng)目的需求不會(huì)頻繁變動(dòng)
 - 頁面的 UI 已經(jīng)進(jìn)入穩(wěn)定階段
 - 項(xiàng)目周期足夠長
 - 大量回歸的測試任務(wù)
 
其中,有一些項(xiàng)目是明顯不適合使用 UI 自動(dòng)化測試的,例如視頻播放器(暴風(fēng)影音,騰訊視頻,愛奇藝等),音樂播放器(例如網(wǎng)易云音樂,QQ 音樂等)等交動(dòng)性強(qiáng),并發(fā)依賴強(qiáng)的軟件。
原因是,這一類軟件,判斷視頻內(nèi)容對不對,判斷音樂聲音與歌詞對不對,難度極大。
另外,延伸一個(gè)話題:關(guān)于自動(dòng)化測試的覆蓋率,面試會(huì)問到的一個(gè)點(diǎn)。
國內(nèi)大多數(shù)互聯(lián)網(wǎng)公司的項(xiàng)目迭代周期比較短,因此自動(dòng)化覆蓋率一般都不高。
具體還是要根據(jù)項(xiàng)目迭代周期進(jìn)行描述,參考標(biāo)準(zhǔn)是:
- 迭代周期是半年或者一年以上的項(xiàng)目,每次需求變動(dòng)很少,自動(dòng)化測試的覆蓋率一般是60%-70%,主要是覆蓋之前的舊功能以及核心場景
 - 迭代周期為一個(gè)月的項(xiàng)目, 覆蓋率大概是25-30%,主要是覆蓋 P0(極重要)級(jí)別的絕大多數(shù)用例,與 P1(重要)級(jí)別中的部分用例
 - 1~2周一個(gè)迭代的項(xiàng)目,覆蓋率大概是10%,主要是覆蓋 P0(極重要)級(jí)別,可能會(huì)對用戶造成嚴(yán)重影響的核心場景
 
其次,UI 自動(dòng)化測試的時(shí)間切入點(diǎn)主要有2個(gè):
- 冒煙測試階段
 - 回歸測試階段
 
UI 自動(dòng)化測試設(shè)計(jì)原則
- 一個(gè)測試用例完成一個(gè)功能點(diǎn)測試(常用):一個(gè)手工用例對應(yīng)一個(gè)自動(dòng)化測試用例
 - 一個(gè)腳本是一個(gè)完整的場景
 - 腳本之間獨(dú)立,不能有依賴(腳本間相互隔離):例如與登陸狀態(tài)相關(guān)的用例:個(gè)人中心、訂單詳情、下單購物等,如果腳本之間不獨(dú)立,相互依賴,在登陸的測試腳本失敗的情況下,會(huì)導(dǎo)致個(gè)人中心、訂單詳情、下單購物的測試腳本全軍覆滅,后續(xù)修復(fù)與維護(hù)成本高
 
4. 設(shè)置合適的檢查點(diǎn):通過斷言判斷用例的成功與否
5. 設(shè)計(jì)良好的框架:Python 常用的測試框架有 unittest 與 pytest,利用框架,及對共用的測試模塊進(jìn)行封裝,減少自動(dòng)化測試腳本維護(hù)的工作量
總結(jié)


















 
 
 






 
 
 
 