录制快、回放稳,爱奇艺iOS云录制回放平台技术实践
眾所周知,移動(dòng)APP的周期短、迭代速度快,測(cè)試人員在保證新功能正常運(yùn)行的情況下需要回歸大量的歷史功能,自動(dòng)化回歸便成為重要的回歸手段之一。iOS端自動(dòng)化由于以下問(wèn)題,一直很難在業(yè)務(wù)線廣泛開(kāi)展。
落地成本高:執(zhí)行環(huán)境必須使用mac設(shè)備,硬件成本高,本地服務(wù)&設(shè)備難以跨團(tuán)隊(duì)共享。
學(xué)習(xí)成本大:除了Python、node等基礎(chǔ)編程環(huán)境外,還需要使用xcode,要有一定的OC基礎(chǔ)。
二次開(kāi)發(fā)難:設(shè)備驅(qū)動(dòng)如Appium WDA、Facebook-WDA,部分功能接口響應(yīng)耗時(shí)長(zhǎng)、穩(wěn)定性不高,且基于OC語(yǔ)言編寫,二次開(kāi)發(fā)難度較大,難以針對(duì)業(yè)務(wù)特性定制。
基于上述情況,愛(ài)奇藝在云真機(jī)基礎(chǔ)之上重點(diǎn)優(yōu)化設(shè)備驅(qū)動(dòng),并將設(shè)備共享、遠(yuǎn)程租用、自動(dòng)化腳本管理、任務(wù)調(diào)度、可視化報(bào)告等能力組合,推出了愛(ài)奇藝iOS云錄制回放平臺(tái)。該平臺(tái)通過(guò)設(shè)備和服務(wù)共享可以有效降低業(yè)務(wù)線自動(dòng)化投入,使測(cè)試人員更加專注于測(cè)試用例設(shè)計(jì)。通過(guò)項(xiàng)目實(shí)踐和不斷調(diào)優(yōu),平臺(tái)在易用性和自動(dòng)化執(zhí)行效率等方面有顯著提升,現(xiàn)已對(duì)接主站等多條業(yè)務(wù)線,覆蓋視頻播放、視頻編輯、feed流等復(fù)雜場(chǎng)景,成為愛(ài)奇藝業(yè)務(wù)群質(zhì)量保障中不可缺少的一環(huán)。本文將介紹愛(ài)奇藝iOS云錄制回放平臺(tái)的系統(tǒng)架構(gòu)以及實(shí)現(xiàn)細(xì)節(jié)。
01
? ?方案設(shè)計(jì)
1.1?基本流程?
錄制回放基本流程圖
在錄制過(guò)程中,云IDE實(shí)時(shí)監(jiān)聽(tīng)鼠標(biāo)點(diǎn)擊、滑動(dòng)事件,同時(shí)獲取手機(jī)頁(yè)面的DOM樹(shù),根據(jù)用戶操作的坐標(biāo)查找最匹配的元素節(jié)點(diǎn),如果用戶選擇OCR和AI方式,則識(shí)別手機(jī)截圖中的文本和已知的AI元素,確認(rèn)元素之后會(huì)轉(zhuǎn)換為自動(dòng)化腳本并保存。
在回放時(shí),首先拉取待執(zhí)行腳本集合,進(jìn)行腳本解析,通過(guò)腳本指定的方法查找元素并執(zhí)行相應(yīng)的操作,如點(diǎn)擊、滑動(dòng)等。任務(wù)結(jié)束后會(huì)生成測(cè)試報(bào)告,包括用例執(zhí)行步驟、日志、截圖等信息。
1.2??錄制篇?
功能多樣
錄制頁(yè)面采用Web化IDE設(shè)計(jì),集成了設(shè)備選擇、腳本管理、實(shí)時(shí)畫面和腳本實(shí)時(shí)生成四大功能,支持腳本在線編輯和調(diào)試,并持久化到服務(wù)端,相對(duì)于其他競(jìng)品的錄制頁(yè)面,更方便、靈活。
設(shè)備列表:展示可用的手機(jī)列表,支持設(shè)備實(shí)時(shí)切換;
腳本管理:對(duì)錄制的腳本進(jìn)行管理,可以按照業(yè)務(wù)、用例集等不同維度歸檔;
腳本編輯:在該IDE內(nèi)操作APP會(huì)自動(dòng)生成Python腳本,支持在線編輯和多機(jī)調(diào)試;
手機(jī)畫面:實(shí)時(shí)展示手機(jī)畫面,同步監(jiān)聽(tīng)用戶操作事件,展示畫面元素操作選擇。
錄制頁(yè)面
流暢的操作體驗(yàn)
除了功能多樣外,流暢的操作體驗(yàn)也是好產(chǎn)品的重要評(píng)價(jià)指標(biāo)之一,其性能直接影響平臺(tái)用戶體驗(yàn)和操作效率。我們調(diào)研了市面上主流的WDA,如Appium WDA、Facebook WDA等,他們的設(shè)計(jì)主要是用于自動(dòng)化執(zhí)行,設(shè)計(jì)思路優(yōu)先保證case執(zhí)行的穩(wěn)定性,因此相關(guān)接口響應(yīng)耗時(shí)比較長(zhǎng),這樣的設(shè)計(jì)嚴(yán)重影響用戶操作體驗(yàn)并不適合作為錄制使用,考慮到開(kāi)源的WDA都是用OC語(yǔ)言編寫,學(xué)習(xí)成本比較高,我們決定使用SWIFT語(yǔ)言自行開(kāi)發(fā)WDA,重點(diǎn)在DOM樹(shù)獲取速度、點(diǎn)擊響應(yīng)耗時(shí)和畫面幀率方面進(jìn)行優(yōu)化。
在DOM樹(shù)獲取方面,區(qū)分層級(jí)頁(yè)面的元素結(jié)構(gòu)并加以剔除,有效降低元素查找速度。
針對(duì)點(diǎn)擊響應(yīng)慢的問(wèn)題,我們優(yōu)化原有接口調(diào)用邏輯,包括去除復(fù)雜的同步等待機(jī)制等,響應(yīng)速度有了很大提升。
在屏幕獲取方面則是通過(guò)WDA實(shí)現(xiàn)截圖,重點(diǎn)優(yōu)化圖片壓縮算法和傳輸效率,保證畫面清晰度的同時(shí)達(dá)到每秒20幀以上的畫面渲染效果,有效解決畫面卡頓的問(wèn)題。
優(yōu)化前后數(shù)據(jù)對(duì)比如下:
遠(yuǎn)程錄制畫面渲染的效果圖如下:
遠(yuǎn)程錄制畫面渲染效果圖
豐富的元素識(shí)別方式
寫腳本容易,維護(hù)腳本不易,編寫自動(dòng)化腳本過(guò)程中,選擇合適的元素獲取方式才能從根本保證腳本的穩(wěn)定性。相信很多同學(xué)都會(huì)有過(guò)這種經(jīng)歷:首次寫完自動(dòng)化執(zhí)行成功率很高,但是隨著功能迭代,自動(dòng)化腳本成功率逐漸降低。測(cè)試同學(xué)被動(dòng)地陷入自動(dòng)化相關(guān)的維護(hù)里,自動(dòng)化不僅沒(méi)有起到保障質(zhì)量的作用,反而成為了測(cè)試同學(xué)的負(fù)擔(dān)。為了盡可能的適配各種場(chǎng)景,愛(ài)奇藝提供了多種元素定位方式,以適用不同的業(yè)務(wù)場(chǎng)景和兼容性需求。
元素識(shí)別方式分類
原生方式
iOS的原生支持方式,包括predicate、accessibility ID、坐標(biāo)等方式,利用元素的type、name、label等屬性定位,其中predicate支持比較、范圍運(yùn)算符等,這種方式適用于元素定義比較規(guī)范的場(chǎng)景。
XPath方式
路徑定位方式,iOS原生系統(tǒng)并不支持此種方式,業(yè)界開(kāi)源的工具定位速度很慢,通常在3-30秒,我們通過(guò)路徑優(yōu)化獲取算法,XPath獲取速度降低到1秒以內(nèi)并且提高了多機(jī)回放的兼容性,優(yōu)化前后數(shù)據(jù)對(duì)比如下:
圖像識(shí)別
依托于愛(ài)奇藝自研的AI和機(jī)器學(xué)習(xí)技術(shù),支持對(duì)UI界面截圖進(jìn)行OCR識(shí)別和圖標(biāo)識(shí)別,使得Android端和iOS端使用同一套UI自動(dòng)化測(cè)試腳本成為可能,實(shí)現(xiàn)跨平臺(tái)腳本能力,目前這種方式多用于圖標(biāo)和icon的識(shí)別場(chǎng)景。
1.3 回放篇?
穩(wěn)定的腳本加上完善的任務(wù)調(diào)度服務(wù)才能實(shí)現(xiàn)自動(dòng)化任務(wù)的高效運(yùn)轉(zhuǎn)。iOS云平臺(tái)回放調(diào)度服務(wù)從設(shè)備篩選、任務(wù)觸發(fā)、任務(wù)執(zhí)行和問(wèn)題回溯等四個(gè)方面著力打造滿足業(yè)務(wù)線需求的平臺(tái)。
系統(tǒng)設(shè)計(jì)圖
設(shè)備篩選
手機(jī)設(shè)備作為自動(dòng)化任務(wù)執(zhí)行的最終載體,是自動(dòng)化任務(wù)啟動(dòng)的第一步,其豐富程度和篩選的靈活性決定服務(wù)的應(yīng)用范圍。平臺(tái)支持用戶從機(jī)型、分辨率、系統(tǒng)、運(yùn)營(yíng)商等多個(gè)維度進(jìn)行選擇。為避免手機(jī)本身異常影響自動(dòng)化任務(wù)執(zhí)行,在自動(dòng)化任務(wù)開(kāi)始之前系統(tǒng)會(huì)進(jìn)行設(shè)備環(huán)境檢查,只將任務(wù)分配到檢查通過(guò)的手機(jī)設(shè)備上執(zhí)行。
任務(wù)觸發(fā)
任務(wù)觸發(fā)無(wú)縫對(duì)接CICD,支持定時(shí)/手動(dòng)/指定條件觸發(fā),增加用例集概念,支持以業(yè)務(wù)線/用戶個(gè)人維度對(duì)執(zhí)行腳本進(jìn)行管理,并指定用例并行或串行執(zhí)行。例如,需要驗(yàn)證兼容性可以選擇相同用例多設(shè)備并發(fā)執(zhí)行,在用例較多時(shí)可選擇多設(shè)備分布式執(zhí)行以提升執(zhí)行效率。
任務(wù)執(zhí)行
自動(dòng)化執(zhí)行過(guò)程中,我們重點(diǎn)處理以下幾類情況,以保證自動(dòng)化任務(wù)穩(wěn)定運(yùn)行:
(1)實(shí)時(shí)監(jiān)控并處理系統(tǒng)彈窗和App內(nèi)各種彈窗等等,以保證任務(wù)執(zhí)行過(guò)程不被彈窗干擾,彈窗處理有效率>90%。
(2)測(cè)試關(guān)鍵過(guò)程信息隨時(shí)存取,同時(shí)啟動(dòng)崩潰檢測(cè),與bug項(xiàng)目協(xié)同管理,發(fā)現(xiàn)異常自動(dòng)轉(zhuǎn)為可視化bug。
(3)任務(wù)結(jié)束時(shí)自動(dòng)進(jìn)行清理環(huán)境,包括卸載App、清除本地執(zhí)行過(guò)程數(shù)據(jù)等,支持異常任務(wù)支持選擇相同條件設(shè)備進(jìn)行重試。
問(wèn)題定位
對(duì)App異常情況提供足夠的信息輔助開(kāi)發(fā)修復(fù)問(wèn)題形成閉環(huán)才是自動(dòng)化最終的目的,可視化報(bào)告必不可少,它可以幫助用戶快速了解整個(gè)任務(wù)的執(zhí)行情況、定位異常。
愛(ài)奇藝iOS云錄制回放提供的測(cè)試報(bào)告包含任務(wù)概況、設(shè)備信息、用例執(zhí)行步驟、執(zhí)行日志等內(nèi)容,讓我們對(duì)每個(gè)用例的執(zhí)行過(guò)程都了如指掌,快速還原崩潰前后場(chǎng)景。
基于云端設(shè)備管理模式,可以快速跳轉(zhuǎn)到對(duì)應(yīng)設(shè)備進(jìn)行場(chǎng)景回放和遠(yuǎn)程調(diào)試。
任務(wù)報(bào)告圖
02
? ?落地效果
錄制回放系統(tǒng)極大地降低了iOS自動(dòng)化的編寫和運(yùn)行成本,目前已應(yīng)用于愛(ài)奇藝內(nèi)部的多條業(yè)務(wù)線中,日均執(zhí)行次數(shù)100+,發(fā)現(xiàn)多例功能性bug和崩潰。在日常的版本準(zhǔn)入、回歸和CICD流程中發(fā)揮著重要的作用。
平臺(tái)提供的各類元素識(shí)別方法在不同系統(tǒng)手機(jī)上兼容性良好,平均執(zhí)行成功率穩(wěn)定在98%以上,常規(guī)版本迭代中腳本維護(hù)的成本低,單次維護(hù)半小時(shí)以內(nèi)。
03
? ?未來(lái)展望
當(dāng)前自動(dòng)化測(cè)試用例仍然需要測(cè)試同學(xué)進(jìn)行多次調(diào)優(yōu)才能達(dá)到最佳的執(zhí)行效果,智能化測(cè)試用例生成是一個(gè)重要的探索方向,未來(lái)我們會(huì)不斷地豐富元素的識(shí)別手段和生成方式,使用例生成更加智能、App自動(dòng)化運(yùn)行更穩(wěn)定。
在問(wèn)題定位方面,第一階段還是以提供執(zhí)行場(chǎng)景信息、人工定位和判斷為主,后續(xù)我們會(huì)持續(xù)跟進(jìn)各類問(wèn)題產(chǎn)生原因并生成知識(shí)庫(kù),結(jié)合知識(shí)庫(kù)實(shí)現(xiàn)失敗場(chǎng)景的初步定位和問(wèn)題智能分發(fā),進(jìn)一步降低自動(dòng)化跟進(jìn)和維護(hù)成本。
錄制回放作為自動(dòng)化的基礎(chǔ)平臺(tái),除支持基本的功能驗(yàn)證和UI驗(yàn)證外,未來(lái)會(huì)與愛(ài)奇藝內(nèi)部各平臺(tái)打通,支持同步啟動(dòng)流量錄制、PingBack檢測(cè)、數(shù)據(jù)Mock等,助力各種專項(xiàng)測(cè)試。
看完心動(dòng)了嗎?
戳👇“閱讀原文”直達(dá)招聘頁(yè)面
即刻加入愛(ài)奇藝!
也許你還想看
效能篇 | APP的自動(dòng)化錄制回放系統(tǒng) 全云化處理新體驗(yàn)
愛(ài)奇藝APP全面適配iOS 14 首批支持畫中畫功能 追劇聊天兩不誤
愛(ài)奇藝iOS穩(wěn)定性測(cè)試實(shí)踐
?關(guān)注我們,更多精彩內(nèi)容陪伴你!
總結(jié)
以上是生活随笔為你收集整理的录制快、回放稳,爱奇艺iOS云录制回放平台技术实践的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。