自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

支付寶開源非侵入式 Android 自動(dòng)化測(cè)試工具 Soloπ

新聞 開源 自動(dòng)化
Soloπ(SoloPi)是支付寶開源的一個(gè)無(wú)線化、非侵入式的Android自動(dòng)化測(cè)試工具,公測(cè)版擁有錄制回放、性能測(cè)試、一機(jī)多控三項(xiàng)主要功能,能為測(cè)試開發(fā)人員節(jié)省寶貴時(shí)間。

 Soloπ(SoloPi)是支付寶開源的一個(gè)無(wú)線化、非侵入式的Android自動(dòng)化測(cè)試工具,公測(cè)版擁有錄制回放、性能測(cè)試、一機(jī)多控三項(xiàng)主要功能,能為測(cè)試開發(fā)人員節(jié)省寶貴時(shí)間。

本文是SoloPi團(tuán)隊(duì)關(guān)于項(xiàng)目的深度解讀,

作者:?jiǎn)倘饎P,螞蟻金服高級(jí)無(wú)線開發(fā)工程師

前言

近年來(lái),隨著移動(dòng)互聯(lián)網(wǎng)的蓬勃發(fā)展,移動(dòng)測(cè)試技術(shù)也取得了長(zhǎng)足的進(jìn)步,從早期基于測(cè)試腳本的單機(jī)自動(dòng)化,到錄制回放、圖像識(shí)別、云測(cè)平臺(tái)等測(cè)試技術(shù)貼合實(shí)際業(yè)務(wù)需求深度應(yīng)用和創(chuàng)新,測(cè)試效率從而一次又一次被提升。

本文主要介紹支付寶在移動(dòng)端上實(shí)現(xiàn)的一套無(wú)線化、非侵入、免 Root 的 Android 專項(xiàng)測(cè)試方案 Soloπ。直接操控手機(jī),即可實(shí)現(xiàn)自動(dòng)化的功能、性能、兼容性、以及穩(wěn)定性測(cè)試等工作。

移動(dòng)測(cè)試 1.0 時(shí)代

移動(dòng)測(cè)試 1.0 時(shí)代,也可以稱之為探索期。由于厭倦了日復(fù)一日的手工操作,如何提升測(cè)試效率成為了移動(dòng)測(cè)試領(lǐng)域最重要的課題,在此期間,除了 Monkey、UiAutomator、Instruments 等官方提供的工具,業(yè)界還涌現(xiàn)了一批優(yōu)秀的開源自動(dòng)化測(cè)試工具/框架,在自動(dòng)化驅(qū)動(dòng)能力的基礎(chǔ)之上,不僅可以實(shí)現(xiàn)基本功能的驗(yàn)證,還可以結(jié)合性能采集方案、遍歷算法等實(shí)現(xiàn)各類專項(xiàng)測(cè)試的自動(dòng)化。在這個(gè)階段,自動(dòng)化測(cè)試的常見形態(tài)是在單機(jī)或本地少數(shù)幾臺(tái) PC 上部署測(cè)試環(huán)境,再利用 Jenkins 等工具實(shí)現(xiàn)持續(xù)集成。

[[270529]]

移動(dòng)測(cè)試 2.0 時(shí)代

伴隨著測(cè)試技術(shù)的持續(xù)發(fā)展、又得益于 STF 的開源,業(yè)界開始出現(xiàn)了云測(cè)平臺(tái)的概念,將真機(jī)設(shè)備、任務(wù)管理、自動(dòng)化框架以及專項(xiàng)測(cè)試方案打包在平臺(tái)中作為服務(wù)提供出去,給用戶帶來(lái)了一站式的測(cè)試體驗(yàn)。另一方面,遠(yuǎn)程調(diào)試、設(shè)備調(diào)度等技術(shù)的引入極大的提升了設(shè)備的利用率,測(cè)試人員不再需要為缺少測(cè)試設(shè)備或測(cè)試任務(wù)排隊(duì)耗時(shí)而擔(dān)心。對(duì)于云測(cè)平臺(tái)用戶而言,在此階段常見的測(cè)試形態(tài)是:在本地 PC 上開發(fā)測(cè)試腳本,再上傳至云測(cè)平臺(tái)執(zhí)行,***可在平臺(tái)中查看測(cè)試報(bào)告,測(cè)試流程簡(jiǎn)單且清晰。

