XCTest

概要

XCTest(XCUITest)は、Appleが提供するiOSアプリの自動化テストフレームワークです。
これを使うと、開発者はアプリのUIや機能を自動的にテストすることができます。
AnyTestのAPIを利用し、XCTestを実行します。
実際のデバイス上でテストを実行できるため、より現実的なテスト結果を得ることができます。
これにより、エミュレーターやシミュレーターでは見つけにくいバグを発見できます。


XCTestとは

アプリケーションの機能やパフォーマンスを自動的にテストするためのツールです。
これにより、手動でテストを行う手間を省き、アプリの品質を向上させることができます。
主な機能として以下があります。

  • ユニットテスト:
    アプリの個々の機能(関数やメソッド)が正しく動作するかを確認します。
    例えば、計算機アプリの「足し算」機能が正しく動作するかをテストします。
  • UIテスト:
    ユーザーインターフェースが期待通りに動作するかを確認します。
    例えば、ボタンをクリックしたときに正しい画面が表示されるかをテストします。
  • パフォーマンステスト:
    アプリのパフォーマンス(速度やメモリ使用量など)を測定し、最適化の必要があるかを確認します。
参考:developer.apple.com > XCTest

事前準備

  • XCTest用のzipファイルを用意します。
    .ipaファイルを持っておらず、XCTestを試したい場合は、サンプルzipファイルをご利用ください。
  • テスト用のzipファイルをMyDataセクションに手動でアップロードするか、コマンドを使用してアップロードします。
    アップロード手順は後続のテストファイルのアップロードで説明します。
  • APIアクセスキーをコピーしておきます。APIアクセスキーについてはAPIアクセスキーをご確認ください。

もくじ

  1. AnyTest連携
  2. テストファイルのアップロード
  3. デバイスの予約
  4. テストの実行
  5. レポートの確認

1. AnyTest連携

AnyTestのAPIキーを使用して、コマンドを実行し、AnyTestと連携します。


  1. コマンドプロンプトに以下のコマンドを入力して、認証トークンを取得します。
    APIキーはユーザーアイコン>Profile>API Access_keyの「Copy」をクリックし取得します。
    curl -u "メールアドレス:APIキー" https://anytest.jp/api/access
  2. 認証トークンが発行されました。

2. テストファイルのアップロード

AnyTestにテストするファイルをアップロードします。ここではサンプル「ArchiveXCTestPRod.zip」をアップロードします。


  1. AnyTestのUIからMy Dataにアップロードするか、コマンドを使用しアップロードします。
    My Dataへのアップロード方法はiOSアプリをアップロードするをご確認ください。
  2. コマンドからアップロードする場合は、以下コマンドを入力します。
    curl -X POST -F "file=@ファイルパス" -F "source_type=raw" -F "token=取得した認証トークン" https://anytest.jp/api/upload_file
  3. ファイルのアップロードが成功しました。
    • 「statuscode:200」は成功を意味します。
    • ファイル名「ArchiveXCTestPRod.zip」がアップロードされたことを示しています。
  4. My Dataでファイルがアップロードされていることを確認できます。

3. デバイスの予約

  1. デバイス情報を取得します。AnyTest上のDevices一覧より確認することもできます。
    コマンドで取得する場合、以下コマンドを入力します。使用したいデバイスのDevice IDを利用します。
    curl -X POST -H "Content-Type: application/json" -d "{\"token\": \"取得した認証トークン\", \"duration\": 15, \"platform\": \"ios\", \"available_now\": \"true\"}" https://anytest.jp/api/devices
  2. AnyTestのDevicesからは、使用したいデバイスをクリックするとDevice IDが確認できます。
  3. 以下のコマンドを入力して、デバイスを予約します。
    curl -X POST -H "Content-Type: application/json" -d "{\"token\":\"取得した認証トークン\",\"devices\":[デバイスID],\"booking_duration\":30,\"automation_type\":\"XCUITest\"}" https://anytest.jp/api/automationbooking
  4. デバイス予約が成功すると、automationIdが返されます。
    • 「statuscode:200」は成功を意味します。
    • 「automationId:9148」を確認します。
  5. AnyTest>Utilities>My Bookingsよりデバイスが予約できていることを確認できます。

4. テストの実行

  1. 以下のコマンドを入力して、XCTestを初期化します
    curl -X POST -H "Content-Type: application/json" -d "{\"token\":\"取得したトークン\",\"automationId\":\"取得したautomationId\",\"test_suite\":\"アップロードしたファイル名\"}" https://anytest.jp/api/initautomation
  2. 「statuscode:200」と表示され、初期化が成功しました。
  3. 以下のコマンドを入力して、XCTestを開始します。
    curl -X POST -H "Content-Type: application/json" -d "{\"token\":\"取得したトークン\",\"automationId\":\"取得したautomationId\",\"startDeviceLogs\":\"true\",\"startPerformanceData\":\"true\",\"startSessionRecording\":\"true\"}" https://anytest.jp/api/startdeviceservices
  4. 「statuscode:200」と表示され、テストが行われました。
  5. 以下のコマンドを入力して、テスト結果を共有するためのリンクを取得します。
    curl -X POST -H "Content-Type: application/json" -d "{\"token\":\"取得したトークン\",\"rid\":\"取得したautomationId\"}" https://anytest.jp/api/getAutomationShareableReportLink
  6. リンクが返ってきました。このURLよりテスト結果を確認することができます。
  7. また、AnyTestのReportsからも確認することができます。
  8. テストが完了したら、デバイスを解放します。以下のコマンドを使用してください。
    curl -X POST -H "Content-Type: application/json" -d "{\"token\":\"取得したトークン\",\"automationId\":\"取得したautomationId\"}" https://anytest.jp/api/automationrelease
  9. 「statuscode:200」と表示され、デバイスが解放されました。

5. レポートの確認