APP UI自動化測試是雞肋嗎? 一般而言,是的!
最近與一個(gè)朋友聊到了APP的UI自動化,他問我如何做APP的UI自動化。
我說了一下目前主流的方法是通過對UI的識別,然后觸發(fā)操作,各種工具的原理差不多。當(dāng)然,有更牛逼的,使用高清攝像頭+機(jī)械臂,通過高清攝像頭識別界面元素(基于位置定位),然后使用機(jī)械臂去點(diǎn)擊操作。完全模擬人去操作。只是這套裝備很昂貴,大概60萬左右。
我個(gè)人意見,如果APP功能比較多,大部分功能和界面比較穩(wěn)定,這時(shí)可以給穩(wěn)定的功能做UI自動化測試,每當(dāng)版本更新時(shí),使用UI自動化用例來保證這些功能不受影響。
而實(shí)際情況是,大部分APP更新比較快,這時(shí)做UI自動化測試時(shí)不劃算的,因?yàn)橐ù罅康臅r(shí)間去維護(hù)自動化測試腳本,并且UI自動化測試腳本運(yùn)行并不穩(wěn)定。另外,大部分的APP是to C的,to C的產(chǎn)品相對to B產(chǎn)品而言,更注重用戶體驗(yàn),而用戶體驗(yàn)的部分,UI自動化是很難測試到的,比如:動畫現(xiàn)比較平滑、頁面流暢不卡頓等等。
這個(gè)朋友問了我另外一個(gè)問題: 我們是to C的APP,當(dāng)服務(wù)端更新時(shí),我們需要保證用戶手機(jī)上的各種舊版本APP能夠正常運(yùn)行,怎么辦?
我說,這是一個(gè)非常典型的場景,但這個(gè)問題的解決方式不是做APP的UI自動化,而是做服務(wù)端的接口自動化。每當(dāng)服務(wù)端更新,只要確保服務(wù)端提供給APP調(diào)用的接口行為不變,確定的輸入有確定的輸出,而舊版本APP沒有更新,完全不用測試。舉個(gè)例子,登錄接口,使用用戶名admin、密碼123456時(shí),服務(wù)端返回如下響應(yīng):
{"code":200, "msg":"登錄成功"}
無論服務(wù)端怎么變化,我每次使用相同用戶名和密碼登錄時(shí),服務(wù)器都給我返回同樣的響應(yīng),就能確保以前所有老版本的APP登錄沒有問題。
至于如何做接口的自動化測試,則是另外的問題了。如有興趣,可以找我了解。