Меню
Блог

Измерение задержки электронной почты в CI/CD‑конвейере

Тест, зависящий от электронной почты, включает несколько часов. Измерение только интервала между двумя действиями в браузере скрывает, где было потрачено время, и может заставить изменение в почтовом ящике выглядеть как улучшение приложения.

Записывайте этапы отдельно

ЭтапПолезная метка времени
Триггер приложенияКогда тест запрашивает сообщение подтверждения.
Отправка отправителемКогда система отправки принимает его или ставит в очередь, если это наблюдаемо.
Наблюдение получателемКогда соответствующее сообщение становится доступным тесту.
Результат проверкиКогда приложение подтверждает требуемое состояние учётной записи.

По возможности используйте общий часы, фиксируйте предположения о часовом поясе и различайте отсутствующие метки времени и нулевую продолжительность. Сравнивайте повторные запуски при одинаковых условиях, прежде чем делать заявления о производительности.

Выбирайте поддерживаемый механизм обновления

Server‑sent events позволяют серверу посылать обновления по установленному соединению браузера. Они могут сократить повторяющийся опрос фронтенда, но доставка всё равно зависит от подлежащей обработки и сети. См. обзор MDN. Сайт, использующий SSE, не означает, что его публичный API предоставляет тот же поток.

Для API‑тестов следуйте задокументированному интерфейсу. Если нужен опрос, используйте ограниченный backoff, дедлайн и корреляцию сообщений вместо плотного цикла.

Измеряйте не только средние, но и сбои

Отчитывайтесь о тайм‑аутах, отклонённом доступе, ошибках отправителя и несоответствующих сообщениях наряду с успешными измерениями. Более низкое среднее среди успехов может скрывать рост количества сбоев. Храните анонимизированные трассы для диагностики без логирования токенов подтверждения.

Контролируйте собственную нагрузку теста

Ограничьте количество одновременно выполняемых задач, отменяйте работу после дедлайна и удаляйте синтетические артефакты. Язык реализации и база данных не задают фиксированную ёмкость и не делают масштабирование бесплатным; измеряйте ресурсы, потребляемые реальной нагрузкой.