移動(dòng)測(cè)試 2.0+

在保留了上述“云測(cè)”的玩法之外,移動(dòng)測(cè)試 2.0+ 時(shí)代下的測(cè)試技術(shù)提供的往往不再是某一個(gè)獨(dú)立的小工具,更多的是帶來(lái)一套完整的解決方案,例如為用戶提供一套定制化的 IDE 環(huán)境,結(jié)合錄制回放、圖像識(shí)別等技術(shù),用戶可能只需要做一些簡(jiǎn)單的框選、拖拽就能完成測(cè)試腳本的開發(fā)。另一方面,由于辦公環(huán)境、硬件條件等因素的限制,越來(lái)越多的測(cè)試人員希望可以在移動(dòng)端上直接發(fā)起測(cè)試,做到移動(dòng)測(cè)試“移動(dòng)測(cè)”。當(dāng)然,無(wú)論是云端、IDE 端、還是移動(dòng)端,都應(yīng)該做到能力互通,即“多端多通”,這樣才能讓測(cè)試方案更加靈活、適用于更多場(chǎng)景。

[[270533]]

無(wú)線驅(qū)動(dòng)的Android專項(xiàng)測(cè)試方案:Soloπ

“多端多通”的概念比較廣,僅憑一篇文章可能無(wú)法闡述清楚,所以下面將會(huì)重點(diǎn)介紹為了迎接“移動(dòng) 2.0+”時(shí)代,我們?cè)谝苿?dòng)端上實(shí)現(xiàn)的一套無(wú)線化、非侵入、免 Root 的 Android 專項(xiàng)測(cè)試方案 Soloπ。直接操控手機(jī),即可實(shí)現(xiàn)自動(dòng)化的功能、性能、兼容性、以及穩(wěn)定性測(cè)試等工作。

整體架構(gòu)

這套方案中,底層依賴主要是“無(wú)線 ADB、系統(tǒng)輔助功能、Chrome 調(diào)試以及圖像識(shí)別技術(shù)”,后文將會(huì)介紹它們具體的應(yīng)用場(chǎng)景。同時(shí),在底層依賴的基礎(chǔ)上,我們封裝了一套核心能力,由“控件定位、事件驅(qū)動(dòng)、性能采集以及依賴注入”組成,并在服務(wù)層實(shí)現(xiàn)了錄制、回放、數(shù)據(jù)處理等公共服務(wù)能力。在架構(gòu)的最頂端,結(jié)合界面交互邏輯包裝出了各個(gè)功能的入口。

無(wú)線 ADB

大家都知道,對(duì)于 Android 自動(dòng)化,ADB shell 的執(zhí)行能力是一切的基礎(chǔ)。

在 PC 上,通過(guò) Android SDK 提供的ADB client 與同樣運(yùn)行于 PC 中的 ADB server 通信,再由 ADB server 通過(guò) USB 與位于設(shè)備中的 Adbd 通信。要實(shí)現(xiàn)一套無(wú)線化的方案,必須要擺脫對(duì) USB 線的依賴。好在 Android 系統(tǒng)還提供了一種基于 Socket 的 ADB 連接模式,既然是這樣,那么只需要按照 ADB 通信協(xié)議在端上與本機(jī)的 5555 端口進(jìn)行通信即可獲得 ADB shell 的執(zhí)行能力。

目前已經(jīng)有一些實(shí)現(xiàn) ADB 通信協(xié)議的 Java 開源項(xiàng)目,如 AdbLib ,他們封裝了一套 ADB 的調(diào)試通信服務(wù),能夠替代 PC 上 ADB Server 的角色。我們?cè)赟oloπ應(yīng)用中集成了 AdbLib 開源庫(kù),包裝成一套 ADB 命令執(zhí)行工具,為 Soloπ 后續(xù)各種專項(xiàng)測(cè)試能力的實(shí)現(xiàn)奠定了堅(jiān)實(shí)的基礎(chǔ)。下面將開始為大家介紹 Soloπ 的幾大核心功能。

錄制回放

