国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【iOS自動化測試】第一章:方案調研

這篇具有很好參考價值的文章主要介紹了【iOS自動化測試】第一章:方案調研。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

背景

目前Android端已完成了相應的框架搭建,并實際落地產出了,由于Android使用的是Unittest+HtmlTestRunner產出報告,需要增加新功能的話需要改動到底層框架,所以目前在負責的iOS端打算采用Pytest+Allure方式來進行,優(yōu)點是更好的插件支持,報告也會更好看(裝逼)點

PS:Android端自動化運行相比iOS自動化確實會穩(wěn)定很多
【iOS自動化測試】第一章:方案調研

一 iOS自動化框架及工具介紹

1.UIAutomation
UIAutomation 是蘋果提供的 UI 自動化測試框架,使用 JavaScript 編寫。

基于 UIAutomation 有擴展型的工具框架和驅動型的框架。擴展型框架以 JavaScript 擴展庫方法提供了很多好用 js 工具,注入式的框架通常會提供一些 Lib 或者是 Framework,要求測試人員在待測應用的代碼工程中導入這些內容,框架可以通過他們完成對 app 的驅動。

驅動型 UI Automation 在自動化測試底層使用了 UI Automation 庫,通過 TCP 通信的方式驅動 UI Automation 來完成自動化測試,通過這種方式,編輯腳本的語言不再局限于 JavaScript。這個工具在 iOS UI 自動化測試中使用非常廣泛

2.XCTest
XCTest 是蘋果在 iOS 7 和 Xcode5 引入的一個簡單而強大的測試框架,集成在 Xcode 中,用來編寫測試代碼。它提供了各個層次的測試。

XCTest 測試編寫起來非常簡單,并且遵循 xUnit 風格。

Xcode 在創(chuàng)建工程時,會默認使用 XCTest,并且默認創(chuàng)建了 Unit Test(單元測試)和 UI Test(界面測試)兩個 Target,其中 Unit Test 主要用于測試代碼的大部分基本功能,比如絕大多數 Model 的類和方法測試,業(yè)務邏輯測試,網絡接口調用測試等等。

UI Test 一般會考慮到用戶的交互流程,模擬用戶的交互操作,利用 XCTest 的 UI 記錄特性來獲取界面上的一些列視圖元素和操作事件,然后在測試方法中觸發(fā)事件。

所以這是一個可以提供各個層次的測試的框架,比如單元測試,自動化測試,性能測試等
XCTest參考資料

3.KIF
KIF 是 Keep It Functional 項目的縮寫,是一款 iOS app 功能性測試框架,來自 Square,該測試框架只支持 iOS。

所有測試使用 Objective-C 語言編寫,對測試人員來講,需要熟練的掌握 Objective-C 語言 , 對蘋果開發(fā)者來說非常容易上手,更是一款開發(fā)者廣為推薦的測試工具。

KIF 使用未公開的 Apple API(私有 API),這對于測試目的而言是安全的,基于第三方 iOS UI 的單元測試框架,所以可以做項目的單元測試,也可以做 UI 集成測試。但缺點是運行較慢。

KIF參考資料

4.Frank

Frank 是 iOS 開發(fā)環(huán)境下一款實現自動測試的工具,Xcode 環(huán)境下開發(fā)完成后,通過 Frank 實現結構化的測試用例,其底層語言為 Ruby,作為一款開源的 iOS 測試工具,在國外已經有廣泛的應用。

但是國內相關資料卻比較少。其最大的優(yōu)點是允許我們用熟悉的自然語言實現實際的操作邏輯。

它提供了針對 iOS 平臺的功能測試能力,可以模擬用戶的操作對應用程序進行黑盒測試,并且使用 Cucumber 編寫測試用例,使測試用例如同自然語言一樣描述功能需求,讓測試以“可執(zhí)行的文檔”的形式成為業(yè)務客戶與交付團隊之間的橋梁。

  • 優(yōu)點

測試場景是在 Cucumber 的幫助下,用可理解的英語句子寫的,還有活躍的社區(qū)支持,以及不斷擴大中的庫。

  • 缺點

對手勢的支持有限,所以在設備上運行測試有點難。

5.Calabash-iOS
Calabash 是一個適用于 iOS 和 Android 開發(fā)者的跨平臺 app 測試框架,可用來測試屏幕截圖、手勢和實際功能代碼。

