騰訊質量效能提升最佳實踐:智慧自動化測試探索和建設

騰訊WeTest發表於2021-09-07

 

自動化測試現狀與挑戰

隨著人們對生活品質要求的不斷提升,市場上產品更新換代的頻率也隨之增加,這對於產品開發者來說是不小的挑戰。而我們探索自動化測試的意義,就是為了幫助業務以更好的品質,更快的速度來佔領市場。

相比於人工測試,自動化測試有更高的測試覆蓋率,在面對TOP300 機型與 TOP500 機型時的測試效率也更高。同時,自動化測試能配合持續整合的工具,做到快速響應的版本,達到一個版本就可以進行一次迴歸測試,甚至一個程式碼提交就可以進行一次迴歸測試的效果。並且自動化測試還可以把多項專項測試也融合在其中。

近年來在騰訊內部,自動化測試的需求也在持續上升。從2019 年到 2020 年的資料來看,騰訊的頭部專案自動化測試用例數量提升了 50% ,自動化測試的頻度提高了 200% 。本文將從多個角度全面剖析,騰訊內部是如何進行自動化測試的探索與建設的。

 

智慧自動化測試的探索

騰訊內部的產品數量多,覆蓋型別廣,其對於接入方式、測試場景和測試需求是有差異的。一個優秀的自動化測試平臺,需要幫助業務解決以下問題:

1. 效率:業務接入方便快捷,支援多種接入方式

2. 可用:測試任務執行穩定: 99.9%+

3. 效果:問題分析定位方便,迴歸容易

那麼WeTest 作為得到騰訊眾多知名產品認可的一站式測試平臺,是如何搭建智慧自動化測試的技術方案的?

01

全鏈路測試能力搭建

WeTest 自動化測試平臺提供了從指令碼編寫到任務觸發、任務執行、任務報告,最終到問題除錯除錯的一系列的自動化測試能力。同時,也提供從 IAAS PAAS SAAS 不同層次的接入方式。在 IAAS 層, WeTest 提供了包括訊號遮蔽櫃、恆溫實驗室,國內外網路專線等一系列的硬體設施;在 PAAS 層提供不同的接入方式。在 SAAS 層提供全鏈路的自動化測試能力。業務可以只透過 IAAS 層接入來使用這些底層的硬體和裝置,也可以透過 PAAS 層來對接整個測試平臺,還可以直接透過 SAAS 層來使用這些自動化測試的能力。

02

多種接入機制,滿足各種系統對接

面對不同的業務接入需求,WeTest 提供不同的接入方式。例如 CI 外掛,其作為 CI 自動化測試中的一個環節,可以每日定時地對版本構建進行冒煙或者回歸;面對有測試平臺的業務, WeTest 可以提供 REST API 的方式進行平臺級的對接;針對業務側的不同需求, WeTest 還提供在 web 頁面上可以一鍵提交的自動化測試,以及執行一個簡單命令就可以提交自動化測試的命令列工具。

03

映象化測試框架部署

在進行自動化測試時,不同業務團隊的自動化測試技術是千差萬別的,其使用的指令碼框架、指令碼環境、終端裝置的需求都是不一樣的,甚至有的使用者指令碼可能還會有一些安全隱患的問題。

為了解決這類問題,WeTest 提供了一個映象化的部署方案。業務團隊部署測試框架時,只需要生成相應的映象就可以使用。映象裡需要依賴的指令碼或者測試框架的庫,只需要透過寫 DockerFile 的方式打包成映象,然後上傳到平臺的映象倉庫。當使用者提交自動化測試的時候,平臺系統就會從使用者的映象倉庫拉到使用者所需要的映象,然後在整個 K8S 的叢集裡面,以拉取到的形式跑起來。

使用K8S 叢集還可以自動地進行負載均衡,讓任務執行的容器均勻的分佈在不同的節點上,也非常方便進行擴容。

04

配置化測試排程

裝置、用例、指令碼都是可以配置排程的資源。例如使用者需要進行用例排程時,只需要配置好需要的執行用例與用例所需要的裝置執行條件,平臺就會根據使用者用例的歷史執行時間,用例所需要的條件、用例的預估結果以及用例的執行方式,最優的分配到裝置上,從而加快用例的執行速度。對於機型的排程,平臺會根據一定的演算法,選擇出既空閒又能滿足使用者測試需求的裝置,進而提高測試效率。

05

中心化、網路化、叢集化

目前業界大部分的自動化測試平臺,平臺設施接入的硬體都是消費級產品的一個拼接,導致手機的可用率依賴於整個鏈路所有硬體的可用率。當其中一個硬體不可用時,手機就將無法使用。這樣不僅會使單點故障成為整個手機的瓶頸,整體的控制鏈路也會非常長。面對這類問題,WeTest 提出了 硬體資料中心化、手機控制網路化、執行機叢集化 的新方案。

