Android 6.0 テストガイド
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
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 などの何らかの端末固有の識別子を内部ストレージに保持している場合、自動バックアップでユーザーデータをバックアップするの説明に従って、そのストレージのロケーションを自動バックアップの対象から除外してください。
このページのコンテンツやコードサンプルは、コンテンツ ライセンスに記載のライセンスに従います。Java および OpenJDK は Oracle および関連会社の商標または登録商標です。
最終更新日 2025-07-27 UTC。
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["必要な情報がない","missingTheInformationINeed","thumb-down"],["複雑すぎる / 手順が多すぎる","tooComplicatedTooManySteps","thumb-down"],["最新ではない","outOfDate","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["サンプル / コードに問題がある","samplesCodeIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2025-07-27 UTC。"],[],[],null,["# Android 6.0 Testing Guide\n\nAndroid 6.0 gives you an opportunity to ensure your apps work with the next\nversion of the platform. This release includes a number of APIs and behavior changes that can\nimpact your app, as described in the [API\nOverview](/about/versions/marshmallow/android-6.0) and [Behavior Changes](/about/versions/marshmallow/android-6.0-changes). In testing\nyour app with this release, there are some specific system changes that you should focus on to\nensure that users have a good experience.\n\n\nThis guide describes the what and how to test Android 6.0 features with your app. You should\nprioritize testing of these specific features, due to their high potential impact on your\napp's behavior:\n\n- [Permissions](#runtime-permissions)\n- [Doze and App Standby](#doze-standby)\n- [Auto Backup and Device Identifiers](#ids)\n\nTesting Permissions\n-------------------\n\n\nThe new [Permissions](/guide/topics/permissions/overview) model\nchanges the way that permissions are allocated to your app by the user. Instead of granting all\npermissions during the install procedure, your app must ask the user for individual permissions\nat runtime. For users this behavior provides more granular control over each app's activities, as\nwell as better context for understanding why the app is requesting a specific permission. Users\ncan grant or revoke the permissions granted to an app individually at any time. This feature of\nthe release is most likely to have an impact on your app's behavior and may prevent some of your\napp features from working, or they may work in a degraded state.\n\n\nThis change affects all apps running on the new platform, even those not targeting the new\nplatform version. The platform provides a limited compatibility behavior for legacy apps, but you\nshould begin planning your app's migration to the new permissions model now, with a goal of\npublishing an updated version of your app at the official platform launch.\n\n### Test tips\n\n\nUse the following test tips to help you plan and execute testing of your app with the new\npermissions behavior.\n\n- Identify your app's current permissions and the related code paths.\n- Test user flows across permission-protected services and data.\n- Test with various combinations of granted/revoked permission.\n- Use the `adb` tool to manage permissions from the command line:\n - List permissions and status by group: \n\n ```text\n adb shell pm list permissions -d -g\n ```\n - Grant or revoke one or more permissions using the following syntax: \n\n ```text\n adb shell pm [grant|revoke] \u003cpermission.name\u003e ...\n ```\n- Analyze your app for services that use permissions.\n\n### Test strategy\n\n\nThe permissions change affects the structure and design of your app, as well as\nthe user experience and flows you provide to users. You should assess your app's current\npermissions use and start planning for the new flows you want to offer. The official release of\nthe platform provides compatibility behavior, but you should plan on updating your app and not\nrely on these behaviors.\n\n\nIdentify the permissions that your app actually needs and uses, and then find the various code\npaths that use the permission-protected services. You can do this through a combination of\ntesting on the new platform and code analysis. In testing, you should focus on opting in to\nruntime permissions by changing the app's `targetSdkVersion` to API level 23.\n\n\nTest with various combinations of permissions revoked and added, to highlight the user flows that\ndepend on permissions. Where a dependency is not obvious or logical you should consider\nrefactoring or compartmentalizing that flow to eliminate the dependency or make it clear why the\npermission is needed.\n\n\nFor more information on the behavior of runtime permissions, testing, and best practices, see\n[Working with System Permissions](/training/permissions) developer.\n\nTesting Doze and App Standby\n----------------------------\n\n\nThe power saving features of Doze and App Standby limit the amount of background processing that\nyour app can perform when a device is in an idle state or while your app is not in focus. The\nrestrictions the system may impose on apps include limited or no network access,\nsuspended background tasks, suspended Notifications, ignored wake requests, and alarms. To ensure\nthat your app behaves properly with these power saving optimizations, you should test your app by\nsimulating these low power states.\n\n#### Testing your app with Doze\n\nTo test Doze with your app:\n\n1. Configure a hardware device or virtual device with an Android 7.0 (API level 24) system image.\n2. Connect the device to your development machine and install your app.\n3. Run your app and leave it active.\n4. Simulate the device going into Doze mode by running the following commands: \n\n ```bash\n $ adb shell dumpsys battery unplug\n $ adb shell dumpsys deviceidle step\n $ adb shell dumpsys deviceidle -h\n ```\n5. Observe the behavior of your app when the device is re-activated. Make sure it recovers gracefully when the device exits Doze.\n\n#### Testing apps with App Standby\n\nTo test the App Standby mode with your app:\n\n1. Configure a hardware device or virtual device with an Android 7.0 (API level 24) system image.\n2. Connect the device to your development machine and install your app.\n3. Run your app and leave it active.\n4. Simulate the app going into standby mode by running the following commands: \n\n ```bash\n $ adb shell am broadcast -a android.os.action.DISCHARGING\n $ adb shell am set-idle \u003cpackageName\u003e true\n ```\n5. Simulate waking your app using the following command: \n\n ```bash\n $ adb shell am set-idle \u003cpackageName\u003e false\n ```\n6. Observe the behavior of your app when it is woken. Make sure it recovers gracefully from standby mode. In particular, you should check if your app's Notifications and background jobs continue to function as expected.\n\nAuto Backup for Apps and Device-Specific Identifiers\n----------------------------------------------------\n\nIf your app is persisting any device-specific identifiers, such as Google\nCloud Messaging registration ID, in internal storage,\nmake sure to follow best practices to exclude the storage\nlocation from auto-backup, as described in [Back Up User\nData with Auto Backup](/guide/topics/data/autobackup)."]]