Calabash 開源免費并支持 Cucumber 語言,Cucumber 能讓你用自然的英語語言表述 app 的行為,實現 BDD(Behavior Driven Development,行為驅動開發(fā))。

而 Calabash-iOS 就是一個基于 Calabash 的 iOS 的功能、自動化測試框架。

  • 優(yōu)點:

有大型社區(qū)支持;
列表項簡單,類似英語表述的測試語句支持在屏幕上的所有動作,如滑動,縮放,旋轉,敲擊等。

  • 缺點:

測試步驟失敗后,將跳過所有的后續(xù)步驟,這可能會導致錯過更嚴重的產品問題。
測試耗費時間,因為它總是默認先安裝 app,需要 Calabash 框架安裝在 iOS 的 ipa
文件中, 因此測試人員必須要有 iOS 的 app 源碼。

除了 Ruby,對其他語言不友好

Calabash參考資料

6.Appium
Appium 是一個開源的、跨平臺的自動化測試工具,支持 iOS、Android 和 FirefoxOS 平臺。

通過 Appium,開發(fā)者無需重新編譯 app 或者做任何調整,就可以測試移動應用,可以使測試代碼訪問后端 API 和數據庫。

它是通過驅動蘋果的 UIAutomation 框架來實現的 iOS 平臺支持,底層使用的是WEBDriverAgent來進行驅動

開發(fā)者可以使用 WebDriver 兼容的任何語言編寫測試腳本,如 Ruby,C#,Java, JS,OC, PHP,Python,Perl 和 Clojure 語言。

今日主角:Appium

7.AirTest
Airtest是由網易游戲推出的UI自動化測試解決方案,是一個跨平臺的、 基于圖像識別的UI自動化測試框架,適用于游戲和App,支持平臺有Windows、Android和iOS。并且提供了基于UI控件識別的Poco框架,目前也支持Android原生、iOS原生、Unity3D、cocos2dx、UE4和Egret等平臺。為了讓測試人員更好上手,網易還貼心地提供了AirtestIDE工具,內置了Airtest和Poco的相關插件功能,能夠使用它快速簡單地編寫 Airtest 和 Poco 代碼

相比于Appium,POCOUI最大的亮點是其內部集成了自研的圖像識別進行點擊,代碼編寫的語法會更為精煉
PocoUi 參考資料

結合以上7種方案,如果能使用Object-C進行XCTest用例編寫其實是最優(yōu)選擇,但是由于本人對Object-C不熟悉,學習一門語言只用于做iOS自動化相關成本較大,所以綜合考量決定在Appium和Airtest之間做對比
Appium做自動化測試的都應該熟悉,Airtest作為網易開源的項目也是很不錯的,那么接下來看下兩者有何區(qū)別

二 Appium與Airtest的iOS自動化測試對比

對比項 Appium Airtest
安裝配置 中等:需要前置的一些依賴環(huán)境和填寫啟動的參數 簡單 IDE可直連
語言支持 涵蓋主流大部分語言 python為主
上手難易 中等 容易
市場占有率 TOP1 逐漸增加
支持平臺 Android,iOS,H5 Android,iOS,H5
集成框架 UiAutomator、UiAutomation框架 Poco元素識別、Airtest圖像識別
多設備并行 支持 支持
相關資料 較少
社區(qū)支持與維護 有專門的社區(qū)支持維護,交流討論較多 有Q群進行交流
后續(xù)升級 有保證 取決于網易團隊后續(xù)維護
測試報告 HtmlTestRunner、Allure 有自己帶的報告模板
CI持續(xù)集成 支持 支持
元素定位 部分頁面無法獲取元素 個人感覺元素定位不好用
執(zhí)行效率 文本定位較快,其余定位較慢 文本定位較快,其余定位較慢
穩(wěn)定性 一般,主要取決于WDA 一般,主要取決于WDA
編寫效率 取決于對Appium-Api的熟悉程度 取決于對Airtest和PocoUI的Api熟悉程度
適用場景 適用于自研,原生的App應用 多用于快速構建圖形腳本和游戲自動化

對比結論:

1.關于執(zhí)行效率上,Appium與Airtest相差不大,主要還是通過元素的文本方式進行定位,脫離了文本想對元素進行定位速度都比較慢

2.關于代碼編寫效率上,本人使用Appium會好于Airtest(由于Android項目),Airtest的Api是新的,與appium的有所不同,對Api的熟悉需要一定過程,前期可能會較慢,后期熟練了會較快,Airtest對api的封裝會更多一些,初始用者需要自己對Appium的Api進行封裝

