Testplane Team: инструменты автоматического тестирования
Язык буткемпа: TypeScript
Наша цель — развивать экосистему автоматизации тестирования, чтобы написание, поддержка и выполнение тестов были максимально простыми и эффективными, не занимали много времени и давали стабильные результаты. Так мы повышаем качество продуктов компании.
Запросы на тестирование большие: ежедневный запуск более четырёх миллионов интеграционных тестов внутри Яндекса.
Основные инструменты, которые развивает наша команда — это Testplane, Testcop и Surfwax.
Testplane — это опенсорсный инструмент для интеграционного и скриншотного тестирования. Он позволяет автоматизировать пользовательские сценарии и проверять сервисы в реальных браузерах за считанные минуты. Также мы развиваем свой репортер под названием Testplane UI, позволяющий не только просматривать результаты тестов, но и их запуск/перезапуск, принятие/обновление скриншотов, отключение падающих тестов проямо из отчета и многое другое.
Testcop — это внутренний сервис для автоматического обнаружения нестабильных тестов и их отключения в режиме реального времени без коммита в в репозиторий. Это позволяет предотвратить влияние некорректных результатов тестов на процесс разработки. Testcop собирает информацию обо всех проведенных тестах (около 10 миллионов записей в день). Благодаря этому он способен не только выявлять проблемные тесты, но и создавать графики стабильности тестирования.
SurfWax — это внутренний сервис для управления и выдачи эмуляторов, который запускает 3 млн эмуляторов в сутки. Если простыми словами, то это удаленный грид для получения браузеров для тестирования. Аналогами во внешнем мире являются такие сервисы, как BrowserStack и SauceLabs.
Кроме этого, мы контрибьютим и в другие open-source проекты. Например, в webdriverio, mocha, jest и т.д.
Стек
Node.js, TypeScript | Основные бэкенды |
---|---|
React, Redux | Используем для верстки интерфейса Testcop, а также для HTML-отчёта |
ClickHouse, Redis, SQLite | Используется для хранения результатов тестов |
Python | Такого кода крайне мало, но иногда нужно |
Команда
Команда из пяти человек находится в Крыму (Симферополь) и Санкт-Петербурге. Созвоны по утрам и идём работать — меньше встреч, больше времени на дела.
Особенности
Несмотря на то, что мы — внутренний сервис, у нас много open-source задач — часть инструментов лежит снаружи, некоторые плагины сразу разрабатываем там же. Поэтому в работе мы используем как внешний git + GitHub, так и внутренний arc + Arcadia. Задачи в основном бэкендерские, верстка есть, но её мало.
Что нужно принять во внимание
- Есть дежурства, на которых иногда нужно дебажить код чужих проектов.
- Есть legacy, которое нужно поддерживать.
Вызовы
Основная задача — сделать так, чтобы разработчик мог тестировать свои сервисы максимально быстро и удобно. Для этого нужно постоянно искать способы ускорения наших инструментов, придумывать новые фичи, позволяющие улучшить UX нашего продукта, исследовать и внедрять новые технологии в сфере тестирования.
Дополнительные материалы
Доклад про скриншотное тестирование в Hermione (старое название инструмента Testplane).