免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

干貨分享:Totoro在自動(dòng)化測試領(lǐng)域的深耕與收獲-創(chuàng)新互聯(lián)

自動(dòng)化測試框架 Totoro 是由螞蟻金服終端工程技術(shù)部實(shí)驗(yàn)平臺(tái)技術(shù)組自主研發(fā)的一套自動(dòng)化測試框架,支持  Android 、 iOS 、 HTML5 、 小程序 、 Weex 、 Cube  等移動(dòng)端自動(dòng)化測試場景。

創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),大余企業(yè)網(wǎng)站建設(shè),大余品牌網(wǎng)站建設(shè),網(wǎng)站定制,大余網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,大余網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

為了確保螞蟻金服移動(dòng)測試平臺(tái)在集群環(huán)境下能夠穩(wěn)定、高效運(yùn)行自動(dòng)化任務(wù),并靈活快速支持多場景域內(nèi)業(yè)務(wù),Totoro 經(jīng)歷了從 0 到 1,從 1 到 2,并逐步演進(jìn)到目前支撐阿里域內(nèi) 10+ BU 日常自動(dòng)化測試及結(jié)合移動(dòng)開發(fā)平臺(tái) mPaaS 對(duì)外輸出,成為集團(tuán)內(nèi)使用面最廣、性能最為穩(wěn)定的自動(dòng)化測試框架之一。

本文將圍繞 Totoro 一路踩坑、迭代完善成熟的過程,從沉淀總結(jié)的一些方法論和解決方案展開分享:

  • Totoro C/S 架構(gòu)模型設(shè)計(jì)
  • 全鏈路穩(wěn)定性構(gòu)建
  • 安卓 App 全自動(dòng)智能安裝
  • 全場景的異常彈窗治理
  • Totoro 重要里程碑及未來規(guī)劃


Totoro C/S架構(gòu)模型設(shè)計(jì)

螞蟻金服移動(dòng)測試平臺(tái)最開始引用了 Appium 開源解決方案,但由于其部署復(fù)雜、接口不穩(wěn)定、設(shè)備掉線、多層服務(wù)鏈路、社區(qū)維護(hù)不夠迅速等種種問題,綜合評(píng)估業(yè)內(nèi)類似框架都有共性的痛點(diǎn),因此我們決定重新設(shè)計(jì)一套適合云測集群環(huán)境、滿足域內(nèi)不同業(yè)務(wù)需求快速迭代更新的解決方案。

基于已有的痛點(diǎn),我們認(rèn)為 Totoro 從設(shè)計(jì)上需要滿足“調(diào)用鏈路盡可能短”、“項(xiàng)目結(jié)構(gòu)盡可能簡單透明”等特點(diǎn),從而確保測試鏈路上的不穩(wěn)定因素盡可能少。同時(shí),綜合考慮異常情況下,我們需要能夠快速定位問題,并具備一定的自修復(fù)能力。結(jié)合業(yè)內(nèi)多個(gè)框架普遍采用三層或多層的設(shè)計(jì),Totoro 最終被設(shè)計(jì)成了 C/S 模型的兩層架構(gòu)。

干貨分享:Totoro 在自動(dòng)化測試領(lǐng)域的深耕與收獲

兩層架構(gòu)的設(shè)計(jì)理念實(shí)際上為 Totoro 帶來很多優(yōu)點(diǎn),比如:

  1. 服務(wù)統(tǒng)一集成到了手機(jī)端,縮減了 PC 端的繁雜調(diào)用 :只要 Client 端與手機(jī)鏈接,就可以開始自動(dòng)化流程,避免了中間服務(wù)的命令中轉(zhuǎn)及服務(wù)本身資源管理;
  2. 真正的 C/S 架構(gòu)模型 :無論在自動(dòng)化的調(diào)用速度還是鏈路的穩(wěn)定性上都有了質(zhì)的提升,此外簡單的架構(gòu)模型確保了近些年框架快速迭代的可行性。


