Как тестировать блок item в ответе без документации?
Что проверяют
Как вы действуете, когда контракта нет: где добываете ожидаемое поведение и как не принять текущий баг за норму. Следом спрашивают, что вы зафиксируете по итогам и кому это покажете.
Как отвечать
Первый шаг: собрать гипотезу контракта из того, что есть. Источники: как блок item использует клиент (вкладка Network в DevTools, код фронтенда), автогенерированный Swagger бэкенда (часто лежит по /swagger-ui или /v3/api-docs, даже когда «документации нет»), схема таблиц в базе, соседние эндпоинты с похожими сущностями, история задач и разработчик, который писал код. Итог записываете черновой схемой: поля, типы, обязательность, форматы, допустимые значения.
Дальше проверки:
- структура: валидация по JSON Schema, в Postman через
pm.response.to.have.jsonSchema(), в REST Assured черезmatchesJsonSchemaInClasspath; - значения: данные в
itemсовпадают с тем, что вы создали через API или видите в базе; даты в одном формате и часовом поясе, id не пустые, суммы не теряют копейки; - пограничные состояния: пустой список,
nullпротив отсутствующего ключа, один элемент, очень много элементов, граница страницы пагинации и согласие с полемtotal; - контекст: другой пользователь или роль видит свой набор, удалённая сущность не всплывает, спецсимволы и эмодзи в строках не ломают ответ;
- негатив: невалидные параметры запроса, чужой id, запрос без авторизации.
Работа идёт в формате исследовательского тестирования с чартером и заметками, а спорные места вы уносите аналитику или разработчику. Итоговая схема становится основой автотестов и той самой документацией.
Где спотыкаются
Берут текущий ответ за эталон. Если бэкенд уже отдаёт цену строкой вместо числа, тесты закрепляют ошибку.
Проверяют статус 200 и наличие полей, но не типы и не смысл значений. Самые дорогие баги здесь: не то число или данные чужого пользователя.
Молчат и гадают. Спросить разработчика или посмотреть клиентский код быстрее, чем неделю строить догадки, а записанные вопросы потом экономят время всей команде.