1page.title=テストガイド 2page.image=images/cards/card-build_16x9_2x.png 3page.keywords=プレビュー リソース,Android M,テスト,パーミッション 4 5@jd:body 6 7<div id="qv-wrapper"> 8 <div id="qv"> 9 <h2>本書の内容</h2> 10 <ol> 11 <li><a href="#runtime-permissions">パーミッションをテストする</a></li> 12 <li><a href="#doze-standby">Doze と App Standby をテストする</a></li> 13 <li><a href="#ids">自動バックアップと端末識別子</a></li> 14 </ol> 15 </div> 16</div> 17 18<p> 19 Android M Developer Preview を利用すると、次期バージョンのプラットフォームでアプリが動作するか確認できます。 20Android M Developer Preview には、<a href="{@docRoot}preview/api-overview.html">API の概要</a>と<a href="{@docRoot}preview/behavior-changes.html">動作の変更点</a>に記載されているように、アプリに影響を与える可能性のある多くの API と動作の変更が含まれています。 21 22Android M Developer Preview でアプリをテストする時には、アプリの良好な使用感を確保するために、システムのいくつかの変更点に特に注意する必要があります。 23 24 25</p> 26 27<p> 28 このガイドでは、アプリで Android M Developer Preview の機能の何をどのようにテストすればよいか説明します。以下の機能は、アプリの動作に大きな影響を与える可能性があるので、優先してテストする必要があります。 29 30 31</p> 32 33<ul> 34 <li><a href="#runtime-permissions">パーミッション</a> 35 </li> 36 <li><a href="#doze-standby">Doze と App Standby</a> 37 </li> 38 <li><a href="#ids">自動バックアップと端末識別子</a></li> 39</ul> 40 41<p> 42 テスト用のプレビュー システム イメージを使用した端末または仮想端末のセットアップ方法の詳細については、<a href="{@docRoot}preview/setup-sdk.html">Preview SDK のセットアップ</a>をご覧ください。 43 44</p> 45 46 47<h2 id="runtime-permissions">パーミッションをテストする</h2> 48 49<p> 50 <a href="{@docRoot}preview/features/runtime-permissions.html">パーミッション</a> モデルの変更により、ユーザーがアプリにパーミッションを付与する方法が変わりました。 51アプリでは、インストール時にすべてのパーミッションを要求するのではなく、実行時に個々のパーミッションをユーザーに要求する必要があります。 52 53これにより、ユーザーは、各アプリのアクティビティをより細かくコントロールできるようになるだけではなく、アプリが各パーミッションを要求する理由をこれまでよりもよく理解できるようになります。 54ユーザーは、いつでもアプリに個別にパーミッションを付与したり、付与したパーミッションを個別に取り消したりできます。 55この機能は、アプリの動作に大きな影響を与える可能性があり、アプリの一部の機能が動作しなくなったり、限定された機能しか使えなくなったりする可能性もあります。 56 57 58</p> 59 60<p class="caution"> 61 この変更は、アプリがこの新しいバージョンを対象にしているかどうかにかかわらず、この新しいプラットフォーム上で実行されるすべてのアプリに影響します。 62このプラットフォームはレガシーアプリに限定的な互換動作を提供しますが、公式版のプラットフォームのリリースに合わせてアップデート版のアプリを公開できるように、新しいパーミッション モデルに対応させるためのアプリの移行を今から計画することを強くお勧めします。 63 64 65</p> 66 67 68<h3 id="permission-test-tips">テストのヒント</h3> 69 70<p> 71 以下のテストのヒントを活用して、アプリでの新しいパーミッション動作のテストを計画し、実行してください。 72 73</p> 74 75<ul> 76 <li>アプリの現在のパーミッションと関連するコードパスを確認します。</li> 77 <li>パーミッションで保護されているサービスとデータ間のユーザーフローをテストします。</li> 78 <li>付与されたパーミッションと取り消されたパーミッションのさまざまな組み合わせをテストします。</li> 79 <li>{@code adb} ツールを使用して、コマンドラインからパーミッションを管理します。 80 <ul> 81 <li>パーミッションとステータスをグループ化して表示します。 82 <pre>adb shell pm list permissions -d -g</pre> 83 </li> 84 <li>以下の構文を使用して 1 つまたは複数のパーミッションを付与または取り消します。<br> 85 <pre>adb shell pm [grant|revoke] <permission.name> ...</pre> 86 </li> 87 </ul> 88 </li> 89 <li>アプリでパーミッションを使用しているサービスを分析します。</li> 90</ul> 91 92<h3 id="permission-test-strategy">テスト方針</h3> 93 94<p> 95 このパーミッションの変化は、アプリの構造と設計、ユーザーが体験する使用感とフローに影響を与えます。 96アプリの現在のパーミッション利用の状況を調査し、新しいフローの検討を開始する必要があります。 97このプラットフォームの公式リリースは互換動作を提供しますが、互換動作に頼ることなくアプリのアップデートを計画することを強くお勧めします。 98 99 100</p> 101 102<p> 103 まずアプリが実際に必要とし使用しているパーミッションを特定してから、パーミッションで保護されたサービスを使用している各コードパスを探してください。 104これには、新しいプラットフォーム上でのテストと、コードの解析が必要です。 105テストでは、アプリの {@code targetSdkVersion} をこのプレビュー版に変えて、実行時パーミッションのオプトインに重点的にテストする必要があります。 106詳細については、<a href="{@docRoot}preview/setup-sdk.html#">Preview SDK のセットアップ</a>をご覧ください。 107 108</p> 109 110<p> 111 パーミッションの取り消しと追加のさまざまな組み合わせをテストし、パーミッションに依存するユーザーフローを確認します。 112パーミッションへの依存性が明白または論理的ではない箇所では、依存性を取り除くため、またはパーミッションが必要な理由を明白にするために、フローのリファクタリングまたはコンパートメント化を検討する必要があります。 113 114 115</p> 116 117<p> 118 実行時パーミッションの動作、テスト、ベスト プラクティスについては、Developer Preview ページの<a href="{@docRoot}preview/features/runtime-permissions.html">パーミッション</a>をご覧ください。 119 120 121</p> 122 123 124<h2 id="doze-standby">Doze と App Standby をテストする</h2> 125 126<p> 127 省電力機能である Doze と App Standby により、端末がアイドル状態のときやそのアプリにフォーカスがないときに、アプリが実行できるバックグラウンド処理の量が制限されます。 128システムによってアプリに加えられる可能性のある制限には、ネットワーク アクセスの制限や停止、バックグラウンド タスクの停止、通知の停止、ウェイク リクエストの無視、アラームなどがあります。 129 130これらの省電力のための最適化が行われた状態で確実にアプリが適切に動作するように、これらの省電力状態をシミュレートしてアプリをテストする必要があります。 131 132 133</p> 134 135<h4 id="doze">アプリで Doze をテストする</h4> 136 137<p>アプリで Doze をテストするには: </p> 138 139<ol> 140<li>M Preview のシステム イメージを使用して、ハードウェア端末または仮想端末を構成します。</li> 141<li>端末を開発マシンに接続し、アプリをインストールします。</li> 142<li>アプリを実行し、アクティブ状態のままにします。</li> 143<li>以下のコマンドを実行して、端末の Doze モードへの移行をシミュレートします。 144 145<pre> 146$ adb shell dumpsys battery unplug 147$ adb shell dumpsys deviceidle step 148$ adb shell dumpsys deviceidle -h 149</pre> 150 151 </li> 152 <li>端末がアクティブ状態に戻ったときのアプリの動作を観察します。端末が Doze モードから抜けるときに、アプリがスムーズに復帰することを確認します。 153</li> 154</ol> 155 156 157<h4 id="standby">アプリで App Standby をテストする</h4> 158 159<p>アプリで App Standby モードをテストするには: </p> 160 161<ol> 162 <li>M Preview のシステム イメージを使用して、ハードウェア端末または仮想端末を構成します。</li> 163 <li>端末を開発マシンに接続し、アプリをインストールします。</li> 164 <li>アプリを実行し、アクティブ状態のままにします。</li> 165 <li>以下のコマンドを実行して、アプリのスタンバイ モードへの移行をシミュレートします。 166 167<pre> 168$ adb shell am broadcast -a android.os.action.DISCHARGING 169$ adb shell am set-idle <packageName> true 170</pre> 171 172 </li> 173 <li>以下のコマンドを使用して、アプリのウェイクをシミュレートします。 174 <pre>$ adb shell am set-idle <packageName> false</pre> 175 </li> 176 <li>アプリがウェイク状態に戻ったときのアプリの動作を観察します。アプリがスタンバイ モードからスムーズに復帰することを確認します。 177特に、アプリの通知とバックグラウンド ジョブが想定通りの動作を続けているかを確認する必要があります。 178</li> 179</ol> 180 181<h2 id="ids">アプリの自動バックアップと端末固有識別子</h2> 182 183<p>アプリが、Google Cloud Messaging の登録 ID などの何らかの端末固有の識別子を内部ストレージに保持している場合、<a href="{@docRoot}preview/backup/index.html">アプリの自動バックアップ</a>の説明に従って、そのストレージのロケーションを自動バックアップの対象から除外してください。 184 185 186 187 </p> 188