C# - WebDriver - Параллельное выполнение фреймворка MSTest

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

  • Поскольку у нас есть почти 100+ тестовых случаев, время, необходимое для выполнения одного потока, составляет около 3 часов. Мы хотели сократить время выполнения почти до 15 минут. Но когда мы увеличиваем количество потоков в файле настроек теста, возникает множество ложных сбоев. Есть ли лучший способ повысить скорость прохождения теста за счет сокращения времени выполнения?
  • Я наткнулся на блог «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# и успешно выполняет тесты в нескольких параллельных потоках.

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
1 403
1

Ответы 1

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

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

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

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

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

Другие вопросы по теме