Рассказываем о том, как мы написали обвязку для PyTest и теперь прогоняем разные типы тестов для разных продуктов от разных команд на разном железе в требованиях SDL.
В каждой компании, выпускающей релизы крупных продуктов, возникает потребность в согласованной работе нескольких подразделений, отвечающих за разные области ответственности в процессе создания продукта:
- Разработчики хотят писать код и юнит-тесты для своих модулей, иметь при этом понятный и максимально прозрачный интерфейс взаимодействия с тестовой инфраструктурой, а также иметь возможность одной командой запустить тесты своего кода на любом доступном железе.
- Тестировщики хотят легко и непринужденно писать автотесты, имея при этом понятную и удобную абстракцию от компонентов и сервисов тестовых стендов, а также простой способ собирать и расширять стендовую базу. И писать они хотят на питоне, поскольку он предоставляет большое количество готовых библиотек на все случаи жизни.
- Build-инженеры хотят иметь стабильные, не флакающие конвейеры и легко встраиваемую в них утилиту для тестирования и сбора метрик.
- Менеджеры хотят иметь статистику по багам, метрикам производительности на разных релиз-кандидатах для разных целевых платформ, а также тестовые планы, успешное выполнение которых является однозначным критерием качества выпускаемого релиза.
Чтобы угодить всем им, требуется написать много разнородного кода. Мы попробовали структурировать его и на основе pytest в качестве движка написали инструмент, удовлетворяющий желаниям всех перечисленных ролей. Главной идеей была модульность, которая дает возможность из набора готовых кубиков собирать любые конфигурации.
В докладе расскажем об архитектуре инструмента, реализации некоторых его частей, а также продемонстрируем его работу для разных пользовательских сценариев.
Доклад рассчитан на разработчиков, билд-инженеров, тестировщиков и менеджеров, которые создают единый продукт и отвечают за разные области, но при этом имеют потребность в совместной согласованной работе.
Слушатели увидят архитектуру данного инструмента и демонстрацию его работы, чтобы оценить, насколько он подходит им в решении рабочих задач.