← Все статьи

Автоматизация тестирования: как мы проверяли контентную систему 14 виртуальных дней

Кейс Agency: 216/216 тестов, 14 последовательных виртуальных дней, temporal stress и byte-for-byte проверка перед production-использованием.

Автоматизация тестирования: как мы проверяли контентную систему 14 виртуальных дней

Одна из самых неприятных иллюзий автоматизации — считать систему готовой после того, как она один раз успешно отработала. В Agency мы сознательно проверяли контентный контур иначе: не только обычными regression-тестами, но и последовательностью виртуальных операционных дней, чтобы поймать ошибки календаря, дедлайнов и переходов между периодами.

Результат этой приёмки: 216 из 216 тестов PASS, затем 14 последовательных чистых виртуальных дней, temporal stress без срыва и accepted_diff = 0 при сравнении принятого candidate с production.

Почему обычного «тесты зелёные» было недостаточно

Контентная система работает не одним запросом. У неё есть календарные слоты, очереди, approval, дедлайны, повторные проверки, публикационные окна и смена периода. Ошибка может не проявиться в обычном unit-тесте, но возникнуть на следующий день, в конце месяца или при накоплении очереди.

Поэтому для версии content funnel v2.2 мы разделили проверку на два слоя: regression и temporal acceptance.

Слой 1. Regression: 216 из 216

Сначала executable candidate прошёл полный regression-набор. Все 216/216 тестов завершились успешно. Это было базовым условием допуска к следующему этапу, но не финальным доказательством готовности.

Такой подход соответствует общей логике reliability engineering: тестирование должно повышать уверенность в будущем поведении системы, а не просто подтверждать один удачный запуск. В главе Google SRE — Testing for Reliability отдельно разбирается роль тестов, stress testing и production-like проверки для оценки надёжности.

Слой 2. Четырнадцать виртуальных операционных дней

После regression система последовательно прожила 14 виртуальных дней. В каждом цикле проверялось, что накопленное состояние не ломает следующий день и что правила, которые выглядят корректно в один момент времени, остаются корректными дальше.

Критерий был жёстким: не «большинство дней прошло», а 14 clean ACCEPTED days подряд.

Это важно для автоматизации, которая зависит от времени. Например, сценарий может нормально работать в середине недели, но ошибиться при переходе даты; очередь может корректно обрабатываться при пустом backlog, но начать конфликтовать после нескольких циклов; monthly logic может дать сбой именно на границе периода.

Что дополнительно проверяли temporal stress

В acceptance вошли календарные и временные переходы, включая deadline logic и month rollover. Цель была не воспроизвести любую возможную ситуацию, а проверить те классы ошибок, которые возникают не из-за одной функции, а из-за развития состояния системы во времени.

Temporal stress также завершился ACCEPTED.

Почему promotion в production оказался no-op

После lab acceptance принятый executable candidate сравнили с production. Результат: accepted_diff = 0. То есть версия, которую мы только что приняли в изолированном контуре, byte-for-byte совпадала с тем executable, который уже работал в production.

Это не повод «всё равно что-нибудь задеплоить». Правильный результат — no-op promotion: если accepted candidate и production идентичны, дополнительное изменение не создаёт ценности, а только добавляет риск.

Что этот кейс изменил в нашем подходе к автоматизациям

Для нас приёмка теперь состоит не из одного слова «работает», а из нескольких независимых вопросов:

  • проходят ли функциональные и regression-тесты;
  • сохраняется ли корректность при развитии состояния во времени;
  • проходят ли критические календарные переходы;
  • совпадает ли принятая версия с тем, что реально будет работать;
  • нужно ли вообще выполнять deployment, если diff отсутствует.

Граница доказательства

216/216 и 14 виртуальных дней не доказывают коммерческий эффект автоматизации. Они не означают рост продаж, экономию конкретной суммы или отсутствие будущих ошибок. Это evidence инженерной приёмки конкретной версии и конкретного класса сценариев.

Тот же принцип мы используем при построении AI-контуров для бизнеса: сначала ограниченный набор прав и сценариев, затем проверка поведения, и только после этого расширение области действий. Подход к таким системам описан на странице AI для управления бизнесом.