| page.title=테스트 가이드 |
| page.image=images/cards/card-build_16x9_2x.png |
| page.keywords=previewresources,androidm,testing,permissions |
| |
| @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 및 앱 대기 모드 테스트</a></li> |
| <li><a href="#ids">자동 백업 및 기기 식별자</a></li> |
| </ol> |
| </div> |
| </div> |
| |
| <p> |
| Android M 개발자 미리 보기에서는 앱이 플랫폼의 다음 버전에서 제대로 작동할 것인지 확인해볼 기회를 부여합니다. |
| 이 미리 보기에는 앱에 영향을 미칠 수 있는 수많은 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">Doze 및 앱 대기 모드</a> |
| </li> |
| <li><a href="#ids">자동 백업 및 기기 식별자</a></li> |
| </ul> |
| |
| <p> |
| 테스트용 미리 보기 시스템 이미지로 기기 또는 가상 기기를 설정하는 방법에 대한 자세한 정보는 <a href="{@docRoot}preview/setup-sdk.html">미리 보기 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#">미리 보기 SDK 설정하기</a>를 참조하십시오. |
| |
| </p> |
| |
| <p> |
| 불러내고 추가한 여러 가지 권한들을 다양하게 조합해서 테스트해보면 권한에 좌우되는 사용자 흐름을 강조할 수 있습니다. |
| 종속성이 분명하지 않거나 논리적인 경우, 리팩터링을 고려해 보거나 해당 흐름을 구분하여 종속성을 제거, 또는 해당 권한이 왜 필요한지 분명히 하는 방안을 고려해야 합니다. |
| |
| |
| </p> |
| |
| <p> |
| 런타임 권한의 동작, 테스트 및 모범 사례에 대한 자세한 정보는 <a href="{@docRoot}preview/features/runtime-permissions.html">권한</a> 개발자 미리 보기 페이지를 참조하십시오. |
| |
| |
| </p> |
| |
| |
| <h2 id="doze-standby">Doze 및 앱 대기 모드 테스트</h2> |
| |
| <p> |
| Doze 및 앱 대기 모드의 절전 기능은 기기가 유휴 상태에 있을 때 또는 사용자가 앱에 초점을 맞추고 있지 않을 때 앱이 수행할 수 있는 배경 처리의 양을 제한합니다. |
| 시스템이 앱에 부과할 수 있는 제한 사항에는 네트워크 액세스를 제한하거나 없애기, 배경 작업을 일시 중지시키기, 알림 일시 중지, 절전 모드 해제 및 알람 요청 무시 등이 포함됩니다. |
| |
| 이러한 절전 기능에 앱이 적절히 동작하도록 확실히 해 두려면 이와 같은 저전력 상태를 시뮬레이트하여 앱을 테스트해보아야 합니다. |
| |
| |
| </p> |
| |
| <h4 id="doze">앱에서 Doze 테스트하기</h4> |
| |
| <p>앱으로 Doze 기능을 테스트하려면 다음과 같이 하면 됩니다.</p> |
| |
| <ol> |
| <li>하드웨어 기기 또는 가상 기기를 M 미리 보기 시스템 이미지로 구성합니다.</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">앱에서 앱 대기 모드 테스트하기</h4> |
| |
| <p>앱으로 앱 대기 모드를 테스트하려면 다음과 같이 하면 됩니다.</p> |
| |
| <ol> |
| <li>하드웨어 기기 또는 가상 기기를 M 미리 보기 시스템 이미지로 구성합니다.</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 메시지 등록 ID), 모범 사례를 따라 저장소 위치를 자동 백업에서 배제해야 합니다. 이 내용은 <a href="{@docRoot}preview/backup/index.html">앱용 자동 백업</a>에 설명되어 있습니다. |
| |
| |
| |
| </p> |