3.關于穩(wěn)定性,Appium-wda和iOS-tagent都是基于facebook-wda(facebook未維護了,appium團隊對其進行改造有在維護,airtest目前也有在改造維護中)進行封裝改造的,試用時穩(wěn)定性差不多,暫未出現掉線情況,iOS-tagent據說簡化了內部的一些邏輯調用,不過總體體驗下來差不多,對于高版本的iOS,Airtest官方好像還是推薦Appium的wda

4.關于適用場景,Appium主要是通過元素定位來進行自動化運行,適用于原生App下沒有特殊強調對某種類型的app會更好用,屬于兼容性較強的場景使用性,Airtest由于背靠網易,所以在場景使用方面更受游戲公司的自動化運行,尤其是他的圖像識別點擊,能夠更好的識別游戲自動化中的場景,不過Airtest也可以通過PocoUI進行元素點擊,涉及圖形多的,如游戲類的可以使用Airtest

5.對于特定場景的元素定位,部分App流下,Appium與Airtest均無法獲取到其中的元素信息,從而導致無法對該部分內容進行校驗,Appium每次切換頁面需要手動刷新頁面
Airtest可以實時顯示界面,Airtest的連接方式相對于Appium會稍簡單

6.關于后續(xù)版本維護方面,Appium目前社區(qū)維護穩(wěn)定,幾天一更新,Airtest目前看最新的維護時間是在3個月前,相比之下Appium的維護工作會更好

7.關于多設備并行,Appium與Airtest都可以運行多設備,目前我這都是根據Tidevice啟動多個wda服務開啟多個端口號進行,使用情況差不多

8.相對于其他方面的比較基本都差不多

由于公司的App是原生+H5相關的,對Appium的使用也比較了解,兩者區(qū)別不是很大的情況下,還是選擇使用Appium做iOS自動化測試

三 Appium驅動原理

驅動原理

XCUITest是蘋果開發(fā)的一個做IOS自動化測試的框架,需要了解些Swift等iOS編程知識
WebDriverAgent是Facebook開發(fā)的一個iOS自動化測試工具,先來看下面的這張原理圖:

【iOS自動化測試】第一章:方案調研
WDA在Client創(chuàng)建了一個Server,在手機端安裝了一個叫作WebDriverAgentRunner 的一個應用;這個應用會接收來自 Server 的指令,并連接底層的XCTest.framwork,讓 XCTest.framwork 調用蘋果API來操作手機進行自動化

而appium是把WebDriverAgentRunner 給集成進去了,因此實現了appium的跨平臺能力

【iOS自動化測試】第一章:方案調研
通過上圖我們了解到 Appium 很粗暴的把整個 WebDriverAgent 直接集成到自己的項目里,然后通信機制就走 WebDriverAgent,Appium 其實就提供了一個 Client 端的作用。所以 iOS 9.3 系統之后自動化測試核心是 WebDriverAgent,Appium 就提供了一個 Client 端來寫腳本和發(fā)送指令。

Appium 自動化架構模式可以用一個抽象的架構表示,如下圖所示:

【iOS自動化測試】第一章:方案調研
從圖中可以看出:

  1. Client 端是 Appium 之前本身提供的;
  2. Server 端是:WebDriverAgent 和 Instruments;( Appium 直接把 WebDriverAgent 整個集成進來,Instruments 是為了支持 iOS 9.3 之前的系統)
  3. 之前 Server 是和 bootstrap.jar 通信,這里 WebDriverAgent提供了WebDriverAgentRunner (類似 jar 的功能),WebDriverAgent與之通信;
  4. WebDriverAgentRunner 是一個應用,Client 和 server 運行了之后,WebDriverAgentRunner 會被裝到手機上,這個應用會接收來自 Server 的指令,并連接底層的framwork,并告訴XCTest.framwork操作手機進行自動化
關于WebDriverAgent

