Android 6.0 테스트 가이드

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으로 변경하여 런타임 권한을 선택하는 데 초점을 맞춰야 합니다.

다양한 조합의 권한을 취소 및 추가하여 테스트하여 권한에 종속된 사용자 흐름을 파악합니다. 종속 항목이 명확하지 않거나 논리적인 경우 리팩터링을 고려하거나 흐름을 구분하여 종속 항목을 제거하거나 권한이 필요한 이유를 명확히 해야 합니다.

런타임 권한의 동작, 테스트 및 권장사항에 관한 자세한 내용은 시스템 권한 사용 개발자를 참조하세요.

잠자기 및 앱 대기 모드 테스트

잠자기 및 앱 대기의 절전 기능은 기기가 유휴 상태에 있거나 앱에 포커스가 없을 때 앱에서 실행할 수 있는 백그라운드 처리의 양을 제한합니다. 시스템이 앱에 적용할 수 있는 제한에는 네트워크 액세스 제한 또는 배제, 정지된 백그라운드 작업, 알림 정지, 무시된 절전 모드 해제 요청 및 알람이 포함됩니다. 이러한 절전 기능에 앱이 제대로 동작하는지 확인하려면 이러한 저전력 상태를 시뮬레이션하여 앱을 테스트해야 합니다.

잠자기 모드에서 앱 테스트

앱에서 잠자기 모드를 테스트하려면:

  1. Android 7.0 (API 수준 24) 시스템 이미지로 하드웨어 기기 또는 가상 기기를 구성합니다.
  2. 기기를 개발 머신에 연결하고 앱을 설치합니다.
  3. 앱을 실행시킨 다음 활성 상태로 그냥 둡니다.
  4. 다음 명령어를 실행하여 기기가 잠자기 모드로 전환되는 것을 시뮬레이션합니다.
    $ adb shell dumpsys battery unplug
    $ adb shell dumpsys deviceidle step
    $ adb shell dumpsys deviceidle -h
    
  5. 기기가 다시 활성화되면 앱이 어떻게 동작하는지 살펴봅니다. 기기가 잠자기 모드를 종료할 때 정상적으로 복구되는지 확인해야 합니다.

앱에서 앱 대기 모드 테스트하기

다음 단계에 따라 앱에서 앱 대기 모드를 테스트하세요.

  1. Android 7.0 (API 수준 24) 시스템 이미지로 하드웨어 기기 또는 가상 기기를 구성합니다.
  2. 기기를 개발 머신에 연결하고 앱을 설치합니다.
  3. 앱을 실행시킨 다음 활성 상태로 그냥 둡니다.
  4. 다음 명령어를 실행하여 앱이 대기 모드로 전환되는 것을 시뮬레이션합니다.
    $ adb shell am broadcast -a android.os.action.DISCHARGING
    $ adb shell am set-idle <packageName> true
    
  5. 다음 명령어를 사용하여 앱의 절전 모드 해제를 시뮬레이션합니다.
    $ adb shell am set-idle <packageName> false
  6. 앱이 대기 모드에서 해제된 상태에서 어떻게 동작하는지 살펴봅니다. 대기 모드에서 정상적으로 복구되는지 확인해야 합니다. 특히 앱의 알림과 백그라운드 작업이 계속 예상대로 작동하는지 확인해야 합니다.

앱용 자동 백업 및 기기별 식별자

앱이 내부 저장소에 Google 클라우드 메시징 등록 ID와 같은 기기별 식별자를 유지하는 경우 자동 백업으로 사용자 데이터 백업에 설명된 대로 권장사항에 따라 자동 백업에서 저장소 위치를 제외해야 합니다.