錄制回放功能基于 AccessibilityService、ChromeDevToolsProtocol、圖像識(shí)別三種模式實(shí)現(xiàn)精確查找,可以在設(shè)備本地實(shí)現(xiàn)回放,也可以轉(zhuǎn)換為 Appium/Macaca 等框架的腳本,對(duì)接云測(cè)平臺(tái)。另外,為了降低用例維護(hù)的成本,我們?cè)诙松线€提供了用例編輯、流程控制的功能。 

實(shí)現(xiàn)方案

在錄制過(guò)程中,Soloπ 會(huì)對(duì)用戶的操作進(jìn)行攔截,識(shí)別用戶操作的位置,高亮當(dāng)前操作的控件,記錄用戶當(dāng)前要做的操作類型,在每一步操作后,將操作類型及目標(biāo)控件的各種信息都記錄下來(lái)。這里的控件信息包括控件的 ID、文字等基本信息,以及相對(duì)布局、截圖信息等。

在回放時(shí),Soloπ 會(huì)逐條解析之前錄制的數(shù)據(jù),通過(guò)智能查找算法,綜合各種屬性,定位目標(biāo)控件,找到控件后,就會(huì)執(zhí)行相應(yīng)的操作,如點(diǎn)擊、滑動(dòng)等。在所有步驟執(zhí)行后,會(huì)展示本次回放的結(jié)果,包括日志、截圖等信息,作為本次回放的總結(jié)。

控件查找能力

對(duì)于傳統(tǒng)的 Native 應(yīng)用,通過(guò) UiAutomator dump 獲取的屬性就足以實(shí)現(xiàn)自動(dòng)化了。然而,隨著移動(dòng)端動(dòng)態(tài)化能力的穩(wěn)步發(fā)展,越來(lái)越多的應(yīng)用采用了 “Native + H5/小程序” 這種混合開發(fā)的方案。再考慮到近年來(lái)手游行業(yè)的飛速發(fā)展,手機(jī)游戲自動(dòng)化測(cè)試的需求也越來(lái)越多。為了盡可能的適配各種場(chǎng)景,Soloπ 提供了三種查找模式:

  • ***種方案不必多說(shuō),核心就是基于 AccessbilityService 生成當(dāng)前控件視圖樹,并記錄下id、文字等屬性,適用于 Native 場(chǎng)景

  • 第二種方案基于 Chrome 的調(diào)試協(xié)議,通過(guò)注入js可以獲得頁(yè)面布局以及各元素屬性,控件的定位思路與輔助功能這一套方案是一致的。適用于 H5/小程序場(chǎng)景。

  • 第三種方案是圖像匹配方案,Soloπ 在端上實(shí)現(xiàn)了一套圖像比對(duì)能力,結(jié)合了模板匹配、特征匹配等算法,并做了一定的適配和調(diào)優(yōu)。適用于游戲自動(dòng)化的場(chǎng)景。此外,在 Soloπ 目前的方案中,圖像匹配能力還會(huì)作為前兩種定位方式的兜底方案,進(jìn)一步的提升控件查找的準(zhǔn)確率。

回放能力

通過(guò) Soloπ 錄制的用例會(huì)以 JSON 的形式存儲(chǔ)起來(lái),用例不僅可以向上述視頻演示的一樣在設(shè)備本地直接回放,還可以通過(guò) Soloπ 的解析器將用例轉(zhuǎn)換為 Appium、Macaca 等目前主流自動(dòng)化測(cè)試框架的腳本,輕松打通云測(cè)平臺(tái)。另外,得益于文本抓取和圖像識(shí)別能力,Soloπ 還實(shí)現(xiàn)了在 Android 端錄制一遍用例,生成的腳本能夠同時(shí)在 Android、iOS 雙端回放的能力。

更多功能

Soloπ 還提供了用例步驟的插入、刪除、修改等用例編輯功能,可以有效降低用例的維護(hù)成本。另外,Soloπ 還引入了循環(huán)、條件等流程控制能力,若對(duì)用例進(jìn)行合理編排,可輕松實(shí)現(xiàn)需要重復(fù)操作的工具腳本或是需要暴力回放的穩(wěn)定性測(cè)試腳本。

錄制回放更多的能力還包括結(jié)合數(shù)據(jù) Mock 解決用例回放不穩(wěn)定的能力、打通性能測(cè)試的能力等等。

