QA Interview Hub · База знань · Тести
API
Чекліст: що перевіряти в ендпоінті
Що перевіряти при тестуванні endpoint
Базово: статус-код, структура відповіді за схемою, типи й значення полів, заголовки (Content-Type, кешування, CORS) та час відповіді. Для POST, PUT і DELETE перевіряю побічний ефект: через GET або запит у БД. Також перевіряю відповідність документації Swagger.
Негативні кейси: відсутні обов'язкові поля, неправильні типи даних, порожні рядки й null, граничні значення довжини і чисел, зайві поля. Також неіснуючий ID (404), невалідний формат ID, неправильний метод (405), неправильний Content-Type (415). Помилки мають повертати зрозумілі повідомлення без стектрейсів і внутрішніх деталей.
Security та інше: запит без токена й з простроченим токеном, доступ до чужого ресурсу через зміну ID (IDOR), SQL-ін'єкції в параметрах. Далі — пагінація, сортування й фільтри, ідемпотентність, паралельні запити та rate limiting.
Позитивні й негативні кейси
Проходь цей список для кожного нового ендпоінта; на співбесіді його ж розказуй на питання «як би ти протестував цей API».
Позитивні
- Валідний запит дає правильний статус, схему і значення полів.
- Запис справді зберігся: перевірка через GET або SQL.
- Тільки обов'язкові поля і всі поля разом.
- Пагінація, фільтри, сортування; порожній результат =
[], а не помилка. - Час відповіді в межах SLA.
Негативні
- Без обов'язкового поля, з
null, порожній рядок. - Хибний тип: рядок замість числа, масив замість об'єкта.
- Граничні значення: 0, мінімум, максимум, максимум + 1, довгі рядки.
- Невалідний JSON і хибний Content-Type.
- Неіснуючий id дає 404; непідтримуваний метод — 405.
- Дублікат унікального значення дає 409.
- У всіх випадках — 4xx із зрозумілим повідомленням, без stack trace і без 500.
Негативних кейсів зазвичай більше, ніж позитивних, і саме вони знаходять більшість багів у валідації.
На співбесіді: Спершу позитивні кейси: статус, схема, значення і перевірка збереження через GET або SQL. Потім негативні: відсутні поля, хибні типи, межі, невалідний JSON, неіснуючий id і дублікати, і скрізь чекаю 4xx з нормальним повідомленням, а не 500.
Безпека й фінтех
Безпека й доступ
- Без токена, з простроченим і зіпсованим токеном — 401.
- Роль без прав — 403.
- Чужий id в URL — жодних чужих даних (IDOR).
- У відповіді немає паролів, повних номерів карток, внутрішніх полів.
- SQL-ін'єкція і спецсимволи в рядкових полях не ламають запит.
- Rate limiting — 429 після ліміту.
Фінтех
- Суми — точні десяткові:
0.1 + 0.2, округлення, копійки. - Від'ємна сума, нуль, сума більша за баланс чи ліміт.
- Повтор з тим самим
Idempotency-Key — без подвійного списання. - Валюта: коди ISO 4217, непідтримувана валюта.
- Баланс відправника й отримувача після переказу сходиться; при помилці нічого не списано частково.
- Дати й часові пояси: формат ISO 8601, операції біля півночі.
Пункт про 0.1 + 0.2 нагадує, що в JavaScript це дає 0.30000000000000004. Якщо бекенд чи фронтенд рахує гроші у float, копійки рано чи пізно «пливуть», тому суми мають зберігатися в десяткових типах або в мінімальних одиницях (копійках).
На співбесіді: Для безпеки перевіряю 401 і 403, IDOR, відсутність чутливих даних, ін'єкції та rate limiting. У фінтеху додаю точність сум, ідемпотентність платежів, валюти ISO 4217, консистентність балансів і часові пояси.