iOS自動(dòng)化測(cè)試:自動(dòng)遍歷工具試用總結(jié)

簡(jiǎn)介

本篇分析了近期試用的幾款iOS自動(dòng)化測(cè)試工具

背景

  • 市場(chǎng)背景
    • 蘋果官方只提供底層庫(kù)XCUITest,需要開(kāi)發(fā)
    • iOS平臺(tái)自動(dòng)測(cè)試工具少,各大云市場(chǎng)上自動(dòng)遍歷功能都多有限制企業(yè)無(wú)法自由定制.
  • 測(cè)試常見(jiàn)問(wèn)題:
    • UI自動(dòng)化只能覆蓋核心業(yè)務(wù)邏輯,新功能來(lái)不及上自動(dòng)化
    • 產(chǎn)品業(yè)務(wù)測(cè)試量較大,新版發(fā)布后,老功能來(lái)不及全面回歸,容易漏測(cè)
    • 時(shí)間長(zhǎng),強(qiáng)度大的工作后,人容易產(chǎn)生疲乏,對(duì)數(shù)字的位數(shù),文字的顯示等錯(cuò)誤信息的敏感度下降
    • 產(chǎn)品的界面深度很深,且包含大量的展示信息功能
    • 專項(xiàng)測(cè)試回歸難度大:內(nèi)存泄漏、健壯性測(cè)試、弱網(wǎng)等測(cè)試太多

這個(gè)時(shí)候我們需要一種手段,可以達(dá)到兩方面的目的:

  • code less: UI自動(dòng)化用例維護(hù)成本降到最低
  • automate: 盡可能的自動(dòng)化覆蓋回歸業(yè)務(wù)

工具對(duì)比

SwiftMonkey

SwiftMonkey是一款基于蘋果XCTest框架為基礎(chǔ)的隨機(jī)生成操作Action的測(cè)試框架,只支持iOS端。
參考鏈接:SwiftMonkey Github

工作原理介紹

通過(guò)代碼隨機(jī)生成操作事件,使用蘋果官方XCTest框架執(zhí)行操作,在Xcode10.1之前使用蘋果的私有api 如XCEventGenerator.tapAtTouchLocations 故執(zhí)行速度極快,在Xcode10.1之后只能使用public API,速度在1秒3-5個(gè)操作。

總結(jié)
  • 優(yōu)點(diǎn):
    由于monkey在測(cè)試過(guò)程中的“隨機(jī)”性,且執(zhí)行速度快,可以用來(lái)做App壓力測(cè)試
  • 缺點(diǎn):
    不滿足我們的兩個(gè)自動(dòng)遍歷需求:可控性和可定制

因?yàn)槎贪迕黠@,用于自動(dòng)遍歷上效果不佳,但是做為壓力測(cè)試和崩潰檢測(cè)工具還是不錯(cuò)的。

NoSmoke 2.0

NoSmoke 是一款基于source-XML-tree/OCR 為基礎(chǔ)的多端UI自動(dòng)化測(cè)試框架,支持Android iOS。
參考鏈接:NoSmoke 2.0

工作原理介紹

爬蟲程序通過(guò)OCR 掃描客戶端App 窗口圖片對(duì)可操作點(diǎn)進(jìn)行分析,規(guī)避了大量的xml 計(jì)算成本,從而提升效率.


image
總結(jié)
  • 優(yōu)點(diǎn):
    • 自動(dòng)遍歷App進(jìn)行UI測(cè)試,并提供測(cè)試報(bào)告
    • 可控制,提供攔截鉤子,針對(duì)特殊的情景自定義操作事件
    • 支持多端運(yùn)行: iOS, Android
  • 缺點(diǎn):
    • 使用OCR的掃描方式過(guò)于依賴掃描的精準(zhǔn)度,且目前使用的工具對(duì)中文識(shí)別的友好度低,會(huì)出現(xiàn)掃描出錯(cuò),一個(gè)句子被截?cái)酁閿?shù)段等情況

由于NoSmoke2.0使用的OCR tesseract對(duì)于中文的識(shí)別效果不佳導(dǎo)致各種異常,所以目前對(duì)于中文app的支持不佳,難以使用。

AppCrawler

一個(gè)基于Appium框架的自動(dòng)遍歷app爬蟲工具. 支持android和iOS, 支持真機(jī)和模擬器. 最大的特點(diǎn)是靈活性. 可通過(guò)配置來(lái)設(shè)定遍歷的規(guī)則.
參考鏈接:AppCrawler GithubAppium 介紹

工作原理介紹

框架結(jié)構(gòu)

  • appcrawler底層引擎
    • appium
      • WebDriverAgent
        • iOS 9.3 及以上 XCUITest
        • iOS 9.3 及以下 UIAutomation

appcrawler流程


AppCrawler流程
總結(jié)
  • 優(yōu)點(diǎn):
    • 跨平臺(tái)性:AppCrawler是基于appium開(kāi)發(fā)的,所以支持Android和IOS
    • 可控性:對(duì)測(cè)試的頁(yè)面,控件類型的選擇,測(cè)試的深度等都可自由控制
    • 可定制:可自定義操作,如輸入,滑動(dòng)等
  • 缺點(diǎn):
    • 運(yùn)行速度較慢:AppCrawler是基于appium開(kāi)發(fā)具備了跨平臺(tái)的優(yōu)點(diǎn),但是也因?yàn)檫@層封裝造成了運(yùn)行速度相對(duì)較慢
    • 使用門檻高:正因?yàn)槭褂渺`活性的問(wèn)題,也造成了使用門檻的提高,主要基于yaml文件中使用appium的相關(guān)技術(shù)知識(shí)進(jìn)行配置,這就對(duì)使用者有了一定的技術(shù)要求
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容