全鏈路穩(wěn)定性構(gòu)建

面對(duì)螞蟻云測集群自動(dòng)化嚴(yán)格的要求,穩(wěn)定性的問題依然浮出水面,成為 Totoro 不得不解決的一道難題。

在自動(dòng)化任務(wù)的任何鏈路節(jié)點(diǎn)都有可能發(fā)生異常,所以穩(wěn)定性實(shí)際上覆蓋多個(gè)層面,比如:

  • 框架本身 API 功能穩(wěn)定性;
  • 宿主服務(wù)穩(wěn)定性;
  • 設(shè)備鏈接在線穩(wěn)定性;
  • 設(shè)備網(wǎng)絡(luò)穩(wěn)定性;
  • 硬件 Hub 穩(wěn)定性。

接下來我們從以上 5 個(gè)方面闡述在整個(gè)調(diào)用鏈路上我們都做了那些努力。

1. 程序異常全面治理

Totoro 框架在前期開發(fā)中,日常維護(hù)需要投入極大精力,每日要面臨框架自身缺陷引起的異常和各種業(yè)務(wù)自身的異常問題。同時(shí),各類異常問題要求人工篩選,從而推動(dòng)框架自身及業(yè)務(wù)方去解決。由此帶來的結(jié)果是,大部分云測任務(wù)因?yàn)檫@類代碼問題而引起終止,導(dǎo)致測試開發(fā)不夠穩(wěn)定。

為了改善任務(wù)異常帶來的不穩(wěn)定因素,杜絕框架自身 SDK 問題,并且業(yè)務(wù)異常能夠做到智能分類,我們首先做了一次全類型異常堆棧的上報(bào)統(tǒng)計(jì)。根據(jù)后臺(tái)統(tǒng)計(jì)數(shù)據(jù)可以大概分為“業(yè)務(wù)層邏輯異常”和“SDK 層異常”,針對(duì)發(fā)現(xiàn)問題,我們集中投入專項(xiàng)研發(fā)精力,修復(fù)框架邏輯不合理引起的異常,杜絕 SDK 自身問題;針對(duì)海量業(yè)務(wù)異常,我們做了一層抽象歸類,將業(yè)務(wù)異常邏輯歸類為明文提示并給予一定推動(dòng)建議,并且添加檢測點(diǎn)狀態(tài)校驗(yàn);針對(duì)某些偶現(xiàn)異常,重腳步層做一次重試提示用例結(jié)果成功率。

在程序異常治理過程中,我們發(fā)現(xiàn)業(yè)務(wù)用例大多都需要在程序各個(gè)運(yùn)行階段封裝一些業(yè)務(wù)邏輯,然而 SDK 層也會(huì)有一定的初始化過程,通過 JUnit run 起來的用例一旦業(yè)務(wù)封裝或SDK層接口調(diào)用實(shí)際不對(duì),就有可能引起程序不穩(wěn)定現(xiàn)象。因此,Totoro 框架更加現(xiàn)有的業(yè)務(wù)需求現(xiàn)狀,及日常已發(fā)現(xiàn)的問題,自身定制了一套規(guī)范的 Totoro 用例生命周期,業(yè)務(wù)用例可以在鉤子方法中封裝各個(gè)節(jié)點(diǎn)的邏輯。


干貨分享:Totoro 在自動(dòng)化測試領(lǐng)域的深耕與收獲


2. 手機(jī)宿主服務(wù)穩(wěn)定性保障

