parallelization of selenium tests with .net/c# + nunit
DESCRIPTION
Some companies depend on external data suppliers and this data is difficult to reconcile with standards. Then project faces tests execution speed issues. One of solutions to this kind of issues is tests parallelization. I’ll talk about several tools in .NET/C#: Selenium Grid, PNunit and custom solution for them with NUnit.TRANSCRIPT
О себеСвою карьеру тестировщика начал в 2009 году.
!
Постепенно двигаясь от ручного тестирования, к использованию HP QTP, тестированию веба
POST, GET запросами, и затем с помощью WebDriver.
!
В данный момент специализируюсь на автоматизации тестирования в веб приложений
на .net
Зачем нужна параллелизация?
Быстро перепроверить изменившийся функционал Долго проходят ночные тесты
Среднее выполнения теста 198 секунд
Зависимость от поставщиков 10-120 секунд на ответ
Большое количество тест кейсов (более 500)
Нестабильность ответов (до 20% потерь)
Объединение тестов?
Увеличивается нестабильность
Усложняются тесты
Теряется понимание, что работает, а что нет
Нет возможности динамического сокращения выполения времени за счет компьютерных ресурсов
Selenium Grid + NUnit
Нестабильно работает по сети
Необходимость Java
Нет возможности из «коробки» получать отчеты
PNUnit
«Нечестная» параллезация(нет динамического распределения по пулам)
Невозможность использования нескольких компьютеров из коробки
Нет возможности получить отчеты
Паралельный запуск на компьютере
Единое место синхронизации тестов
Таск проверяет сколько запущенно тестов и запускает новые если есть свободные места
Убивание зависших тестов
WebDriver - поддерживает параллельные запросы
! public IList<SSVariantsAvia> GetSSVariantsAvia()!! ! {!! ! ! IList<IWebElement> variants = GetElementExists(PVariantsFlight.VariantsFlightTable.Row).Where(v => v.Displayed).ToList();!!! ! ! IList<SSVariantsAvia> result = variants.Select(element => new SSVariantsAvia()).ToList();!!! ! ! Parallel.For(0, variants.Count(), i => { result[i] = GetSSVariantsAvia(variants[i]); });!!! ! ! return result;!! ! }
Удобно для работы с таблицами
Отчеты
Статусы тестов
Лог информации
Скриншоты
Время выполнения
Экспорт в формат NUnit0
25
50
75
100
Апрель Май Июнь Июль
Ещё быстрее?
Одновременный запуск на нескольких
компьютерах
Балансировка нагрузки
Горизонтальное маштабирование
Сервис на компьютере 1
Сервис на компьютере 2
Сервис на компьютере n
База данных MSSQL
Запись в базу тестов
Сервис на компьютере 1
Сервис на компьютере 2
Сервис на компьютере n
База данных MSSQL
Запись в базу тестов
Обмен информацией
Обмен информацией
Обмен информацией
Сервис на компьютере 1
Сервис на компьютере 2
Сервис на компьютере n
Nunit+AddNunit на компьютере n
Nunit+AddNunit на компьютере 1
Nunit+AddNunit на компьютере 2
База данных MSSQL
Запись в базу тестов
Обмен информацией
Обмен информацией
Обмен информацией
Сервис на компьютере 1
Сервис на компьютере 2
Сервис на компьютере n
Nunit+AddNunit на компьютере n
Nunit+AddNunit на компьютере 1
Nunit+AddNunit на компьютере 2
База данных MSSQL
Запись в базу тестов
Запуск теста
Запуск теста
Запуск теста
Обмен информацией
Обмен информацией
Обмен информацией
Сервис на компьютере 1
Сервис на компьютере 2
Сервис на компьютере n
Nunit+AddNunit на компьютере n
Nunit+AddNunit на компьютере 1
Nunit+AddNunit на компьютере 2
База данных MSSQL
Запись в базу тестов
Запуск теста
Запуск теста
Запуск теста
Сохранение
результатов
Сохранение
результатов
Сохранение
резул
ьтатов
Обмен информацией
Обмен информацией
Обмен информацией
Сервис
База MSSQLКонфиг XML
Своб
одны
й тест
на за
пуск
Тест
127
зан
ят
Можн
о запустить
7 тестов
одновременно
Сервис
База MSSQLКонфиг XML
Nunit+AddNunit
Своб
одны
й тест
на за
пуск
Тест
127
зан
ят
Выполнить тест 127
Можн
о запустить
7 тестов
одновременно
Сервис
База MSSQLКонфиг XML
Nunit+AddNunit
Своб
одны
й тест
на за
пуск
Тест
127
зан
ят
Выполнить тест 127
Данные выпо
лнения тест
а 127Можн
о запустить
7 тестов
одновременно
Конфиг XML
Запускалка тестов
База MSSQL
Список тестов, браузеры,
сервера
Список тестов для запускаУпавшие тесты
Конфиг XML
Запускалка тестов
База MSSQL
Список тестов, браузеры,
сервера
Перезапустить или завершить пул
Список тестов для запускаУпавшие тесты
Правка тестов и новые тесты
git
Visual Studio
Push
CIPull каждую ночь
Сервер 1 Сервер 2 Сервер n
Выкладка
новой в
ерсии
Выкладка
новой
версии Выкладка новой версии
Расширение
По данным из базы можно строить разные отчеты
Простой перезапуск тестов
Увеличение производительности за счет увеличения количества компьютеров
Можно запускать любые NUnit тетсты
Что все равно пришлось бы дописывать
Selenium Grid + PNUnit Surak
Nunit + +
NunitAdd + +
Runner - +
Service - +
MSSQL + +