Гуру тестирования: непокрытое, инфраструктура, pairwise
Сеньорский уровень в тестировании это не «пишет больше тестов», а смена позиции: ты отвечаешь не за свои тесты, а за уверенность всей команды. Это значит видеть непокрытые риски, держать тестовую инфраструктуру быстрой и честной, знать специальные виды тестирования и уметь передавать культуру дальше.
Поиск непокрытого
Покрытие строк отвечает на вопрос «какой код выполнялся», но молчит о главном: «какие поломки тесты реально поймают». Сто процентов coverage с пустыми ассертами не ловят ничего.
Инструменты честнее coverage:
- Mutation testing. Stryker портит код и смотрит, заметят ли тесты. Выжившие мутанты показывают дыры точнее любого отчёта о покрытии.
- Риск-карта. Список «что может сломаться дорого»: деньги, данные, доступ. Сопоставь его с тестами и увидишь, что платёжный вебхук покрыт хуже, чем форматирование дат.
- Прод как источник. Каждый инцидент это найденная дыра: регрессия без теста имеет привычку возвращаться.
Глубина в уроках Mutation testing и Метрики тестирования.
Оптимизация тестовой инфраструктуры
Медленные тесты не просто раздражают, они меняют поведение людей: тесты перестают запускать локально, пайплайн обходят флагом, прогон «на всякий случай» исчезает. Время прогона это продукт, у которого ты продакт.
Рычаги, в порядке отдачи:
- Профилирование набора. Топ-20 самых медленных тестов почти всегда дают непропорциональный вклад. Сначала измерь, потом чини.
- Параллельность с изоляцией. Шардирование по воркерам в CI и данные, не пересекающиеся между тестами. Без изоляции параллельность порождает flaky.
- Пирамида на уровне CI. Быстрые юниты на каждый коммит, тяжёлые E2E на merge и по расписанию. Не всё должно бежать всегда.
- Карантин для flaky. Нестабильный тест не «перезапустим три раза», а билет в карантин с владельцем и сроком: иначе доверие к красному билду умирает.
- Кеши и тёплые окружения. Сборка зависимостей, докер-слои, заранее поднятая база: минуты на каждом прогоне.
Подробности в уроках Параллелизм и изоляция, CI, отчёты и DX и Карантин и flaky.
Performance и security testing
Два специальных вида тестирования, которые на сеньорском уровне нужно уметь хотя бы поставить как задачу:
Нагрузочное. Не «запустим сто запросов», а сценарий с целью: профиль нагрузки (RPS, распределение по эндпоинтам), критерий (p95 < 300ms при 500 RPS), окружение, похожее на прод. Инструменты вроде k6 описывают сценарий кодом и встраиваются в CI. Отдельные жанры: stress (где предел), soak (что течёт за ночь), spike (переживём ли рекламу).
Security. Минимум сеньора: прогнать чек-лист OWASP по своей системе (инъекции, авторизация, секреты в логах), держать зависимости под автоматическим аудитом, понимать, что pentest заказывают у специалистов, а не имитируют сами. База по теме в разделе 12, Security.
дальше после входа
Урок целиком открыт всем, кто вошёл. Войди по своему email, чтобы читать дальше.
Вход пока по приглашению. Если хочешь учиться, напиши Vassiliy.