最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

iOS 自動(dòng)化測(cè)試踩坑(一): 技術(shù)方案、環(huán)境配置與落地實(shí)踐

2022-10-31 15:19 作者:愛(ài)測(cè)軟件測(cè)試  | 我要投稿

移動(dòng)端的自動(dòng)化測(cè)試,最常見(jiàn)的是 Android 自動(dòng)化測(cè)試,我個(gè)人覺(jué)得 Android 的測(cè)試優(yōu)先級(jí)會(huì)更高,也更開(kāi)放,更容易測(cè)試;而 iOS 相較于 Android 要安全穩(wěn)定的多,但也是一個(gè)必須測(cè)試的方向,這個(gè)系列文章記錄了 iOS 自動(dòng)化測(cè)試的一些實(shí)踐。

Xcode 下載地址:Sign In - Apple
下載安裝好的圖標(biāo)如下 :

先來(lái)看目前主流的 iOS 移動(dòng)測(cè)試框架

  • Appium:目前最常用的 App 自動(dòng)化測(cè)試框架,具備跨平臺(tái)性

  • Calabash-IOS :BDD 模式,沒(méi)有過(guò)多的了解使用

  • KIF:KIF 使用 XCTest 框架,需要對(duì) Objective—C 、Swift 和 XCTest 掌握程度較高,這個(gè)對(duì)測(cè)試工程師來(lái)說(shuō)學(xué)習(xí)成本太大

  • XCTest:蘋(píng)果官方提供的 iOS 測(cè)試框架,要求同 KIF 一致

  • WebDriverAgent:由 Facebook 推出的一款 iOS 移動(dòng)測(cè)試框架,也是 Appium 跨平臺(tái)的底層驅(qū)動(dòng);WDA 本身也是一個(gè)完整的基于 webdriver 協(xié)議的框架

  • Uiautomation :在 Xcode8 后廢棄

之前的 Android 自動(dòng)化我們選擇的是 Appium 框架作為底層的驅(qū)動(dòng)框架,當(dāng)時(shí)就介紹說(shuō) Appium 的優(yōu)點(diǎn)之一就是跨平臺(tái)性,其實(shí)也就是因?yàn)槠涞讓臃庋b了 WebDriverAgent,而我們期望的是:

  • 做一套可以跨平臺(tái)支持的 App 測(cè)試方案,可以在公司的 Android 和 iOS 版本間自由切換測(cè)試

  • 并且在編程語(yǔ)言上要是測(cè)試工程師常用的 Java 或 Python,降低學(xué)習(xí)成本
    綜上原因,那么最終的選擇依然是 Appium。

Appium 官方提供了一個(gè)演練的 iOS App,以此為例進(jìn)行演示。

Appium 演練 example 地址:
https://github.com/appium/ios-uicatalog 2

將項(xiàng)目 clone 到本地后用 Xcode 打開(kāi),注意打開(kāi) iOS 項(xiàng)目要打開(kāi)以 .xcodeproj 結(jié)尾的文件 。

插入真機(jī),Xcode 上選擇真機(jī),在Singing 中添加 AppleID 作為 account,生成一個(gè)本地的 Provisioning Profile 和設(shè)備上的證書(shū)

踩坑:你可能會(huì)遇到如下的錯(cuò)誤信息

這是因?yàn)槟愕?bundle identifier 不唯一導(dǎo)致,將其修改自定義為一個(gè)唯一的 bundle identifier 再嘗試即可

Xcode 中選中 Build,Success 后在手機(jī)中我們可以看到 UICatalog 已經(jīng)被成功安裝,嘗試打開(kāi):

踩坑: 蘋(píng)果對(duì)未在 AppStore 中上架的 App 做了限制,默認(rèn)不受信任,所以我們需要手動(dòng)將其設(shè)置為信任: 設(shè)置-通用-描述文件與設(shè)備管理

這個(gè)時(shí)候再打開(kāi) App,就可以正常操作運(yùn)行了

上面介紹了這里是選中 Appium 作為移動(dòng)測(cè)試框架,因此 Appium 相關(guān)環(huán)境的安裝必不可少,具體安裝細(xì)節(jié)可參考另一篇文章:Windows(Win10)、Mac下安裝 Appium

另外還需要幾個(gè)輔助測(cè)試工具和命令,依賴工具包安裝:

查看模擬器列表:instruments -s devices 運(yùn)行結(jié)果如下,可以看到最前面兩行顯示的其實(shí)是本機(jī)的 Mac 和連接的 iPhone 真機(jī),剩下的是模擬器。

