Sharding с Google Firebase Test Lab для ускорения автоматизации тестирования - PullRequest
0 голосов
/ 05 июня 2019

Я пытаюсь осквернить тесты, используя Flank с Firebase Test Lab, чтобы ускорить автоматизированное тестирование. Однако я не могу осквернить свои тесты, несмотря на использование параметра max-test-shards

Ссылка: https://github.com/TestArmada/flank

Код: Запустите test_runner/flank.yml с фланга, чтобы убедиться, что выполнение Android работает.

cd test_runner/
./gradlew clean build fatJar
java -jar ./build/libs/flank-*.jar firebase test android run

Не происходит никакого шардинга, и тестирование выполняется в одно и то же время, даже после указания max-test-shards

flank.yml:

# - GcloudYml -

## Имя корзины Google Cloud Storage, в которой будут храниться необработанные результаты тестов. # Results-Bucket: tmp_flank

## Имя уникального объекта Google Cloud Storage в области результатов, в которой будут храниться необработанные результаты испытаний. ## (по умолчанию: временная метка со случайным суффиксом). # results-dir: tmp

## Включить запись видео во время теста. Включено по умолчанию, используйте --no-record-video, чтобы отключить. # запись-видео: правда

## Максимальное время выполнения этого теста до его отмены (по умолчанию: 15 м). ## Это не включает время, необходимое для подготовки и очистки целевого устройства. ## Максимально возможное время тестирования составляет 30 м на физических устройствах и 60 м на виртуальных устройствах. ## ЕДИНИЦЫ ВРЕМЕНИ могут быть h, m или s. Если единица не указана, считаются секунды. # тайм-аут: 30 м

## Вызвать тест асинхронно, не ожидая результатов теста. # async: false

## Имя истории результатов теста (произвольная строковая метка; по умолчанию: метка приложения из манифеста APK). ## Все тесты, которые используют одно и то же имя истории, будут сгруппированы вместе в консоли Firebase в упорядоченный по времени список истории тестов. # results-history-name: android-history

## Эксперимент! ## Количество попыток повторного выполнения TestExecution, если по какой-либо причине один или несколько \ n его тестовых случаев не пройдены. ## Максимально допустимое количество повторов равно 10. По умолчанию 0, что означает, что повторов не будет. # flaky-test-попытки: 0

# - AndroidGcloudYml -

## Путь к двоичному файлу приложения. ## Путь может быть в локальной файловой системе или в облачном хранилище Google с помощью gs: // нотация. ## Пакеты приложений Android указываются как .aab, все остальные файлы считаются APK-файлами. app: /Users/akanshaverma/test_flank/flank/test_runner/espresso_long.apk

## Путь к двоичному файлу, содержащему инструментальные тесты. ## Указанный путь может быть в локальной файловой системе или в облачном хранилище Google с использованием URL-адреса, начинающегося с gs: //. test: /Users/akanshaverma/test_flank/flank/test_runner/espresso_long_test.apk

## Автоматически войти в тестовое устройство, используя предварительно настроенную учетную запись Google, перед началом теста. ## Включено по умолчанию, используйте --no-auto-google-login для отключения. auto-google-login: true

## Каждый ли тест выполняется в своем собственном экземпляре Instrumentation с помощью Android Test Orchestrator ## (по умолчанию: используется Orchestrator). Отключить с помощью --no-use-orchestrator. ## См. https://developer.android.com/training/testing/junit-runner.html#using-android-test-orchestrator # use-orchestrator: true

## Карта с разделением запятыми, ключ = значение переменных среды и их желаемых значений. Этот флаг повторяется. ## Переменные окружения отражаются как дополнительные параметры для команды am instrument -e KEY1 VALUE1… и ## передан вашему тестовому исполнителю (обычно AndroidJUnitRunner) # переменные окружения: # покрытие: есть # coverFilePath: / sdcard / # clearPackageData: true

