t.me/atinfo_chat Telegram группа по автоматизации тестирования

Запуск нескольких наборов тестов с разным количеством потоков

parallel
execution
testng
maven
Теги: #<Tag:0x00007f9c4a5aa800> #<Tag:0x00007f9c4a5aa698> #<Tag:0x00007f9c4a5aa530> #<Tag:0x00007f9c4a5aa3c8>

#1

Добрый день, возник следующий вопрос - есть большой набор мобильных тестов.
Некоторые из них используют один девайс, некоторые 2 и некоторые 3. Число одновременно запускаемый девайсов конечно и равно 4. Для ускорения прогона возникла идея разбить набор на 3 набора поменьше, и первый из них запускать в 4 потока, второй в 2 и третий в 1. Используется стек Maven + TestNg.

Т.к. динамически изменить thread-count нельзя, попытался создать 3 одинаковых файла testng.xml, разница между которыми в значении параметра thread-count.
А для того, чтобы разные наборы запускали только “свои” тесты (т.е. только те тесты, использующие определенное число девайсов), прописал в каждый сьют вызов лисенера, реализующего интерфейс IMethodInterceptor, в котором происходит фильтрация тестов.
Но при запуске через мавен возникает ошибка, суть которой в том, что лисенер IMethodInterceptor может вызываться только раз, а у меня 3 раза, т.е. этот способ не подходит.

Каким образом можно реализовать запуск разных тестов с разным числом потоков?


(Vatslau) #2

CI переписать хмльку перед тестом


#3

@VatslauX Не понял, можно пример, или поконкретнее?


(Vladislav Abramov) #4

скриптом перед билдом или запуском тестов подменяйте параметры


#5

После запуска тестов изменить thread-count в testng.xml уже не получится, это можно изменить только перед запуском(если вы имеете ввиду изменение параметра после выполнения первого набора тестов со значением параметра, выставленным изначально)


(Vatslau) #6

ну так не запускайте все тесты сразу в дной джобе
1я джоба запустит те что 3 тредами
2я джоба например с 4мя


#7

Не хотелось бы дробить отчет по каждой сборке на несколько частей.


(Vatslau) #8

попробуйте nested xml suites
в детях определить разные параметры
в перенте запустить всё


#9

Если уж и “колхозить” то на крайний случай есть возможность в одном сьюте разбить нужные тесты по <тест> и каждому из них присвоить нужное число потоков. Но в этом случае тесты будут разбиты не по функционалу, а по числу использованных девайсов, что не есть хорошо


(Vatslau) #10

на самом деле я не очень понимаю как вы будете менеджить
свободные девайсы особенно что есть нечётные конфигурации