Почта для тестирования регистрации: настоящий Gmail для QA
Почта для тестирования регистрации должна принимать настоящие письма: только так видно, что код или ссылка подтверждения уходят, доходят вовремя и срабатывают. Для внутренних прогонов хватает перехватчика SMTP вроде Mailpit. А реальную доставку на Gmail и iCloud проверяют на настоящем ящике — своём тестовом или арендованном на один заказ.
Статья для тестировщиков и разработчиков, которые проверяют собственную форму регистрации, вход по коду или письма для сброса пароля. Здесь — как выбрать способ, какие тест-кейсы закрывает арендованный ящик и где его пределы.
Что QA проверяет в письме подтверждения
Письмо с кодом — часть регистрации, и ломается оно в нескольких местах:
- Отправка. Письмо уходит после нужного действия, и только после него.
- Доставка. Оно доходит до настоящих почтовых сервисов за разумное время и не теряется в фильтрах.
- Содержимое. Код нужной длины, ссылка ведёт на правильную среду, тема и текст на нужном языке.
- Логика кода. Срок действия, одноразовость, отмена прежнего кода после повторной отправки, лимит повторов.
- Отображение. Письмо нормально читается в веб-интерфейсе и мобильных приложениях почты.
Отправку и содержимое можно проверить где угодно. Доставку и отчасти отображение — только на настоящих ящиках.
Почта для тестирования: три способа
То, что ищут как «временная почта для тестирования», на деле бывает тремя разными инструментами. OTPGmail к сайтам временной почты не относится: это настоящий ящик @gmail.com или @icloud.com, арендованный на один заказ, — третий столбец таблицы.
| Перехватчик SMTP (Mailpit, MailHog) | Свой тестовый Gmail | Арендованный Gmail или iCloud | |
|---|---|---|---|
| Письмо уходит в интернет | Нет, остаётся в локальной ловушке | Да | Да |
| Проходит фильтры Gmail и iCloud | Нет | Только Gmail | Да, оба типа адреса |
| Сколько адресов | Сколько угодно, на любом домене | Сколько аккаунтов заведёте и будете поддерживать | Один на заказ, в одном запросе API до 200 |
| Что нужно для старта | Поднять контейнер | Создать аккаунт Google, возможно с телефоном | Баланс в OTPGmail |
| Автоматизация | API перехватчика | Gmail API и OAuth | REST API с личным ключом |
| Видно, в какую папку попало письмо | Не применимо | Да | Нет — только код или само письмо |
Перехватчик — основа для юнит- и интеграционных тестов: он ничего не стоит, работает без сети и ловит письма на любой адрес. Но он не скажет, примут ли письмо Gmail и iCloud. Свой тестовый ящик честно показывает папку («Входящие» или «Спам»), зато аккаунты Google приходится создавать и обслуживать самим. Арендованный ящик закрывает доставку на настоящие Gmail и iCloud без своих аккаунтов, но папку письма не показывает.
Зачем проверять доставку на настоящем ящике
Gmail и iCloud проверяют подлинность отправителя — записи SPF, DKIM и DMARC вашего домена — и письмо без них могут отправить в «Спам» или не принять. Перехватчик SMTP этого не увидит: на стенде всё зелёное, а у пользователей код «не приходит». Поэтому перед релизом и после смены почтового провайдера или домена отправителя полезно прогнать регистрацию на настоящих адресах обоих типов.
Отдельный случай — кнопка «Войти через Google» в вашем приложении. Для неё нужен не адрес, а аккаунт Google, в который можно войти; аренда здесь не поможет. Как тестировать этот сценарий, разобрано в статье вход через Google.
Тест-кейсы и как закрыть их арендованным ящиком
| Тест-кейс | Что проверить | Как с арендованным ящиком |
|---|---|---|
| Письмо доходит | Код пришёл за допустимое время | Засечь время от отправки формы до появления кода в заказе |
| Код корректен | Длина, формат, код принимается формой | Скопировать код из заказа и ввести |
| Ссылка вместо кода | Ссылка ведёт на нужную среду | Ссылка появляется в заказе вместо цифр — откройте её |
| Повторная отправка | Новый код отменяет прежний | Нужен ящик, который принимает несколько писем — см. ниже |
| Вёрстка письма | HTML, текст, заголовки | Если в заказе есть кнопка «Открыть письмо» — вкладки «Просмотр», «Текст», «Исходный код» |
| Папка «Спам» | Письмо не попадает в спам | Не закрывается арендой — нужен свой тестовый ящик |
Для писем со своего стенда выбирайте вариант «Любой сервис»: он для сайтов, которых нет в списке, и стоит дороже обычных. Его ящик Gmail принимает один код, а ящик iCloud показывает все новые письма в течение 24 часов и выдаётся только из тех, что вы раньше не арендовали. Поэтому кейсы с повторной отправкой удобнее гонять на iCloud.
Ручной прогон по шагам
- Откройте форму регистрации на стенде.
- В OTPGmail откройте «Арендовать ящик», в поле «Сервис» выберите «Any service» (так в списке приложения называется «Любой сервис»), в поле «Тип адреса» — Gmail или iCloud и нажмите «Арендовать».
- Скопируйте адрес из колонки «E-mail» и отправьте форму.
- Пока письма нет, в заказе стоит «Ждём код» с отсчётом «Истекает через:». Код или ссылка появятся в колонке «Коды».
- Нет письма за 25 минут — заказ отменяется сам, и 100 % возвращается на баланс (правила возврата). Для QA это тоже результат: письмо до настоящего ящика не дошло, пора смотреть логи отправки.
Автотесты: API вместо ручных шагов
В автотестах тот же путь проходят запросами:
POST /v1/ordersс телом{"service": "ot", "domain": "icloud.com"}и новым заголовкомIdempotency-Keyна каждый заказ — при повторе после обрыва тот же ключ вернёт уже созданный заказ, а не второй ящик;GET /v1/orders/{id}раз в 3–5 секунд: статусcompletedзначит, что код пришёл, последний код — последний элемент массиваotp;POST /v1/orders/{id}/cancelв завершении теста, если код не нужен или не пришёл, — до первого кода деньги возвращаются полностью;- при
RATE_LIMITED(HTTP 429) ждите столько секунд, сколько указано вRetry-After; лимиты по умолчанию и текущие значения — в документации API.
Готовый клиент на Python с фикстурой pytest и примером Playwright — в инструкции API для получения кода из почты на Python, обзор всех запросов и ошибок — на странице API для почты.
Если нужно сразу много адресов на прогон, есть пакетная аренда: от 1 до 200 ящиков по цене разовой аренды, пакет хранится 24 часа. Но за ящики пакета без кода деньги не возвращаются — для тестов, где письмо может не прийти по вине стенда, разовые заказы через API выгоднее.
Чего не делать
- Не тестируйте чужие сервисы без разрешения их владельцев и не гоняйте нагрузочные сценарии по чужим формам регистрации.
- Создавайте ровно столько тестовых аккаунтов на сторонних платформах, сколько разрешают их правила.
- Не делайте арендованный адрес почтой долгоживущего тестового аккаунта: ящик принимает письма только в пределах срока заказа. Для постоянных учётных записей заведите свой ящик.
Часто задаваемые вопросы
Можно ли тестировать на почте на 10 минут?
Для своего стенда — можно, если вы проверяете только отправку и содержимое. Но такие ящики живут на случайных доменах и не показывают, как письмо примут Gmail и iCloud, а входящие в них часто видят посторонние.
Как быть, если приложение шлёт ссылку, а не код?
Ничего менять не нужно: ссылка появится в заказе вместо цифр, а в ответе API — в поле code элемента массива otp. Открывайте её в том браузере, где идёт тест.
Сколько стоит один прогон?
Цена берётся за аренду, а не за время; «Любой сервис» дороже обычных сервисов. Деньги списываются только при выдаче ящика, а заказ без кода возвращается полностью. Актуальные цены — в списке сервисов приложения.
