원문링크: http://developer.android.com/intl/ko/distribute/googleplay/quality/core.html
핵심 앱 품질 가이드라인
앱의 품질은 설치 및 사용자 등급이나 평가, 참여, 사용자 보유 등의 측면에서 성공 여부에 장기적으로 직접적인 영향을 줍니다. 안드로이드 사용자는 고품질의 앱을 기대합니다. 앱을 사용자가 구매한 경우에는 더욱 그렇죠.
본 문서에서 설명하는 핵심 앱 품질 기준 내용 및 관련 테스트를 통해서 기본적인 품질을 측정하실 수 있습니다. 모든 안드로이드 앱은 본 기준에 부합해야 합니다.
앱을 출시하기 전에, 본 기준을 대상으로 본인의 앱이 여러 디바이스에 제대로 동작하는지, 방향 탐색과 디자인이 안드로이드 기준에 부합하는지, Google Play 스토어에 홍보 기회를 이용할 수 있도록 잘 제작되었는지 검증하세요. 하지만 본인의 실제 테스트 항목이 본 문서에서 기술된 사항에만 국한되지는 않을 것입니다. 본 문서의 목표는, 기본적인 품질에 대한 필수 사항들을 명시하여 해당 내용을 본인의 테스트 내용에 포함시키도록 하기 위함입니다.
본인의 앱이 태블릿 디바이스를 타겟으로 삼고 있다면, 태블릿 사용자에게 풍성하고 매력적인 사용자 경험을 제공할 수 있어야 합니다. 태블릿에 앱을 최적화하기 위한 권장 사항을 확인하려면 태블릿 앱 품질 체크리스트를 확인하세요.
시각 디자인 및 유저 인터랙션
본 기준을 통해서 일관적이고 직관적인 사용자 경험을 제공하기 위하여 앱에서 일반적인 안드로이드 시각 디자인 및 인터랙션 패턴을 적절하게 제공하는지 확인합니다.
영역 | ID | 설명 | 테스트 |
표준 디자인 | UX-B1 | 앱은 안드로이드 디자인 가이드라인을 준수하고 일반적인 UI 패턴 및 아이콘을 사용하도록 한다.
| |
방향탐색 | UX-N1 | 앱에서 표준 시스템 Back 버튼 방향 탐색을 지원하며 사용자 지정 온스크린 Back 버튼을 사용하지 않는다. | |
UX-N2 | 모든 대화 상자는 Back 버튼을 사용해서 제거할 수 있다 | ||
UX-N3 | 어떠한 경우에도 홈 버튼을 누르면 디바이스의 홈 화면으로 간다. | ||
알림 | UX-S1 | 알림(Notification)은 안드로이드 디자인 가이드라인을 준수한다. 특별히,
| |
UX-S2 | 앱은 아래의 경우에만 알림을 사용하도록 한다
| CR-11 |
기능
본 기준은 앱이 적절한 수준의 권한을 가지고 기대되는 기능 동작을 제공하고 있는지 확인합니다.
Area | ID | Description | Tests |
권한 | FN-P1 | 앱은 핵심 기능을 지원하기 위해 필요한 절대적으로 최소한의 권한만을 요청한다. | |
FN-P2 | 민감한 데이터나 (연락처 및 시스템 로그 등) 사용자가 비용을 부담할 수 있는 서비스 (자동 다이얼이나 SMS 등) 접근 권한 요청을 하지 않는다. | ||
설치 장소 | FN-L1 | SD 카드에 설치되었을 때 앱이 정상 동작한다. (앱에서 지원하는 경우) 대부분 대형 앱(10MB 이상)의 경우 SD 카드 설치 지원을 권장한다. 어떠한 유형의 앱에서 SD카드 설치를 지원해야 하는지에 대한 정보는 앱 설치 장소 개발자 가이드를 확인. | |
Audio 오디오 | FN-A1 | 핵심 기능이 아닌 한 (예: 뮤직 플레이어) 화면이 꺼지면 오디오는 재생되지 않는다. | |
FN-A2 | 핵심 기능이 아닌 한 오디오는 화면 잠금 상태에서 재생되지 않는다. | ||
FN-A3 | 핵심 기능이 아닌 한 오디오는 홈 화면이나 다른 앱 상에서 재생되지 않는다. | ||
FN-A4 | 앱이 포그라운드로 복귀했을 때 오디오가 재생되거나 재생이 정시 상태라는 것을 사용자에게 알려준다. | ||
UI and Graphics UI 및 그래픽 | FN-U1 | 앱은 가로 방향과 세로 방향을 모두 지원한다 (가능한). 어느 방향이든 대체적으로 동일한 기능과 동작을 나타내고 동일한 기능을 유지한다. 콘텐츠나 뷰에서 작은 변경사항은 허용한다. | |
FN-U2 | 두 가지 방향 모드에서 전체 화면을 사용하며 방향 변경을 위한 레터 박스 형식을 쓰지 않는다. 화면의 기하학적 구성에서 작은 변동을 보충하기 위한 사소한 레터 박스는 허용한다. | ||
FN-U3 | 앱이 표시 방향 간의 빠른 전환을 렌더링 문제 없이 올바르게 처리한다. | ||
User/app state 사용자/ 앱 상태 | FN-S1 | 앱이 백그라운드에 있을 때 핵심 기능에 관련되어 있지 않는 한, 어떠한 서비스도 실행하도록 내버려 두지 않는다. 예를 들어, 알림을 위한 네트워크 연결을 유지하거나 블루투스 연결을 유지하거나 GPS를 켜놓기 위한 서비스가 실행된 채로 내버려 두지 않는다. | |
FN-S2 | 앱에서 사용자 및 앱 상태를 올바르게 유지하거나 복구한다. 포그라운드에서 벗어날 때 앱은 사용자 및 앱 상태를 유지하고 뒤로 가기(back-navigation)와 기타 상태 변경으로 인한 우발적인 데이터 손실을 방지한다. 포그라운드로 복귀했을 때, 앱은 저장된 상태와 편집 가능한 항목, 게임 진행, 메뉴, 동영상, 기타 앱이나 게임에서의 기타 부분 등과 같이 보류 중이었던 중대한 상태 처리 복구해야 한다.
| CR-1, CR-3, CR-5 |
성능 및 안정성
사용자로부터 높은 등급을 받기 위해서 앱은 제대로 동작해야하고 모든 타겟 디바이스, 폼팩터, 화면 등에서 제대로 반응해야 합니다. 본 기준을 통해서 사용자가 기대하는 기본적인 성능, 안정성, 반응성을 앱이 제공하는지 확인합니다.
영역 | ID | 설명 | 테스트 |
안정성 | PS-S1 | 어떠한 타겟 디바이스에서도 크래쉬되거나, 강제 종료되거나, 멈추거나, 기타 비정상적인 동작을 하지 않는다 | |
성능 | PS-P1 | 앱에서 로딩이 2초 이상이 걸리는 경우, 사용자에게 화면에서 피드백(프로그레스 표시 혹은 유사 신호)을 빠르게 로딩하여 제공한다. | |
PS-P2 | StrictMode를 활성화하고서 (아래 StrictMode Testing 참조) 게임 재생, 애니메이션 및 UI 전환, 앱의 기타 부분 등을 포함하여 앱을 실행하고 있을 때 어떠한 붉은 플래시(StrictMode에서 성능 경고)도 보이지 않는다. | ||
미디어 | PS-M1 | 정상적인 앱 사용 및 로딩 시에 음악과 동영상은 끊김이나 버벅거림, 아티팩트 없이 부드럽게 재생되어야 한다. | |
시각 품질 | PS-V1 | 앱은 그래픽, 텍스트, 이미지 및 기타 UI 요소를 눈에 띄는 왜곡이나 흔들림, 픽셀레이션이 없이 보여준다.
| |
PS-V2 | 앱은 텍스트 및 텍스트 상자를 적절한 방법으로 표시한다.
|
Google Play
성공적으로 Google Play에 앱을 출시하고 등급을 높이며 스토어의 홍보 활동을 위한 만반의 준비를 하기 위해서 아래 기준을 따르세요.
영역 | ID | 설명 | 테스트 |
정책 | GP-P1 | 앱은 Google Play 개발자 프로그램 정책을 엄격히 준수하며 부적절한 콘텐츠를 제공하지 않고 타인의 지적 재산권이나 상품을 사용하지 않도록 한다 | |
GP-P2 | 콘텐츠 등급 가이드라인에 기반하여 앱의 콘텐츠 수위는 적절하게 설정되어야 한다. 특히 디바이스 위치를 사용 권한을 요청하는 앱의 경우 콘텐츠 수위를 “전체이용가"로 설정할 수 없음을 주의. | ||
앱 세부 페이지 | GP-D1 | 앱의 추천 이미지는 블로그에 포스팅된 가이드라인에 따르도록 한다.
| |
GP-D2 | 앱 스크린샷이나 동영상은 안드로이드 이외의 디바이스를 보여주지 않도록 한다. | ||
GP-D3 | 앱의 스크린샷이나 동영상은 사용자에게 해당 앱의 콘텐츠나 경험을 호도하지 않도록 한다. | ||
사용자 지원 | GP-X1 | Google Play 페이지에 Reviews탭에서 사용자가 보고하는 공통적인 버그가 재현 가능하고 다른 디바이스에서도 발생하는 경우에 해당 버그를 처리하도록 한다. 몇몇 디바이스에서만 버그가 발생한 경우, 해당 기기가 특별히 유행하거나 새로운 경우에 해당 문제를 해결해야 한다. | GP-1 |
테스트 환경 설치하기
태블릿에서 앱 품질을 측정하려면 테스트를 위한 적절한 하드웨어와 에물레이터를 설치해야 합니다.
이상적인 테스트 환경은 현재 고객이 사용 가능한 대표적인 키 폼팩터 및 하드웨어/소프트웨어 조합을 나타내 줄 수 있는 적은 수의 실제 하드웨어 디바이스를 포함하는 것입니다. 출시된 모든 디바이스를 테스트할 필요는 없습니다. 다만, 폼팩터 당 한두 디바이스를 사용하면서도 대표적인 디바이스 몇몇에 집중해야 합니다.
테스트용 실제 하드웨어를 얻지 못했을 경우, 가장 일반적인 폼팩터와 하드웨어/소프트웨어 조합을 나타낼 수 있는 디바이스 에뮬레이터(AVD)를 설치해야 합니다.
기본 테스트를 넘어서 테스트 환경에 더 많은 디바이스, 폼팩터, 새로운 하드웨어/소프트웨어 조합을 추가할 수 있습니다. 또한 테스트와 품질 기준의 수나 복잡도를 높일 수도 있습니다.
Test Procedures 테스트 절차
본 테스트 절차는 앱의 다양한 형태의 품질 이슈를 발견할 수 있도록 해줍니다. 테스트 항목을 통합하거나 테스트 그룹을 본인의 테스트 계획에 통합시킬 수 있습니다. 특정 기준을 특정 테스트와 연관시키는 내용을 확인하시려면 위의 섹션을 확인하세요.
유형 | 테스트 | 설명 |
핵심 테스트 세트 (Core Suite) | CR-0 | 모든 화면, 대화창, 설정 및 유저 플로우 등 앱의 모든 부분을 방향 탐색하기. 애플리케이션에서 편집이나 콘텐츠 만들기나 게임 플레이, 또는 미디어 재생이 가능하다면 콘텐츠를 생성하고 수정하는 플로우에 진입하기.
|
CR-1 | 각 앱 화면에서 디바이스의 홈 키를 누르고, 전체 앱(All Apps) 화면에서 다시 해당 앱을 재수행. | |
CR-2 | 각 앱 화면에서 다른 수행 앱으로 전환하고서 최근 앱(Recents app) 스위처를 사용하여 테스트 중인 앱으로 되돌아가기. | |
CR-3 | 각 앱 화면 (및 대화상자)에서, Back 버튼을 누르기. | |
CR-5 | 각 앱 화면에서 최소한 3번 가로방향에서 세로방향으로 디바이스 회전하기. | |
CR-6 | 테스트하는 앱을 백그라운드로 보내기 위해서 다른 앱으로 전환하기. 설정(Settings)에 가서 테스트 앱이 백그라운드로 실행되는 동안 테스트 앱에서 수행하는 서비스가 있는지 확인. 안드로이드 4.0 이상부터는 앱(Apps) 화면에 가서 “사용 중(Running)” 탭에서 앱을 확인. 이전 버전에서는 “앱 관리(Manage Applications)”를 사용하여 실행되고 있는 서비스를 확인. | |
CR-7 | 전환 버튼을 눌러서 디바이스를 슬립모드로 만들고, 전원 버튼을 다시 눌러서 화면을 활성화. | |
CR-8 | 전원 버튼이 눌러졌을 때 디바이스가 잠기도록 설정. 디바이스가 슬립 모드가 되도록 전원 버튼을 누르고 나서, 다시 전원 버튼을 눌러서 화면을 활성화, 그리고 디바이스 잠금 해제. | |
CR-9 | 슬라이드아웃(slide-out) 키보드가 장착된 디바이스의 경우, 키보드를 꺼냈다 뺐다를 최소한 한번 실행. 키보드 세움판이 있는 경우, 키보드 세움판에 디바이스를 장착하기. | |
CR-10 | 디바이스에 외부 디스플레이 포트가 있는 경우, 외부 디스플레이를 연결. | |
CR-11 | 앱이 표시할 수 있는 모든 유형의 알림을 트리거하고 관찰. 해당되는 (안드로이드 4.1 이상) 알림을 확장하고 주어진 모든 액션을 이용. | |
CR-12 | 앱에 의해서 요청되는 권한 사항을 설정(Settings) > 앱 정보(App Info) 로 가서 검토. | |
SD Card에 설치 | SD-1 | 디바이스 SD 카드가 (앱에서 지원되는 경우) 장착된 앱으로 핵심 테스트 세트(Core Suite)을 반복. 앱을 SD 카드에 이동시키기 위해, 설정(Settings) > (앱 정보)App Info > (SD 카드로 이동)Move to SD Card를 사용할 수 있음. |
하드웨어 가속 | HA-1 | 하드웨어 가속(hardware acceleration)을 활성화시켜서 핵심 테스트 세트를 반복. 강제로 하드웨어 가속을 활성화하기 위해 (디바이스에서 지원하는 경우) 앱 매니페스트 및 리컴파일의 <application>에 hardware-accelerated="true"를 추가. |
성능 감시 | PM-1 | 아래 설명된 대로 StrictMode 프로파일링을 활성화시켜서 핵심 테스트 세트를 반복. 가비지 컬렉션과 사용자 경험에 주는 영향에 주의를 기울일 것. |
Google Play | GP-1 | 개발자 콘솔에 등록하여 개발자 프로필, 앱 설명, 스크린샷, 추천 이미지, 콘텐츠 수위, 사용자 피드백 등을 검토한다. |
GP-2 | 추천 이미지와 스크린샷을 다운로드하고 타겟 디바이스와 폼팩터에서 표시되는 크기에 맞춰 축소하기 | |
GP-3 | 앱이나 확장 파일 다운로드에서 모든 이미지 에셋, 미디어, 텍스트, 코드 라이브러리 및 기타 콘텐츠 패키지를 검토 | |
결제 | GP-4 | 앱의 모든 화면에 방향 탐색하고 모든 인앱 구매 플로우에 진입 |
스트릭트 모드(StrictMode) 테스트
성능 테스트를 위해서 앱에서 StrictMode를 활성화하여 성능, 네트워크 접근, 파일 읽기/쓰기 등에 영향을 줄 수 있는 메인 스레드와 기타 스레드에서 명령을 수행하는데 사용하기를 권장합니다.
StrictMode.ThreadPolicy.Builder를 사용하여 스레드 별로 감시 정책을 설정할 수도 있으며 detectAll()을 사용하여 ThreadPolicy에서 지원되는 모든 모니터링을 활성화시킬 수 있습니다.
ThreadPolicy에 대한 정책 위반의 경우에 penaltyFlashScreen()을 사용하여 시각적으로 통보할 수 있도록 해야합니다.
'옛글 > 안드로이드 프로그래밍' 카테고리의 다른 글
[안드로이드] static을 자주 쓰면 안되는 이유 (2) | 2013.06.24 |
---|---|
Eclipse Heap size Error등 에러를 막기 위한 메모리 설정 (0) | 2013.05.23 |
[안드로이드] GridView Auto Scroll (SmoothScroll) (0) | 2013.03.27 |
[안드로이드] NewRelic 통계분석 툴 안드로이드 앱에 사용하기 (0) | 2013.03.25 |
[안드로이드]문답-이미지뷰를 포함한 리스트뷰 속도개선 (0) | 2013.03.22 |