背景
對(duì)于基于 UI 的功能測(cè)試的需求其實(shí)一直存在坏挠,理由其實(shí)很簡(jiǎn)單,不想一直讓人去做重復(fù)機(jī)械的事情郭赐,而且可靠性完全是靠人力的堆積產(chǎn)生鲫趁。然而目前部門的功能測(cè)試工作依然主要是依靠人工來完成,從我們公司的實(shí)踐來看我覺得有幾個(gè)方面的影響因素:
客戶端APP已經(jīng)實(shí)現(xiàn)模塊化開發(fā)饭尝,而且外賣平臺(tái)移動(dòng)端的開發(fā)迭代流程正在進(jìn)行改造肯腕,目標(biāo)是從固定每三周一個(gè)迭代改造為每周一個(gè)發(fā)布窗口,版本迭代的提速钥平,設(shè)備的碎片化实撒,都給測(cè)試工作帶來巨大的挑戰(zhàn)。
由于版本迭代周期越來越短涉瘾,而且UI變動(dòng)比較頻繁知态,因此測(cè)試編寫測(cè)試代碼的積極性不是很高,同時(shí)由于測(cè)試代碼的可重復(fù)利用性差立叛,導(dǎo)致測(cè)試腳本的編寫成本和維護(hù)成本偏高 负敏。
部分測(cè)試人員的編碼能力不是很強(qiáng)。由于大部分測(cè)試人員可能并沒有過多的開發(fā)經(jīng)驗(yàn)囚巴,所以在編寫測(cè)試代碼時(shí)并不能很順暢的完成自己想要的效果原在,這樣也會(huì)導(dǎo)致測(cè)試代碼項(xiàng)目的推廣阻力會(huì)比較大友扰。
如何在有限的時(shí)間內(nèi)彤叉,追求盡可能高的產(chǎn)品質(zhì)量?錄放平臺(tái)是我們推出的解決方案递递。它支持本地化UI腳本錄制系瓢,集中式腳本管理酷麦,分布式腳本執(zhí)行。業(yè)務(wù)測(cè)試只要開啟我們的服務(wù)柬焕,就可以在業(yè)務(wù)測(cè)試的過程中审残,自動(dòng)生成對(duì)Android、iOS和Web頁面的自動(dòng)化腳本斑举,而自動(dòng)化腳本在批量設(shè)備上的回放搅轿,可以極大提高關(guān)鍵路徑的覆蓋率,提升兼容性測(cè)試的效率富玷,從而可以把業(yè)務(wù)測(cè)試從冗長(zhǎng)重復(fù)的步驟中解放出來璧坟,把精力放到邊界,異常等可以給我們產(chǎn)品帶來更多提升的地方赎懦。
通過不斷地尋找雀鹃,不斷地對(duì)比,最終我們將目標(biāo)聚焦在阿里巴巴開源解決方案Macaca上励两。
簡(jiǎn)介
Macaca是一套完整的自動(dòng)化測(cè)試解決方案黎茎,它的三個(gè)特性對(duì)我們極具吸引力:
1、周邊工具支持(Reliable当悔、app-inspector傅瞻、UI-Recorder等)
2、它是一個(gè)輕量化的開源項(xiàng)目
3先鱼、社區(qū)活躍俭正,中文文檔豐富
4、支持JS焙畔、Python掸读、Java編寫自動(dòng)化腳本
5、API比較統(tǒng)一
技術(shù)棧
在落地Macaca之前宏多,需要先部署下列技術(shù)棧:
1儿惫、Node.js用于部署Macaca
2、Docker用于容器化Macaca的部署環(huán)境
3伸但、Gitlab用于存儲(chǔ)代碼和測(cè)試用例
4肾请、Slack用于團(tuán)隊(duì)的溝通協(xié)調(diào)
5、Python用于部署本地Agent
使用流程
業(yè)務(wù)測(cè)試人員通過在本地錄制好測(cè)試腳本更胖,然后上傳到腳本管理平臺(tái)铛铁,這些測(cè)試腳本將會(huì)根據(jù)業(yè)務(wù)模塊和版本分類管理。使用者在自己的電腦上安裝Agent却妨,然后連接測(cè)試設(shè)備饵逐,Agent會(huì)將本機(jī)的ip、port和設(shè)備信息上傳注冊(cè)到錄放平臺(tái)彪标。
新建一個(gè)task執(zhí)行腳本回放操作倍权,可以指定在哪些機(jī)器上回放也可以推送到STF手機(jī)管理平臺(tái)批量回放,測(cè)試用例運(yùn)行之后捞烟,會(huì)有兩種情況發(fā)生:如果成功薄声,則可以直接查看生成報(bào)告当船;否則會(huì)通過Slack或郵件通知開發(fā)人員測(cè)試失敗,重新修改代碼默辨。
另外Macaca也提供了相應(yīng)的分布式持續(xù)集成框架Reliable來進(jìn)行任務(wù)管理德频。
Reliable
下圖是Reliable的界面,通過Reliable用戶可以查看測(cè)試用例和測(cè)試結(jié)果缩幸;并且Reliable天生與Macaca無縫銜接抱婉。
Inspector
Macaca中還提供了Inspector工具供用戶直觀、方便查找到想要選中的元素桌粉。圖中右側(cè)一欄提供的是XPS蒸绩、ID、Name數(shù)據(jù)铃肯,用戶通過Inspector工具尋找目標(biāo)界面的元素患亿。
Debug
我們選擇Visual Studio Code作為常用的IDE因?yàn)樗軌蜉p量地、方便地支持使用者Debug押逼,用戶可以根據(jù)自己喜好選擇相應(yīng)地調(diào)試工具步藕。
UI Recorder
下圖是簡(jiǎn)單的登錄測(cè)試用例:輸入用戶名和密碼,然后點(diǎn)擊登錄按鈕挑格。UI-Recorder腳本錄制工具可以快速的通過錄制得到腳本咙冗,方便新手入門。
測(cè)試報(bào)告
最終的測(cè)試結(jié)果需要與餓了么的質(zhì)量平臺(tái)對(duì)接(Macaca產(chǎn)生的測(cè)試報(bào)告漂彤、測(cè)試結(jié)果數(shù)據(jù)在導(dǎo)入餓了么質(zhì)量平臺(tái)前需要進(jìn)行數(shù)據(jù)轉(zhuǎn)換)雾消,形成完整的測(cè)試流程。
上面總結(jié)了一下自己在調(diào)研并選擇UI自動(dòng)化框架中的一些思考挫望,希望能給處于UI自動(dòng)化調(diào)研初期的同學(xué)們一些幫助立润,其中很多選擇是出于自身業(yè)務(wù)的需要,僅供參考媳板,希望大家能結(jié)合自身業(yè)務(wù)的需要桑腮,找到適合自己的UI自動(dòng)化框架。另外如果有對(duì)此框架感興趣的同學(xué)歡迎一起學(xué)習(xí)交流蛉幸。