Какие кейсы проверки для POST метода регистрации пользователя с почтой, телефоном, именем и адресом
Что проверяют
Умеете ли вы строить набор проверок системно, по классам эквивалентности и границам, а не перечислять случаи наугад. Следом почти всегда спрашивают, какие коды ответа вы ожидаете и как убедитесь, что пользователь действительно записался в базу.
Как отвечать
Разложите проверки по группам и для каждой назовите ожидаемый результат:
- позитивные: все поля валидны, ответ
201 Created(или200, если так записано в контракте), в теле id без лишних данных, запись появилась в базе. Отдельно регистрация только с обязательными полями; - валидация полей: почта без
@, без домена, с пробелами; телефон с буквами, без кода страны, в разных форматах записи; имя с кириллицей, дефисом, апострофом; адрес со спецсимволами. Ожидаемо400или422с указанием поля; - границы: длина каждого поля на минимуме, на максимуме и на единицу больше. Лимиты берите из требований или схемы;
- уникальность: повтор почты возвращает
409 Conflict. Проверьте, чтоUser@Mail.ruиuser@mail.ruсчитаются одной почтой, а телефон нормализуется к единому формату, например E.164; - структура запроса: пустое тело, битый JSON,
nullили число вместо строки, лишние поля вродеrole: admin, неверныйContent-Type(ожидаемо415); - безопасность и устойчивость: SQL-инъекция и XSS в полях, двойная отправка одного запроса, ограничение частоты запросов.
Инструменты назовите свои: Postman для ручных проверок, автотесты на pytest с requests или на RestAssured, SQL-запрос для проверки записи. Для комбинаций полей подойдёт pairwise.
Где спотыкаются
Проверяют только код ответа. Ответ 201 при пустой записи в базе или с лишними персональными данными в теле тоже баг, а его видно только при проверке тела и данных.
Забывают про нормализацию: пробелы по краям, регистр почты, формат телефона. Из-за них в базе появляются дубли, которые уникальный индекс не ловит.
Называют лимиты «с потолка», например 50 символов на имя. Правильно сказать, что границы берутся из спецификации, а если её нет, это вопрос к аналитику до начала тестирования.