iOS利用Firebase Test Lab真機測試專案XCTest

語言: CN / TW / HK

theme: juejin

利用Firebase Test Lab真機測試專案XCTest

Firebase Test Lab 在 Google 資料中心內託管的裝置上測試您的應用。 是基於雲的應用測試基礎架構,它讓您可以在一系列裝置上以及各種配置下測試自己的應用,以便更好地瞭解其在使用者手中的表現。

Firebase Test Lab每個專案每天都有5次測試機會 (可以多建立幾個容易用於測試) image.png

通過 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

  1. xcodebuild不會可以看這篇

  2. 專案目錄下執行可打包產物, 對應產物路徑為${YOUR_DerivedDataPath}

xcodebuild build-for-testing \ -workspace ${YOUR_PROJECT_NAME}.xcworkspace \ -scheme ${YOUR_PROJECT_SCHEME_NAME} \ -derivedDataPath ${YOUR_DerivedDataPath} \ -sdk iphoneos

  1. 可能遇到的問題:xctestrun無效產物,不能進入測試 image.png
  2. 解決辦法:檢視UITests Scheme是否配置正確 image.png

  3. 解決後,正常的xctestrun產物 image.png

xcodebuild常用命令: ``` 1. 顯示當前所有的BuildSettings的配置 xcodebuild -showBuildSettings

  1. 檢視電腦裡面xcode支援的sdks
 xcodebuild -showsdks

  2. 清理專案 xcodebuild clean \ -workspace ${YOUR_PROJECT_NAME}.xcworkspace \ -scheme ${YOUR_PROJECT_SCHEME_NAME}

  3. 構建

```

二. 測試xctestrun

可以自己先用裝置測試編譯後的xctestrun產物,不測試就上傳只會浪費測試機會

xcodebuild test-without-building \ -xctestrun ${.xctestrun產物絕對路徑} \ -destination 'platform=iOS,id={你的USB連線的裝置ID}'

-xctestrun xxx 傳入的就是入口檔案,一定要寫對地址,最好是完整路徑,防止出錯 -destination xxx 指定的測試裝置 image.png

三. 打包上傳到Firebase Test Lab

  1. 打包 cd ${YOUR_DerivedDataPath}/Build/Products ; \ zip -r MyTests.zip Debug-iphoneos ${YOUR_PROJECT_SCHEME_NAME}_iphoneos*.xctestrun

  2. 上傳 將生成的MyTests.zip手動上傳到Firebase專案下的Test Lab - 執行測試即可 image.png

  3. 也可使用gcloud上傳並測試, 前提安裝好Cloud SDK

``` 1. 可檢視允許的測試裝置 gcloud firebase test ios models list

  1. 切換專案 gcloud config set project ${專案名稱id}

  2. 上傳並測試 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.

image.png

關於DEPLOYMENT_TARGET錯誤理解問題 該錯誤版本並不是指Xcode iphone sdk打包的版本, 而是指UItest那個TARGETS只能的最低iOS支援版本

解決 image.png

2. Test execution timed out in runner invocation

image.png UITests檔案寫法有問題,先在本機測試一番再上傳吧, 別浪費機會咯

3.Jenkins Pipeline呼叫sh執行zip壓縮檔案(打包)時報錯

image.png

解決:生成產物前要把產物的資料夾先刪除 image.png