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