在手工測試階段,針對專案輸出了測試用例,如果這些測試用例需要在版本迭代的過程中,需要進行迴歸測試,通過手工重複地執行測試用例,將會耗費大量的人力。
為此應運而生就有了自動化測試,通過使用自動化工具,將按照測試用例進行點點操作,校驗的工作,交給程式碼程式來執行,測試工作,就變得省心省力了。
- 重點:測試用例是自動化測試指令碼的依據,一切不基於測試用例而寫的自動化指令碼都是耍流氓。
關於UI
自動化測試
UI
自動化的本質:
- 定位元素
- 操作元素
- 模擬頁面動作
- 斷言結果
- 生成報告
基於以上5個本質,自動化測試的整體流程是這樣的,這裡百度登陸功能的測試用例為例:
- 對於這條測試用例,需要找到它的定位元素:使用者名稱輸入框,密碼輸入框,登陸按鈕
- 操作元素:對於這3個定位元素的操作有2種,分別是“輸入”與“點選”
模擬頁面動作,也就是測試用例的步驟:
- 輸入使用者名稱
- 輸入密碼
- 點選登陸按鈕
- 判斷結果:將用例中的預期結果與實際結果進行比對,如果一致,代表成功,否則代表失敗。對於這條測試用例,登陸成功的標誌是,頁面右上角出現了使用者的頭像與使用者名稱,那麼,可以通過獲取網頁中使用者名稱的文字資訊,與登入賬戶的使用者名稱對比,一致的話,代表這條用例通過。
- 根據執行結果,自動生成報告,常用的第三方模組:
HtmlTestRunner
,Allure2
等
適合UI
自動化測試的場景
當然,不是所有的測試場景都適合用自動化測試來實現。
對此,可以參考以下的標準輔助判斷:
- 專案的需求不會頻繁變動
- 頁面的
UI
已經進入穩定階段 - 專案週期足夠長
- 大量回歸的測試任務
其中,有一些專案是明顯不適合使用 UI
自動化測試的,例如視訊播放器(暴風影音,騰訊視訊,愛奇藝等),音樂播放器(例如網易雲音樂,QQ
音樂等)等交動性強,併發依賴強的軟體。
原因是,這一類軟體,判斷視訊內容對不對,判斷音樂聲音與歌詞對不對,難度極大。
另外,延伸一個話題:關於自動化測試的覆蓋率,面試會問到的一個點。
國內大多數網際網路公司的專案迭代週期比較短,因此自動化覆蓋率一般都不高。
具體還是要根據專案迭代週期進行描述,參考標準是:
- 迭代週期是半年或者一年以上的專案,每次需求變動很少,自動化測試的覆蓋率一般是60%-70%,主要是覆蓋之前的舊功能以及核心場景
- 迭代週期為一個月的專案, 覆蓋率大概是25-30%,主要是覆蓋
P0
(極重要)級別的絕大多數用例,與P1
(重要)級別中的部分用例 - 1~2週一個迭代的專案,覆蓋率大概是10%,主要是覆蓋
P0
(極重要)級別,可能會對使用者造成嚴重影響的核心場景
其次,UI
自動化測試的時間切入點主要有2個:
- 冒煙測試階段
- 迴歸測試階段
UI
自動化測試設計原則
- 一個測試用例完成一個功能點測試(常用):一個手工用例對應一個自動化測試用例
- 一個指令碼是一個完整的場景
- 指令碼之間獨立,不能有依賴(指令碼間相互隔離):例如與登陸狀態相關的用例:個人中心、訂單詳情、下單購物等,如果指令碼之間不獨立,相互依賴,在登陸的測試指令碼失敗的情況下,會導致個人中心、訂單詳情、下單購物的測試指令碼全軍覆滅,後續修復與維護成本高
- 設定合適的檢查點:通過斷言判斷用例的成功與否
- 設計良好的框架:Python 常用的測試框架有
unittest
與pytest
,利用框架,及對共用的測試模組進行封裝,減少自動化測試指令碼維護的工作量
總結