1 背景
APP端UI自動化因其特殊性(需連接測驗機)一般都在本地執行,這種執行方式的局限性有以下弊端:
- 時效性低:研發每次打包后都需要通知測驗,測驗再去打包平臺取包,存在時間差
- 研發自測或產品驗收無法使用自動化腳本:研發自測及產品驗收時如果想用自動化腳本需要搭建相應的運行環境并準備測驗機,繁瑣的步驟導致研發/產品放棄使用自動化,而手工驗證的程序中經常需要測驗協助下單、改資料,效率低
- 本地執行的結果沒有持久化存盤,不利于進行結果度量
2 方案分析
為解決以上問題需要搭建流水線,CI/CD領域常用的流水線平臺非Jenkins莫屬,Jenkins功能強大、可二次開發,但執行APP自動化需要windows執行機、模擬器/真機,這些要求無疑增加了測驗成本,與之相比,Bamboo平臺是基于Jenkins開發的流水線平臺,不僅繼承了Jenkins的眾多功能,且支持圖形化配置,并對接了賽博平臺等其他平臺,
從下圖對比中可以看出,復用現有的Bamboo平臺成本更低,同時需要做以下改變:一、自動化框架需要改為airtest框架;二、需要對測驗報告進行處理以符合預期,
3 方案實施
架構圖:
流程圖:
執行結果:
4 執行程序中遇到的問題及解決方案
1.bamboo打debug包成,release包不成功
解決:證書管理中上傳 sign.properties 檔案,該檔案中去掉絕對路徑資訊,使用相對路徑
2.賽博平臺無法輸入漢字
解決:用poco().set_text()替代text()方法
3.跑腳本失敗提示 RuntimeError: unable to launch AndroidUiautomationPoco
解決:賽博的機器有ATX,會影響poco初始化,poco初始化前加代碼:
# 停止ATX
try:
shell("am force-stop com.github.uiautomator")
shell("/data/local/tmp/atx-agent server --stop")
except Exception as e:
print("兼容非賽博機器")
5 待解決問題
- 接入coding平臺,只支持airtest框架
影響:需要對原框架進行改動,成本較高,與賽博平臺負責產品溝通過,賽博平臺后期會開發對接其他框架的功能, - 手動配置的資料比較多:模塊、用例、用例集
影響:除了測驗腳本外還需單獨配置模塊、用例、用例集,人工成本較高,后需可考慮coding平臺代碼合并后觸發定時任務自動生成對應的模塊、用例、用例集, - 無法指定機型
影響:無法指定機型進行兼容性測驗,與賽博平臺分則產品溝通過,暫未有計劃修改此項, - 京管家未接入線上打包平臺
影響:測驗程序中需要本地保留apk包,占本地記憶體且容易混淆;無法進行版本管理,需要復現問題時不能及時提供歷史版本;UED走查或產品驗收時只能京ME聯系研發取包,時效性差;無法接入流水線,
6 預期收益
流水線不僅解決了環境配置及測驗機不足的問題還有以下優勢:
- 學習成本低,操作簡單,預計可節省三分之二的工時
- 執行結果可以做持久化存盤,后期可與自動化度量平臺相結合進行資料分析
- 流水線中可加入Sunglasses原子,UI自動化測驗程序中監控Flutter例外
- 線上版本可做日常化監控,及時發現問題
作者:京東物流 范文君
來源:京東云開發者社區 自猿其說Tech
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/556699.html
標籤:其他
上一篇:Sentieon安裝時 jemalloc error 解決辦法
下一篇:返回列表
