nana開発者ブログ

音楽SNSアプリ"nana"開発チームのブログです。

Bitrise上でXCUITestを動かすWorkflow

開発チームのiOSエンジニアをしている西山と申します!

今回は弊社で導入しているXCUITestをBitrise上で実行するための、Workflowを一部ご紹介したいと思います。

Device testing for iOS

XCUITestを複数の端末で実行するために、以下二つのWorkflowを採用しています。

  • Xcode Build for testing for iOS
  • iOS Device Testing f:id:nanamusic-tech:20210615101448p:plain

詳しくはDevice testing for iOSを参照ください。

Xcode Build for testing for iOS

Xcode Build for testing for iOSには大きく3つの変数を指定する必要があります。

  • Project (or Workspace) path
    • プロジェクトファイルのパスを指定します。
  • Scheme name
    • XCUITestを実行するスキームを指定します。
  • Configuration name
    • Build configurationを指定します 。(ex: Debug, Releaseなど)

以下のように環境変数に指定しておきます。 f:id:nanamusic-tech:20210615101710p:plain

iOS Device Testing

iOS Device Testingでは、UIテストを実行する端末を指定することができます。

Test devicesに所定のフォーマットで「端末、OS、言語、向き」を指定できます。

iphone8,14.1,ja,portrait
iphone11pro,14.1,ja,portrait
iphone7plus,14.1,ja,portrait

iOS Device Testingは、Firebase Test Labをベースとされているため、 指定できる最新の端末は、FirebaseのAvailable devices in Test Labを参照ください。

https://devcenter.bitrise.io/jp/testing/device-testing-for-ios/
あなたのアプリのテストはGoogleのデータセンター内にある本物のデバイス上で実行されます。

このように、よりユーザが操作するのに近い環境でテストを実行することができます。

現状だとiPhone11までだったりiOS14のものが少なかったりするので、種類が増えるのを期待したいですね。

Workflowを実施すると、Test Reportsのページから以下のように指定した端末の数だけテスト結果を確認することが可能になります。 f:id:nanamusic-tech:20210615101751p:plain

注意したい点

  • https://devcenter.bitrise.io/jp/testing/device-testing-for-ios/
    • 今回参考にした、Device testing for iOSの日本語ページには、「デバイスでのテストを許可する」の項目がありますが、こちらは現在削除されているようで、特段設定しなくてもDevice Testを実行することができました。(実際、英語ページ では、この項目は削除されています)
  • Provisioning Profile/Build Scheme/Build Configurationの環境を揃える
    • iOSエンジニアの方であれば当然の話かもしれませんが、本番/開発環境など、プロジェクト内で複数環境がある場合は、XCUITestを実施したい環境に全てが揃うように注意してください。
    • 私は1箇所勘違いしている点があり、ここで余計な時間を取られてしまいました。
  • 指定する端末について
    • 先述したように、テスト実施できる端末が豊富ではないので、これで十分か?の検討はしていただいた方が良いかと思います。
    • デバイスや、対応OSが廃止になることもあるので、定期的にデバイスリストについては確認する必要があります。こちら のページに削除予定の端末が掲載されています。

さいごに

nanaでは手動テストの負担を減らすべく、XCUITestの導入でクライアントテストの自動化を進めております。 これから導入を考えておられるプロジェクトの参考になればと思います。


nana musicでは、エンジニア/デザイナーを募集しております!

皆様のご応募をお待ちしております。

www.wantedly.com