App Testerを使用してアプリをテストする方法
App Testerは、Amazonアプリストアに変更を公開することなく、統合中にアプリのAppstore SDK機能をテストできるツールです。App Testerツールは、すべてのFire TVとFireタブレットに組み込まれた標準のAmazonアプリストアクライアントAPKを模倣したテストデバイスにインストールできるAPKです。App Testerはアプリのリクエストを処理し、Appstore SDKで提供される3つの主要機能(IAP、DRM、SSI)すべてのテストに使用できます。App Testerは独自のローカルデータストアを維持するため、テストアカウントやデバイスの本番状態に影響を与えることなく、すべてのリクエストを処理します。
App Testerを使用してアプリ内課金(IAP)APIをテストする方法の詳細については、App Testerユーザーガイドを参照してください。
App Tester APKは、Amazonの担当者から共有されたアーティファクトのバンドルに含まれています。ただし、通常はAmazonアプリストアを通じて配信されます。Amazon App Testerのリンクにアクセスして、デバイス用のAPKをダウンロードしてください。
App Testerを使用したテスト
App Testerでテストするには、アプリでサンドボックスモードをアクティブ化する必要があります。ADB(Fire TV/Fireタブレット)を使用してデバイスに接続し、次のコマンドを実行します。
adb shell setprop debug.amazon.sandboxmode debug
提供された署名付きのApp Tester APKをインストールし、App Testerを開きます。テストを構成するには、[Appstore SDK API's] をクリックします。
[Appstore SDK API] セクションで、[Simple Sign-in API Response Settings] リンクと [Manage Simple Sign-in] リンクを使用して、SSI関連のテストを構成および実行します。
シンプルサインインAPIレスポンスの構成方法
このセクションでは、App Testerがサンドボックステストモードでアプリに返すレスポンスを制御できます。App Testerは、手動で介入することなくSUCCESSFUL
レスポンスを返します。シンプルサインインAPI(getUserAndLinks()
とlinkUserAccount()
)は、シンプルサインインのバックエンドサービスに依存します。シンプルサインインAPI(getUserAndLinks()
とlinkUserAccount()
)は、シンプルサインインのバックエンドサービスに依存します。これらのAPIのレスポンスは、以下を使用して構成できます。
GetUserAndLinks API
サンドボックスモードでテスト中にアプリからアカウントリンクを設定すると、リンク済みアカウントの状態がApp Testerのローカルデータベースに保存されます。デフォルトでは、getUserAndLinks()
APIへのレスポンスは、そのデータベースからのアカウントリンクの現在の状態に基づいています。
アプリが特定のシナリオをどう処理するかをテストするには、レスポンスを構成して、APIがどのように特定の出力を返すかを確認します。視覚的なガイドとして下の画面を使用できます。RequestId
でリクエストステータス値の一覧を参照してください。
モックレスポンスを使用したテスト
App Testerでは、getUserAndLinks()
を構成して、ローカルデータベースを参照せずにオンザフライで生成されたモックレスポンスを返すこともできます。これは、getUserAndLinks()
APIをテストする前に、リンク済みアカウントを設定するための余分な作業を回避したい場合に便利です。
[Mocked response for GetUserAndLinks] チェックボックスをオンにして、このオプションを有効にします(下のスクリーンショットを参照)。返されると思われるリンク済みアカウントの数に基づいて、受信するモックレスポンスの種類を選択できます。
- デフォルトでは、[No linked accounts] が選択されているため、レスポンスで返されるリンク済みアカウントはありません。
- [One linked account] を選択すると、1つの事前定義されたリンク済みアカウントのデータを含むレスポンスが返されます。
- [Two linked accounts] を選択すると、2つの事前定義されたリンク済みアカウントのデータを含むレスポンスが返されます。
このオプションを選択しても、App Testerのローカルデータベースに保存されたテストデータは消去されません。このチェックボックスをオフにすると、App Testerに保存されたテストデータを使用したテストに戻ります。
LinkUserAccount API
App Testerは、ローカルデータベースに保存されたリンクトークンを使用して、アカウントリンクのリクエストをローカルで処理します。
getUserAndLinks()
APIを使用してアプリが特定のシナリオをどう処理するかをテストするのと同様に、linkUserAccount()
APIを設定し、受信するレスポンスを構成して目的の出力を返します(下のスクリーンショットを参照)。RequestStatus
でリクエストステータス値の一覧を参照してください。
App TesterはAmazonアプリストアのクラウドに接続しないため、アプリのAmazonアプリストアプライベートキーにアクセスできません。そのため、新しいアカウントリンクリクエストで指定されたlinkSigningKey
を復号化することはできません。その結果、サンドボックスモードでgetUserAndLinks()
APIから返されたSSIトークンは、任意のプライベート署名キーを使用して署名されます。これらのトークンは、クラウド内のアプリの実際のAmazonアプリストアパブリックキーでは検証できません。
App Testerを使用して、開発の初期段階でAppstore SDK統合のユニットテストを行い、ライブアプリテスト(LAT)を活用してエンドツーエンドのテストを行います。App Testerを使用してエンドツーエンドのフローをテストするには、バックエンドに追加の変更を加えて、アプリのデバッグバージョンからの認証リクエストを識別し、SSIトークン署名の検証をスキップします。
App Testerのトラブルシューティング
アプリからのSSI API呼び出しでApp Testerが正しく起動されていないと思われる場合は、以下を確認してください。
- テストにAPKのデバッグビルドを使用している:App Testerはデバッグバージョンのアプリでのみ動作します。
- Appstore SDKの既存ユーザーではなく、古いバージョンのApp Testerをインストールしたことがある:この問題を解決するには、App Testerをアンインストールして最新バージョンをインストールします。
-
デバイスでサンドボックスモードが正常にアクティブ化された:Appstore SDKの
SimpleSignInService
クラスでgetSDKMode()
メソッドを問い合わせて、Appstore SDKの現在のモードを特定できます。このメソッドから返される戻り値は次のとおりです。SANDBOX
PRODUCTION
UNKNOWN
SDKモードはSANDBOX
である必要があります。SDKモードがUNKNOWN
を返す場合、これは、アプリ内でAppstore SDKの初期化に問題が発生していることを示します。アプリのコンテキストとレスポンスハンドラーを登録するために、SimpleSignInService#registerResponseHandler()
を呼び出したかどうかを確認します。詳細については、手順2: 具体的な実装を登録するを参照してください。
リンク済みアカウントの管理
App Testerのローカルデータベースに保存されているリンク済みアカウントは削除できます。[Unlink linked accounts] をクリックして、現在のユーザーのリンク済みアカウントをすべて消去します。
ユーザーエクスペリエンスのシミュレーション
App Testerでは、ユーザー同意画面とログイン画面をシミュレーション実装します。これらの画面はアプリの本番画面でも同じ内容を表示しますが、これらの画面のルックアンドフィールはアプリの画面と大きく異なり、完成度が低い状態です。