Android 6.0에서는 앱이 차기 버전의 플랫폼에서 제대로 작동하는지 확인해 볼 수 있습니다. 이 출시에는 API 개요 및 동작 변경사항에 설명된 대로 앱에 영향을 미칠 수 있는 여러 API 및 동작 변경사항이 포함되어 있습니다. 이 버전으로 앱을 테스트할 때는 사용자에게 좋은 환경을 제공하기 위해 개발자 여러분이 꼭 초점을 맞춰야 하는 몇 가지 특정한 시스템 변경사항이 있습니다.
이 가이드에서는 앱에서 Android 6.0 기능을 테스트하는 방법과 방법을 설명합니다. 이러한 특정 기능은 앱 동작에 미치는 영향이 클 수 있으므로 먼저 테스트하는 것이 좋습니다.
권한 테스트
새로운 권한 모델은 사용자가 앱에 권한을 할당하는 방식을 변경합니다. 설치 절차 중에 모든 권한을 부여하는 대신 앱은 런타임에 사용자에게 개별 권한을 요청해야 합니다. 사용자 입장에서는 이러한 동작으로 각 앱의 액티비티에 대해 더 세분화된 제어권을 행사할 수 있을 뿐만 아니라 이 앱이 왜 특정한 권한을 요청하고 있는지 맥락을 더 잘 이해할 수 있습니다. 사용자는 언제든 앱에 개별적으로 권한을 허용할 수 있고, 이를 취소할 수도 있습니다. 출시의 이러한 기능은 앱의 동작에 영향을 미칠 가능성이 가장 높고, 앱의 몇 가지 기능이 작동하지 않도록 막거나 저하된 상태로 작동하게 할 수도 있습니다.
이 변경사항은 새 플랫폼 버전을 타겟팅하지 않는 앱을 포함하여 새 플랫폼에서 실행되는 모든 앱에 영향을 미칩니다. 레거시 앱의 경우 플랫폼에서 제한된 호환성 동작을 제공하지만, 지금 바로 새로운 권한 모델로 앱의 이전을 계획해야 하며, 공식 플랫폼 출시 시 업데이트된 앱 버전을 게시하는 것을 목표로 해야 합니다.
테스트 팁
다음은 새 권한 동작에 대해 앱 테스트를 계획하고 실행하는 데 유용한 몇 가지 테스트 팁입니다.
- 앱의 현재 권한 및 관련 코드 경로를 식별합니다.
- 권한 보호된 서비스 및 데이터 전반에 걸친 사용자 흐름을 테스트합니다.
- 허용된/취소된 권한을 여러 가지로 조합하여 테스트합니다.
adb
도구를 사용하여 명령줄에서 권한을 관리합니다.- 권한과 상태를 그룹별로 나열합니다.
adb shell pm list permissions -d -g
- 다음 구문을 사용하여 하나 이상의 권한을 부여하거나 취소합니다.
adb shell pm [grant|revoke] <permission.name> ...
- 권한과 상태를 그룹별로 나열합니다.
- 권한을 사용하는 서비스의 앱을 분석해봅니다.
테스트 전략
권한을 변경하면 앱의 구조와 디자인은 물론 사용자 환경과 사용자에게 제공하는 흐름에도 영향을 줍니다. 앱의 현재 권한 사용 내용을 평가한 다음 제공하고자 하는 새로운 흐름을 계획하기 시작해야 합니다. 플랫폼의 공식 릴리스에서 호환성 동작을 제공할 예정이지만, 이와 같은 동작에만 의존하지 말고 앱 업데이트를 계획하는 것이 좋습니다.
앱이 실제로 필요로 하고 사용하는 권한을 확인한 다음, 권한 보호된 서비스를 사용하는 여러 가지 코드 경로를 찾습니다. 이렇게 하려면 새 플랫폼에서 여러 가지로 조합한 테스트를 거치고 코드 분석을 통해야 합니다. 테스트에서는 앱의 targetSdkVersion
을 API 수준 23으로 변경하여 런타임 권한을 선택하는 데 집중해야 합니다.
다양한 권한 조합을 취소 및 추가하는 테스트를 진행하여 권한에 종속되는 사용자 흐름을 강조합니다. 종속 항목이 분명하지 않거나 논리적인 경우 리팩터링을 고려하거나 흐름을 분류하여 종속 항목을 제거하거나 권한이 필요한 이유를 명확히 해야 합니다.
런타임 권한의 동작, 테스트 및 권장사항에 관한 자세한 내용은 시스템 권한 사용 개발자 페이지를 참고하세요.
잠자기 및 앱 대기 모드 테스트
잠자기 및 앱 대기 모드의 절전 기능은 기기가 유휴 상태에 있을 때 또는 사용자가 앱에 초점을 맞추고 있지 않을 때 앱이 수행할 수 있는 배경 처리의 양을 제한합니다. 시스템이 앱에 부과할 수 있는 제한 사항으로는 네트워크 액세스 제한 또는 없음, 백그라운드 작업 정지, 알림 정지, 절전 모드 해제 및 알람 무시 등이 있습니다. 이러한 절전 기능에 앱이 적절히 동작하도록 확실히 해 두려면 이와 같은 저전력 상태를 시뮬레이트하여 앱을 테스트해 보아야 합니다.
잠자기 모드에서 앱 테스트
앱에서 잠자기 모드를 테스트하려면:
- Android 7.0 (API 수준 24) 시스템 이미지로 하드웨어 기기 또는 가상 기기를 구성합니다.
- 기기를 개발 머신에 연결하고 앱을 설치합니다.
- 앱을 실행시킨 다음 활성 상태로 그냥 둡니다.
- 다음 명령을 실행하여 기기가 잠자기 모드에 들어가는 것을 시뮬레이션합니다.
$ adb shell dumpsys battery unplug $ adb shell dumpsys deviceidle step $ adb shell dumpsys deviceidle -h
- 기기가 다시 활성화되면 앱이 어떻게 동작하는지 살펴봅니다. 기기가 잠자기 모드를 종료할 때 정상적으로 복구되는지 확인해야 합니다.
앱에서 앱 대기 모드 테스트하기
다음 단계에 따라 앱에서 앱 대기 모드를 테스트하세요.
- Android 7.0 (API 수준 24) 시스템 이미지로 하드웨어 기기 또는 가상 기기를 구성합니다.
- 기기를 개발 머신에 연결하고 앱을 설치합니다.
- 앱을 실행시킨 다음 활성 상태로 그냥 둡니다.
- 다음 명령을 실행하여 앱이 대기 모드에 들어가는 것을 시뮬레이션합니다.
$ adb shell am broadcast -a android.os.action.DISCHARGING $ adb shell am set-idle <packageName> true
- 다음 명령을 사용하여 앱이 대기 모드에서 해제되는 것을 시뮬레이션합니다.
$ adb shell am set-idle <packageName> false
- 앱이 대기 모드에서 해제된 상태에서 어떻게 동작하는지 살펴봅니다. 대기 모드에서 정상적으로 복구되는지 확인해야 합니다. 특히 앱의 알림과 백그라운드 작업이 계속 예상대로 작동하는지 확인해야 합니다.
앱용 자동 백업 및 기기별 식별자
앱이 내부 저장소에 기기별 식별자(예: Google 클라우드 메시징 등록 ID)를 유지하는 경우 자동 백업으로 사용자 데이터 백업에 설명된 대로 권장사항에 따라 자동 백업에서 저장소 위치를 제외해야 합니다.