| 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] <permission.name> ...</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 <packageName> true |
| </pre> |
| |
| </li> |
| <li>다음 명령을 사용하여 앱이 대기 모드에서 해제되는 것을 시뮬레이션합니다. |
| <pre>$ adb shell am set-idle <packageName> false</pre> |
| </li> |
| <li>앱이 대기 모드에서 해제된 상태에서 어떻게 동작하는지 살펴봅니다. 대기 모드에서 정상적으로 복구되는지 확인해야 합니다. |
| 특히, 앱의 알림과 배경 작업이 계속 예상했던 대로 기능하는지 확인해야 합니다. |
| </li> |
| </ol> |
| |
| <h2 id="ids">앱용 자동 백업 및 기기별 식별자</h2> |
| |
| <p>앱이 내부 저장소에서 각 기기에 따라 다른 식별자(예: Google Cloud Messaging 등록 ID)를 유지하는 경우, 모범 사례를 따라 저장소 위치를 자동 백업에서 배제해야 합니다. 이 내용은 <a href="{@docRoot}preview/backup/index.html">앱용 자동 백업</a>에 설명되어 있습니다. |
| |
| |
| |
| </p> |