Что общего у#nbsp;Rolls-Royce, покрытия автотестами и#nbsp;PgBouncer
То, что всё это мы#nbsp;упоминали на#nbsp;нашем ежегодном митапе для QA-специалистов#nbsp;— Bugs Busters. Было много интересного:
Мы#nbsp;искали злодея, из-за которого произошла деградация времени обработки очереди#nbsp;— после того, как переключили режим работы пула.
Разбирались с#nbsp;создателем Allure Reports, чем покрытие требований лучше покрытия кода и#nbsp;как визуализировать автотесты.
Выясняли, сколько нужно автотестов и#nbsp;почему 100-процентное покрытие#nbsp;— это не#nbsp;всегда хорошо.
Смотрим доклады и#nbsp;пополняем копилку знаний обо всех видах тестовых покрытий.
Ложка дёгтя в#nbsp;транзакционном режиме пулинга#nbsp;— Дмитрий Карманов, ЮMoney
Это был обычный, не#nbsp;предвещающий беды день: конвейер выкладки релизов работал как часы#nbsp;— таска прилетала и#nbsp;автоматически выкладывалась на#nbsp;прод. Но#nbsp;внезапно после выкатки задачи, в#nbsp;которой менялась конфигурация PgBouncer и#nbsp;приложения, что-то пошло не#nbsp;так: сработали триггеры, загорелась тревога. Из-за новой конфигурации к#nbsp;базе данных увеличилось количество активных соединений, а#nbsp;в#nbsp;самой БД#nbsp;— количество активных блокировок. При этом утилизация CPU со#nbsp;стороны базы выросла в#nbsp;целых пять раз! Конфигурацию спешно откатили обратно, выдохнули и#nbsp;стали разбираться, кто виноват: приложение, баунсер или база. Казалось, что проблема#nbsp;— со#nbsp;стороны приложения, в#nbsp;самой задаче, которая берётся из#nbsp;очереди, однако было непонятно, как именно её#nbsp;обработка деградирует.
03:14#nbsp;— Как нам прилетела обычная таска, которая потянула за#nbsp;собой ряд проблем 05:13#nbsp;— Пошли разбираться, кто в#nbsp;этом виноват, и#nbsp;решили, что это очередь 06:24#nbsp;— Как наше приложение работает с#nbsp;PostgreSQL и#nbsp;как подружить PostgreSQL с#nbsp;Java App с#nbsp;помощью JDBC Driver 08:21#nbsp;— Как настроить пул HikariCP, чтобы не#nbsp;возникала очередь ожидания между потоками 09:04#nbsp;— Что такое JOOQ и#nbsp;для чего он#nbsp;нужен 09:53#nbsp;— Почему новые соединения для PostgreSQL могут сильно нагружать CPU и#nbsp;как эту проблему решает пул соединений PgBouncer 11:56#nbsp;— Какие бывают режимы работы PgBouncer: session transaction и#nbsp;statement 13:38#nbsp;— Что происходит при переключении сессионного режима пулинга в#nbsp;транзакционный 16:46#nbsp;— Что такое сильно нагруженная для финтеха очередь и#nbsp;как мы#nbsp;поняли, что она не#nbsp;виновата 18:17#nbsp;— Как мы#nbsp;воспроизвели задачу нагрузки очереди и#nbsp;увидели разницу между режимами 21:00#nbsp;— Что такое партицированные таблицы 24:26#nbsp;— Что такое подготовленные операторы и#nbsp;как посмотреть, существуют они или нет 28:47#nbsp;— Два эксперимента, которые показали, что вызывает проблему в#nbsp;задаче 32:04#nbsp;— Как работает#nbsp;PG JDBC Driver 32:53#nbsp;— Ещё три эксперимента, которые показали, как решить проблему 34:18#nbsp;— Что делает патч и#nbsp;какие у#nbsp;него проблемы 36:16#nbsp;— Чтобы получить полное понимание картины, нужно читать документацию и#nbsp;проводить эксперименты 36:27#nbsp;— Какой результат мы#nbsp;получили и#nbsp;на#nbsp;каком варианте остановились
Когда я#nbsp;пришёл в#nbsp;автоматизацию тестирования, коллеги занимались разработкой автотестов. Каждый писали по#nbsp;несколько дней. Я#nbsp;мог тратить на#nbsp;один длинный автотест по#nbsp;три часа, было очень тяжело. Сейчас обратная ситуация#nbsp;— автоматизируют все: разработчики продукта, ручные тестировщики, инженеры по#nbsp;автоматизации, а#nbsp;контролируют их#nbsp;менеджеры. И#nbsp;эти менеджеры задают много вопросов о#nbsp;том, что тестируется, а#nbsp;что нет, что проверяется, а#nbsp;что нет. В#nbsp;своём докладе я#nbsp;предлагаю погрузиться в#nbsp;покрытие автотестами и#nbsp;разобраться:
Как его оценить. Здесь мы#nbsp;изучим плюсы и#nbsp;минусы двух подходов: покрытия кода продукта и#nbsp;покрытия требований. Также мы#nbsp;выясним, почему второй метод#nbsp;— это Rolls-Royce в#nbsp;мире покрытий.
В#nbsp;чём особенность автотестов для веба. Как визуализировать автотесты и#nbsp;внедрить Allure-отчётность.
Какой профит мы#nbsp;получаем от#nbsp;всего этого. Например, начинаем понимать, что проверяется в#nbsp;тестах и#nbsp;насколько мы#nbsp;их#nbsp;«сломаем», если поменяем структуру элементов.
06:29#nbsp;— Что такое дыра в#nbsp;покрытии и#nbsp;какие вопросы задают менеджеры тестировщикам 09:07#nbsp;— Как оценить покрытие кода продукта и#nbsp;как оно выглядит 10:29#nbsp;— Как снимается покрытие 11:30#nbsp;— Какие плюсы и#nbsp;минусы у#nbsp;покрытия кода продукта 13:45#nbsp;— Как выглядит покрытие требований: инструменты для работы, плюсы и#nbsp;минусы подхода 19:14#nbsp;— Как взять лучшее от#nbsp;каждого из#nbsp;подходов 19:27#nbsp;— В#nbsp;чём особенность веба 23:30#nbsp;— Как визуализировать автотесты 31:54#nbsp;— Какой профит мы#nbsp;от#nbsp;этого получаем 34:15#nbsp;— Какие ещё есть идеи: поддержка Playwright, сценарий теста в#nbsp;плагине и#nbsp;отдельный таб в#nbsp;Allure 36:24#nbsp;— Подведём итоги
Как понять, что#nbsp;тестов достаточно#nbsp;— Филипп Степаненко, ЮMoney
Однажды менеджер спросил меня, достаточно#nbsp;ли у#nbsp;нас командных автотестов. Я#nbsp;задумался. В#nbsp;отделе тестирования мы#nbsp;разработали инструмент Metric Reporter, который позволяет следить за#nbsp;метриками, в#nbsp;том числе за#nbsp;процентом автоматизированных тест-кейсов. Потом мы#nbsp;придумали ещё одну метрику с#nbsp;привязкой к#nbsp;бизнес-процессам. Но#nbsp;со#nbsp;временем стало понятно, что информации, которую мы#nbsp;получаем из#nbsp;метрик, недостаточно. Порой для анализа и#nbsp;оценки покрытия командных процессов тестами требовалось большое количество ручных действий. Хотелось это автоматизировать. В#nbsp;итоге мы#nbsp;стали генерировать матрицу трассировки процессов и#nbsp;тестов.
03:19#nbsp;— Вводная часть: про компанию, команды и#nbsp;зоны ответственности 04:35#nbsp;— Что такое регрессионное и#nbsp;приёмочное тестирование 06:24#nbsp;— Достаточно#nbsp;ли нашей команде автотестов и#nbsp;почему много не#nbsp;значит хорошо 08:23#nbsp;— Как мы#nbsp;работали раньше: что содержат тест-кейсы, как выглядят автотесты и#nbsp;как мы#nbsp;считаем покрытие тест-кейсов автотестами 10:22#nbsp;— Про внутренний инструмент Metric Reporter, метрику Coverage и#nbsp;её#nbsp;ограничения 12:52#nbsp;— Про бизнес-процессы и#nbsp;из#nbsp;чего они состоят 13:37#nbsp;— Связь бизнес-процессов и#nbsp;тест-кейсов, метрика#nbsp;US и#nbsp;её#nbsp;ограничения 16:34#nbsp;— Идея генерации матрицы трассировки 20:49#nbsp;— Matrix MVP: знакомство с#nbsp;API, написание техзадания, реализация 23:53#nbsp;— Итоги Matrix MVP 25:00#nbsp;— Добавление матрицы трассировки в#nbsp;Metric Reporter 26:38#nbsp;— Итоги внедрения фичи в#nbsp;Metric Reporter 27:35#nbsp;— Как будем развивать этот инструмент 33:50#nbsp;— Сколько тестов достаточно: рекомендации