FaceBook 出品:

  1. 實現了一個 server,通過 server 可以遠程控制 iOS 設備:啟動應用、關閉應用、點擊、滾動等操作;
  2. 通過連接 framework 調用蘋果的 API 執(zhí)行動作;
  3. 支持多個設備同時進行自動化;
  4. Appium、Macaca 已經集成。
  5. 但是 WebDriverAgent僅僅只提供了一個 server(和 inspect 進行元素定位),并沒有像Appium 一樣提供 java 或 python 的 Client 端去寫腳本,腳本執(zhí)行的時候發(fā)送指令給server,然后去運行。WebDriverAgent 要求你自己去實現 Client 端,即拿 Java/ Python 的WebDriver 庫進行封裝,然后發(fā)送指令。所以 WebDriverAgent 其實就類似于 Appium server,就只是一個server。
Appium簡介
Appium原理
  • Appium是一個開源、跨平臺的測試框架,可以用來測試原生及混合的移動端應用。Appium支持IOS、Android及FirefoxOS平臺。Appium使用WebDriver的jsonwire協議,來驅動Apple系統的UIAutomation庫、Android系統的UIAutomator框架。Appium對IOS系統的支持得益于Dan Cuellar’s對于IOS自動化的研究。Appium也集成了Selendroid,來支持老android版本。
  • Appium支持Selenium WebDriver支持的所有語言,如java、Object-C、JavaScript、Php Python、Ruby、C#、Clojure,或者Perl語言,更可以使用Selenium WebDriver的Api。Appium支持任何一種測試框架。如果只使用Apple的UIAutomation,我們只能用javascript來編寫測試用例,而且只能用Instruction來運行測試用例。同樣,如果只使用Google的UIAutomation,我們就只能用java來編寫測試用例。Appium實現了真正的跨平臺自動化測試。
  • appium選擇了client-server的設計模式。只要client能夠發(fā)送http請求給server,那么的話client用什么語言來實現都是可以的,這就是appium及webdriver如何做到支持多語言的;
Appium優(yōu)點
  1. 開源
  2. 跨架構:Native App、Hybird App、Web App
  3. 跨設備:Android、iOS、Firefox OS
  4. 不依賴源碼
  5. 使用任何 WebDriver 兼容的語言來編寫測試用例。比如 Java, Objective-C, JavaScript with
    Node.js (in both callback and yield-based flavours), PHP, Python,
    Ruby, C#, Clojure, 或者 Perl.
  6. 不需要重新編譯APP
  7. 支持IOS手機錄制視頻
Appium理念
  • 你無需為了自動化,而重新編譯或者修改你的應用。
  • 你不必局限于某種語言或者框架來寫和運行測試腳本。
  • 一個移動自動化的框架不應該在接口上重復造輪子。(移動自動化的接口應該統一)
  • 無論是精神上,還是名義上,都必須開源。
Appium 在 iOS 下工具的變革
  • iOS 9 之前一直以 instruments 下的 UIAutomation為驅動底層技術(弊端由于 instruments
    的限制,單臺 mac 只能對應單臺設備);
  • iOS 9.3 時代推出 XCUITest 工具,用以替代 UIAutomation;
  • iOS 10 時代蘋果直接廢棄了 UIAutomation、Facebook 推出 WebDriverAgent(實現的 server
    能夠支持單臺 mac 對應多個設備);
  • Appium 在iOS 9.3 后全面采用 WebDriverAgent 的方案。

下一章內容:

【iOS自動化測試】第二章:環(huán)境搭建文章來源地址http://www.zghlxwxcb.cn/news/detail-487780.html

