當 XCUITest 碰上 Pipeline

前言

過往使用 XCUITest 做自動化測試時經常遇到幾個情形。

  1. Testing script 完成, merge code 的時候 production code 出現 conflicts,請 developer 幫忙解。
  2. Build scheme 的時候,production code 各種 fail,請 developer 幫忙解。
  3. 搞不清楚昨天跑的 XCUITest 到底是哪一版的 app,請 developer 幫忙確認。

為了解決上述各種需要 developer 介入的情境,我們試著使用 xcodebuild的功能 build-for-testing 以及 test-without-building,同時改變在 GitHub 開發 testing script 方式。

導入這些改變之後,整個測試流程順暢了許多,也做了 Jenkins 的整合,但回頭看 Jenkins 的建置設定,已經長成這樣了。

嗯,大概第一次設定完成後就再也不想動它惹,何況後面還有長得差不多肥的 post actions,維護這樣的 Jenkins job 誰受得了。

既然這樣,那乾脆改成 Pipeline 吧。

實作

先看看改成 Pipeline 之後,Jenkins 的設定。

只剩下 SCM 的設定,所有繁瑣的步驟都放到 Jenkinsfile 裡面。

再來看看改成 Pipeline 後,job 執行的結果。

是 build 有問題?還是 test 沒過?或是掛在 post actions?
一目瞭然,同時也可以清楚知道每個 stage 所耗費的時間。

改成 Jenkinsfile 在維護上更加容易,也提供了更多的彈性。

後記

其實 iCHEF 的 XCUITest 導入 Pipeline 是個很有趣的挑戰,其中還有使用像 Fastlane 這樣的工具,以及和 developer 的 build job 整合,才有上面的 Pipeline 成果,更多細節以後有機會再和大家分享。

目前 QE 徵才也正持續進行中,歡迎對 iOS 測試有興趣的大家一起加入我們的行列!