54
Пример построения системы распределенного запуска Selenium тестов в .NET Волков Станислав UFS Ltd

Parallelization of Selenium tests with .NET/C# + NUnit

  • Upload
    -

  • View
    512

  • Download
    3

Embed Size (px)

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.

Citation preview

Пример построения системы распределенного запуска

Selenium тестов в .NET

Волков Станислав UFS Ltd

О себеСвою карьеру тестировщика начал в 2009 году.

!

Постепенно двигаясь от ручного тестирования, к использованию HP QTP, тестированию веба

POST, GET запросами, и затем с помощью WebDriver.

!

В данный момент специализируюсь на автоматизации тестирования в веб приложений

на .net

Зачем нужна параллелизация?

Быстро перепроверить изменившийся функционал Долго проходят ночные тесты

Внутренние причины

Среднее выполнения теста 198 секунд

Зависимость от поставщиков 10-120 секунд на ответ

Большое количество тест кейсов (более 500)

Нестабильность ответов (до 20% потерь)

Итого 35,6 часов выполнение тестов последовательно

Что сделать, чтобы работало быстрее?

Объединение тестов?

Увеличивается нестабильность

Усложняются тесты

Теряется понимание, что работает, а что нет

Нет возможности динамического сокращения выполения времени за счет компьютерных ресурсов

Параллелизация!

Selenium Grid + PNUnit?

Selenium Grid + NUnit

Нестабильно работает по сети

Необходимость Java

Нет возможности из «коробки» получать отчеты

PNUnit

«Нечестная» параллезация(нет динамического распределения по пулам)

Невозможность использования нескольких компьютеров из коробки

Нет возможности получить отчеты

Surak - система запуска и выполнения тестов

Паралельный запуск на компьютере

Единое место синхронизации тестов

Таск проверяет сколько запущенно тестов и запускает новые если есть свободные места

Убивание зависших тестов

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;!! ! }

Удобно для работы с таблицами

Выигрыш в скорости

FireFox: выйгрыш в 10 - 80%

Отчеты

Статусы тестов

Лог информации

Скриншоты

Время выполнения

Экспорт в формат NUnit0

25

50

75

100

Апрель Май Июнь Июль

Ещё быстрее?

Ещё быстрее?

Одновременный запуск на нескольких

компьютерах

Ещё быстрее?

Одновременный запуск на нескольких

компьютерах

Балансировка нагрузки

Ещё быстрее?

Одновременный запуск на нескольких

компьютерах

Балансировка нагрузки

Горизонтальное маштабирование

База данных MSSQL

База данных MSSQL

Запись в базу тестов

Сервис на компьютере 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

Сервис

База MSSQLКонфиг XML

Можн

о запустить

7 тестов

одновременно

Сервис

База MSSQLКонфиг XML

Своб

одны

й тест

на за

пуск

Можн

о запустить

7 тестов

одновременно

Сервис

База MSSQLКонфиг XML

Своб

одны

й тест

на за

пуск

Тест

127

зан

ят

Можн

о запустить

7 тестов

одновременно

Сервис

База MSSQLКонфиг XML

Nunit+AddNunit

Своб

одны

й тест

на за

пуск

Тест

127

зан

ят

Выполнить тест 127

Можн

о запустить

7 тестов

одновременно

Сервис

База MSSQLКонфиг XML

Nunit+AddNunit

Своб

одны

й тест

на за

пуск

Тест

127

зан

ят

Выполнить тест 127

Данные выпо

лнения тест

а 127Можн

о запустить

7 тестов

одновременно

Сервис

AddNunit подписывание на событие

Конфиг XML

Конфиг XML

Запускалка тестов

Список тестов, браузеры,

сервера

Конфиг XML

Запускалка тестов

База MSSQL

Список тестов, браузеры,

сервера

Список тестов для запуска

Конфиг XML

Запускалка тестов

База MSSQL

Список тестов, браузеры,

сервера

Список тестов для запускаУпавшие тесты

Конфиг XML

Запускалка тестов

База MSSQL

Список тестов, браузеры,

сервера

Перезапустить или завершить пул

Список тестов для запускаУпавшие тесты

Запускалка тестов

Правка тестов и новые тесты

Visual Studio

Правка тестов и новые тесты

git

Visual Studio

Push

Правка тестов и новые тесты

git

Visual Studio

Push

CIPull каждую ночь

Правка тестов и новые тесты

git

Visual Studio

Push

CIPull каждую ночь

Сервер 1 Сервер 2 Сервер n

Выкладка

новой в

ерсии

Выкладка

новой

версии Выкладка новой версии

Continuous Integration

Время работы

35,6 ч

Время работы

35,6 ч 5 PC

Время работы

35,6 ч 5 PC 5 Threads

Время работы

35,6 ч 5 PC 5 Threads 2 ч

Расширение

По данным из базы можно строить разные отчеты

Простой перезапуск тестов

Увеличение производительности за счет увеличения количества компьютеров

Можно запускать любые NUnit тетсты

Что все равно пришлось бы дописывать

Selenium Grid + PNUnit Surak

Nunit + +

NunitAdd + +

Runner - +

Service - +

MSSQL + +

Оказалось что не очень большими ресурсами можно заметить связку

Selenium Grid + PNUnit

Спасибо за внимание

e-mail:[email protected] about.me/stanislav.volkov