查看真機(jī)列表:idevice_id -l

安裝 App:ideviceinstaller -i demo.app
命令行編譯(在做持續(xù)集成時(shí)候可能會(huì)用到):

雖然 Appium 使用WDA作為底層的 iOS 自動(dòng)化框架,但是由于版本的更新等原因,可能造成 Appium 本身自帶的 WDA 會(huì)有 bug,因此為了保險(xiǎn)起見(jiàn),先手動(dòng)下載 facebook 的 WebDriverAgent facebook WebDriverAgengithub

地址:https://github.com/facebookarchive/WebDriverAgent 1

然后我們進(jìn)入 WebDriverAgent 進(jìn)行編譯,在 Scripts 下有一個(gè) bootstrap.sh 腳本,執(zhí)行它即可。

小技巧: 使用 bash -x 命令可以輸出更詳細(xì)的執(zhí)行過(guò)程

踩坑: 安裝最后我們可以看到部分依賴安裝需要安裝 Carthage 這個(gè)東西,如果沒(méi)注意的話就會(huì)造成 RoutingHTTPServer 部分文件缺失,后面 build 就會(huì)報(bào)錯(cuò) 。

通過(guò)命令 brew install carthage 安裝后再執(zhí)行 ./Scripts/bootstrap.sh 即可。

根據(jù) WebDriverAgent 官網(wǎng)提供的步驟,將參數(shù)替換為我們真機(jī)的參數(shù)后在真機(jī)上嘗試build 。

踩坑: 執(zhí)行完命令后可能會(huì)出現(xiàn)如下報(bào)錯(cuò)

從報(bào)錯(cuò)信息來(lái)看,缺少 development team,那么我們回到 Xcode,將 Automatically manage signing 進(jìn)行勾選后選擇一個(gè) Team,注意要進(jìn)入 WebDriverAgentRunner 中進(jìn)行設(shè)置 。

設(shè)置好之后又會(huì)出現(xiàn)報(bào)錯(cuò),如下:


這個(gè)報(bào)錯(cuò)信息就和我們之前提到的一樣,bundle indentifler 不唯一,保險(xiǎn)起見(jiàn),這里將項(xiàng)目中所有的 Targets 都進(jìn)行了修改

修改好之后我們?cè)俅?build,之前的問(wèn)題解決了,不幸的是 build 又 fail 了,又出現(xiàn)了新的報(bào)錯(cuò):

幸運(yùn)的是在 Google 上一位外國(guó)友人輕描淡寫(xiě)的一句話解決了我的問(wèn)題(感謝外國(guó)友人~)

沒(méi)錯(cuò),我們?cè)趫?bào)錯(cuò)出雙擊,進(jìn)入到報(bào)錯(cuò)代碼處,將 assign 改為 strong 后再次 build :

Build succeeded?。?!老淚縱橫…

最終,再執(zhí)行

終于在 iOS 真機(jī)上看到了 WDA 的身影

上面是我所經(jīng)歷的各種坑,也都是我實(shí)測(cè)過(guò)一步步填平的,下面試我認(rèn)識(shí)的小伙伴踩到的坑和填坑方法,作為補(bǔ)充供記錄參考
1)執(zhí)行 ./Scripts/bootstrap.sh ERROR in ./js/app.js 報(bào)錯(cuò)

2)執(zhí)行時(shí)候報(bào) xcodebuild failed with code 65 錯(cuò)誤

花了很大的功夫和篇幅,記錄 iOS 自動(dòng)化的準(zhǔn)備工作,踩了很多坑,坑不能白踩,后面繼續(xù)實(shí)現(xiàn) iOS 的自動(dòng)化測(cè)試落地,也歡迎小伙伴一起留言探討。


iOS 自動(dòng)化測(cè)試踩坑(一): 技術(shù)方案、環(huán)境配置與落地實(shí)踐的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
永嘉县| 红原县| 沂南县| 临颍县| 宁蒗| 城步| 西畴县| 成都市| 应城市| 剑川县| 南宁市| 南川市| 祁连县| 蓬安县| 庆云县| 红安县| 钟山县| 凯里市| 常山县| 司法| 北宁市| 滨海县| 白朗县| 泰安市| 五寨县| 禄劝| 鹤壁市| 乳山市| 延庆县| 太白县| 秭归县| 鲁甸县| 阳城县| 云梦县| 老河口市| 金门县| 清原| 嘉荫县| 遵义市| 重庆市| 旌德县|