## Список путей, которые будут скопированы из хранилища устройства в назначенную корзину результатов после теста ## завершено. Это должны быть абсолютные пути в / sdcard или / data / local / tmp # каталоги для извлечения: # - / sdcard /

## Мониторинг и запись показателей производительности: ЦП, память, использование сети и FPS (только игровой цикл). ## Включено по умолчанию, используйте --no-performance-metrics для отключения. # показатели производительности: правда

## Полное имя класса Java исполнителя инструментальных тестов ## (по умолчанию: фамилия, извлеченная из манифеста APK).# test-runner-class: com.foo.TestRunner

## Список одного или нескольких фильтров целей тестирования, которые нужно применить (по умолчанию: запустить все цели тестирования).## Каждый целевой фильтр должен быть полностью квалифицирован с указанием имени пакета, имени класса или тестовой аннотации.## Поддерживаемые тестовые фильтры от am instrument -e… включают в себя: ## class, notClass, размер, аннотацию, notAnnotation, package, notPackage, testFile, notTestFile ## См. https://developer.android.com/reference/android/support/test/runner/AndroidJUnitRunner для получения дополнительной информации.# test-target: # - класс com.example.app.ExampleUiTest # testPasses

## Список пар DIMENSION = VALUE, которые определяют целевое устройство для проверки.## Этот флаг может быть повторен для указания нескольких устройств.## Четыре измерения устройства: модель, версия, локаль и ориентация.# устройство: # - модель: NexusLowRes # версия: 28 # локаль: en # ориентация: портрет # - модель: NexusLowRes # версия: 27 устройство: - модель: hero2lte версия: 23 локаль: en ориентация: портрет

flank: # - FlankYml -

## тестовые сегменты - количество групп для разделения набора тестов на ##, установленное в -1, для использования одного фрагмента на тест.по умолчанию: 1 max-test-shards: 10

## время шарда - количество тестов времени в шарде должно занять ## при значении> 0, количество шардов устанавливается динамически на основе времени домаксимальный предел, определенный max-test-shards ## 2 минуты (120), рекомендуется.## default: -1 (не ограничено) # shard-time: -1 shard-time: 2

## повторные тесты - количество раз, чтобы выполнить тесты.## 1 запускает тесты один раз.10 запускает все тесты 10x # repeat-tests: 1

## Путь к облачному хранилищу Google для хранения результатов JUnit XML с последнего запуска.# smart-flank-gcs-path: gs: //tmp_flank/flank/test_app_android.xml

## Отключает загрузку смарт-фланка JUnit XML.Полезно для предотвращения обновления данных о времени.## По умолчанию: false # smart-flank-disable-upload: false

## Отключает шардинг.Полезно для параметризованных тестов.# disable-sharding: false disable-sharding: false

## всегда запускаться - эти тесты вставляются в начале каждого сегмента ## полезно, если вам нужно предоставить разрешения или войти в систему до запуска других тестов # test-target-всегда-run: # - класс com.example.app.ExampleUiTest # testPasses

## регулярное выражение сопоставляется с путями сегмента, например: 2019-01-09_00: 13: 06.106000_YCKl / shard_0 / NexusLowRes-28-en-Portrait / bugreport.txt # Файлы для загрузки: # -. *. Mp4 $

## В биллинге разрешено использовать имя проекта Google Cloud Platform # project: delta -sence-114723

## Локальная папка для хранения результатов теста.Папка удаляется перед каждым прогоном, чтобы гарантировать сохранение только артефактов из нового прогона.# local-result-dir: flank

## Включить дополнительные пары app / test apk в прогон.Если приложение опущено, то для этой пары используется приложение верхнего уровня.# Additional-app-test-apks: # - app: ../test_app/apks/app-debug.apk # test: ../test_app/apks/app-debug-androidTest.apk

# -тест: ../test_app/apks/app-debug-androidTest.apk

...