作者:周力(問瑾),螞蟻金服技術專家。本文圍繞支付寶面向移動應用日誌複雜的測試工作,如何思考演進出成熟穩定的測試用例管理展開討論和總結。
相比普通測試用例,自動化用例在形式、實現方式及內容上有一定的特殊性;同時自動化用例管理作為移動測試平臺的一個重要組成部分,如何對其進行有效管理是平臺面臨的一個重大挑戰。
活動推薦:5 月 18 日 mPaaS 線下沙龍 CodeDay#2 北京站,《高可用、全整合、定製化,螞蟻金服如何持續演進自動化測試》將帶領大家進一步瞭解支付寶如何從開源的自動化方案,到自研並逐步完善無線實驗叢集技術體系。立即免費報名。
背景
隨著移動應用市場的蓬勃發展,移動應用在包括金融、電商、社交等多個行業領域獲得了深度演進和創新。隨之而來的,針對移動應用的測試工作變得日益複雜,需要覆蓋各個作業系統和平臺,應對多樣的業務場景以及網路環境,並圍繞應用的效能、功能、可用性等維度展開。
經過多年的發展,螞蟻金服沉澱了包括自動化測試框架、測試用例管理、真機排程管理等一系列完善的移動應用測試體系和工具。其中測試用例管理這個概念對我們研發的小夥伴再熟悉不過:用例編寫同學以業務的緯度將用例的基本資訊組織起來,並通過用例管理平臺將其按照型別、版本、場景等緯度歸檔,從而完成用例的有效管理。然而,相比普通測試用例,自動化用例在形式、實現方式及內容上有一定的特殊性;同時自動化用例管理作為移動測試平臺的一個重要組成部分,如何對其進行有效管理是平臺面臨的一個重大挑戰。
本文以mPaaS 移動測試平臺自動化用例管理為切入點,分析自動化用例管理過程中一些常見問題,並結合自身能力,實現了一套方便的自動化用例管理方式。 希望能夠給廣大開發者使用者在自動化用例管理提供一些幫助, 通過閱讀本文能夠達到以下幾點:
- 瞭解移動測試平臺自動化用例管理的基本原理。
- 對於 mPaaS 使用者,能夠完成用例的快速整合,包括用例錄入、用例集合管理及通過用例集合去構建一個自動化任務
- 對於廣大開發者來說,能夠根據自己的技術棧特點,快速搭建一套自動化用例管理系統。
目標與挑戰
從個人的角度來看,做好自動化用例管理的工作需要滿足兩個方面:
對於使用者來說, 只需要關心業務用例的編寫、按照業務規則構建一個用例集,以及觸發自動化測試任務。 對於平臺來說,為了保證自動化用例的有效管理,需要完成以下幾個目標:
- 資料一致性的能力:使用者自動化用例資訊能夠精確反映在平臺上,包括增刪改查。
- 方便快速的用例聚合能力:使用者能夠根據業務要求,快速構建匹配的用例集。
- 可擴充套件性及平臺在執行時的支撐能力。
- 簡單可用的用例版本管理能力。
當然為了達到上面的目標,有幾個問題平臺需要去考慮和解決:
- 用例唯一性確認:作為一個自動化測試平臺,如何區分不同使用者提交的自動化測試用例?
-
- 使用者“零散”的用例如何快速的組織在一起,並且能夠在任務的執行態得以支援?
- UI 自動化用例往往與執行環境有著密切的關係(如網路環境),如何把這些執行時的特性體現在用例的設計裡,保證使用者擴充套件條件得以滿足?
- 伴隨著 App 版本的不斷迭代,如何管理好不同版本測試用例?
如何應對
面對種種挑戰,平臺首要做的事情就是明確用例編寫者和平臺的職責劃分:我們通過一個簡單的用例編寫規範來構建起兩者之間的橋樑。
其次,需要明確一條自動戶用例代表什麼,對於平臺和使用者,它的意義是有差別的:
- 對於用例編寫同學來說就是一個方法或著類一個類,如:
- 對於平臺來說就是一個執行命令,如: 在明確這兩個前提後,自動化用例管理的問題就有了具體的切入點。
【一致性確認】
首先,為了區分測試同學編寫的用例,平臺推薦使用 git 去管理測試程式碼,這樣用例天然就被隔離開;同時為了在同一個倉庫中支援不同的版本, 也參考 git 的分支和 tag 的管理方式來做區分;最終一條用例的確認關係就由:倉庫+分支+方法的方式來確定:
其次,平臺為了快速識別倉庫中的有效用例,在 Java 層提供用於生成用例描述的註解,幫助用例編寫同學快速生成用例描述檔案。
在註解的幫助下,工程就能方便在 pom 同級目錄下生成平臺可識別的用例描述檔案(caseList.cfg)。
至此,用例編寫同學已經完成了編寫用例的全部同作。對於平臺來說,使用者只需要告訴用例的倉庫地址和分支,就能夠完成用例的匯入工作。
【用例的聚合】
當使用者完成用例編寫之後,往往需要把自己業務線用例聚合成一個用例集去執行;另外,對於一些特定的場景(如產品迴歸測試),需要把各個業務線的用例彙總在一起,構建成一個更大的集合。為了方便使用者操作,平臺提出了“專案”的概念, 專案可以在內容上包含一批用例方法,也可以包含多個倉庫地址。
相對於用例的聚合方式, 按照倉庫聚合的方式更加靈活: 使用者一旦將專案和倉庫繫結,只需要在倉庫中維護用例, 平臺在執行任務的時候,會自動識別有效用例,進而減少平臺的維護工作。
【執行時特性】
移動測試平臺 MTP 用例執行都是基於真機環境。除了在任務執行的過程中能夠手動去選擇不同平臺、型號、不同網路的裝置;對於那些對網路執行環境有特殊要求的用例(特別在5G時代馬上到來時刻),平臺在屬性上天然支援網路實驗室選項(如 4G 實驗室、5G實驗室、弱網實驗室)。這樣當用例在平臺執行的過程中,平臺會自動取篩選執行不同實驗室的真機。
【版本管理】
UI 自動化測試有一定的特殊性,即用例本身的可靠性以來於 UI 的變化,特別在大的迭代之間,很難做到一份程式碼來相容兩套不同的 UI。為了達到版本管理的功能,平臺利用測試程式碼倉庫的分支和專案來完成版本管理。
價值輸出
通過採用以上幾種策略,移動測試平臺在螞蟻內部能夠給使用者提供可靠穩定的服務:
- 在用例一致性上,目前移動測試平臺支援整個螞蟻和集阿里團用例的錄入工作,保證研發同學能夠相互獨立開發用例, 目前平臺接入用例倉庫地址 370+, 有效用例數 20000+。
- 在用例聚合方面, 目前移動測試平臺上已經構建出 500+ 專案,這些專案服務於各式各樣的場景,如 App 日常迭代驗包、持續整合、各個業務線功能測試、小程式准入等, 並能夠保證日平均任務數在 5000+ 以上。
- 在任務執行時的落地,目前移動測試平臺已經支撐了各種專有實驗室裝置, 如 4G 網路實驗室、弱網實驗室,及掃碼實驗室等。 在版本控制方面,通過倉庫分支的管理方式, 目前移動測試平臺已經支撐錢包從 9.0 到 10.1 30+ 次迭代的發版,並很好的隔離的不同迭代間用例的差異。
在基於全自動化測試需求所構建的技術架構支撐下,開發團隊有能力在 App 上線前完成充分的測試,及時發現 bug, 全面提升整體使用者體驗。其中涉及到的“自動化測試框架”、“真機排程管理”、“場景化測試方案”目前在移動開發平臺 mPaaS 中已對外輸出。
| 活動推薦
想要進一步瞭解支付寶應對複雜的業務場景,如何構建無線實驗叢集,並貼合業務需求進行深度演練與支援?從開源的自動化方案,到自研並逐步完善無線實驗叢集技術體系,支付寶內部經歷了怎樣的業務場景演練,以及相應的技術架構得到了怎樣的改造與升級?
立即掃碼報名 5 月 18 日 mPaaS 自辦沙龍第二期 CodeDay#2 北京站:
往期閱讀
《螞蟻金服 mPaaS 服務端核心元件體系概述:移動 API 閘道器 MGS》
《螞蟻金服 mPaaS 服務端核心元件:億級併發下的移動端到端網路接入架構解析》
《mPaaS 服務端核心元件:訊息推送 MPS 架構及流程設計》
關注我們公眾號,獲得第一手 mPaaS 技術實踐乾貨
釘釘群:通過釘釘搜尋群號“23124039”
期待你的加入~