到了這里,關于【iOS自動化測試】第一章:方案調研的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • python從小白到大師-第一章Python應用(八)應用領域與常見包-自動化辦公word

    目錄 一.python-docx 二.pypiwin32 Python-docx是一個用于創(chuàng)建、修改和讀取Microsoft Word文件(.docx)的Python庫。它提供了一組豐富的功能,使開發(fā)人員能夠使用Python生成自定義的Word文檔。 以下是python-docx庫的一些主要特點和功能: 創(chuàng)建和編輯Word文檔:可以使用python-docx庫創(chuàng)建新的Wor

    2024年02月21日
    瀏覽(19)
  • python從小白到大師-第一章Python應用(七)應用領域與常見包-自動化辦公PPT

    目錄 一.pywin32com 二.pptx Pywin32com是一個Python庫,它提供了與Microsoft Windows操作系統交互的能力。它基于COM(Component Object Model)技術,允許開發(fā)人員使用Python操作Windows應用程序、文件系統、注冊表和其他Windows組件。 Pywin32com提供了廣泛的功能,包括: 控制Microsoft Office套件中的

    2024年02月21日
    瀏覽(22)
  • 【Rust】Rust學習 第十一章編寫自動化測試

    【Rust】Rust學習 第十一章編寫自動化測試

    Rust 是一個相當注重正確性的編程語言,不過正確性是一個難以證明的復雜主題。Rust 的類型系統在此問題上下了很大的功夫,不過它不可能捕獲所有種類的錯誤。為此,Rust 也在語言本身包含了編寫軟件測試的支持。 編寫一個叫做? add_two ?的將傳遞給它的值加二的函數。它

    2024年02月13日
    瀏覽(27)
  • b站第一,Python自動化測試實戰(zhàn)詳細教學,3天教你學會自動化測試

    b站第一,Python自動化測試實戰(zhàn)詳細教學,3天教你學會自動化測試

    目錄 簡介 Python自動化測試概述 Python自動化測試目標 Python自動化測試流程 1. 測試計劃和設計 2. 測試腳本開發(fā) 3. 測試執(zhí)行和管理 4. 測試維護和優(yōu)化 Python自動化測試最佳實踐 Python自動化測試工具和框架 結論 自動化測試是軟件開發(fā)過程中一個必不可少的環(huán)節(jié)。而Python作為一門

    2024年02月03日
    瀏覽(51)
  • iOS非越獄自動化腳本的方案

    因為蘋果審核過于嚴格,私有 API 是不允許上架 appstore,但是自動化腳本是很多手游外掛的剛需,為了繞過蘋果的限制,采用現有的合法規(guī)則的辦法,實現 iPhone 的自動化操作,類似按鍵精靈的功能,我查詢了很多資料,做了一下嘗試: 首先放棄了PTFakeTouch、appuim、xctest、ui

    2024年02月11日
    瀏覽(17)
  • IOS自動化測試元素定位

    IOS自動化測試元素定位

    一、元素屬性介紹 ? 1、元素屬性 ? 2、查看各定位方式執(zhí)行效率 二、iOS常用定位方法 ? 1、accessibility_id ? 2、class_name ? 3、Xpath ? 4、ios_class_chain(類型鏈) ? 5、ios_predicate(謂詞) 一個頁面最基本組成單元是元素,想要定位一個元素,我們需要特定的信息來說明這個元素的唯一特

    2024年01月18日
    瀏覽(74)
  • IOS自動化測試環(huán)境搭建教程

    IOS自動化測試環(huán)境搭建教程

    目錄 一、前言 二、環(huán)境依賴 1、環(huán)境依賴項 2、環(huán)境需求與支持 三、環(huán)境配置 1、xcode安裝 2、Git安裝 3、Homebrew安裝(用brew來安裝依賴) 4、npm和nodejs安裝 5、libimobiledevice安裝 6、idevicesinstaller安裝 7、ios-deploy安裝 8、Carthage安裝 9、Appium安裝 【我安裝的appium版本:1.21.0】 10、

    2024年02月15日
    瀏覽(31)
  • 【Python 自動化】自媒體剪輯第一版·思路簡述與技術方案

    大家都知道我主業(yè)是個運維開發(fā)(或者算法工程師),每天時間不多,但我又想做自媒體。然后呢,我就想了個方案,每天起來之后寫個短視頻的腳本,包含一系列圖片和文字,然后上班的時候給它提交到流水線上跑,下班之前就能拿到視頻,然后往各大平臺上一傳,是不是

    2024年02月09日
    瀏覽(19)
  • 從0開始的ios自動化測試

    從0開始的ios自動化測試

    最近由于工作內容調整,需要開始弄ios自動化了。網上信息有點雜亂,這邊我就按我的實際情況,順便記錄下來,看是否能幫到有需要的人。 安裝tidevice 它的作用是,幫你繞開ios必須用mac的xcode啟動wda,直接在windows上使用tidevice啟動wda就行了(windows電腦需要先安裝iTunes)。

    2024年02月09日
    瀏覽(48)
  • iOS自動化測試工具-tidevice

    iOS自動化測試工具-tidevice

    在iOS測試過程中,經常會需要查看設備udid、查看包名,安裝和卸載應用,獲取設備截圖,獲取性能數據等操作,Android有豐富的adb命令可以使用,iOS的tidevice工具就類似于Android的adb,可以提供這些功能; 一直以來也沒有能夠直接獲取iOS性能數據的工具,tidevice可以方便的獲取

    2024年01月22日
    瀏覽(90)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包