Totoro 框架在手機(jī)中的核心服務(wù)(TotoroUiautomator/TotoroWDA)在用例執(zhí)行過程中,會(huì)發(fā)現(xiàn)鏈接失敗、服務(wù)不可用等情況,這種不穩(wěn)定因素更多是系統(tǒng)限制造成的,能做的就是在恰當(dāng)時(shí)候重啟服務(wù),保障整個(gè)自動(dòng)化流程正常進(jìn)行。

  • API 接口級(jí)別異常分析,過濾服務(wù)異常情況,觸發(fā)重啟。并且能夠保留或恢復(fù)用例現(xiàn)場。
  • Agent daemon 進(jìn)程服務(wù)輪訓(xùn)監(jiān)控,動(dòng)態(tài)啟動(dòng)異常服務(wù)(針對(duì) TotoroWDA)。
  • 端口轉(zhuǎn)發(fā)失效的假性異常分析,通過網(wǎng)絡(luò)探測,觸發(fā)假重啟邏輯。


3. 手機(jī)穩(wěn)定鏈接策略

手機(jī)掉線問題是自動(dòng)化任務(wù)流程中必須面對(duì)的問題,Totoro 聯(lián)合螞蟻云測平臺(tái)采用了一套軟硬件全鏈路的設(shè)備在線保障服務(wù)。

Ⅰ. 軟件鏈路上的掉線恢復(fù)能力

軟件鏈路上的能力是指集成在 Totoro Client 端的一套設(shè)備恢復(fù)方案,嵌入在底層通信接口處,一旦發(fā)現(xiàn)設(shè)備掉線,可以通過遠(yuǎn)程網(wǎng)絡(luò)服務(wù),發(fā)送消息到手機(jī)中的核心服務(wù),通過設(shè)備 owner 權(quán)限重啟手機(jī) ADB,如果依舊失敗將進(jìn)行 PC 端鏈路的 usbreset。

正常情況下,三次重啟內(nèi)手機(jī) ADB 幾乎都能恢復(fù)。個(gè)別情況恢復(fù)失敗的,會(huì)有現(xiàn)場詳細(xì)信息上報(bào),且會(huì)觸發(fā) changedevices 策略更換手機(jī)重新執(zhí)行測試任務(wù),保障流程正常。如果根據(jù)歷史上報(bào)數(shù)據(jù)統(tǒng)計(jì),分析老舊設(shè)備處于經(jīng)常掉線的不穩(wěn)定狀態(tài),會(huì)采取降級(jí)措施,調(diào)換到對(duì)鏈接要求低的設(shè)備池中(如 monkey 池)或下線操作。

Ⅱ. 硬件鏈路上的設(shè)備鏈接護(hù)航能力

在硬件鏈路的穩(wěn)定性構(gòu)建中,大多云測平臺(tái)選擇購買質(zhì)量較好的 USB Hub。然而螞蟻云測平臺(tái)目前要面臨每日 7k+ 級(jí)別的自動(dòng)化任務(wù)和 mPaaS 金融云級(jí)別的用例穩(wěn)定性挑戰(zhàn),經(jīng)過實(shí)驗(yàn),市面上再好的設(shè)備也無法達(dá)到的所有工程需要的質(zhì)量標(biāo)準(zhǔn),并且缺少智能控制模塊。因此螞蟻終端工程技術(shù)部實(shí)驗(yàn)平臺(tái)組自研了一套 SmartHub,具備獨(dú)立穩(wěn)定的供電模塊,每個(gè)端口可遠(yuǎn)程程序自動(dòng)控制(電壓/電源/重置等)。目前為止 SmartHub 已經(jīng)全面量產(chǎn)并投入使用,效果圖如下:

干貨分享:Totoro 在自動(dòng)化測試領(lǐng)域的深耕與收獲

4. 設(shè)備網(wǎng)絡(luò)穩(wěn)定性

設(shè)置網(wǎng)絡(luò)服務(wù)的穩(wěn)定提供,我們主要做了以下幾方面嘗試:

  • 用例失敗檢測點(diǎn)的網(wǎng)絡(luò)探測快照,快速定位用例失敗現(xiàn)場是否有網(wǎng)絡(luò)問題;
  • SLM 云終端服務(wù)管理手機(jī)網(wǎng)絡(luò),能夠自動(dòng)鏈接指定網(wǎng)絡(luò),并具備網(wǎng)絡(luò)異常后重置鏈接能力;
  • 云測平臺(tái)集群環(huán)境升級(jí)機(jī)柜,隔離網(wǎng)絡(luò),保障網(wǎng)絡(luò)熱點(diǎn)穩(wěn)定性。(終端實(shí)驗(yàn)室的集群服務(wù)將以規(guī)范化的屏蔽機(jī)柜為單位,提供穩(wěn)定的移動(dòng)自動(dòng)化服務(wù))。