一機(jī)多控

在各類專項(xiàng)測(cè)試中,兼容性測(cè)試是最為耗時(shí)費(fèi)力的一項(xiàng),測(cè)試人員需要關(guān)注各種系統(tǒng)版本、各大手機(jī)廠商,各種類型的屏幕等等,想要通過(guò)純?nèi)斯y(cè)試來(lái)保證兼容性測(cè)試的質(zhì)量成本是非常高的。

Soloπ 在錄制回放能力的基礎(chǔ)上實(shí)現(xiàn)了一套兼容性測(cè)試的解決方案。在錄制回放的場(chǎng)景中,我們先是在一臺(tái)設(shè)備上記錄了用戶的操作,然后再在任意一臺(tái)設(shè)備上實(shí)現(xiàn)操作的回放。如果把場(chǎng)景擴(kuò)展到多臺(tái)設(shè)備上,就可以實(shí)現(xiàn)通過(guò)一臺(tái)設(shè)備操控多臺(tái)設(shè)備,我們把這套功能稱為“一機(jī)多控”。具體說(shuō)來(lái)就是主機(jī)與從機(jī)建立 Socket 連接,然后在主機(jī)上將用戶的操作實(shí)時(shí)發(fā)送到各個(gè)從機(jī),在從機(jī)上完成操作的回放。

一機(jī)多控的環(huán)境搭建比較靈活,手邊的手機(jī)在安裝 Soloπ 后,通過(guò)簡(jiǎn)單的建聯(lián)操作即可完成部署。一機(jī)多控適配了目前市面上主流機(jī)型和 ROM,并封裝了一些提升測(cè)試效率的快捷功能,如應(yīng)用安裝、數(shù)據(jù)清理、設(shè)備信息查看等等。

[[270531]]

性能測(cè)試

提到專項(xiàng)測(cè)試,不得不提性能測(cè)試。近年來(lái),手機(jī)應(yīng)用成為了人們?nèi)粘I钪胁豢苫蛉钡囊徊糠?,這也對(duì)應(yīng)用的使用體驗(yàn)提出了更高的要求。 為了給用戶帶來(lái)“絲般順滑”的體驗(yàn),僅僅實(shí)現(xiàn)功能是不夠的,而性能測(cè)試,就是打造優(yōu)質(zhì)應(yīng)用不可或缺的一個(gè)環(huán)節(jié)。然而,性能測(cè)試的開展并不是很容易,一方面,性能測(cè)試具有一定的門檻,很多時(shí)候需要開發(fā)腳本去實(shí)現(xiàn),還要去處理各類兼容性問題。另一方面,大多數(shù)性能測(cè)試方案獲取到的都是一些基本指標(biāo),難以發(fā)現(xiàn)深層次的問題。針對(duì)上述問題,Soloπ 實(shí)現(xiàn)了一套性能測(cè)試工具。包含常規(guī)性能指標(biāo)獲取、響應(yīng)耗時(shí)計(jì)算以及移動(dòng) Lighthouse 三方面功能。

常規(guī)性能指標(biāo)獲取

Soloπ 支持 CPU、內(nèi)存、fps、流量等常規(guī)指標(biāo)的實(shí)時(shí)獲取,同時(shí)支持將性能數(shù)據(jù)記錄下來(lái),存儲(chǔ)到本地并通過(guò)報(bào)表形式展示。Soloπ 還提供了數(shù)據(jù)上傳的功能,可以將數(shù)據(jù)發(fā)送給服務(wù)端做進(jìn)一步的處理。整套性能工具支持手動(dòng)觸發(fā)和廣播觸發(fā),可以和自動(dòng)化測(cè)試輕松打通。

響應(yīng)耗時(shí)計(jì)算

除了常規(guī)性能指標(biāo)的獲取,Soloπ 還提供了響應(yīng)耗時(shí)計(jì)算的功能。大家都知道,計(jì)算響應(yīng)耗時(shí)的一種常用方法就是基于代碼埋點(diǎn)或是系統(tǒng)日志(比如 activityDisplayed Time),但是這種方法計(jì)算得到的結(jié)果對(duì)于異步加載較多的界面來(lái)說(shuō)會(huì)與用戶實(shí)際的觀感有比較大的偏差。

