blob: b70e04d91a1b206770eed91d857c3244fc4d97a7 [file] [log] [blame]
page.title=テストガイド
page.image=images/cards/card-build_16x9_2x.png
page.keywords=プレビュー リソース,Android M,テスト,パーミッション
@jd:body
<div id="qv-wrapper">
<div id="qv">
<h2>本書の内容</h2>
<ol>
<li><a href="#runtime-permissions">パーミッションをテストする</a></li>
<li><a href="#doze-standby">Doze App Standby をテストする</a></li>
<li><a href="#ids">自動バックアップと端末識別子</a></li>
</ol>
</div>
</div>
<p>
Android M Developer Preview を利用すると、次期バージョンのプラットフォームでアプリが動作するか確認できます。
Android M Developer Preview には、<a href="{@docRoot}preview/api-overview.html">API の概要</a>と<a href="{@docRoot}preview/behavior-changes.html">動作の変更点</a>に記載されているように、アプリに影響を与える可能性のある多くの API と動作の変更が含まれています。
Android M Developer Preview でアプリをテストする時には、アプリの良好な使用感を確保するために、システムのいくつかの変更点に特に注意する必要があります。
</p>
<p>
このガイドでは、アプリで Android M Developer Preview の機能の何をどのようにテストすればよいか説明します。以下の機能は、アプリの動作に大きな影響を与える可能性があるので、優先してテストする必要があります。
</p>
<ul>
<li><a href="#runtime-permissions">パーミッション</a>
</li>
<li><a href="#doze-standby">Doze App Standby</a>
</li>
<li><a href="#ids">自動バックアップと端末識別子</a></li>
</ul>
<p>
テスト用のプレビュー システム イメージを使用した端末または仮想端末のセットアップ方法の詳細については、<a href="{@docRoot}preview/setup-sdk.html">Preview SDK のセットアップ</a>をご覧ください。
</p>
<h2 id="runtime-permissions">パーミッションをテストする</h2>
<p>
<a href="{@docRoot}preview/features/runtime-permissions.html">パーミッション</a> モデルの変更により、ユーザーがアプリにパーミッションを付与する方法が変わりました。
アプリでは、インストール時にすべてのパーミッションを要求するのではなく、実行時に個々のパーミッションをユーザーに要求する必要があります。
これにより、ユーザーは、各アプリのアクティビティをより細かくコントロールできるようになるだけではなく、アプリが各パーミッションを要求する理由をこれまでよりもよく理解できるようになります。
ユーザーは、いつでもアプリに個別にパーミッションを付与したり、付与したパーミッションを個別に取り消したりできます。
この機能は、アプリの動作に大きな影響を与える可能性があり、アプリの一部の機能が動作しなくなったり、限定された機能しか使えなくなったりする可能性もあります。
</p>
<p class="caution">
この変更は、アプリがこの新しいバージョンを対象にしているかどうかにかかわらず、この新しいプラットフォーム上で実行されるすべてのアプリに影響します。
このプラットフォームはレガシーアプリに限定的な互換動作を提供しますが、公式版のプラットフォームのリリースに合わせてアップデート版のアプリを公開できるように、新しいパーミッション モデルに対応させるためのアプリの移行を今から計画することを強くお勧めします。
</p>
<h3 id="permission-test-tips">テストのヒント</h3>
<p>
以下のテストのヒントを活用して、アプリでの新しいパーミッション動作のテストを計画し、実行してください。
</p>
<ul>
<li>アプリの現在のパーミッションと関連するコードパスを確認します。</li>
<li>パーミッションで保護されているサービスとデータ間のユーザーフローをテストします。</li>
<li>付与されたパーミッションと取り消されたパーミッションのさまざまな組み合わせをテストします。</li>
<li>{@code adb} ツールを使用して、コマンドラインからパーミッションを管理します。
<ul>
<li>パーミッションとステータスをグループ化して表示します。
<pre>adb shell pm list permissions -d -g</pre>
</li>
<li>以下の構文を使用して 1 つまたは複数のパーミッションを付与または取り消します。<br>
<pre>adb shell pm [grant|revoke] &lt;permission.name&gt; ...</pre>
</li>
</ul>
</li>
<li>アプリでパーミッションを使用しているサービスを分析します。</li>
</ul>
<h3 id="permission-test-strategy">テスト方針</h3>
<p>
このパーミッションの変化は、アプリの構造と設計、ユーザーが体験する使用感とフローに影響を与えます。
アプリの現在のパーミッション利用の状況を調査し、新しいフローの検討を開始する必要があります。
このプラットフォームの公式リリースは互換動作を提供しますが、互換動作に頼ることなくアプリのアップデートを計画することを強くお勧めします。
</p>
<p>
まずアプリが実際に必要とし使用しているパーミッションを特定してから、パーミッションで保護されたサービスを使用している各コードパスを探してください。
これには、新しいプラットフォーム上でのテストと、コードの解析が必要です。
テストでは、アプリの {@code targetSdkVersion} をこのプレビュー版に変えて、実行時パーミッションのオプトインに重点的にテストする必要があります。
詳細については、<a href="{@docRoot}preview/setup-sdk.html#">Preview SDK のセットアップ</a>をご覧ください。
</p>
<p>
パーミッションの取り消しと追加のさまざまな組み合わせをテストし、パーミッションに依存するユーザーフローを確認します。
パーミッションへの依存性が明白または論理的ではない箇所では、依存性を取り除くため、またはパーミッションが必要な理由を明白にするために、フローのリファクタリングまたはコンパートメント化を検討する必要があります。
</p>
<p>
実行時パーミッションの動作、テスト、ベスト プラクティスについては、Developer Preview ページの<a href="{@docRoot}preview/features/runtime-permissions.html">パーミッション</a>をご覧ください。
</p>
<h2 id="doze-standby">Doze App Standby をテストする</h2>
<p>
省電力機能である Doze App Standby により、端末がアイドル状態のときやそのアプリにフォーカスがないときに、アプリが実行できるバックグラウンド処理の量が制限されます。
システムによってアプリに加えられる可能性のある制限には、ネットワーク アクセスの制限や停止、バックグラウンド タスクの停止、通知の停止、ウェイク リクエストの無視、アラームなどがあります。
これらの省電力のための最適化が行われた状態で確実にアプリが適切に動作するように、これらの省電力状態をシミュレートしてアプリをテストする必要があります。
</p>
<h4 id="doze">アプリで Doze をテストする</h4>
<p>アプリで Doze をテストするには: </p>
<ol>
<li>M Preview のシステム イメージを使用して、ハードウェア端末または仮想端末を構成します。</li>
<li>端末を開発マシンに接続し、アプリをインストールします。</li>
<li>アプリを実行し、アクティブ状態のままにします。</li>
<li>以下のコマンドを実行して、端末の Doze モードへの移行をシミュレートします。
<pre>
$ adb shell dumpsys battery unplug
$ adb shell dumpsys deviceidle step
$ adb shell dumpsys deviceidle -h
</pre>
</li>
<li>端末がアクティブ状態に戻ったときのアプリの動作を観察します。端末が Doze モードから抜けるときに、アプリがスムーズに復帰することを確認します。
</li>
</ol>
<h4 id="standby">アプリで App Standby をテストする</h4>
<p>アプリで App Standby モードをテストするには: </p>
<ol>
<li>M Preview のシステム イメージを使用して、ハードウェア端末または仮想端末を構成します。</li>
<li>端末を開発マシンに接続し、アプリをインストールします。</li>
<li>アプリを実行し、アクティブ状態のままにします。</li>
<li>以下のコマンドを実行して、アプリのスタンバイ モードへの移行をシミュレートします。
<pre>
$ adb shell am broadcast -a android.os.action.DISCHARGING
$ adb shell am set-idle &lt;packageName&gt; true
</pre>
</li>
<li>以下のコマンドを使用して、アプリのウェイクをシミュレートします。
<pre>$ adb shell am set-idle &lt;packageName&gt; false</pre>
</li>
<li>アプリがウェイク状態に戻ったときのアプリの動作を観察します。アプリがスタンバイ モードからスムーズに復帰することを確認します。
特に、アプリの通知とバックグラウンド ジョブが想定通りの動作を続けているかを確認する必要があります。
</li>
</ol>
<h2 id="ids">アプリの自動バックアップと端末固有識別子</h2>
<p>アプリが、Google Cloud Messaging の登録 ID などの何らかの端末固有の識別子を内部ストレージに保持している場合、<a href="{@docRoot}preview/backup/index.html">アプリの自動バックアップ</a>の説明に従って、そのストレージのロケーションを自動バックアップの対象から除外してください。
</p>