TT-QA

Мок-собеседование / QA / Задача 01

Вход и восстановление
пароля

Разбери требования, спроектируй проверки и объясни, как найдёшь причину сбоя в системе.

20–25 минутТест-анализ и тест-дизайнБез написания кода

01 / Продукт

Форма входа в веб-приложение

Пользователь входит по email и паролю. По ссылке «Забыли пароль?» он запрашивает письмо для восстановления доступа. Ссылка из письма открывает форму нового пароля и его повтора.

Эскиз интерфейса

Вход

Логин · email
qa@example.test
Пароль
••••••••••••
Войти

Эскиз интерфейса

Восстановление

Email
qa@example.test
Получить ссылку

Письмо со ссылкой открывает следующий экран:

Новый пароль + повтор
Кнопка «Сохранить пароль»

Известные правила

  • Логин совпадает с email пользователя.
  • Новый пароль содержит от 12 до 64 символов. Повтор пароля должен совпадать.
  • Ссылка действует 15 минут с момента создания и используется один раз для успешной смены пароля.
  • Запрос письма сам по себе не меняет пароль. После успешного сброса новый пароль работает, старый не работает.

Остальные требования уточняй у интервьюера. Регистрация и MFA в эту задачу не входят. Условие намеренно неполное: вопросы к требованиям входят в задание.

02 / Система

Как связаны компоненты

Frontend, backend, БД и отправка письма через Kafka Frontend обращается к backend по HTTP. Backend читает и обновляет БД. Для отправки письма backend публикует событие в Kafka. Сервис уведомлений читает событие и отправляет письмо пользователю. FrontendBackendБДKafkaСервисуведомленийПочта формы в браузереAPI авторизациипользователи, токеныHTTPSQLзапрос отправки письмасобытиечтениеписьмоссылка для сброса
FrontendФормы в браузере

↕ HTTP

BackendAPI авторизации↔ БД: пользователи и токены

↓ Запрос отправки письма

KafkaСобытие

↓ Чтение события

Сервис уведомленийОтправка письма

↓

Почта пользователяСсылка для сброса

Backend проверяет пользователя и меняет данные в БД. Для отправки письма он публикует событие в Kafka; сервис уведомлений читает его и отправляет письмо. Обычный вход не зависит от Kafka.

Ссылка из письма открывает frontend. Новый пароль frontend передаёт в backend; backend проверяет токен и обновляет БД.

03 / Твоя работа

Четыре этапа задания

Рассуждай вслух. Можно записывать ответ в своём документе или на доске; работающего приложения для этой задачи нет.

Тест-анализ

5 минут

Какие требования нужны до составления проверок? Какие риски считаешь главными?

Что ожидается в ответе

  • Назови вопросы к недостающим и неоднозначным требованиям. Объясни, как ответы повлияют на тесты.
  • Отдели известные правила из условия от своих предположений. Согласуй предположения с интервьюером.
  • Выдели наиболее опасные ошибки для пользователя и продукта. Объясни последствия каждой.
  • Обозначь границы проверки: что входит в эту задачу, а что потребовало бы отдельного обсуждения.

Результат этапа: список уточнений, согласованные допущения и приоритетные риски.

Тест-дизайн

8 минут

Предложи 10–12 проверок с конкретными данными и ожидаемыми результатами.

Что ожидается в ответе

  • Покрой вход и восстановление пароля, включая успешные и неуспешные действия пользователя.
  • Для каждой проверки укажи начальное состояние, данные, действие и наблюдаемый результат.
  • Примени классы эквивалентности, граничные значения и переходы состояний. Покажи, какие проверки получились из каждой техники.
  • Объясни, почему выбранных примеров достаточно для обсуждаемого риска и какие комбинации ты пока не проверяешь.

Результат этапа: компактный чек-лист или таблица. Формулировка «проверить пароль» без данных и результата недостаточна.

Проверки компонентов

5 минут

Где проверишь каждый результат: на frontend, через backend, в БД или в Kafka? Как установишь, что письмо дошло?

Что ожидается в ответе

  • Распредели проверки между компонентами схемы. Объясни, где достаточно одной проверки, а где нужно сопоставить несколько наблюдений.
  • Назови доступы, тестовые данные и инструменты, которые понадобятся. Для каждого инструмента поясни, что именно будешь смотреть.
  • Опиши, какие признаки подтверждают результат операции и как свяжешь данные разных компонентов с одним действием пользователя.
  • Объясни, как проверишь работу при задержке обработки и повторной доставке события.

Результат этапа: план проверки по каждому компоненту с конкретными подтверждениями результата.

Сбой и приоритеты

5 минут

API вернул успешный ответ, но письма нет. Как найдёшь причину? Какие пять проверок оставишь, если до релиза один час?

Что ожидается в ответе

  • Предложи порядок диагностики. У каждой гипотезы назови наблюдение, которое её подтвердит или опровергнет.
  • Объясни, как отличишь допустимое ожидание от сбоя и какая информация для этого нужна.
  • Выбери ровно пять проверок и расставь их по приоритету с учётом возможного ущерба.
  • Назови непроверенные риски и сведения, которые передашь ответственному за решение о выпуске.

Результат этапа: последовательность диагностики и сокращённый набор проверок с обоснованием.

04 / Формат ответа

Записывай так, чтобы проверку можно было повторить

ПроверкаНачальное состояние и данныеДействиеОжидаемый результатГде проверить
Название сценарияЧто подготовитьЧто выполнитьЧто должно произойтиКомпонент и наблюдение

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

Сообщить о проблеме

Что случилось?