2025년 3월 27일부터 AOSP를 빌드하고 기여하려면 aosp-main
대신 android-latest-release
를 사용하는 것이 좋습니다. 자세한 내용은 AOSP 변경사항을 참고하세요.
개발자 기반 CTS
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
이 페이지에서는 개발자 기반 CTS(CTS-D) 사용 가이드라인을 대략적으로 설명합니다.
테스트 커버리지
CTS 및 CTS 인증 도구처럼 CTS-D는 다음 항목만 적용할 수 있습니다.
- 특정 API 수준의 개발자 SDK(developer.android.com)에 설명된 모든 공개 API
- 특정 API 수준의 Android 호환성 정의 문서(CDD)에 포함된 모든 MUST 요구사항
STRONGLY RECOMMENDED, SHOULD, MAY와 같은 MUST 이외의 요구사항은 선택사항이며 CTS를 사용하여 테스트할 수 없습니다.
모든 API와 CDD 요구사항은 특정 API 수준과 연결되어 있으므로 모든 CTS 테스트(CTS, CTS-D, CTS 인증 도구)는 연결된 API 또는 요구사항과 동일한 API 수준에 연결됩니다. 특정 API가 지원 중단되거나 변경되면 이에 상응하는 테스트도 지원 중단하거나 업데이트해야 합니다.
CTS 테스트 생성 규칙
- 테스트는 동일한 객관적 결과를 일관되게 생성해야 합니다.
- 테스트는 기기를 즉시 한 번 테스트하여 기기의 통과 또는 실패 여부를 판단해야 합니다.
- 테스트 생성자는 테스트 결과에 영향을 미칠 수 있는 가능한 모든 요인을 삭제해야 합니다.
- 기기에 특정 하드웨어 조건/환경/설정이 필요한 경우 이러한 설정은 커밋 메시지에 명확하게 정의해야 합니다. 설정 예 안내는 CTS 설정을 참고하세요.
- 테스트는 한 번에 6시간 넘게 실행해서는 안 됩니다. 더 오래 실행해야 하는 경우 Google에서 검토할 수 있도록 테스트 제안서에 이유를 포함해 주세요.
다음은 앱 제한을 테스트하기 위한 테스트 조건 모음의 예입니다.
- Wi-Fi가 안정적입니다(Wi-Fi를 사용하는 테스트의 경우).
- 기기가 테스트 중 고정된 상태로 유지됩니다(테스트에 따라 다름).
- 기기가 전원에서 분리되어 있고 배터리 잔량은 X퍼센트입니다.
- CTS를 제외하고 실행 중인 앱이나 포그라운드 서비스, 백그라운드 서비스가 없습니다.
- CTS를 실행하는 동안 화면이 꺼져 있습니다.
- 기기가
isLowRamDevice
가 아닙니다.
- 절전/앱 제한이 맨 처음 상태에서 변경되지 않았습니다.
테스트 자격요건
Google에서는 기존 CTS나 CTS 인증 도구, CTS-D 테스트에서 테스트되지 않는 동작을 적용하는 새로운 테스트를 허용합니다. 테스트 커버리지 범위 밖 동작을 확인하는 모든 테스트는 거부됩니다.
CTS 제출 프로세스
- 테스트 제안서 작성: 앱 개발자는 Google Issue Tracker를 사용하여, 식별된 문제를 설명하고 확인을 위한 테스트를 제안하는 테스트 제안서를 제출합니다. 제안서에는 연결된 CDD 요구사항 ID가 포함되어야 합니다.
Android팀에서 제안서를 검토합니다.
- CTS 테스트 개발: 제안서가 승인되면 제출자는 기본(AOSP/main) 브랜치에서 AOSP에 관한 CTS 테스트를 만듭니다. Android팀에서 코드를 검토합니다.
- 테스트 게시:
AOSP/main
에 CL을 제출한 후 최신 androidx-tests-dev
브랜치로 선택합니다. 이제 테스트가 공개적으로 제공됩니다.
CTS-D 테스트 작성 가이드라인
- Java 코드 스타일 가이드를 따릅니다.
- CTS 개발에 설명된 모든 단계를 따릅니다.
- 적절한 테스트 계획에 테스트를 추가합니다.
include-filters
를 사용하여 새 테스트를 CTS-D 테스트 계획(platform/cts/tools/cts-tradefed/res/config/cts-developer.xml
)에 추가합니다.
exclude-filters
를 사용하여 기본 CTS 테스트 계획(platform/cts/tools/cts-tradefed/res/config/cts-developer-exclude.xml
)에서 새 테스트를 제외합니다.
build_error.log
의 모든 errorprone
경고와 제안을 처리합니다.
- 변경사항을
head
로 리베이스합니다. 여기에는 cts-developer.xml
및 cts-developer-exclude.xml
테스트 계획이 포함됩니다.
- Google 엔지니어링 담당자에게 문의하여 테스트 사례가 기존 CTS 모듈에 포함될 수 있는지 확인합니다. 포함될 수 없으면 새 모듈을 만드는 데 도움을 받을 수 있습니다.
- 새 테스트 모듈이 만들어질 때마다 새 테스트 모듈 디렉터리에 OWNERS 파일을 만듭니다.
- OWNERS 파일에는 협력하는 Google 테스트 소유자로부터 얻은 다음 정보가 포함되어야 합니다.
# Bug component: xxx
- Google 테스트 소유자 LDAP
AndroidTest.xml
에서 다음 매개변수를 지정합니다. 예는 샘플 파일(1, 2)을 참고하세요.
Instant_app
또는 not_instant_app
secondary_user
또는 not_secondary_user
all_foldable_states
또는 no_foldable_states
- 올바른 minSDK를 지정하려면 <uses-sdk> 문서를 참고하세요.
- 새로운 테스트 메서드나 클래스, 모듈을 확인할 때 새 테스트와 같은 방식으로 이를 CTS-D 테스트 계획에 추가하고 기본 CTS 테스트 계획에서 제외합니다.
CTS-D 테스트 실행
run cts --plan cts-developer
를 사용하여 명령줄에서 CTS-D 테스트 계획을 실행합니다.
특정 테스트 사례를 실행하려면 run cts --include-filter "test_module_name test_name"
을 사용합니다.
전체 CTS 실행에 관한 자세한 내용은 CTS 테스트 실행을 참고하세요.
수락 및 출시
테스트 요청이 제출되면 내부 팀에서 이를 검토하여 CDD 요구사항이나 문서화된 API 동작을 테스트하는지 확인합니다. 테스트에서 유효한 요구사항이나 동작을 확인하는 것으로 판단되면 팀에서는 이 테스트 사례를 Google 엔지니어에게 전달하여 추가 검토를 받습니다. 그러면 Google 엔지니어가 개발자에게 연락하여 CTS로 수락되기 위해 테스트를 개선할 수 있는 방법에 관한 의견을 제공합니다.
CTS 출시 일정에 관한 자세한 내용은 출시 일정 및 브랜치 정보를 참고하세요.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-06-06(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-06-06(UTC)"],[],[],null,["# Developer-Powered CTS\n\nThis page outlines the usage guidelines for Developer-Powered CTS (CTS-D).\n\nTest coverage\n-------------\n\nCTS-D, like CTS \\& CTS Verifier, can only enforce the following:\n\n- All public APIs that are described in the developer SDK (developer.android.com) for a certain API level.\n- All MUST requirements that are included in the Android Compatibility Definition Document (CDD) for a certain API level.\n\nNon-MUST requirements, such as STRONGLY RECOMMENDED, SHOULD, MAY, are optional\nand can't be tested using CTS.\n\nBecause all APIs and CDD requirements are tied to a specific API level, all CTS\ntests (CTS, CTS-D, and CTS Verifier) are tied to the same API level as their\nassociated APIs or requirements. If a specific API is deprecated or changed,\nits corresponding test must be deprecated or updated.\n\nCTS test creation rules\n-----------------------\n\n- A test must produce the same objective result consistently.\n- A test must determine whether a device passes or fails by testing that device one time out of the box.\n- Test creators must remove all possible factors that could affect test results.\n- If a device needs a certain hardware condition/environment/setup, that setup must be clearly defined in the commit message. For example setup instructions, see [Setting Up CTS](/docs/compatibility/cts/setup).\n- The test must not run for more than 6 hours at a time. If it needs to run for longer, please include the reasoning in your test proposal so that we can review it.\n\nThe following is an example set of test conditions for testing an app\nrestriction:\n\n- Wifi is stable (for a test that relies on Wifi).\n- The device remains stationary during the test (or not, depending on the test).\n- The device is unplugged from any power source with X percent of battery level.\n- No apps, foreground services, or background services are running, except for CTS.\n- The screen is off while running CTS.\n- The device is NOT `isLowRamDevice`.\n- Battery saver / app restrictions have not been changed from the \"out-of-the-box\" state.\n\n### Test eligibility\n\nWe accept new tests that enforce a behavior that isn't tested by existing CTS,\nCTS Verifier, or CTS-D tests. Any test that checks a behavior outside the scope\nof [our test coverage](#coverage) will be rejected.\n\nCTS submission process\n----------------------\n\n1. **Write a test proposal:** An app developer submits a test proposal using [Google Issue Tracker](https://issuetracker.google.com/issues/new?component=1124973&template=1633344), describing the issue that has been identified and proposing a test to check for it. The proposal must include the associated [CDD requirement ID](/docs/compatibility/cts/development#annotation). The Android team reviews the proposal.\n2. **Develop a CTS test:** After a proposal is approved, its submitter creates a CTS test on AOSP on the Android latest release branch (`android16-release`). The Android team reviews the code and if accepted, cherrypicks the change and merges it into the internal development branch. For details, see [Where should I propose changes to AOSP?](/docs/setup/about/faqs#changes-aosp).\n\nCTS-D test writing guidelines\n-----------------------------\n\n- Follow the [Java Code Style Guide](/docs/setup/contribute/code-style).\n- Follow all the steps described in [CTS Development](/docs/compatibility/cts/development).\n- Add your tests to the appropriate test plan:\n - Use `include-filters` to add your new tests to the CTS-D test plan: `platform/cts/tools/cts-tradefed/res/config/cts-developer.xml`.\n - Use `exclude-filters` to exclude your new tests from the main CTS test plan: `platform/cts/tools/cts-tradefed/res/config/cts-developer-exclude.xml`.\n- Handle all `errorprone` warnings and suggestions in `build_error.log`.\n- Rebase your changes to `head`. This includes the `cts-developer.xml` and `cts-developer-exclude.xml` test plans.\n- Work with your Google engineering contact to determine whether your test case can be included in an existing CTS module. If it can't, they'll help you create a new module.\n- For each new test module created, create an OWNERS file in the new test module directory.\n - Your OWNERS file should contain the following information, obtained from the Google test owner you're working with:\n - `# Bug component: xxx`\n - Google test owner ldap\n- In `AndroidTest.xml`, specify the following parameters. Refer to the sample files ([1](https://cs.android.com/android/platform/superproject/+/android-latest-release:cts/tests/sample/), [2](https://cs.android.com/android/platform/superproject/+/android-latest-release:cts/hostsidetests/sample/)) for examples:\n - `Instant_app` or `not_instant_app`\n - `secondary_user` or `not_secondary_user`\n - `all_foldable_states` or `no_foldable_states`\n- To specify the correct minSDK, refer to [the \\\u003cuses-sdk\\\u003e documentation](https://developer.android.com/guide/topics/manifest/uses-sdk-element).\n- When checking in new test methods, classes, or modules, add them to the CTS-D test plan and exclude them from the main CTS test plan in the same way as for new tests.\n\nRun your CTS-D test\n-------------------\n\nRun the CTS-D test plan [from the command line](/docs/compatibility/cts/command-console-v2)\nusing `run cts --plan cts-developer`.\n\nTo run a specific test case, use `run cts --include-filter \"test_module_name test_name\"`.\n\nFor information on running the full CTS, see [Run CTS tests](/docs/compatibility/cts/run).\n\nAcceptance and release\n----------------------\n\nOnce a test request is submitted, an internal team will review it to make sure\nit tests a CDD requirement or a documented API behavior. If the test is\ndetermined to be checking for a valid requirement or behavior, the team\nwill forward this test case to a Google engineer for further review. The Google\nengineer will reach out to you with feedback on how the test can be improved\nbefore it can be accepted into CTS.\n\nSee\n[Release schedule and branch information](/docs/compatibility/cts/development#release-schedule)\nfor details on the CTS release schedule."]]