アプリをテストする

他のタイプの Android アプリとは異なり、Home APIs アプリには、物理的なスマートホーム デバイスへの依存関係、ネットワークの信頼性、セキュリティとプライバシー、デバイスとプロトコルの相互運用性など、独自の考慮事項と課題があります。これらの違いはテストに影響します。

テスト環境のセットアップ

Home APIs アプリをテストするには、堅牢なテスト環境が不可欠です。

Home API テストデバイスを専用の Wi-Fi ネットワークで分離することをおすすめします。これにより、他のデバイスからの干渉を防ぎ、帯域幅の制限など、さまざまなネットワーク条件をシミュレートできます。

さまざまなメーカーのさまざまなスマートホーム デバイスタイプを使用してテストすることをおすすめします。必ず実機でテストしてください。仮想デバイスとエミュレータは有用ですが、これらにのみ依存すべきではありません。

同様に、さまざまなメーカーのさまざまな Android デバイスで、画面の寸法が異なり、異なる Android バージョンを実行しているアプリをテストすると、より広範な互換性を確認できます。

ツールを準備する

Home APIs アプリのテストには、次のツールが役立ちます。

ツール 説明
Google Home Plugin for Android Studio Google Assistant Simulator、Home Graph Viewer、Google Cloud Logging、Android Debug Bridge(adb)ログビューアへのアクセスを提供します。
Google Home Playground 実際の物理デバイスでのテストの代わりにはなりませんが、多くのテスト シナリオで非常に役立ちます。
Matter Virtual Device (MVD) Home APIs アプリで Matter デバイスを使用してテストを行う際に役立つ別のエミュレーション アプリ。
Espresso UI テストを自動化できます。ハードウェアのインタラクションをシミュレートするには、基盤となる API をモックする必要があります。
ネットワーク エミュレータ さまざまなネットワーク条件と API レスポンスをシミュレートできます。これは、Home API がクラウド バックエンドを使用している場合に特に役立ちます。
Android Studio Logcat ログデータの処理と分析を行います。

さまざまなテスト アプローチと戦略を適用する

Home APIs アプリには、さまざまなテスト方法を適用する必要があります。さまざまな方法に関する一般的な情報については、Android でのアプリのテストをご覧ください。すべての Android アプリで実施されるユーザー エクスペリエンスとセキュリティのテストに加えて、Home API アプリに特に重要なテスト分野がいくつかあります。これらのテスト分野については、以下のセクションで詳しく説明します。

機能テスト

アプリの機能によっては、次の領域に特に注意する必要があります。

  1. デバイスの検出とペア設定(初期設定、新しいデバイスとのペア設定、アプリの再起動、デバイスの再起動、ネットワークの変更後の既存のデバイスの再検出など)。また、デバイスが応答しない場合や、ユーザーが間違った認証情報を入力した場合などのシナリオも確認します。
  2. 状態の同期。アプリが現在の状態を正確かつタイムリーに反映するように更新されることを確認します。
  3. 権限の管理と適用方法(特に、アプリが複数のユーザーまたは共有ホーム アクセスをサポートしている場合)。これには、アプリが取り消された権限を適切に処理することを確認することも含まれます。
  4. アプリがシーン(すべての照明をオフにする「おやすみ」シーンなど)をサポートしている場合は、シーンの作成、変更、実行をテストします。開始条件やアクションなどのテスト自動化。

パフォーマンス テスト

アプリが応答し、不要なレイテンシが発生しないことを確認します。可能であれば、多数のデバイスでテストして、スケーラビリティと負荷がかかった状態でのアプリのパフォーマンスを評価します。また、アプリの CPU、メモリ、バッテリーの消費量(特にデバイスがアクティブに通信しているとき)を確認して、リソースの使用量が妥当かどうかを確認します。

信頼性と安定性のテスト

ネットワーク接続に依存するため、Home API アプリは次のシナリオでテストする必要があります。

  1. ネットワークの変動
    • Wi-Fi の切断、電波の弱さ、ネットワークの切り替えをシミュレートします。
    • アプリが切断と再接続を適切に処理することを確認します。
    • 接続が復元されたときにコマンドがキューに登録されて実行されること、または適切なエラー メッセージが表示されることを確認します。
    • ホーム ネットワークだけでなく、リモート ネットワークからもアプリをテストします。
  2. デバイスの接続解除
    • デバイスの電源プラグを抜きます。
    • デバイスの電源を入れ直します。
  3. 同時オペレーション
    • コマンドの高速シーケンスを送信します。
    • 複数のユーザーが同じデバイスを同時に操作してみます。
    • 重複するシーンと自動化をテストします。
  4. エラー処理
    • クラウド API サーバーのレスポンスをモックするなどして、API エラーを強制します。
    • ユーザーからの無効な入力をテストします。
    • グレースフル デグラデーションと有益なエラー メッセージを確認します。
  5. 信頼性 - アプリと接続されたデバイスを長時間実行して、メモリリークや安定性の問題の可能性を検出します。