5. 多維度策略 提升用例成功率

在真實(shí)的用例構(gòu)建環(huán)境中,需要有很多細(xì)節(jié)策略點(diǎn)保障整個(gè)服務(wù)的穩(wěn)定運(yùn)行,這里主要羅列幾條主要的方案:

  • 針對(duì)頑固偶現(xiàn)的不穩(wěn)定因素,采取 DeviceChange(更換設(shè)備)策略。
  • 針對(duì)手機(jī)內(nèi)存、資源等系統(tǒng)限制,會(huì)采用 DeviceReboot(重啟手機(jī))策略。
  • 針對(duì)偶現(xiàn)的既定的幾種抽象異常類型,采用重新執(zhí)行策略,有效提高成功率。
  • 針對(duì)全場景的異常點(diǎn),釘釘報(bào)警,及時(shí)發(fā)布補(bǔ)丁。


安卓App全自動(dòng)智能安裝

螞蟻云測自動(dòng)化執(zhí)行集群環(huán)境中,應(yīng)用全自動(dòng)智能安裝是最常見場景之一,然而 Android ROM 的碎片化和各個(gè)廠商的定制化,導(dǎo)致在安裝過程中需要適配各種各樣的彈窗;甚至部分廠商需要登錄態(tài)且要求輸入賬號(hào)密碼,導(dǎo)致在數(shù)以千計(jì)的機(jī)型集群環(huán)境中全自動(dòng)智能安裝應(yīng)用成了一個(gè)挑戰(zhàn)。如下圖部分安裝彈窗場景:

干貨分享:Totoro 在自動(dòng)化測試領(lǐng)域的深耕與收獲


1. 技術(shù)選型

Totoro 框架的自動(dòng)化服務(wù)能力是基于 Uiautomator2 深度定制的,因此整個(gè)服務(wù)會(huì)以 APK 形式安裝在手機(jī)端。要做到一套完整的全自動(dòng)安裝方案,就必須拋棄在 Totoro 服務(wù) APK 里實(shí)現(xiàn)。

最終,我們采用了可以獨(dú)立在手機(jī)中免安裝直接運(yùn)行的 Uiautomator1 方案進(jìn)行實(shí)現(xiàn),作為獨(dú)立的安裝彈窗處理專項(xiàng)進(jìn)行迭代更新。

針對(duì)國內(nèi)機(jī)型及云測機(jī)房全線機(jī)型,安裝彈窗專項(xiàng)項(xiàng)目,前期以全覆蓋的方式抽象彈窗點(diǎn)擊規(guī)律,dump 頁面控件信息,查找關(guān)鍵字,做了機(jī)型緯度的適配,并且在每個(gè)任務(wù)有安全失敗報(bào)警機(jī)制,研發(fā)人員能夠快速兼容問題機(jī)型,及 UI 變更。

最終實(shí)現(xiàn)了一套可以處理大部分 ROM 安裝彈窗場景的持續(xù)迭代的智能安裝彈窗處理方案。

2. 智能盲點(diǎn)

由于整個(gè)彈窗處理依賴與 dump 控件信息邏輯,某些廠商(華為、vivo、oppo 等)為了防止黑產(chǎn)及其他安全考量,部分安裝鏈路上的彈窗頁面會(huì)禁止 dump 功能,導(dǎo)致我們獲取不到頁面信息,而無法判斷應(yīng)該點(diǎn)擊的頁面坐標(biāo)信息。

