Android 6.0 では、アプリを次のバージョンのプラットフォームで動作させることができます。このリリースには、アプリに影響を与える可能性のある多くの API と動作変更が含まれています。詳細については、API の概要と動作の変更点をご覧ください。このリリースでアプリをテストする場合、優れたユーザー エクスペリエンスを提供するために、システムの特定の変更に重点を置く必要があります。
このガイドでは、アプリで Android 6.0 の機能の何をどのようにテストすればよいか説明します。以下の機能は、アプリの動作に大きな影響を与える可能性があるので、優先してテストする必要があります。
権限のテスト
新しい権限モデルにより、ユーザーがアプリに権限を付与する方法が変わりました。アプリは、インストール手順ですべての権限を付与するのではなく、実行時に個々の権限をリクエストする必要があります。これにより、ユーザーは、各アプリのアクティビティをより細かく制御できるようになるだけではなく、アプリが各パーミッションを要求する理由をこれまでよりもよく理解できるようになります。ユーザーは、いつでもアプリに個別にパーミッションを付与したり、付与したパーミッションを個別に取り消したりできます。このリリースのこの機能は、アプリの動作に大きな影響を与える可能性があり、アプリの一部の機能が動作しなくなったり、限定された機能しか使えなくなったりする可能性もあります。
この変更は、アプリがこの新しいバージョンを対象にしているかどうかにかかわらず、この新しいプラットフォーム上で実行されるすべてのアプリに影響します。このプラットフォームは以前のアプリに限定的な互換動作を提供しますが、公式版のプラットフォームのリリースに合わせてアップデート版のアプリを公開できるように、新しいパーミッション モデルに対応させるためのアプリの移行を今から計画することを強くお勧めします。
テストのポイント
以下のテストのポイントを参考にして、アプリでの新しいパーミッション動作のテストを計画し、実行してください。
- アプリの現在のパーミッションと関連コードパスを確認します。
- 権限で保護されているサービスやデータでユーザーフローをテストします。
- 付与されたパーミッションと取り消されたパーミッションのさまざまな組み合わせをテストします。
adb
ツールを使用して、コマンドラインから権限を管理します。- グループごとに権限とステータスをリストする。
adb shell pm list permissions -d -g
- 以下の構文を使用して 1 つ以上の権限を付与または取り消します。
adb shell pm [grant|revoke] <permission.name> ...
- グループごとに権限とステータスをリストする。
- アプリを分析して、パーミッションを使用しているサービスを特定します。
テスト戦略
パーミッションの変更は、アプリの構造や設計、ユーザー エクスペリエンスやフローにも影響を与えます。アプリの現在のパーミッションの利用状況を調査し、新しいフローの検討を開始してください。このプラットフォームの公式リリースは互換動作をサポートしますが、互換動作に頼ることなくアプリのアップデートを計画することを強くお勧めします。
まずアプリが実際に必要とし使用しているパーミッションを特定してから、パーミッションで保護されたサービスを使用している各コードパスを探してください。そのためには、新しいプラットフォーム上でのテストと、コードの解析が必要です。テストでは、アプリの targetSdkVersion
を API レベル 23 に変えて、ランタイム パーミッションのオプトインを重点的に確認する必要があります。
権限の取り消しと追加をさまざまな組み合わせでテストして、権限に依存するユーザーフローを明らかにします。パーミッションへの依存性が明白でない、または論理的ではない箇所については、依存性を取り除くため、またはパーミッションが必要な理由を明白にするために、フローのリファクタリングまたはコンパートメント化を検討する必要があります。
ランタイム パーミッションの動作、テスト、ベスト プラクティスについては、システム パーミッションの使用をご覧ください。
Doze とアプリ スタンバイをテストする
Doze とアプリ スタンバイの省電力機能は、デバイスがアイドル状態のとき、またはアプリがフォーカスされていないときに、アプリが実行できるバックグラウンド処理の量を制限します。システムによってアプリに課せられる可能性のある制限には、ネットワーク アクセスの制限や停止、バックグラウンド タスクの停止、通知の停止、ウェイク リクエストの無視、アラームなどがあります。これらの省電力のための最適化が行われた状態で確実にアプリが適切に動作するように、これらの省電力状態をシミュレートしてアプリをテストする必要があります。
アプリで Doze をテストする
アプリで Doze モードをテストするには:
- Android 7.0(API レベル 24)のシステム イメージ搭載のハードウェア デバイスまたは仮想デバイスを設定します。
- デバイスを開発用 PC に接続してアプリをインストールします。
- アプリを実行してアクティブ状態のままにします。
- 次のコマンドを実行して、端末の Doze モードへの移行をシミュレートします。
$ adb shell dumpsys battery unplug $ adb shell dumpsys deviceidle step $ adb shell dumpsys deviceidle -h
- 端末がアクティブ状態に戻ったときのアプリの動作を観察します。端末が Doze モードから抜けるときに、アプリがスムーズに復帰することを確認します。
アプリ スタンバイモードでアプリをテストする
アプリでアプリ スタンバイ モードをテストするには:
- Android 7.0(API レベル 24)システム イメージを使用して、ハードウェア デバイスまたは仮想デバイスを構成します。
- デバイスを開発用 PC に接続してアプリをインストールします。
- アプリを実行してアクティブ状態のままにします。
- 次のコマンドを実行して、アプリのスタンバイ モードへの移行をシミュレートします。
$ adb shell am broadcast -a android.os.action.DISCHARGING $ adb shell am set-idle <packageName> true
- 次のコマンドを使用して、アプリの復帰をシミュレートします。
$ adb shell am set-idle <packageName> false
- アプリがウェイク状態に戻ったときのアプリの動作を観察します。デバイスがスタンバイ モードから正常に復帰することを確認します。特に、アプリの通知とバックグラウンド ジョブが想定どおりに機能し続けることを確認する必要があります。
アプリの自動バックアップとデバイス固有の識別子
アプリが、Google Cloud Messaging の登録 ID などの何らかの端末固有の識別子を内部ストレージに保持している場合、自動バックアップでユーザーデータをバックアップするの説明に従って、そのストレージのロケーションを自動バックアップの対象から除外してください。