Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

Переход на Selenium + C# с Selenium+ Java

tfs
csharp
msbuild
nunit
selenium
webdriver
Теги: #<Tag:0x00007fedc469b180> #<Tag:0x00007fedc469b018> #<Tag:0x00007fedc469ae88> #<Tag:0x00007fedc469acf8> #<Tag:0x00007fedc469ab90> #<Tag:0x00007fedc469aa00>

(Dmitry Bezzubikov) #1

Существует такой популярный набор инструментов как Selenium #webdriver + #java + #testng + #maven + #jenkins + #selenium-grid + #gitlab + Idea + #allure в рамках которого можно решать широкий спектр задач автоматизированного тестирования web-приложений, используя в том числе параллельный запуск тестов. И всё хорошо и лепо.

Но тут заказчики, которые считают себя техническими экспертами и которых ни в коем случае нельзя пытаться в этом разуверять, чтобы не испортить им настроение заявляют что разработка автотестов должна вестись не на какой-то Java, а исключительно на C# и в самой #visual-studio . не зря же они за лицензии самого лучшего в мире продукта платят? Ну и в принципе и ладно на первый взгляд, но чем больше смотришь на это, тем больше вопросов.

Основные:

  1. Чем заменить TestNG?
  2. Параллельное выполнение тестов поддерживается?
  3. Насколько гибко MS BUild +TFS позволяет конфигурацию по сравнению с Maven+Jenkins?

Есть ли у кого-нибудь такой опыт перехода на иную платформу?


(Misha Diptan) #2
  1. TestNG можна замінити на NUnit
  2. Паралельних запуск підтримується з версії NUnit >= 3.0 за допомогою атрибута [Parallelizable] + Selenium Grid
  3. Нажаль нічого не можу порадити по цьому пункту(

(nik) #3

Зачем вам TFS? MSBuild отлично работает с Jenkins. Для подачи переменных из Дженкинса можно использовать EnvInject plugin и в коде считать env variables.
Для запуска из дженкинса нужно сделать всего 3 шага
-Запустить компиляцию проекта в мсбилд

  • execute console command
    путь\nunit3-console.exe “–result=TestResult.xml;format=nunit2” \проект\bin…\projectname.dll
    -послесборочная операция publish nunit results (плагин нююнит в дженкинс)
    TestResult.xml
    немного мудреней чем мейвен, но настраивается 1 раз

Нестабильный запуск chrome при параллельном запуске через Selenium Grid
(Sergey Pirogov) #4

атвоматизация на C# пробивает дно по солидности решений, если сравнивать с java


(Alexander) #5

Раннер NUnit. Для репортов http://reportunit.relevantcodes.com/

.\ReportUnit_1.5b\ReportUnit.exe TestResult3.xml


(Viktor Vladimirovich) #6

Опыт есть. Сначала отвечу на вопросы по пунктам, а потом черкану пару общих комментариев:

  1. TestNG легко заменяется либо NUnit (как по мне предпочтительнее, т.к. он очень дружественный ко всякого рода расширениям), либо xUnit, либо такой родной, но нелюбимый MSTest. VS прекрасно работает с NUnit, нужно лишь подключить его тест адаптер и тест раннер.
  2. Как вам уже написали выше NUnit, начиная с версии 3+ поддерживает параллельный запуск. К слову сказать, так же как и xUnit версии 2+.
  3. Как Jenkins, так и TeamCity не имеют никаких проблем со сборкой проектов на C#, равно как и с запуском тестов. Я работал только с NUnit в данном случае, но знаю, что MSTest раннеры также поддерживаются.

В целом, автоматизация на C# подразумевает больше головняка и меньше готовых решений (как вам уже сказал Сергей), например, нету толкового репорт-фреймворка, как Allure, а все существующие выглядят так, как будто вышли из 90-х. Ощущается также дефицит всякого рода библиотек, упрощающих жизнь. Однако, есть свои инструменты сборки (cake, например) или dependency managers (как NuGet). Все на самом деле зависит от конкретных нужд, но большинство задач уже имеют или готовые решения, или портированы на C# (как Selenide).


(Dmitry Bezzubikov) #7

Всем большое спасибо за ответы. Возьму NUnit за отправную точку и буду пробовать.

Что касается параллельности.
Для Selenium Grid всё равно нужна Java, selenium-server, selenium drivers. Как я понял запускаем хаб и ноды. Тесты помечаем [Parallelizable] и запускаем RemoteDriver на хабе, а он их раскидывает по нодам. И всё должно работать.

Репорты надо смотреть что там видно.


(Alexander) #8

[Parallelizable] помечаются сьюты. В NUnit 3.7.0 только запилили параллельный ран методов, но версия только вышла, и то - обовление для фреймворка вышло (https://www.nuget.org/packages/NUnit/). Надо подождать пока NUnit Console (https://www.nuget.org/packages/NUnit.Console) обновится. Параллелизация на уровне сьютов работает давно.

Без грида параллелизация тоже работает в рамках одной машины средствами раннера:

%TOOLS%\NUnit\nunit3-console.exe .\Tests\MainSiteProject\bin\Debug\MainSiteProject.dll --workers=%THREADS%


(Юрий Аксютин) #9
  1. Я бы рекомендовал кардинально переходить на следующий уровень по фреймоврку для тестирования - Specflow. Коль все равно необходимо будет полностью переучиваться)
  2. Параллельное выполнение поддерживается - есть режим, когда можно обмениваться информацией между тестовыми потоками
  3. Удобный генератор отчетов - с возможностью допиливания или полной замены
  4. Может использовать NUnit, MSTest и много других C# фреймворков для “исполнения” тестов. Причем их можно менять в процессе работы, без изменения самых тестовых сценариев

(Dmitry Bezzubikov) #10

Спасибо, это интересно в перспективе, но на практике на одной машине для параллельного запуска UI–тестов элементарно не хватает ресурсов. Тесты идут в четыре потока, но в четыре раза медленнее.


(Misha Diptan) #11

Для створення репортів можна використати http://reportportal.io/
Досить корисна штука, яка легко налаштовується для NUnit та інших ранерів (не тільки для .NET). Відео по налаштуванню: https://www.youtube.com/channel/UC1Q5hEL2DT1E6T2MKQJcXSQ


(Юрий Аксютин) #12

Почему-то нигде не встречал такой подсказки для настойки грида:

java -Xms512m -Xmx20486m -Xss512k -jar selenium-server-standalone-3.3.1.jar -role …

мне помогло решить проблему с подвисанием разных сессий браузера. Можно также использовать при запуске JMeter(любого java приложения)
-Xms512m -Xmx20486m -Xss512k - эти параметры подбираются в зависимости от ресурсов машины, на которой развернут Grid(JMeter)

К самому Selenium Grid и JMeter это никакого отношения не имеет)