blob: 1222227792420448ee13a4e18967cf822cc9ba7d [file] [log] [blame]
page.title=테스트 가이드
page.image=images/cards/card-n-guide_2x.png
meta.tags="preview", "testing"
page.tags="preview", "developer preview"
@jd:body
<div id="tb-wrapper">
<div id="tb">
<h2> 문서의 내용</h2>
<ol>
<li><a href="#runtime-permissions">권한 테스트</a></li>
<li><a href="#doze-standby">잠자기 대기 모드 테스트</a></li>
<li><a href="#ids">자동 백업 기기 식별자</a></li>
</ol>
</div>
</div>
<p>
Android N에서는 앱이 차기 버전의 플랫폼에서 제대로 작동하는지 확인해볼 있습니다.
프리뷰에는 앱에 영향을 미칠 있는 수많은 API 동작 변경 사항이 포함되어 있습니다. 이에 대해서는 <a href="{@docRoot}preview/api-overview.html">API 개요</a>와 <a href="{@docRoot}preview/behavior-changes.html">동작 변경 사항</a>에 설명되어 있습니다.
프리뷰로 앱을 테스트할 때에는 사용자에게 좋은 환경을 제공하기 위해 개발자 여러분이 꼭 초점을 맞춰야 하는 몇 가지 특정한 시스템 변경사항이 있습니다.
</p>
<p>
이 가이드에서는 앱에서 테스트할 프리뷰 기능은 어떤 것이고, 테스트 방법은 어떤지에 대해 설명합니다. 이와 같은 특정 프리뷰 기능을 먼저 테스트하는 것이 좋습니다. 왜냐하면 이들 기능은 앱의 동작에 큰 영향을 미칠 가능성이 높기 때문입니다.
</p>
<ul>
<li><a href="#runtime-permissions">권한</a>
</li>
<li><a href="#doze-standby">잠자기 대기 모드</a>
</li>
<li><a href="#ids">자동 백업 기기 식별자</a></li>
</ul>
<p>
테스트용 프리뷰 시스템 이미지로 기기 또는 가상 기기를 설정하는 방법에 대한 자세한 정보는 <a href="{@docRoot}preview/setup-sdk.html">Android N 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>하나 이상의 권한을 다음과 같은 구문을 사용하여 허용하거나 취소합니다.<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#">Android N SDK 설정</a>을 참조하세요.
</p>
<p>
다양한 조합의 권한을 해지하고 추가하는 방식으로 테스트를 수행하여 권한에 종속되는 사용자 흐름을 파악합니다.
종속성이 분명하지 않거나 논리적인 경우, 리팩터링을 고려해 보거나 해당 흐름을 구분하여 종속성을 제거, 또는 해당 권한이 필요한지 분명히 하는 방안을 고려해야 합니다.
</p>
<p>
런타임 권한의 동작, 테스트 모범 사례에 대한 자세한 정보는 <a href="{@docRoot}preview/features/runtime-permissions.html">권한</a> 개발자 미리 보기 페이지를 참조하십시오.
</p>
<h2 id="doze-standby">잠자기 대기 모드 테스트</h2>
<p>
잠자기 대기 모드의 절전 기능은 기기가 유휴 상태에 있을 또는 사용자가 앱에 초점을 맞추고 있지 않을 앱이 수행할 있는 배경 처리의 양을 제한합니다.
시스템이 앱에 부과할 있는 제한 사항에는 네트워크 액세스를 제한하거나 없애기, 배경 작업을 일시 중지시키기, 알림 일시 중지, 절전 모드 해제 알람 요청 무시 등이 포함됩니다.
이러한 절전 기능에 앱이 적절히 동작하도록 확실히 두려면 이와 같은 저전력 상태를 시뮬레이트하여 앱을 테스트해보아야 합니다.
</p>
<h4 id="doze">앱에서 잠자기 모드 테스트하기</h4>
<p>앱에서 잠자기 모드를 테스트하려면:</p>
<ol>
<li>Android N 시스템 이미지로 하드웨어 기기 또는 가상 기기를 구성합니다.</li>
<li>기기를 개발 머신에 연결하고 앱을 설치합니다.</li>
<li>앱을 실행시킨 다음 활성 상태로 그냥 둡니다.</li>
<li>다음 명령을 실행하여 기기가 잠자기 모드에 들어가는 것을 시뮬레이션합니다.
<pre>
$ adb shell dumpsys battery unplug
$ adb shell dumpsys deviceidle step
$ adb shell dumpsys deviceidle -h
</pre>
</li>
<li>기기가 다시 활성화되면 앱이 어떻게 동작하는지 살펴봅니다. 기기가 잠자기 모드를 종료할 정상적으로 복구되는지 확인해야 합니다.
</li>
</ol>
<h4 id="standby">앱에서 대기 모드 테스트하기</h4>
<p>앱에서 대기 모드를 테스트하려면:</p>
<ol>
<li>Android N 시스템 이미지로 하드웨어 기기 또는 가상 기기를 구성합니다.</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>