Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Распараллеливание тестов с запрещенным мультивходом

csharp
nunit
page-object
selenium
webdriver
Теги: #<Tag:0x00007f7b63e96ed0> #<Tag:0x00007f7b63e96c00> #<Tag:0x00007f7b63e96a70> #<Tag:0x00007f7b63e96908> #<Tag:0x00007f7b63e96750>

(Андрей Исаев) #1

Добрый день!
У меня появилась проблема с параллельным запуском тестов… Сейчас опишу проблему и суть вопроса.
Пишу автотесты с помощью Selenium + C# + NUnit. Использую в основном Page Object. Запускаю и распараллеливаю тесты на локальной машине одновременно по разным браузерам. Но вот беда… На моем новом проекте запрещен мультивход в админку и cms систему с разных браузеров, т.е. я не могу зайти с разных браузеров под одним логином и паролем, по этому на этапе sign in все тесты валятся. Помогите плиз решить проблему. Заранее спасибо.


(Алеся) #2

Добрый!
Так заведите больше админ-пользователей


(Андрей Исаев) #3

А если у меня 50 тестов? Создавать 50 юзеров на админ и 50 юзеров на cms? Не вариант. Я думал попробовать Service Mediator pattern, но еще не пробовал его реализовывать в тестах, да и не совсем въезжаю пока как это сделать.


(Ray Romanov) #4

Значит нужно напрячь разрабов, чтоб конкретно для этого админа была возможность мультивхода!!!


(Андрей Исаев) #5

В принципе, я рассматривал этот вариант, просто хотел решить эту проблему самостоятельно, без участия девов.


(Yaroslav Pernerovskyy) #6

Варианты:

  1. Завести разных пользователей
  2. Завести разные инстансы приложения
  3. Переписать тестируемое приложение
  4. Не ранить параллельно

Поскольку это особенность приложения, то средствами автотестов это никак не решить.


(Vladislav Kulasov) #7

А как это проверяется IP и агент? Если агент то можно подставлять разные/одинаковые значения.


(Oleksii Ihnatiuk) #8

Возможно стоит взглянуть в сторону докеров? Разворачивать окружение таким способом, чтобы в каждом контейнере у вас была возможность заходить под одним и тем же админ пользователем. Я не силен в этом, поэтому помочь предметно не смогу, может кто поскилловей напишет понятней :slight_smile:


(Дмитрий Мирошник) #9

Правильный подход: каждый тест создаёт юзера через фабрики BeforeTest и уничтожает его в AfterTest. В этом случае каждый Ваш тест получается независимым. В ином случае у Вас всегда возможны ложные баги, получающиеся из-за одной сессии на 50 юзеров.


(Vatslau) #10

У меня такая же ситуация - по одному уник юзеру на тест сьют. в результате можно распаралелить на тест сьюты.


(Евгений Бухгаммер) #11

В чем причина такого решения? Проблема решается в разной степени костылями. Если задача тестов: именно распараллелить кейсы, которые НЕ выявляют работы в одновременных сессиях, то наиболее кошерно - из под нескольких админ учеток делать тест. При этом нужно понимать, что у админов, наверняка, будет общий shared ресурс и тесты могут перестать быть независимыми друг от друга. В этом случае нужно будет завести несколько версий вебсайта и соответственно баз данных для него. Параллелизация - непростая по ресурсам и костылям штука, и если разработчики не идут вам на выручку, это не есть хорошо.


(Евгений Бухгаммер) #12

А в чем состоит проблема? база имеет ограничения на 20 пользователей максимум? Рандомизируйте и автоматизируйте процесс создания и удаления модели пользователя и админа. И можно будет хоть 1000 админов и пользователей завести. Главное, чтобы в рамках теста контекст теста всегда подчищался и сделанный для теста пользователь уничтожался.