C # - WebDriver - MSTest Framework Параллельное выполнение - PullRequest
0 голосов
/ 10 января 2019

В настоящее время я работаю над платформой тестирования на C # - Webdriver - MSTest Мы используем файл testsettings для включения параллельного выполнения. Также тесты выполняются на машине с 4 процессорами, и мы используем Selenium Grid для выполнения тестов. Ниже приведены некоторые из проблем, с которыми сталкиваются при ночной казни.

  • Поскольку у нас более 100+ тестовых случаев, время, затрачиваемое на выполнение одного потока, составляет около 3 часов. Мы хотели сократить время выполнения почти до 15 минут. Но когда мы увеличиваем количество потоков в файле testsettings, возникает много ложных сбоев. Есть ли лучший способ добиться лучшей скорости прохождения за счет сокращения времени выполнения?
  • Я натолкнулся на какой-то блог "https://blogs.msdn.microsoft.com/devops/2016/02/08/parallel-and-context-sensitive-test-execution-with-visual-studio-2015-update-1/", в котором говорится, что число параллельных тестов, которые могут быть выполнены, прямо пропорционально количеству ядер ЦП этой машины. Если это правильно, на 4-ядерном компьютере , Я не смогу выполнять более 4-х потоков одновременно. Есть ли способ преодолеть это, если я использую другую инфраструктуру модульного тестирования, такую ​​как xUnit, nUnit и т. Д. Я ранее работал в Java - WebDriver с использованием инфраструктуры TestNG, и мы может выполнять более 15 потоков одновременно.

Пожалуйста, помогите, если кто-нибудь работает над любой платформой на C # и успешно выполняет тесты в более параллельных потоках.

Заранее спасибо.

1 Ответ

0 голосов
/ 16 апреля 2019

Когда я впервые сделал это, я столкнулся с теми же проблемами, что и вы - я обнаружил, что мои тесты выполнялись быстрее всего с 4 потоками, хотя я получал много сбоев. Проблема оказалась в том, что наша система не могла обрабатывать четыре запроса на вход в систему одновременно. Я пытался сделать код потокобезопасным, но это тоже не сработало; в конце концов я создал 4 учетных записи для нашей системы и использовал статическую переменную, которая увеличивалась при каждом входе в систему. Это приведет к тому, что следующий тест будет использовать следующую учетную запись.

Если ваши тесты требуют функциональности входа в систему, возможно, это может быть ваша проблема?

Вы можете установить максимальное количество потоков, добавив эту строку под строками "using" в верхней части кода (примечание: достаточно добавить эту строку в один класс, вам не нужно добавлять ее в каждый отдельный класс). )

[assembly: Parallelize(Workers = 4, Scope = ExecutionScope.MethodLevel)]

Если вы измените 4 на 0, тогда будет использовано максимальное количество потоков для вашего процессора (для меня это 8 экземпляров chromedriver, хотя 4 было намного быстрее!).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...