針對(duì)該場景,我們對(duì)機(jī)房的手機(jī)做了大量的安裝調(diào)研,發(fā)現(xiàn)彈窗的 button 出現(xiàn)的位置區(qū)域和意義是有一定規(guī)律的,有些需要服務(wù)重啟才能 dump 控件信息,有些是按照版本及機(jī)型呈現(xiàn)規(guī)律的 UI 樣式,有些需要特殊的手機(jī) Action 才能獲取相應(yīng)事件。我們將這些規(guī)律進(jìn)一步抽象分類,做了一套智能盲點(diǎn)邏輯,針對(duì)無法 dump 到的場景具備拓展兼容的能力。

3. 算法輔助實(shí)踐

智能盲點(diǎn)在個(gè)別規(guī)律沒有考慮周全的場景下仍然會(huì)出現(xiàn)失敗的情況,那么,如何構(gòu)建一套自適應(yīng)的能力呢?

因此,我們?cè)谒伎际欠窨梢越Y(jié)合 AI 能力來智能分析頁面信息,由算法結(jié)果提供具體的點(diǎn)擊路徑方案,從而快速兼容遺留場景。

目前結(jié)合 OCR 服務(wù),Totoro 具備智能分析界面信息,精準(zhǔn)獲取點(diǎn)擊目標(biāo)坐標(biāo),完成彈窗處理的能力。后續(xù)將結(jié)合深度算法實(shí)踐,采用安裝場景模型數(shù)據(jù),讓算法直接給出操作建議,完成整個(gè)場景的自適應(yīng)兼容方法。

4. 云測效果視頻

目前自動(dòng)化安裝組件經(jīng)過多緯度的場景兼容,已具備一定自適應(yīng)能力,能夠完成日常自動(dòng)化安裝任務(wù),目前已處于極低成本的維護(hù)狀態(tài)。除了應(yīng)用在日常自動(dòng)化任務(wù)中,該功能也嵌入了云測平臺(tái)的遠(yuǎn)程租用功能,以下是安裝效果:

干貨分享:Totoro 在自動(dòng)化測試領(lǐng)域的深耕與收獲

全場景的彈窗治理

移動(dòng)自動(dòng)化測試過程中的各種手機(jī)彈窗是影響用例穩(wěn)定性執(zhí)行的重要因素之一,面對(duì)各種類型及場景的彈窗,Totoro 框架中自研了一套全場景的彈窗治理方案:

干貨分享:Totoro 在自動(dòng)化測試領(lǐng)域的深耕與收獲


1. 深度改造安卓 Watcher 接口

異常彈窗的處理中,安卓框架中給出了  UiDevice.registerWatcher  接口方案。但是我們實(shí)際使用中發(fā)現(xiàn),這個(gè)接口回調(diào)不是穩(wěn)定的,更加官方解釋,當(dāng)自動(dòng)化過程中查找一個(gè)控件失敗時(shí)候才會(huì)觸發(fā)回調(diào)。

干貨分享:Totoro 在自動(dòng)化測試領(lǐng)域的深耕與收獲

為了能夠構(gòu)建多場景的監(jiān)聽機(jī)制,必須要有一套頁面監(jiān)聽的穩(wěn)定回調(diào)接口。經(jīng)過翻看UiWatcher相關(guān)源碼發(fā)現(xiàn),可以通過 hook,主動(dòng)觸發(fā)  runWatchers()  。而我們需要做的,還需要在頁面彈窗變化時(shí),穩(wěn)定觸發(fā)該接口。

安卓 Accessibility 服務(wù)可以通過注冊(cè),監(jiān)聽彈窗或者頁面甚至一個(gè)細(xì)微的控件變化,為了性能均衡,只需注冊(cè)彈窗變化回調(diào)事件即可。這樣一套穩(wěn)定的彈窗監(jiān)聽回調(diào)機(jī)制就構(gòu)建好了。

2. 多維度注冊(cè)監(jiān)聽

