이 페이지에서는 샤딩을 통해 제품군 모듈( AndroidTest.xml
)을 조정하고 랩에서 지속적으로 실행하는 동안 최고의 속도 성능을 얻을 수 있는 것에 대해 설명합니다. 우리는 각 옵션을 합리적으로 사용하면서 일반적인 방식으로 옵션을 설명하려고 시도할 것입니다.
연구실에서 제품군을 지속적으로 실행할 때 제품군은 일반적으로 전체 완료 시간을 줄이기 위해 여러 장치에 걸쳐 분할됩니다. 하네스는 일반적으로 전체 완료 시간(마지막 분할이 완료될 때)을 최소화하기 위해 각 분할의 실행 시간 균형을 맞추려고 시도합니다. 그러나 일부 테스트의 특성으로 인해 우리는 항상 충분한 내성을 갖고 있지 않으며 일부 동작을 조정하기 위해 모듈 소유자가 필요합니다.
샤딩 가능 여부
모듈( AndroidTest.xml
)에 <option name="not-shardable" value="true" />
태그를 지정하여 샤딩되지 않아야 함을 하네스에 알릴 수 있습니다.
일반적인 모듈에서는 하네스가 모듈을 분할하도록 하는 것이 좋습니다(기본 동작). 그러나 경우에 따라 해당 동작을 재정의할 수 있습니다.
- 모듈 설정에 비용이 많이 드는 경우:
모듈을 샤딩하면 준비(APK 설치, 푸시 파일 등)가 관련된 장치당 한 번 실행될 수 있습니다. 모듈 설정이 길고 비용이 많이 들고 테스트의 런타임에 비해 복제할 가치가 없다면 모듈에 분할 불가로 태그를 지정해야 합니다.
- 모듈의 테스트 수가 적은 경우:
모듈을 샤딩하면 모든 테스트 케이스가 다른 장치에서 독립적으로 실행될 수 있습니다. 이것은 첫 번째 요점과 관련이 있습니다. 테스트 수가 적은 경우 단일 테스트로 끝나거나 일부 샤드에서 테스트가 없어 준비 단계가 상당히 비쌀 수 있습니다. 예를 들어 단일 테스트 케이스에 APK를 설치하는 것은 일반적으로 가치가 없습니다.
계측 테스트: 최대 샤드 수?
AndroidJUnitTest 를 통해 실행되는 계측 테스트는 실제로 APK를 설치하고 실행할 때까지 얼마나 많은 테스트가 계측의 일부인지 하네스에 노출하지 않습니다. 이러한 작업은 비용이 많이 들고 제품군의 모든 모듈 부분에 대해 샤딩 시간에 실행할 수 없습니다.
하네스는 계측 테스트를 과도하게 분할하여 빈 분할로 끝날 수 있습니다. 6개의 샤드에서 5개의 테스트가 있는 계측 테스트를 샤딩하면 1개의 테스트가 있는 5개의 샤드와 테스트가 없는 1개의 샤드가 생성됩니다. 이러한 각 조각에는 값비싼 APK 설치가 필요합니다.
따라서 계측 테스트 APK의 테스트 수가 적을 때 모듈에 <option name="not-shardable" value="true" />
태그를 지정하면 하네스가 해당 모듈을 샤딩하는 것이 가치가 없다는 것을 알 수 있습니다.
AndroidJUnitTest
러너에는 <option name="ajur-max-shard" value="5" />
샤딩이 허용되는 최대 샤드 수를 지정할 수 있는 특별한 옵션이 있습니다.
이를 통해 호출 수준에서 요청된 샤드 수에 관계없이 계측을 샤딩할 수 있는 최대 횟수를 지정할 수 있습니다. 기본적으로 계측은 호출에 요청된 샤드 수로 샤딩됩니다.
예를 들어 계측 테스트 APK에 두 개의 테스트 케이스만 포함되어 있지만 여전히 샤딩하려는 경우 ajur-max-shard
값을 2
로 지정하면 빈 샤드가 생성되지 않습니다.