blob: c914aab02de120bca514ce8237b5016bce4e310e [file] [log] [blame]
page.title=핵심 품질
page.metaDescription=앱 품질은 설치, 사용자 평점 리뷰, 사용자 확보 유지 측면에서 앱의 장기간 성공에 직접적인 영향을 미칩니다.
page.image=/distribute/images/core-quality-guidelines.jpg
@jd:body
<div id="qv-wrapper"><div id="qv">
<h2>품질 기준</h2>
<ol>
<li><a href="#ux">디자인 상호작용</a></li>
<li><a href="#fn">기능</a></li>
<li><a href="#ps">성능 안정성</a></li>
<li><a href="#listing">Google Play</a></li>
</ol>
<h2>테스트</h2>
<ol>
<li><a href="#test-environment">테스트 환경 설정</a></li>
<li><a href="#tests">테스트 절차</a></li>
</ol>
<h2>필독 항목</h2>
<ol>
<li><a href="{@docRoot}distribute/essentials/quality/tablets.html">태블릿 품질</a></li>
<li><a href="{@docRoot}distribute/essentials/optimizing-your-app.html">앱 최적화</a></li>
</ol>
</div>
</div>
<div class="top-right-float">
<img src="{@docRoot}images/gp-core-quality.png" style="margin-left: 20px;">
</div>
<p>
Android 사용자는 고품질 앱을 기대합니다. 품질은 설치, 사용자 평점 리뷰, 사용자 확보 유지 측면에서 앱의 장기간 성공에 직접적인 영향을 미칩니다.
</p>
<p>
문서는 핵심 품질 기준 연관된 테스트의 간결한 집합을 통해 기본적인 품질을 평가하는 도움이 됩니다.
모든 Android 앱은 기준을 충족해야 합니다.
</p>
<p>
앱을 게시하기 전에 기준에 대한 테스트를 거쳐 다양한 장치에서 작동하는지, Android 탐색 디자인 표준을 충족하는지 확인하고, Google Play 스토어에서 홍보 기회를 잡으십시오.
테스트는 여기에서 설명한 기준을 충족할 것입니다. 문서의 목적은 모든 앱이 표시해야 하는 필수 품질 특성을 지정하는 것이므로 테스트 계획에 필수 품질 특성을 포함할 있습니다.
</p>
<p>
태블릿 및/또는 교육용 Google Play 앱을 만드는 경우 고려해야 하는 추가 품질 기준이 있는데, 해당 기준은 <a href="{@docRoot}distribute/essentials/quality/tablets.html">태블릿 품질</a> 가이드라인 및 <a href="{@docRoot}distribute/essentials/gpfe-guidelines.html">교육 가이드라인</a>에 정의되어 있습니다.
</p>
<div class="headerLine">
<h2 id="ux">
시각적 디자인 및 사용자 상호작용
</h2>
</div>
<p>
이 기준은 앱이 일관되고 직관적인 사용자 경험을 위해 필요한 경우 표준 Android 시각적 디자인 및 상호작용 패턴을 제공하도록 보장합니다.
</p>
<table>
<tr>
<th style="width:2px;">
영역
</th>
<th style="width:54px;">
ID
</th>
<th>
설명
</th>
<th style="width:54px;">
테스트
</th>
</tr>
<tr id="UX-B1">
<td>표준 디자인</td>
<td>
UX-B1
</td>
<td>
<p style="margin-bottom:.5em;">
앱이 <a href="{@docRoot}design/index.html">Android 디자인</a> 가이드라인을 따르고 공통 <a href="{@docRoot}design/patterns/index.html">UI 패턴 및 아이콘</a>을 사용합니다.
</p>
<ol style="margin-bottom:.5em;list-style-type:lower-alpha">
<li>앱이 시스템 아이콘의 예상되는 기능(예: 뒤로 버튼)을 재정의하지 않습니다.
</li>
<li>앱이 표준 UI 동작을 트리거하는 경우 시스템 아이콘을 완전히 다른 아이콘으로 대체하지 않습니다.
</li>
<li>앱이 표준 시스템 아이콘의 사용자 지정 버전을 제공하는 경우 해당 아이콘은 시스템 아이콘과 매우 유사하고 표준 시스템 동작을 트리거합니다.
</li>
<li>앱이 아이콘이나 동작이 사용자를 잘못 안내하거나 혼란스럽게 하지 않도록 Android UI 패턴을 재정의하거나 오용하지 않습니다.
</li>
</ol>
</td>
<td>
<a href="#core">CR-all</a>
</td>
</tr>
<tr>
<td rowspan="3">
탐색
</td>
<td id="UX-N1">
UX-N1
</td>
<td>
<p>
앱이 표준 시스템 <a href="{@docRoot}design/patterns/navigation.html">뒤로 버튼 탐색</a>을 지원하고 화면에 표시되는 사용자 지정 "뒤로 버튼" 프롬프트를 사용하지 않습니다.
</p>
</td>
<td>
<a href="#core">CR-3</a>
</td>
</tr>
<tr>
<td id="UX-N2">
UX-N2
</td>
<td>
<p>
뒤로 버튼을 사용하여 모든 대화 상자를 취소할 있습니다.
</p>
</td>
<td>
<a href="#core">CR-3</a>
</td>
</tr>
<tr id="UX-N3">
<td>
UX-N3
</td>
<td>
어디서든지 버튼을 누르면 장치의 화면으로 이동합니다.
</td>
<td>
<a href="#core">CR-1</a>
</td>
</tr>
<tr id="UX-S1">
<td rowspan="2">
알림
</td>
<td>
UX-S1
</td>
<td>
<p style="margin-bottom:.5em;">
알림은 Android 디자인 <a href="{@docRoot}design/patterns/notifications.html">가이드라인</a>을 따릅니다. 특히
</p>
<ol style="margin-bottom:.5em;list-style-type:lower-alpha">
<li>다중 알림은 단일 알림 개체로 누적됩니다(가능한 경우).
</li>
<li>알림은 진행 중인 이벤트(예: 음악 재생 또는 통화)와 관련된 경우에만 지속됩니다.
</li>
<li>알림은 사용자가 명시적으로 동의한 경우를 제외하고 앱의 핵심 기능과 관련되지 않은 광고를 포함하지 않습니다.
</li>
</ol>
</td>
<td>
<a href="#core">CR-11</a>
</td>
</tr>
<tr id="UX-S2">
<td>
UX-S2
</td>
<td>
<p style="margin-bottom:.5em;">
앱은 다음과 같은 경우에만 알림을 사용합니다.
</p>
<ol style="margin-bottom:.5em;list-style-type:lower-alpha">
<li>개인적으로 사용자와 관련된 컨텍스트 변경(예: 수신 메시지)을 나타냅니다.
</li>
<li>진행 중인 이벤트(예: 음악 재생 또는 통화)와 관련된 정보/컨트롤을 표시합니다.
</li>
</ol>
</td>
<td>
<a href="#core">CR-11</a>
</td>
</tr>
</table>
<h3 class="rel-resources clearfloat">관련 자료</h3>
<div class="resource-widget resource-flow-layout col-13" data-query=
"collection:distribute/essentials/corequalityguidelines/visualdesign"
data-sortorder="-timestamp" data-cardsizes="9x3,9x3,6x3,6x3,6x3"
data-maxresults="6">
</div>
<div class="headerLine">
<h2 id="fn">
기능
</h2>
</div>
<p>
기준은 앱이 적절한 권한 수준과 함께 예상되는 기능 동작을 제공하도록 보장합니다.
</p>
<table>
<tr>
<th style="width:2px;">
영역
</th>
<th style="width:54px;">
ID
</th>
<th>
설명
</th>
<th style="width:54px;">
테스트
</th>
</tr>
<tr id="FN-P1">
<td rowspan="2">
권한
</td>
<td>
FN-P1
</td>
<td>
앱이 핵심 기능을 지원하는 필요한 <em>절대 최소</em> 권한만 요청합니다.
</td>
<td rowspan="2">
<a href="#core">CR-11</a>
</td>
</tr>
<tr id="FN-P2">
<td>
FN-P2
</td>
<td>
<p style="margin-bottom:.5em;">
앱이 핵심 기능과 관련되지 않은 경우 사용자가 비용을 지불할 있는 서비스(예: 전화 걸기 또는 SMS) 또는 민감한 데이터(예: 연락처 또는 시스템 로그)에 대한 액세스 권한을 요청하지 않습니다.
</p>
</td>
</tr>
<tr id="FN-L1">
<td>
설치 위치
</td>
<td>
FN-L1
</td>
<td>
<p style="margin-bottom:.5em;">
앱이 SD 카드에 설치된 경우 정상적으로 작동합니다(앱에서 지원하는 경우).
</p>
<p style="margin-bottom:.25em;">
SD 카드에 설치 지원은 대부분의 대형 앱(10MB 이상)에서 권장됩니다.
SD 카드에 설치를 지원해야 하는 유형에 대한 자세한 내용은 <a href="{@docRoot}guide/topics/data/install-location.html">앱 설치 위치</a> 개발자 가이드를 참조하십시오.
</p>
</td>
<td>
<a href="#SD-1">SD-1</a>
</td>
</tr>
<tr id="FN-A1">
<td rowspan="4">
오디오
</td>
<td>
FN-A1
</td>
<td>
핵심 기능이 아닌 경우 화면이 꺼지면 오디오가 재생되지 않습니다(예: 앱이 뮤직 플레이어인 경우).
</td>
<td>
<a href="#core">CR-7</a>
</td>
</tr>
<tr id="FN-A2">
<td>
FN-A2
</td>
<td>
핵심 기능이 아닌 경우 오디오가 <a href="http://android-developers.blogspot.com/2011/11/making-android-games-that-play-nice.html">화면 잠금 상태에서 재생</a>되지 않습니다.
</td>
<td>
<a href="#core">CR-8</a>
</td>
</tr>
<tr id="FN-A3">
<td>
FN-A3
</td>
<td>
핵심 기능이 아닌 경우 오디오가 화면이나 다른 앱에서 재생되지 않습니다.
</td>
<td>
<a href="#core">CR-1,<br>
CR-2</a>
</td>
</tr>
<tr id="FN-A4">
<td>
FN-A4
</td>
<td>
앱이 포그라운드로 돌아오면 오디오가 다시 시작되거나 사용자에게 재생이 일시 중지된 상태임을 알립니다.
</td>
<td>
<a href="#core">CR-1, CR-8</a>
</td>
</tr>
<tr id="FN-U1">
<td rowspan="3">
UI 그래픽
</td>
<td>
FN-U1
</td>
<td>
<p style="margin-bottom:.5em;">
앱이 가로 방향과 세로 방향을 모두 지원합니다(가능한 경우).
</p>
<p style="margin-bottom:.25em;">
방향은 동일한 기능과 동작을 대부분 표시하고 기능 패리티를 보존합니다.
콘텐츠 또는 보기의 사소한 변경은 허용됩니다.
</p>
</td>
<td>
<a href="#core">CR-5</a>
</td>
</tr>
<tr id="FN-U2">
<td>
FN-U2
</td>
<td>
<p style="margin-bottom:.5em;">
앱이 양쪽 방향에서 전체 화면을 사용하고, 방향 변경을 설명하기 위해 레터박스는 허용하지 않습니다.
</p>
<p style="margin-bottom:.25em;">
화면상의 기하학적 형태의 미세한 변화를 보정하기 위한 사소한 레터박스는 허용됩니다.
</p>
</td>
<td>
<a href="#core">CR-5</a>
</td>
</tr>
<tr id="FN-U3">
<td>
FN-U3
</td>
<td>
<p style="margin-bottom:.5em;">
앱이 렌더링 문제 없이 표시 방향 전환을 신속하고 정확하게 처리합니다.
</p>
</td>
<td>
<a href="#core">CR-5</a>
</td>
</tr>
<tr id="FN-S1">
<td rowspan="2">
사용자/앱 상태
</td>
<td>
FN-S1
</td>
<td>
<p style="margin-bottom:.5em;">
앱의 핵심 기능과 관련되지 않은 경우 앱이 백그라운드 상태에서 서비스를 실행해서는 됩니다.
</p>
<p style="margin-bottom:.25em;">
예를 들어, 앱이 알림을 위해 네트워크 연결을 유지하거나 Bluetooth 연결을 유지하거나 GPS 켜진 상태로 유지하는 서비스를 실행해서는 됩니다.
</p>
</td>
<td>
<a href="#core">CR-6</a>
</td>
</tr>
<tr id="FN-S2">
<td>
FN-S2
</td>
<td>
<p style="margin-bottom:.5em;">
앱이 사용자 또는 상태를 정확히 보존하고 복원합니다.
</p>
<p style="margin-bottom:.25em;">
앱이 포그라운드를 떠날 사용자 또는 상태를 보존하고 뒤로 탐색 기타 상태 변경으로 인해 실수로 데이터를 손실하는 것을 방지합니다.
앱이 포그라운드로 돌아올 또는 게임의 편집 가능한 필드, 게임 진행률, 메뉴, 동영상, 기타 섹션의 변경 내용 보류 중인 중요한 상태 저장 트랜잭션과 보존된 상태를 복원해야 합니다.
</p>
<ol style="margin-bottom:.25em;list-style-type:lower-alpha">
<li>앱이 Recents 전환기에서 다시 시작한 경우 마지막으로 사용된 정확한 상태로 돌아갑니다.
</li>
<li>장치가 절전(잠금) 상태에서 해제된 후에 앱이 다시 시작하는 경우 앱이 마지막으로 사용된 정확한 상태로 돌아갑니다.
</li>
<li>앱이 또는 모든 앱에서 다시 시작하는 경우 이전 상태에 최대한 가깝게 상태를 복원합니다.
</li>
<li>뒤로 키를 누를 앱이 뒤로 탐색에서 손실할 수도 있는 또는 사용자 상태를 저장하는 옵션을 제공합니다.
</li>
</ol>
</td>
<td>
<a href="#core">CR-1, CR-3, CR-5</a>
</td>
</tr>
</table>
<h3 class="rel-resources clearfloat">관련 자료</h3>
<div class="resource-widget resource-flow-layout col-13" data-query=
"collection:distribute/essentials/corequalityguidelines/functionality"
data-sortorder="-timestamp" data-cardsizes="6x3" data-maxresults="6">
</div>
<div class="headerLine">
<h2 id="ps">
성능 안정성
</h2>
</div>
<p>
기준은 앱이 사용자가 기대하는 성능, 안정성 응답성을 제공하도록 보장합니다.
</p>
<table>
<tr>
<th style="width:2px;">
영역
</th>
<th style="width:54px;">
ID
</th>
<th>
설명
</th>
<th style="width:54px;">
테스트
</th>
</tr>
<tr id="PS-S1">
<td>
안정성
</td>
<td>
PS-S1
</td>
<td>
앱이 대상 장치에서 작동 중단하거나 강제로 닫히거나 멈추거나 비정상적으로 작동하지 않습니다.
</td>
<td>
<a href="#core">CR-all</a>, <a href="#SD-1">SD-1</a>, <a href="#HA-1">HA-1</a>
</td>
</tr>
<tr id="PS-P1">
<td rowspan="2">
성능
</td>
<td>
PS-P1
</td>
<td>
앱이 빨리 로드되거나, 로드하는 3 이상 걸리는 경우 화면에 피드백을 표시합니다(진행률 표시기 또는 유사 기능).
</td>
<td>
<a href="#core">CR-all</a>, <a href="#SD-1">SD-1</a>
</td>
</tr>
<tr id="PS-P2">
<td>
PS-P2
</td>
<td>
StrictMode 활성화된 상태에서(아래 <a href="#strictmode">StrictMode 테스트</a> 참조) 앱의 게임 실행, 애니메이션 UI 전환, 기타 부분 실행 앱을 실행할 빨간색 깜박임(StrictMode 성능 경고)이 표시되지 않습니다.
</td>
<td>
<a href="#PM-1">PM-1</a>
</td>
</tr>
<tr id="PS-M1">
<td>
미디어
</td>
<td>
PS-M1
</td>
<td>
정상적인 사용 로드 음악 동영상 재생이 매끄럽고 잔금, 버벅거림 또는 기타 아티팩트가 없습니다.
</td>
<td>
<a href="#core">CR-all</a>, <a href="#SD-1">SD-1</a>, <a href="#HA-1">HA-1</a>
</td>
</tr>
<tr id="PS-V1">
<td rowspan="2">
시각적 품질
</td>
<td>
PS-V1
</td>
<td>
<p style="margin-bottom:.5em;">
앱이 현저한 왜곡, 흐림 또는 모자이크 현상 없이 그래픽, 텍스트 기타 UI 요소를 표시합니다.
</p>
<ol style="margin-bottom:.5em;list-style-type:lower-alpha">
<li>앱이 <a href="{@docRoot}distribute/essentials/quality/tablet.html">태블릿과 같은 대형 화면 장치</a>를 포함한 다양한 장치의 모든 대상 화면 크기 팩터에 고품질 그래픽을 제공합니다.
</li>
<li>메뉴, 버튼 기타 UI 요소의 가장자리에 앨리어싱이 표시되지 않습니다.
</li>
</ol>
</td>
<td rowspan="2">
<a href="#core">CR-all</a>
</td>
</tr>
<tr id="PS-V2">
<td>
PS-V2
</td>
<td>
<p style="margin-bottom:.5em;">
앱이 허용되는 방식으로 텍스트 텍스트 블록을 표시합니다.
</p>
<ol style="margin-bottom:.5em;list-style-type:lower-alpha">
<li>태블릿과 같은 대형 화면 장치를 포함한 다양한 장치의 모든 지원되는 팩터에서 컴퍼지션이 허용됩니다.
</li>
<li>잘린 문자나 단어가 표시되지 않습니다.
</li>
<li>버튼 또는 아이콘 내에서 부적합한 자동 줄바꿈이 표시되지 않습니다.
</li>
<li>텍스트와 주변 요소 사이에 충분한 간격이 있습니다.
</li>
</ol>
</td>
</tr>
</table>
<h3 class="rel-resources clearfloat">관련 자료</h3>
<div class="resource-widget resource-flow-layout col-13" data-query=
"collection:distribute/essentials/core/performance" data-sortorder="-timestamp"
data-cardsizes="6x3" data-maxresults="6">
</div>
<div class="headerLine">
<h2 id="listing">
Google Play
</h2>
</div>
<p>
기준은 앱을 Google Play 게시할 있도록 보장합니다.
</p>
<table>
<tr>
<th style="width:2px;">
영역
</th>
<th style="width:54px;">
ID
</th>
<th>
설명
</th>
<th style="width:54px;">
테스트
</th>
</tr>
<tr id="GP-P1">
<td rowspan="2">
정책
</td>
<td>
GP-P1
</td>
<td>
앱이 <a href="http://play.google.com/about/developer-content-policy.html">Google Play 개발자 콘텐츠 정책</a>의 약관을 철저히 준수하고, 부적절한 콘텐츠를 제공하지 않고 다른 사람의 지적 재산권이나 브랜드 등을 사용하지 않습니다.
</td>
<td>
<a href="#gp">GP-all</a>
</td>
</tr>
<tr id="GP-P2">
<td>
GP-P2
</td>
<td>
<p style="margin-bottom:.5em;">
완성도가 <a href="http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&amp;answer=188189">콘텐츠 등급 가이드라인</a>에 따라 적절히 설정되었습니다.
</p>
<p style="margin-bottom:.25em;">
특히, 장치 위치 사용 권한을 요청하는 앱은 "전체 이용가" 완성도를 부여받을 없습니다.
</p>
</td>
<td>
<a href="#gp">GP-1</a>
</td>
</tr>
<tr id="GP-D1">
<td rowspan="3">
세부정보 페이지
</td>
<td>
GP-D1
</td>
<td>
<p style="margin-bottom:.5em;">
대표 그래픽은 <a href="http://android-developers.blogspot.com/2011/10/android-market-featured-image.html">블로그 게시물</a>에 나오는 가이드라인을 따릅니다.
다음을 확인하십시오.
</p>
<ol style="margin-bottom:.5em;list-style-type:lower-alpha">
<li> 목록에 고품질 대표 그래픽을 포함합니다.
</li>
<li>앱이 대상으로 하는 가장 작은 화면에서 배율을 축소하여 표시할 대표 그래픽에 식별할 없는 장치 이미지, 스크린샷 또는 작은 텍스트를 포함하지 않습니다.
</li>
<li>대표 그래픽은 광고와 비슷하지 않습니다.
</li>
</ol>
</td>
<td>
<a href="#gp">GP-1, GP-2</a>
</td>
</tr>
<tr id="GP-D2">
<td>
GP-D2
</td>
<td>
스크린샷 동영상이 Android 장치를 표시하거나 참조하지 않습니다.
</td>
<td rowspan="2">
<a href="#gp">GP-1</a>
</td>
</tr>
<tr id="GP-D3">
<td>
GP-D3
</td>
<td>
스크린샷 또는 동영상이 앱의 콘텐츠와 경험을 잘못된 방식으로 나타내지 않습니다.
</td>
</tr>
<tr id="GP-X1">
<td>
사용자 지원
</td>
<td>
GP-X1
</td>
<td>
Google Play 페이지의 리뷰 탭에서 일반 사용자가 보고하는 버그는 재현될 있고 많은 다른 장치에서 발생하는 경우 처리됩니다.
몇몇 장치에서만 버그가 발생하는 경우라도 해당 장치가 매우 인기 있거나 신기종인 경우 처리해야 합니다.
</td>
<td>
<a href="#gp">GP-1</a>
</td>
</tr>
</table>
<h3 class="rel-resources clearfloat">관련 자료</h3>
<div class="resource-widget resource-flow-layout col-13" data-query=
"collection:distribute/essentials/core/play" data-sortorder="-timestamp"
data-cardsizes="6x3,6x3,6x3,6x3,6x3,6x3" data-maxresults="6">
</div>
<div class="headerLine">
<h2 id="test-environment">
테스트 환경 설정
</h2>
</div>
<p>
앱의 품질을 평가하려면 테스트용으로 적합한 하드웨어 또는 에뮬레이터 환경을 설정해야 합니다.
</p>
<p>
이상적인 테스트 환경은 현재 소비자에게 제공되는 핵심 팩터와 하드웨어/소프트웨어 조합을 나타내는 소수의 실제 하드웨어 장치를 포함합니다.
시장에 출시된 <em>모든</em> 장치에서 테스트할 필요는 없습니다. 오히려 팩터당 한두 대의 장치를 사용하더라도 소수의 대표 장치에 초점을 맞춰야 합니다.
</p>
<p>
테스트용 실제 하드웨어 장치를 구할 없는 경우 가장 일반적인 팩터와 하드웨어/소프트웨어 조합을 나타내는 <a href="{@docRoot}tools/devices/index.html">에뮬레이트된 장치(AVD)를 설치</a>해야 합니다.
</p>
<p>
기본 테스트 이상을 수행하려면 장치, 팩터 또는 하드웨어/소프트웨어 조합을 테스트 환경에 추가하면 됩니다.
테스트 수량이나 복잡성 품질 기준을 높일 수도 있습니다.
</p>
<div class="headerLine">
<h2 id="tests">
테스트 절차
</h2>
</div>
<p>
테스트 절차를 통해 앱에서 다양한 품질 문제 유형을 찾아낼 있습니다. 테스트를 조합하거나 테스트 그룹을 본인의 테스트 계획에 통합할 있습니다.
특정 기준과 특정 테스트의 연관성은 위의 절을 참조하십시오.
</p>
<table>
<tr>
<th style="width:2px;">
유형
</th>
<th style="width:54px;">
테스트
</th>
<th>
설명
</th>
</tr>
<tr>
<td rowspan="12" id="core">
핵심 테스트 도구 모음
</td>
<td>
CR-0
</td>
<td>
<p style="margin-bottom:.5em;">
앱의 모든 부분(모든 화면, 대화 상자, 설정 모든 사용자 흐름)을 탐색합니다.
</p>
<ol style="margin-bottom:.5em;list-style-type:lower-alpha">
<li>애플리케이션이 편집, 콘텐츠 만들기, 게임 실행 또는 미디어 재생을 허용하면 해당 흐름으로 진입하여 콘텐츠를 만들거나 수정합니다.
</li>
<li>앱을 실행하는 동안 네트워크 연결, 배터리 기능, GPS 또는 위치 사용 가능성, 시스템 로드 등의 일시적인 변경 내용을 소개합니다.
</li>
</ol>
</td>
</tr>
<tr id="tg2">
<td id="core2">
CR-1
</td>
<td>
화면에서 장치의 키를 누른 다음 모든 화면에서 앱을 다시 시작합니다.
</td>
</tr>
<tr id="CR-2">
<td>
CR-2
</td>
<td>
화면에서 실행 중인 다른 앱으로 전환한 다음 Recents 전환기를 사용하여 테스트 중인 앱으로 돌아갑니다.
</td>
</tr>
<tr id="CR-3">
<td>
CR-3
</td>
<td>
화면(및 대화 상자)에서 뒤로 버튼을 누릅니다.
</td>
</tr>
<tr id="CR-5">
<td>
CR-5
</td>
<td>
화면에서 가로 방향과 세로 방향이 바뀌도록 장치를 이상 회전합니다.
</td>
</tr>
<tr id="CR-6">
<td>
CR-6
</td>
<td>
다른 앱으로 전환하여 테스트 앱을 백그라운드로 보냅니다. 설정으로 이동하여 테스트 앱에 백그라운드로 실행 중인 서비스가 있는지 확인합니다.
Android 4.0 이상에서는 화면으로 이동하여 "실행 중" 탭에서 앱을 찾습니다.
이전 버전에서는 "애플리케이션 관리" 사용하여 실행 중인 서비스가 있는지 확인합니다.
</td>
</tr>
<tr id="CR-7">
<td>
CR-7
</td>
<td>
전원 버튼을 눌러 장치를 절전 상태로 전환한 다음 전원 버튼을 다시 눌러 화면을 활성화합니다.
</td>
</tr>
<tr id="CR-8">
<td>
CR-8
</td>
<td>
전원 버튼을 누르면 장치를 잠금 설정합니다. 전원 버튼을 눌러 장치를 절전 상태로 전환한 다음 전원 버튼을 다시 눌러 화면을 활성화하고 장치의 잠금을 해제합니다.
</td>
</tr>
<tr id="CR-9">
<!-- Hardware features -->
<td>
CR-9
</td>
<td>
장치에 슬라이드아웃 키보드가 있는 경우 키보드를 이상 슬라이드인 또는 슬라이드아웃합니다.
장치에 키보드 도크가 있는 경우 장치를 키보드 도크에 장착합니다.
</td>
</tr>
<tr id="CR-10">
<td>
CR-10
</td>
<td>
장치에 외부 디스플레이 포트가 있는 경우 외부 디스플레이를 연결합니다.
</td>
</tr>
<tr id="CR-11">
<td>
CR-11
</td>
<td>
알림 서랍에서 앱이 표시할 있는 모든 유형의 알림을 트리거하고 관찰합니다.
적용 가능한 경우 알림을 확장하고(Android 4.1 이상) 제공된 모든 작업을 누릅니다.
</td>
</tr>
<tr id="CR-12">
<td>
CR-12
</td>
<td>
설정 &gt; 정보로 이동하여 앱이 요청한 권한을 검사합니다.
</td>
</tr>
<tr id="tg3">
<td>
SD 카드에 설치
</td>
<td>
SD-1
</td>
<td>
<p style="margin-bottom:.5em;">
<a href="{@docRoot}guide/topics/data/install-location.html">장치 SD 카드</a>에 앱이 설치된 상태에서 <em>핵심 테스트 도구 모음</em>을 반복합니다(앱에서 지원하는 경우).
</p>
<p style="margin-bottom:.25em;">
앱을 SD 카드로 이동하려면 설정 &gt; 정보 &gt; SD 카드로 이동을 사용하면 됩니다.
</p>
</td>
</tr>
<tr id="tg32">
<td>
하드웨어 가속
</td>
<td>
HA-1
</td>
<td>
<p style="margin-bottom:.5em;">
하드웨어 가속이 활성화된 상태에서 <em>핵심 테스트 도구 모음</em>을 반복합니다.
</p>
<p style="margin-bottom:.25em;">
하드웨어 가속을 강제로 활성화하려면(장치에서 지원하는 경우) <code>hardware-accelerated="true"</code>를 앱 매니페스트의 <code>&lt;application&gt;</code>에 추가하고 다시 컴파일합니다.
</p>
</td>
</tr>
<tr id="tg33">
<td>
성능 모니터링
</td>
<td>
PM-1
</td>
<td>
<p style="margin-bottom:.5em;">
<a href="#strictmode">아래 설명처럼</a> StrictMode 프로파일링이 활성화된 상태에서 <em>핵심 테스트 도구 모음</em>을 반복합니다.
</p>
<p style="margin-bottom:.25em;">
가비지 수집 사용자 경험에 미치는 영향에 세심한 주의를 기울이십시오.
</p>
</td>
</tr>
<tr id="gp">
<td rowspan="3">
Google Play
</td>
<td>
GP-1
</td>
<td>
<a href="https://play.google.com/apps/publish/">개발자 콘솔</a>에 로그인하여 개발자 프로필, 설명, 스크린샷, 대표 그래픽, 완성도 설정 사용자 피드백을 검토합니다.
</td>
</tr>
<tr id="GP-2">
<td>
GP-2
</td>
<td>
대표 그래픽과 스크린샷을 다운로드하고 대상으로 하는 장치 팩터의 디스플레이 크기에 맞게 배율을 축소합니다.
</td>
</tr>
<tr id="GP-3">
<td>
GP-3
</td>
<td>
또는 확장 파일 다운로드에 패키지로 포함된 모든 그래픽 자산, 미디어, 텍스트, 코드 라이브러리 기타 콘텐츠를 검토합니다.
</td>
</tr>
<tr id="GP-4">
<td>
결제
</td>
<td>
GP-4
</td>
<td>
앱의 모든 화면을 탐색하고 모든 인앱 구매 흐름으로 진입합니다.
</td>
</tr>
</table>
<h3 id="strictmode">
StrictMode 테스트
</h3>
<p>
성능을 테스트하려면 앱에서 {@link android.os.StrictMode}를 활성화하고 이를 사용하여 성능, 네트워크 액세스, 파일 읽기/쓰기 등에 영향을 있는 기본 스레드 기타 스레드에서 작업을 캐치하는 것이 좋습니다.
</p>
<p>
{@link
android.os.StrictMode.ThreadPolicy.Builder}를 사용하여 스레드별 모니터링 정책을 수립하고 {@link
android.os.StrictMode.ThreadPolicy.Builder#detectAll()}을 사용하여 <code>ThreadPolicy</code>에서 지원되는 모든 모니터링을 활성화할 수 있습니다.
</p>
<p>
{@link
android.os.StrictMode.ThreadPolicy.Builder#penaltyFlashScreen()
penaltyFlashScreen()}을 사용하여 <code>ThreadPolicy</code> 정책 위반의 <strong>시각적 알림</strong>을 활성화하십시오.
</p>