背景
對于基于 UI 的功能測試的需求其實一直存在,理由其實很簡單,不想一直讓人去做重復機械的事情,而且可靠性完全是靠人力的堆積產生。然而目前部門的功能測試工作依然主要是依靠人工來完成,從我們公司的實踐來看我覺得有幾個方面的影響因素:
客戶端APP已經實現模塊化開發,而且外賣平臺移動端的開發迭代流程正在進行改造,目標是從固定每三周一個迭代改造為每周一個發布窗口,版本迭代的提速,設備的碎片化,都給測試工作帶來巨大的挑戰。
由于版本迭代周期越來越短,而且UI變動比較頻繁,因此測試編寫測試代碼的積極性不是很高,同時由于測試代碼的可重復利用性差,導致測試腳本的編寫成本和維護成本偏高 。
部分測試人員的編碼能力不是很強。由于大部分測試人員可能并沒有過多的開發經驗,所以在編寫測試代碼時并不能很順暢的完成自己想要的效果,這樣也會導致測試代碼項目的推廣阻力會比較大。
如何在有限的時間內,追求盡可能高的產品質量?錄放平臺是我們推出的解決方案。它支持本地化UI腳本錄制,集中式腳本管理,分布式腳本執行。業務測試只要開啟我們的服務,就可以在業務測試的過程中,自動生成對Android、iOS和Web頁面的自動化腳本,而自動化腳本在批量設備上的回放,可以極大提高關鍵路徑的覆蓋率,提升兼容性測試的效率,從而可以把業務測試從冗長重復的步驟中解放出來,把精力放到邊界,異常等可以給我們產品帶來更多提升的地方。
通過不斷地尋找,不斷地對比,最終我們將目標聚焦在阿里巴巴開源解決方案Macaca上。
簡介
Macaca是一套完整的自動化測試解決方案,它的三個特性對我們極具吸引力:
1、周邊工具支持(Reliable、app-inspector、UI-Recorder等)
2、它是一個輕量化的開源項目
3、社區活躍,中文文檔豐富
4、支持JS、Python、Java編寫自動化腳本
5、API比較統一
技術棧
在落地Macaca之前,需要先部署下列技術棧:
1、Node.js用于部署Macaca
2、Docker用于容器化Macaca的部署環境
3、Gitlab用于存儲代碼和測試用例
4、Slack用于團隊的溝通協調
5、Python用于部署本地Agent
使用流程
業務測試人員通過在本地錄制好測試腳本,然后上傳到腳本管理平臺,這些測試腳本將會根據業務模塊和版本分類管理。使用者在自己的電腦上安裝Agent,然后連接測試設備,Agent會將本機的ip、port和設備信息上傳注冊到錄放平臺。
新建一個task執行腳本回放操作,可以指定在哪些機器上回放也可以推送到STF手機管理平臺批量回放,測試用例運行之后,會有兩種情況發生:如果成功,則可以直接查看生成報告;否則會通過Slack或郵件通知開發人員測試失敗,重新修改代碼。
另外Macaca也提供了相應的分布式持續集成框架Reliable來進行任務管理。
Reliable
下圖是Reliable的界面,通過Reliable用戶可以查看測試用例和測試結果;并且Reliable天生與Macaca無縫銜接。
Inspector
Macaca中還提供了Inspector工具供用戶直觀、方便查找到想要選中的元素。圖中右側一欄提供的是XPS、ID、Name數據,用戶通過Inspector工具尋找目標界面的元素。
Debug
我們選擇Visual Studio Code作為常用的IDE因為它能夠輕量地、方便地支持使用者Debug,用戶可以根據自己喜好選擇相應地調試工具。
UI Recorder
下圖是簡單的登錄測試用例:輸入用戶名和密碼,然后點擊登錄按鈕。UI-Recorder腳本錄制工具可以快速的通過錄制得到腳本,方便新手入門。
測試報告
最終的測試結果需要與餓了么的質量平臺對接(Macaca產生的測試報告、測試結果數據在導入餓了么質量平臺前需要進行數據轉換),形成完整的測試流程。
上面總結了一下自己在調研并選擇UI自動化框架中的一些思考,希望能給處于UI自動化調研初期的同學們一些幫助,其中很多選擇是出于自身業務的需要,僅供參考,希望大家能結合自身業務的需要,找到適合自己的UI自動化框架。另外如果有對此框架感興趣的同學歡迎一起學習交流。