06

全方位測試報告

為了使業務完成測試後能快速便捷的發現問題、定位問題並進行迴歸測試,WeTest 提供了全方位的測試報告。包括裝置日誌、效能資料、網路資料、截圖資料、錯誤的堆疊資訊、整個測試過程的回放等。針對報告中個別手機出現的問題,平臺還提供遠端除錯功能,支援高畫質的畫面和音訊的輸入輸出。

07

專有云

對於某些業務保密性強、裝置及時性的特殊需求,平臺可以提供只有該業務獨佔的專有云。不但能滿足保密性要求,0 等待的裝置及時性,同時可以對裝置進行特殊的配置與部署,滿足使用者特定應用預裝、不解除安裝、登入狀態常駐、自動聊天、自動稽核等需求場景。

 

智慧自動化測試

為了更好的保障使用者的產品質量,給予使用者更好的平臺使用體驗。我們一直在對自動化測試技術進行研究、探索與思考,不斷的追求技術進步。

對於低程式碼工具與AI 探索的領域,然後我們研發了用於指令碼錄製的新一代低程式碼自動化工具 ——WeAutomator 。這款低程式碼工具包含了多種的指令碼錄製功能,包括最基礎的透過影像、空間和座標的綜合錄製,也可以提供根據圖片的邊緣演算法來進行的智慧錄製。並且這款工具支援場景與程式碼模式,支援 Android iOS

 

 

案例分享

王者榮耀皮膚自動化測試

左側畫面是使用者真實的遊戲畫面,右側畫面是王者榮耀為了該螢幕自動化測試提供的一個專用測試地圖。其把時間改成一個邏輯的稱號,同時去除了地圖的噪聲,將底面變成統一的藍色,並對敵方不需要進行測試的英雄、血量、英雄名稱等進行了隱藏。

 

在整個自動化測試的過程中,系統會進行錄製,錄製完成後會對每一個影片的每一幀畫面透過OCR 識別進行提取,然後將所有的圖片幀都儲存下來。不同迭代版本之間的圖片,會透過 ORB 的特徵匹配和圖片的精準對比,利用圖片比對庫來比對,從而篩選出具有差異的圖片進行標註,然後判斷是否出現了 UI 異常。整個自動化測試的 bug 發現能力非常強,相當於人工能力的 5 倍。同時,因為王者榮耀元件資源較多,進行一次自動化測試相較於人工測試可以節約 160 小時。

微信客戶端自動化測試案例

微信相關的端到端的UI 自動化測試主要涉及:微信基礎客戶端,支付 UAT ,小程式基礎,搜尋等業務測試。一般 UI 自動化測試需要歷經四個步驟:選擇 UI 驅動工具、選擇用例組織工具,編寫用例和用例部署。微信客戶端專案組根據自身業務情況,在用例部署時,選用了 3 個時機介入自動化測試。

1.  合入檢查

開發每次提交MR 的時候會檢查編譯,啟動問題。這個時機主要檢查微信啟動 / 發訊息是否成功,用 3 條用例 + 登陸來進行測試。

2.  紅版測試

在此版本上,需要保證應用基礎功能是穩定可用的,允許新特性或者部分場景帶bug 。在編譯出包之後介入一個精選用例(大概 40 條用例)進行測試,驗證基礎功能是否執行成功,主要為檢測出是否有一些明顯影響體驗的問題 。

3.  P0 測試

測試透過的需求會合入到釋出分支等待發布,合入後會觸發編包。在編包後介入執行P0 自動化測試(大概 400 條用例),測試可以保證在 26min 左右執行完。   

 

微信接入WeTest 的自動化測試後,可把用例分發,用例結果儲存,測試報告等功能交給 WeTest ,自身則有更多的精力聚焦業務本身測試, WeTest 提供了高穩定性的裝置、自動化裝置運維監控,測試穩定性達 99.68% ,測試效率提升 40% ,讓使用者無需擔憂裝置問題,更加高效便捷地檢驗產品質量。

 

探索成果

1.  裝置維度 :裝置穩定性高,在月均測試量100w+ 臺次的情況下裝置成功率與測試任務執行率高達到 99.9%

2.   用例緯度 :用例覆蓋率高,透過用例動態分發,縮短測試時長,支援靈活的用例分發模式

3.  效率維度 :資源更多,速度更快,測試提效 40%

4. WeTest 目前已覆蓋 騰訊6 BG

 

 

 

 

關注騰訊WeTest,瞭解更多熱門測試產品:

WeTest騰訊質量開放平臺 - 專注遊戲,提升品質



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31420651/viewspace-2790814/,如需轉載,請註明出處,否則將追究法律責任。

相關文章