Soloπ 基于錄屏分幀能力實(shí)現(xiàn)了一套計(jì)算接近用戶體驗(yàn)的響應(yīng)時(shí)間的方案。具體的說(shuō),在開啟錄屏后,Soloπ 會(huì)基于 ADB shell 的 get event 命令監(jiān)聽屏幕的點(diǎn)擊事件,將其作為計(jì)算響應(yīng)耗時(shí)的起點(diǎn),當(dāng)錄屏結(jié)束后,Soloπ 會(huì)從后向前倒序?qū)σ曨l進(jìn)行對(duì)比,查找出界面趨于穩(wěn)定的時(shí)間點(diǎn),并作為計(jì)算的終點(diǎn),二者相減就是響應(yīng)耗時(shí)。

移動(dòng) Lighthouse

H5/小程序等技術(shù)在移動(dòng)應(yīng)用中的占比越來(lái)越高,如何測(cè)試這類應(yīng)用的性能成為了一個(gè)新的課題。接觸過(guò)前端性能的同學(xué)都知道,Lighthouse 是前端性能測(cè)試的利器,但是它無(wú)法在手機(jī)上直接應(yīng)用。而 Soloπ 所做的,就是基于 CDP 協(xié)議,在客戶端中實(shí)現(xiàn)了一套 Lighthouse 性能測(cè)試工具,它可以獲取 H5/小程序頁(yè)面的啟動(dòng)性能、資源流耗、請(qǐng)求質(zhì)量、JS 質(zhì)量、JSAPI 調(diào)用情況與頁(yè)面信息,并內(nèi)置了 30 余條前端開發(fā)***實(shí)踐,旨在發(fā)現(xiàn)細(xì)粒度的性能問題。

具體的實(shí)現(xiàn)方案,就是將 Soloπ 與待測(cè)應(yīng)用建立基于 CDP 協(xié)議建立 Websocket 通信,監(jiān)聽頁(yè)面發(fā)起請(qǐng)求、接收數(shù)據(jù)、開始加載等事件的回調(diào)、并收集報(bào)錯(cuò)、Trace 等數(shù)據(jù)。再按照啟動(dòng)性能、資源流耗、請(qǐng)求質(zhì)量、JS 質(zhì)量、 JSAPI 調(diào)用情況與頁(yè)面信息 6 大維度進(jìn)行數(shù)據(jù)的分類和整理,隨后通過(guò)內(nèi)置的規(guī)則對(duì)采集到的結(jié)果進(jìn)行判斷,最終生成報(bào)表并在界面中展示。

更多

作為一套完整的專項(xiàng)測(cè)試方案,除了前面提到的錄制回放、一機(jī)多控、性能測(cè)試外,Soloπ 還提供了數(shù)據(jù) Mock,性能加壓、網(wǎng)絡(luò)模擬、智能 Monkey 等功能。

責(zé)任編輯:張燕妮 來(lái)源: oschina
相關(guān)推薦

2011-05-30 17:50:23

分布式測(cè)試

2011-05-31 18:17:07

分布式測(cè)試

2012-12-24 22:54:31

2014-11-12 09:24:00

2022-07-04 09:00:36

Playwright自動(dòng)化測(cè)試工具

2016-11-11 14:34:46

開源開源工具

2020-08-07 08:10:25

開源技術(shù) 工具

2022-08-08 07:35:37

云測(cè)試工具云存儲(chǔ)云計(jì)算

2009-07-06 10:08:03

Flex自動(dòng)化

2011-11-18 09:11:21

Web

2012-09-17 13:21:22

iOSAndroid自動(dòng)化測(cè)試工具

2015-04-15 13:30:54

2010-08-10 14:34:37

QTPFlex

2022-06-16 11:57:22

自動(dòng)化安全開源

2011-06-08 17:15:46

QTP腳本

2010-08-10 14:25:42

SilkTestFlex

2022-06-02 09:00:00

人工智能工具自動(dòng)化測(cè)試

2021-12-17 10:01:52

人工智能測(cè)試工具

2014-11-17 10:52:56

支付寶去阿里化

2010-08-10 14:18:15

RationalFunFlex
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)