有了保障  registerWatcher  接口的回調(diào)穩(wěn)定性的機(jī)制,那個(gè)我們就可以依賴這個(gè)接口去監(jiān)聽頁面UI的變化,做到穩(wěn)定處理頁面彈窗。結(jié)合業(yè)務(wù)需求及日常用例場景,Totoro 框架中可以針對(duì)以下緯度來監(jiān)聽頁面變化,做到幾乎全場景的彈窗治理。

  • 注冊(cè)關(guān)鍵字文案監(jiān)聽
  • 注冊(cè)內(nèi)容模糊匹配,精準(zhǔn)點(diǎn)擊目標(biāo)控件
  • 注冊(cè) desc 文案
  • 注冊(cè)資源 ID
  • 注冊(cè)目標(biāo)控件,觸發(fā)一個(gè) Action


3. 機(jī)器學(xué)習(xí)圖像檢測方案

然后面對(duì)無法 dump 到控件信息的非 Native 頁面(H5 /小程序),就需要結(jié)合機(jī)器學(xué)習(xí)的方式,采用算法能力去分析頁面 UI 結(jié)構(gòu),去處理頁面中可能的異常彈窗。

Totoro 算法同學(xué)自研了一套控件 dump 算法能力,脫離平臺(tái)及頁面渲染方式,可以將 App 截圖通過算法生產(chǎn)頁面原始控件圖,滿足非 native 場景的彈窗處理。

干貨分享:Totoro 在自動(dòng)化測試領(lǐng)域的深耕與收獲

目前機(jī)器學(xué)習(xí)的分析能力仍然在快速迭代中,除了應(yīng)用在彈窗頁面分析處理外,還應(yīng)用在頁面異常類型檢測(包括加載失敗、控件截?cái)嗪诎灼恋龋殉晒β涞匦〕绦蛉粘?zhǔn)入和支付寶錢包日常兼容性等重要業(yè)務(wù)線中,后續(xù)會(huì)推廣到更多的業(yè)務(wù)中去,讓 AI 賦能不是一句空話。


重要里程碑與規(guī)劃

Totoro自動(dòng)化測試框架從立項(xiàng)到現(xiàn)在已經(jīng)走過近三個(gè)年頭,目前仍然處于快速迭代時(shí)期。最近一年,項(xiàng)目自身穩(wěn)定性質(zhì)量有了質(zhì)的提升,在與螞蟻云測平臺(tái)共同努力下,越來越多的域內(nèi) BU 選擇螞蟻云測和 Totoro 作為移動(dòng)自動(dòng)化云測方案。

干貨分享:Totoro 在自動(dòng)化測試領(lǐng)域的深耕與收獲

規(guī)劃

為更好的支撐域內(nèi)及 mPaaS 移動(dòng)自動(dòng)化測試測試技術(shù),高效輸出 Totoro 實(shí)驗(yàn) SDK ,我們還有很多事情可以完善。

未來,我們將從以下幾個(gè)場景發(fā)力,朝著 規(guī)范化 、 可擴(kuò)展 、 多語言平臺(tái) 、 插件化方向 繼續(xù)努力發(fā)展。

  • 繼續(xù)降低用例維護(hù)成本;
  • 完善多端腳本語言支持;
  • 標(biāo)準(zhǔn)化文檔、項(xiàng)目配置等構(gòu)建;
  • 加強(qiáng) AI 賦能,繼續(xù)深挖落地場景;
  • 構(gòu)建開發(fā)者社區(qū),擁抱開發(fā)者,支持域內(nèi)更多的業(yè)務(wù)線,較大價(jià)值化項(xiàng)目的業(yè)務(wù)價(jià)值。


新聞名稱:干貨分享:Totoro在自動(dòng)化測試領(lǐng)域的深耕與收獲-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:http://m.newbst.com/article48/cejgep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)App開發(fā)商城網(wǎng)站電子商務(wù)全網(wǎng)營銷推廣域名注冊(cè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)