關於Web端-UI自動化測試

Leofighting發表於2020-08-03

在手工測試階段,針對專案輸出了測試用例,如果這些測試用例需要在版本迭代的過程中,需要進行迴歸測試,通過手工重複地執行測試用例,將會耗費大量的人力。

為此應運而生就有了自動化測試,通過使用自動化工具,將按照測試用例進行點點操作,校驗的工作,交給程式碼程式來執行,測試工作,就變得省心省力了。

  • 重點:測試用例是自動化測試指令碼的依據,一切不基於測試用例而寫的自動化指令碼都是耍流氓。

關於UI自動化測試

UI 自動化的本質

  • 定位元素
  • 操作元素
  • 模擬頁面動作
  • 斷言結果
  • 生成報告

基於以上5個本質,自動化測試的整體流程是這樣的,這裡百度登陸功能的測試用例為例:


  1. 對於這條測試用例,需要找到它的定位元素:使用者名稱輸入框,密碼輸入框,登陸按鈕
  2. 操作元素:對於這3個定位元素的操作有2種,分別是“輸入”與“點選”
  3. 模擬頁面動作,也就是測試用例的步驟:

    1. 輸入使用者名稱
    2. 輸入密碼
    3. 點選登陸按鈕
  4. 判斷結果:將用例中的預期結果與實際結果進行比對,如果一致,代表成功,否則代表失敗。對於這條測試用例,登陸成功的標誌是,頁面右上角出現了使用者的頭像與使用者名稱,那麼,可以通過獲取網頁中使用者名稱的文字資訊,與登入賬戶的使用者名稱對比,一致的話,代表這條用例通過。
  5. 根據執行結果,自動生成報告,常用的第三方模組:HtmlTestRunnerAllure2

適合UI自動化測試的場景

當然,不是所有的測試場景都適合用自動化測試來實現。

對此,可以參考以下的標準輔助判斷:

  1. 專案的需求不會頻繁變動
  2. 頁面的 UI 已經進入穩定階段
  3. 專案週期足夠長
  4. 大量回歸的測試任務

其中,有一些專案是明顯不適合使用 UI 自動化測試的,例如視訊播放器(暴風影音,騰訊視訊,愛奇藝等),音樂播放器(例如網易雲音樂,QQ 音樂等)等交動性強,併發依賴強的軟體。

原因是,這一類軟體,判斷視訊內容對不對,判斷音樂聲音與歌詞對不對,難度極大。

另外,延伸一個話題:關於自動化測試的覆蓋率,面試會問到的一個點。

國內大多數網際網路公司的專案迭代週期比較短,因此自動化覆蓋率一般都不高。

具體還是要根據專案迭代週期進行描述,參考標準是:

  • 迭代週期是半年或者一年以上的專案,每次需求變動很少,自動化測試的覆蓋率一般是60%-70%,主要是覆蓋之前的舊功能以及核心場景
  • 迭代週期為一個月的專案, 覆蓋率大概是25-30%,主要是覆蓋 P0(極重要)級別的絕大多數用例,與 P1(重要)級別中的部分用例
  • 1~2週一個迭代的專案,覆蓋率大概是10%,主要是覆蓋 P0(極重要)級別,可能會對使用者造成嚴重影響的核心場景

其次,UI 自動化測試的時間切入點主要有2個:

  1. 冒煙測試階段
  2. 迴歸測試階段

UI 自動化測試設計原則

  1. 一個測試用例完成一個功能點測試(常用):一個手工用例對應一個自動化測試用例
  2. 一個指令碼是一個完整的場景
  3. 指令碼之間獨立,不能有依賴(指令碼間相互隔離):例如與登陸狀態相關的用例:個人中心、訂單詳情、下單購物等,如果指令碼之間不獨立,相互依賴,在登陸的測試指令碼失敗的情況下,會導致個人中心、訂單詳情、下單購物的測試指令碼全軍覆滅,後續修復與維護成本高
  4. 設定合適的檢查點:通過斷言判斷用例的成功與否
  5. 設計良好的框架:Python 常用的測試框架有 unittestpytest,利用框架,及對共用的測試模組進行封裝,減少自動化測試指令碼維護的工作量

總結

相關文章