Примеры автотестов на уровне API
Что проверяют
Понимаете ли вы, что проверять на уровне API кроме кода 200, и умеете ли делать тесты независимыми друг от друга. Заодно смотрят словарь: назовёте ли контрактные проверки, негативные сценарии, авторизацию. Следом спрашивают про тестовые данные: откуда берутся и кто убирает за тестом.
Как отвечать
Разложите примеры по типам проверок, так ответ звучит как система, а не как список запросов.
- основной сценарий: полный цикл ресурса.
POSTсоздаёт, ответ 201 и заголовокLocation,GETпо идентификатору возвращает те же поля,PATCHменяет одно поле,DELETEотдаёт 204, повторныйGETдаёт 404; - валидация: пустое обязательное поле, неверный тип, строка сверх лимита. Ждём 400 или 422 с внятным телом и кодом ошибки, а не 500;
- доступ: без токена 401, с чужим токеном 403, чужой идентификатор в пути не отдаёт данные. Самый дешёвый способ поймать доступ к чужим объектам;
- контракт: ответ валидируется по схеме OpenAPI, а не сравнивается с зафиксированным JSON целиком. Иначе новое необязательное поле красит сборку;
- края: пагинация и сортировка, повторный
POSTс ключом идемпотентности, срабатывание лимита запросов и 429.
Инструменты называйте те, в которых работали: pytest с requests или httpx, REST Assured в Java, supertest или APIRequestContext из Playwright, коллекции Postman с прогоном через newman, schemathesis для генерации проверок прямо по спецификации. Нагрузку выносите отдельно, в k6 или Locust, к функциональным тестам она отношения не имеет.
Добавьте про запуск: прогон на каждый пул-реквест против поднятого стенда, внешние системы подменяются заглушками вроде WireMock, каждый тест сам создаёт себе данные и убирает их за собой.
Где спотыкаются
Пишут тесты, зависящие от порядка выполнения и от данных, заведённых на стенде руками. Первый параллельный прогон или чистка базы всё роняет.
Проверяют только статус-код. Сервис вернёт 200 с пустым списком вместо данных, и такой тест останется зелёным.
Складывают в один тест десяток проверок из разных сценариев. Падение показывает первую, остальные так и остаются неизвестными, а разбор занимает больше времени, чем сам тест.