天天看點

​優酷品質保障系列(二)—用戶端自動化測試基礎能力建設

前言

随着移動端版本疊代的加快,快速測試,快速回報已經是一個常态化的流程,周期内版本釋出頻率的增加,各項測試的時間正在急劇縮短,且回歸性的任務不斷充斥當中,各個階段都需要回歸測試的介入來確定內建之後各個子產品的正确性。

在目前回歸測試中主要集中以下幾個痛點問題:

  • 測試回歸主次模糊,抓不住回歸重點的内容,導緻在較短時間内很難完成大量的回歸case
  • 回歸用例基本大部分都是靠手工執行,重複性工作較多,回歸效率低下
  • 各個業務團隊或多或少都有一些自動化的研究和接入,但開發的工具本身都是各自為戰沒有起到互相配合&互相補充的作用,無法實作工具紅利。 

基于用戶端的自動化能力進行測試架構的封裝,實作腳本編寫&執行與平台無縫對接,并且結合了業務場景進行平台自動化能力的落地,同時統一自動化架構的開發以及核心case用例的整合,使得整體回歸測試成本降低。

用戶端自動化基礎能力

1. 自動化測試驅動選型

如何選取一款自動化測試架構呢,一款好的測試架構具備這樣幾個特征:雙端一緻性,也就是說ios和android可以在同一架構下編寫用例,提高腳本開發效率。運作穩定性,對UI自動化本身存在不穩定性,架構需要運作穩定才能更好的支援測試。簡單易用,架構接入本身需要簡單易懂降低入門的門檻,友善快速使用。低耦合性,各個層級保持低耦合性來降低腳本的維護成本,高擴充性指的是友善與平台的對接能力和腳本調用能力。

​優酷品質保障系列(二)—用戶端自動化測試基礎能力建設

自動化測試架構設計

核心場景自動化結構設計主要分為3層:最下層為驅動能力,提供核心驅動力和操作的能力,維護整個case執行的生命周期。中間層是架構封裝層,直接依賴Driver層,提供通用basecase的入口和工具類的使用,以及業務通用能力抽象。最上層為TestCase直接依賴架構封裝層,封裝業務邏輯以及testcase的編寫,層級之間互相解耦,層層依賴。

​優酷品質保障系列(二)—用戶端自動化測試基礎能力建設

架構層結構,主要分為4大塊内容:

  • 第一部分為Framework_Core,這部分主要是圍繞着BaseCase進行的擴充, Basecase作為framework的入口,是所有case的父類,遵循架構的生命周期持有driver對象
  • 第二部分是Device_Config,這裡主要初始化一些裝置和配置資訊,例如deviceid、pkgName等
  • 第三部分utility,這部分是工具類的封裝,包含圖像相關的處理,路由跳轉功能。豐富的util類目的是讓測試case的驗證更加全面準确。
  • 第四部分是Report.這塊主要是測試報告的生成,生成對接平台标準化的報告結果

架構Log體系&Check體系&基礎操作封裝

架構中還封裝了完整的Log體系,主要用于測試過程trace的追蹤和測試報告的生成。

Log體系主要包含:

  • 添加case步驟
  • 添加截圖
  • 添加驗證點
  • 添加操作動

除了Log體系外,business logic還封裝了check體系,check體系主要包含元素檢查以及頁面布局檢查,check内容例如:check元素是否為空、字元串是否相等、元素文本是否為空以及兩張圖檔相似度等,完善的check體系可以增加case的驗證内容,比斷言的方式更加貼合UI自動化的使用。

架構中還封裝了BaseOperation基礎操作,例如:pageSwipe 會按照螢幕尺寸進行頁面的滑動,確定case在不同裝置上滑動幅度相同,ModuleSwipe可根據傳入element範圍内進行滑動,入參包括滑動方向、滑動幅度以及滑動次數等,提供基礎的操作内容友善上層腳本更加順暢的調用。

圖像識别能力

在随着架構基礎能力的封裝完善,隻滿足傳統UI自動化使用已經限制了自動化本身的覆寫度,局限性也比較大。目前可以通過資料和圖像兩個方面的補充使傳統UI自動化擴充性更好一些。

資料方面主要指是自動化測試的一些input資料内容例如mock資料的設定等,另一方面就是圖像,自動化測試架構也封裝了圖像相關的api進行補充完善。

在圖像方面架構還有截圖處理的能力,例如:截圖示記的功能,可以完善測試報告,增強排查手段,如下圖所示,當傳入check元素後進行截圖,截圖圖檔上會自動标記出校驗的區域或者元素,架構還支援圖檔剪裁的能力,主要是友善支援區域OCR識别以及圖檔相似度對比的驗證。最後還支援圖檔的翻轉能力,這塊主要是為了解決iPad轉屏後截圖不正,影響圖像識别準确性的問題。

​優酷品質保障系列(二)—用戶端自動化測試基礎能力建設

自動化能力平台接入

自動化測試方案

​優酷品質保障系列(二)—用戶端自動化測試基礎能力建設

自動化執行結果展示

1.測試結果頁支援測試時長、測試用例集、用例數、成功失敗case數量以及通過率的展示,詳情請見下圖:

​優酷品質保障系列(二)—用戶端自動化測試基礎能力建設
​優酷品質保障系列(二)—用戶端自動化測試基礎能力建設

2.測試報告其它支援功能:

  • Testcase次元crash分析結果以及crash.log下載下傳
  • 失敗case支援bug送出
  • 失敗case同時支援失敗截圖+失敗trace資訊展示

如下圖展示:

​優酷品質保障系列(二)—用戶端自動化測試基礎能力建設

未來規劃

平台在用戶端自動化測試基礎能力建設上已有了一定成效,随着業務的不斷接入并投入使用在日常測試中使用,整體回歸效率以及人力成本節省都有顯著的提升。

但整體在自動化能力建設上後續還會有更大的挑戰内容,未來将着眼于圖像能力建設結合自動化平台産出更多有價值的自動化測試方案。

繼續閱讀