Как протестировать POST /users
Вопрос
Есть эндпоинт POST /users с полями email, password, name, age. Какие проверки ты сделаешь?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Позитив: минимальный набор полей и полный, 201, Location, тело, запись в БД
Обязательность и типы: нет поля, null, неверный тип: 400/422 с понятной ошибкой
Границы и форматы: длины, возраст на границах, неверный email, пробелы, эмодзи
Бизнес-правила: дубль email (409), регистр email, пароль не возвращается в ответе
Безопасность и надёжность: без авторизации, лишние поля (role), повтор и параллельные запросы
Что могут спросить следом
- Как проверишь, что пароль хранится не открытым текстом?
- Что вернуть на
Anna@Mail.ru, если естьanna@mail.ru? - Как автоматизируешь эти проверки?
Разбор
Начну с позитива: создаю пользователя с минимальным набором обязательных полей и с полным, жду 201, Location, в теле id и данные, а в базе запись с правильными полями. Дальше обязательность и типы: убираю каждое обязательное поле по очереди, шлю null, строку вместо числа, жду 400 или 422 с указанием поля, а не 500. Границы: длина пароля и имени на границах, возраст 0, отрицательный, нереальный, email без собаки, с пробелами по краям, кириллица и эмодзи в имени. Бизнес-правила: повторная регистрация того же email даёт 409, причём проверяю и вариант в другом регистре, пароль никогда не возвращается в ответе, а в базе лежит хеш. Безопасность: пробую добавить role admin в тело, это mass assignment, смотрю на лимит частоты. И надёжность: двойной клик, то есть два параллельных одинаковых запроса, не должен создавать двух пользователей. Позитив и ключевой негатив автоматизирую, остальное держу в чек-листе.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Стратегия тестирования API в микросервисах
Следующий вопрос
Тестовые данные в API-тестах