アップロードのための Appium テストの準備
重要
Visual Studio App Center は、2025 年 3 月 31 日に廃止される予定です。 完全に廃止されるまで Visual Studio App Center を引き続き使用できますが、移行を検討できる推奨される代替手段がいくつかあります。
アプリとそのテスト スイートをアップロード用に準備する手順は、テスト フレームワークによって異なります。 このガイドでは、Java と JUnit を使用して App Center にアップロードする Appium テストを準備する方法について説明します。 Appium テストの作成に関するガイダンスについては、 Appium のドキュメントを参照してください。
Appium のサポートに関する次の制限事項に注意してください。
注意
WebView コンテキスト、Chrome Web Driver、および機能を備えた browserName
Chrome ブラウザー テストがサポートされています。
- TestNG はサポートされていません (JUnit テストのみがサポートされます)。
- Android 4.2 以前はサポートされません。 非推奨の UIAutomator ドライバーはサポートされていません。
- iOS 9.2.1 以前はサポートされません。 非推奨の UIAutomation iOS ドライバーはサポートされていません。
- の JUnit @Category attributeサポートはありません。 (代わりに Include/Exclude を使用できます)
- Maven バージョンは 3.3.9 以上である必要があります。
- 現在の Appium バージョンは 1.22.0 です。 新しいリリースで定期的に更新されます。
- JUnit 4.9 - 4.12 がサポートされています。JUnit 5 はサポートされていません。
- テストでは、正確に 1 つのアプリを対象にする必要があります。 (
MobileCapabilityType.FULL_RESET
はサポートされています)
注意
サポートされていないツールや機能を使用している場合でも、App Center でテストを実行できる場合があります。 ただし、サポートされていない機能は今後の更新では QA ではなく、警告なしで中断する可能性があります。
前提条件
テストは Maven Surefire を使用して実行されます。これには、 特定の名前付け規則に従う必要があるテストが必要です。
"**/Test*.java" - includes all of its subdirectories and all Java filenames that start with "Test".
"**/*Test.java" - includes all of its subdirectories and all Java filenames that end with "Test".
"**/*Tests.java" - includes all of its subdirectories and all Java filenames that end with "Tests".
"**/*TestCase.java" - includes all of its subdirectories and all Java filenames that end with "TestCase".
App Center テストにアップロードする前に、Maven を使用してマシンでローカルでテストを実行していることを確認してください。
➜ AppiumTest git:(main) ✗ mvn verify
...
Running MainTest
started: SimpleTest (MainTest)
Setting up capabilities
failed
finished
Tests run: 2, Failures: 0, Errors: 2, Skipped: 0, Time elapsed: 0.728 sec <<< FAILURE!
SimpleTest(MainTest) Time elapsed: 0.594 sec <<< ERROR!
...
コマンド ラインを使用してテストをローカルで実行できない場合、テストは App Center テストでも機能しません。
1. ビルド システムの変更
手順 1 - 依存関係を追加する
Appium テスト拡張機能の依存関係を追加する必要があります。
<dependency>
<groupId>com.microsoft.appcenter</groupId>
<artifactId>appium-test-extension</artifactId>
<version>1.6</version>
</dependency>
このコードにより、強化された Android ドライバーと iOS ドライバーがコンパイル時に使用できるようになります。 強化されたドライバーは、主に機能を有効 label
にするために提供されます。 この機能の詳細については、手順 4 を label
参照してください。
手順 2 - アップロード プロファイルを追加する
このスニペットを タグ内の <profiles>
にpom.xml
コピーします。 pom にセクションがない <profiles>
場合は、セクションを作成します。
プロファイルがアクティブになると、テスト クラスとすべての依存関係がフォルダーに target/upload
パックされ、Test にアップロードできるようになります。
2. テストの変更
手順 1 - インポートを追加する
これらのパッケージをテスト クラスにインポートします。
import com.microsoft.appcenter.appium.Factory;
import com.microsoft.appcenter.appium.EnhancedAndroidDriver;
import org.junit.rules.TestWatcher;
import org.junit.Rule;
手順 2 - TestWatcher をインスタンス化する
各テスト クラスに次の宣言を挿入します。
@Rule
public TestWatcher watcher = Factory.createWatcher();
手順 3 - ドライバーの宣言を更新する
のAndroidDriver<MobileElement>
宣言を または IOSDriver<MobileElement>
にEnhancedAndroidDriver<MobileElement>
置き換えますEnhancedIOSDriver<MobileElement>
private static EnhancedAndroidDriver<MobileElement> driver;
手順 4 - ドライバーのインスタンス化を更新する
ドライバーを インスタンス化 する方法を、次の形式で置き換えます。
driver = new AndroidDriver<MobileElement>(url, capabilities);
...は次に変更されます。
driver = Factory.createAndroidDriver(url, capabilities);
これらのドライバーを使用すると、追加の変更を加えることなくローカルでテストを実行できますが、 を使用して driver.label("text")
テスト実行でテストステップに "ラベル付け" することができます。 デバイスのテキストとスクリーンショットは、App Center のテスト レポートに表示されます。
アプリの最終状態のスクリーンショットを@After
取得する メソッドで を呼び出driver.label
することをお勧めします。 テストのメソッドの例 @After
は、次のコードのようになります。
@After
public void TearDown(){
driver.label("Stopping App");
driver.quit();
}
3. App Center テストにアップロードする
テストをアップロードする手順:
テストの実行を開始する手順を使用して、App Center Test upload コマンドを生成します。
テスト クラスとすべての依存関係を フォルダーに
target/upload
パックします。mvn -DskipTests -P prepare-for-upload package
upload コマンドを実行します。
appcenter test run appium --app "APP_ID" --devices "DEVICE_SET_ID" --app-path PATH_TO_FILE.apk --test-series "main" --locale "en_US" --build-dir target/upload
4. パフォーマンスのトラブルシューティング
App Center のデバイスでのテストは、ローカル デバイスよりも少し遅く実行されます。 通常、より多くのデバイスを使用できるため、実行速度が低下し、並列テスト実行が可能になります。
低速なテスト実行には、再署名、再インストール、ネットワーク タスクの 3 つのメインソースがあります。
再署名 (iOS の場合)
iOS デバイスにインストールされる前に、アプリは再署名と呼ばれるプロセスを経ます。 このプロセスは、プロビジョニング プロファイルをクラウド内のデバイスと一致させるために必要です。 再署名には時間がかかります。通常は約 1 ~ 2 分です。 再署名を行うと、再署名されたアプリがキャッシュされるため、パフォーマンスが低下することもほとんどありません。 時間のかかるプロセスは、バイナリごとに 1 回だけ実行されます。
継続的デリバリーのセットアップでビルドとテストの前に IPA バージョンが更新された場合、バイナリはテストごとに異なり、再署名のペナルティがより頻繁に発生します。
再インストール
共有デバイス クラウドでは、各テスト間でデバイスがクリーニングされることを保証することが重要です。 デバイスを使用している次の顧客は、別のorganizationのユーザーである可能性があります。 App Center テストでは、テストの実行が完了すると、アプリが自動的にアンインストールされます。
を省略MobileCapabilityType.FULL_RESET
して にtrue
設定MobileCapabilityType.NO_RESET
すると、テストの実行を高速化できます。 詳細については、「 戦略のリセット 」を参照してください。
ネットワーク タスク
サーバーの方が近く、リモート ホスト専用であるため、ローカル ネットワーク タスクの方が高速です。