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)를 유지하는 경우 자동 백업으로 사용자 데이터 백업에 설명된 대로 권장사항을 따라 자동 백업에서 저장소 위치를 제외해야 합니다.