테스트 요구사항

GTS 테스트(GtsSafetyCenterTestCases)

GTS 테스트는 구성 파일에 제약 조건을 적용합니다. 구성 파일 업데이트를 참고하세요. 기기에서 안전 센터를 지원하지 않으면 해당 기기는 이러한 테스트에서 제외됩니다.

제약 조건은 다음과 같습니다.

  • 안전 센터 소스 그룹이 7개 이상 있어야 하며 수정되지 않은 상태나 기본 상태로 유지되어야 합니다. 소스 제목, 초기 표시 상태, 요약과 같은 일부 특정 필드는 오버레이 가능한 문자열로 지원될 때가 있고 수정할 수 있습니다.
  • GoogleAppSecuritySources:

    • GooglePlayProtect 안전 소스는 삭제하거나 수정하지 않습니다.
    • GoogleAppProtectionService 안전 소스는 삭제하거나 변경할 수 있습니다. 제공되는 경우:
      • 로깅을 지원해야 합니다.
      • 패키지 이름이 변경되지 않는 경우 Android 13에서는 initialDisplayState="hidden"이 있어야 합니다. Android 14에서는 대신 issue-only-safety-source여야 하고 deduplicationGroup은 변경되지 않은 상태로 유지되어야 합니다.
      • 패키지 이름이 변경되는 경우 "android.app.role.SYSTEM_APP_PROTECTION_SERVICE" 역할을 보유해야 합니다. 또한 Android 14에서는 deduplicationGroup이 있으면 안 됩니다.
  • AndroidLockScreenSources:

    • 그룹의 summary 인스턴스가 필요하며 이는 문자열 오버레이 등을 사용하여 수정할 수 있습니다.
    • 안전 소스가 하나 이상 있어야 합니다.
    • 첫 번째 안전 소스는 잠금 화면 설정을 제어하는 소스로 사용되며 SEVERITY_LEVEL_RECOMMENDATION보다 심각한 문제나 항목(maxSeverityLevel="300" 또는 최대 노란색 항목 또는 경고 카드)을 푸시할 수 없어야 합니다. Android 14에서는 deduplicationGroup이 변경되지 않은 상태로 유지되어야 합니다.
    • 기타 안전 소스는 생체 인식 잠금 해제 메커니즘과 관련된 소스로 사용되며 maxSeverityLevel="0"이 있어야 합니다.
  • Android 13에서는 GoogleAccountSources, GoogleDeviceFinderSources 또는 AndroidAdvancedSources를 수정하면 안 됩니다. Android 14에서는 이러한 그룹에 도입된 새로운 소스의 일부를 삭제할 수 있고(예: 백업 및 복원) 새로운 정적 소스를 AndroidAdvancedSources 그룹에 추가할 수도 있습니다.

  • GoogleUpdateSources:

    • GoogleSecurityUpdatesintentAction을 변경할 수 있고 문자열 오버레이로 수정할 수 있습니다.
    • GooglePlaySystemUpdate는 수정하면 안 됩니다.
  • AndroidPrivacySources:

    • issue-only인 경우 일부 소스를 추가, 삭제 또는 수정할 수 있습니다.
    • packageName="com.google.android.permissioncontroller"를 유지해야 합니다.
    • AndroidPrivacySources 소스의 나머지 부분은 수정하면 안 됩니다.
  • 안전 소스 그룹의 나머지 부분(있는 경우):

    • 그룹에는 SAFETY_SOURCES_GROUP_TYPE_RIGID 그룹(Android 14에서 SAFETY_SOURCES_GROUP_TYPE_STATELESS)이 되는 summary 또는 statelessIconType이 없어야 합니다.
    • 각 그룹 내 각 소스는 정적이거나 maxSeverityLevel="0"을 보유해야 합니다. 예를 들어 회색이나 녹색 항목을 전송할 수 있지만 문제는 전송할 수 없습니다.

CTS 테스트(CtsSafetyCenterTestCases)

Android 13부터 CTS 테스트가 PermissionController를 지원하는 모든 OEM에 적용됩니다.

구성 파일 테스트(XmlConfigTest)

이러한 테스트를 통해 다음을 확인합니다.

  • 파싱된 XML 구성 파일이 안전 센터에서 파싱하고 노출한 구성과 일치하며 이 파싱은 성공적입니다.
  • 인텐트 작업 android.settings.PRIVACY_ADVANCED_SETTINGS가 XML 파일에 있으면 이 작업은 해결되어야 합니다.
  • 인텐트 작업 android.settings.PRIVACY_CONTROLS가 XML 파일에 있으면 이 작업은 해결되어야 합니다.

UI 테스트(SafetyCenterActivityTest)

이러한 테스트를 통해 다음을 확인합니다.

  • android.intent.action.SAFETY_CENTER 인텐트 작업이 해결되어 안전 센터가 사용 설정될 때 보안 및 개인 정보 보호 설정 화면이 열리고 안전 센터가 사용 중지될 때 설정 화면이 열립니다.

API 테스트(SafetyCenterManagerTest)

SafetyCenterManagerTest API 테스트의 목표는 안전 센터 API가 의도대로 작동하는지 확인하는 것입니다.

