iOS利用Firebase Test Lab真機測試專案XCTest
theme: juejin
利用Firebase Test Lab真機測試專案XCTest
Firebase Test Lab 在 Google 資料中心內託管的裝置上測試您的應用。 是基於雲的應用測試基礎架構,它讓您可以在一系列裝置上以及各種配置下測試自己的應用,以便更好地瞭解其在使用者手中的表現。
Firebase Test Lab每個專案每天都有5次測試機會 (可以多建立幾個容易用於測試)
通過 gcloud CLI 進行測試
後通過在 gcloud 切換, 設定您的 Firebase 專案,其中 PROJECT_ID 是您的 Firebase 專案的 ID:
gcloud config set project ${PROJECT_ID}
1. 可以使用fastlane的外掛fastlane-plugin-firebase_test_lab
因為和google-cloud-storage
衝突,很遺憾我沒用起來, Issues也不能解決該問題
後面再進行調研補充
2. 使用shell命令列式
一. 專案打包Xctest產物xctestrun
-
專案目錄下執行可打包產物, 對應產物路徑為
${YOUR_DerivedDataPath}
xcodebuild build-for-testing \
-workspace ${YOUR_PROJECT_NAME}.xcworkspace \
-scheme ${YOUR_PROJECT_SCHEME_NAME} \
-derivedDataPath ${YOUR_DerivedDataPath} \
-sdk iphoneos
- 可能遇到的問題:
xctestrun
無效產物,不能進入測試 -
解決辦法:檢視UITests Scheme是否配置正確
-
解決後,正常的
xctestrun
產物
xcodebuild
常用命令:
```
1. 顯示當前所有的BuildSettings的配置
xcodebuild -showBuildSettings
-
檢視電腦裡面xcode支援的sdks xcodebuild -showsdks
-
清理專案 xcodebuild clean \ -workspace ${YOUR_PROJECT_NAME}.xcworkspace \ -scheme ${YOUR_PROJECT_SCHEME_NAME}
-
構建
```
二. 測試xctestrun
可以自己先用裝置測試編譯後的xctestrun
產物,不測試就上傳只會浪費測試機會
xcodebuild test-without-building \
-xctestrun ${.xctestrun產物絕對路徑} \
-destination 'platform=iOS,id={你的USB連線的裝置ID}'
-xctestrun xxx
傳入的就是入口檔案,一定要寫對地址,最好是完整路徑,防止出錯
-destination xxx
指定的測試裝置
三. 打包上傳到Firebase Test Lab
-
打包
cd ${YOUR_DerivedDataPath}/Build/Products ; \ zip -r MyTests.zip Debug-iphoneos ${YOUR_PROJECT_SCHEME_NAME}_iphoneos*.xctestrun
-
上傳 將生成的
MyTests.zip
手動上傳到Firebase專案下的Test Lab - 執行測試
即可 -
也可使用gcloud上傳並測試, 前提安裝好Cloud SDK
``` 1. 可檢視允許的測試裝置 gcloud firebase test ios models list
-
切換專案 gcloud config set project ${專案名稱id}
-
上傳並測試 gcloud firebase test ios run \ --test ${MyTests.zip路徑} \ --device model=iphone11,version=13.3 \ --timeout 20m
```
過程問題與解決
1. Minimum deployment version lower than device OS version.
關於DEPLOYMENT_TARGET錯誤理解問題 該錯誤版本並不是指Xcode iphone sdk打包的版本, 而是指UItest那個TARGETS只能的最低iOS支援版本
解決
2. Test execution timed out in runner invocation
UITests檔案寫法有問題,先在本機測試一番再上傳吧, 別浪費機會咯
3.Jenkins Pipeline呼叫sh執行zip壓縮檔案(打包)時報錯
解決:生成產物前要把產物的資料夾先刪除