이러한 테스트를 통해 다음을 확인합니다.

  • SafetyCenterManager.isSafetyCenterEnabled는 연결된 DeviceConfig 플래그로 제어합니다.
  • 사용 중지하면 안전 센터 API가 작동하지 않습니다.
  • 안전 센터 API는 연결된 권한을 보유한 경우에만 사용할 수 있습니다.
  • 데이터는 기본 구성에 따라서만 안전 센터에 제공될 수 있습니다.
  • 데이터가 안전 센터에 제공되면 적절하게 표시됩니다.
  • API는 안전 센터 소스 API 사용에 설명된 사양과 일치합니다(예: 새로고침 또는 재검색 동작, 데이터 설정 또는 삭제, 오류 신고).
  • UI에 노출된 내부 API는 올바르게 작동합니다(예: 데이터가 안전 센터에서 적절히 병합되고 데이터를 새로고침할 수 있음).

안전 센터 미지원 테스트(SafetyCenterUnsupportedTest)

이 테스트는 프레임워크 XML 구성 파일에서 지원이 사용 중지될 때 기기에서 지원하지 않는 경우 안전 센터가 사용 중지되는지 확인합니다.

기기에서 안전 센터를 지원하면 이 테스트는 실행되지 않습니다. 기기에서 안전 센터를 지원하지 않으면 이 테스트와 데이터 클래스 테스트만 실행됩니다.

이 테스트를 통해 다음을 확인합니다.

  • android.intent.action.SAFETY_CENTER 인텐트 작업으로 설정 화면이 열립니다.
  • SafetyCenterManager.isSafetyCenterEnabled에서 false가 반환됩니다.
  • 대부분의 안전 센터 API는 호출 시 응답하지 않습니다.

데이터 클래스 테스트(SafetySourceDataTest, SafetySourceIssueTest 등)

SafetySourceDataTestSafetySourceIssueTest와 같은 데이터 클래스 테스트는 안전 센터에서 노출된 데이터 클래스가 의도대로 작동하는지 확인합니다(예: SafetySourceData, SafetySourceIssue, 기타 관련 내부 클래스).

MTS 테스트(SafetyCenterFunctionalTestCases 등)

이러한 테스트는 메인라인 업데이트에서 실행되며 PermissionController를 지원하는 모든 OEM에 적용됩니다. 이러한 테스트로 적용되는 요구사항은 메인라인 업데이트에서 변경될 수 있습니다.

API 테스트(SafetyCenterManagerTest)

이러한 테스트는 CTS 테스트 SafetyCenterManagerTest와 유사하지만 메인라인 업데이트에서 변경될 수 있는 요구사항을 테스트합니다. 예를 들면 다음과 같습니다.

  • UI에 노출된 내부 API에서 반환된 데이터의 실제 콘텐츠를 확인합니다.

UI 테스트(SafetyCenterActivityTest, SafetyCenterStatusCardTest, SafetyCenterQsActivityTest 등)

이러한 테스트를 통해 다음을 확인합니다.

  • 특정 매개변수를 사용한 안전 센터로의 리디렉션이 의도대로 작동합니다(예: 특정 문제로 리디렉션). 안전 센터로 리디렉션을 참고하세요.
  • UI에서 올바른 기본 안전 상태를 표시합니다.
  • UI에서 별도의 화면으로 이동할 수 있습니다.
  • SafetySourceIssue에서 지정될 때 UI를 통해 안전 센터 화면에서 직접 안전 문제를 해결할 수 있습니다.
  • UI에서는 한 항목에서 여러 경고 카드를 접고 이를 여러 경고 카드로 다시 펼칠 수 있습니다.
  • 안전 센터 페이지가 관련 안전 센터 소스에 관해 열릴 때 데이터를 새로고침합니다.
  • 재검색 버튼이 특정 상황에서만 표시됩니다.
  • 재검색 버튼을 탭하면 새 데이터를 가져옵니다.
  • 유사한 테스트가 안전 센터에 대해 실행됩니다. 앱의 맞춤 빠른 설정 타일 만들기를 참고하세요.

  • 오류 상태 및 대기 중 상태와 같은 추가적인 특이 사례

여러 사용자 테스트(SafetyCenterMultiUsersTest)

이러한 테스트의 목표는 여러 사용자 또는 프로필의 데이터가 제공될 때 API가 적절하게 작동하는지 확인하는 것입니다. 여러 사용자 및 프로필의 데이터 제공을 참고하세요. 이 설정은 Bedstead를 사용하여 기기에서 별도의 사용자 및 프로필 설정을 용이하게 하는 내부 라이브러리를 사용해 이루어집니다.

이 테스트를 통해 다음을 확인합니다.

  • 사용자에게 속한 데이터가 연결된 관리 프로필(있는 경우)과 함께 병합됩니다.
  • profile="all_profiles"로 표시된 소스만 사용자의 관리 프로필에 데이터를 제공할 수 있습니다.
  • 새 항목이 사용자와 연결된 각 관리 프로필에 관해 생성됩니다.
  • 한 사용자에게 속한 데이터는 관련 없는 다른 사용자에게 유출되지 않습니다.