Питання на співбесіді з тестування API з відповідями
Тестування HTTP API: методи й коди відповідей, заголовки й автентифікація, Postman і Newman, curl, негативні й граничні тести, JSON Schema, контрактне тестування з Pact і OpenAPI, моки й віртуалізація сервісів, ідемпотентність і конкурентність, OWASP API Security Top 10, навантажувальне тестування й асинхронні API.
225 запитань для співбесіди з теми Тестування API з відповідями й поясненнями - рівні Junior, Middle і Senior. Приклади запитань, онлайн-тести й задачі на код.
- REST
- Postman
- Коди відповідей
- Контрактні тести
- OWASP API
Запитання за рівнями
Junior
Базові поняття та синтаксис · 50 запитань
Middle
Практика, нюанси й оптимізація · 50 запитань
Senior
Архітектура, внутрішня будова, edge cases · 50 запитань
Приклади запитань
Кілька запитань із кожного рівня з правильною відповіддю й поясненням.
Тестування API · Junior
- Що таке тестування API?
Показати відповідь
Правильна відповідь: Перевірка інтерфейсу застосунку для програм напряму, без UI
API-тести надсилають запити до ендпоінтів і перевіряють коди відповідей, тіла, заголовки й побічні ефекти. Вони швидші й стабільніші за UI-тести й доходять до випадків, які UI ховає.
- Чому тестування API часто роблять раніше за тестування UI?
Показати відповідь
Правильна відповідь: API готове раніше, і баги там дешевше знайти
Ендпоінти бекенду зазвичай з'являються раніше за екрани. Раннє тестування знаходить баги логіки й валідації, поки UI ще будують.
- Чим REST API зазвичай ідентифікує ресурси?
Показати відповідь
Правильна відповідь: URL на кшталт
/users/42У REST кожен ресурс має адресу, а HTTP-методи кажуть, що з ним робити:
GET /users/42читає,DELETE /users/42видаляє. - Який HTTP-метод має лише читати дані?
Показати відповідь
Правильна відповідь:
GETGET- безпечний метод: він не має змінювати стан сервера.GET, що щось видаляє чи оновлює, - це баг, бо його можуть викликати кеші, краулери й prefetch.
Тестування API · Middle
- Навіщо з часом переносити API-перевірки з Postman у тести в коді?
Показати відповідь
Правильна відповідь: Код живе в Git із рев'ю, перевикористанням і звичайним CI
Тести в тому самому репозиторії, що й сервіс, рев'юються разом із кодом, ділять хелпери й запускаються як будь-який набір тестів. Postman лишається корисним для дослідження.
- Що таке REST Assured?
Показати відповідь
Правильна відповідь: Java-бібліотека для читабельних API-тестів
Вона пропонує стиль given/when/then:
given().body(...).when().post("/users").then().statusCode(201). - Як перевірити тіло відповіді за JSON Schema в тестах на JavaScript?
Показати відповідь
Правильна відповідь: Скомпілювати схему валідатором на кшталт Ajv і перевірити тіло
Ajv повертає помилки валідації зі шляхами на кшталт
/items/0/price, тож падіння легко читати. - Що ловить
additionalProperties: falseу схемі відповіді?Показати відповідь
Правильна відповідь: Неочікувані поля, як-от злиті внутрішні дані
Строгі схеми виявляють нові чи злиті поля на кшталт
passwordHash. Команди вирішують для кожного API, чи строгість допомагає, чи дає шум.
Тестування API · Senior
- Як розподілити API-тести за рівнями для мікросервісу?
Показати відповідь
Правильна відповідь: Багато юніт- і компонентних тестів, контракти між сервісами, мало E2E
Компонентні тести запускають сервіс із заглушками залежностей і швидко покривають логіку. Контракти стережуть інтеграції; кілька E2E-сценаріїв доводять, що вся система працює.
- На що відповідає перевірка Pact
can-i-deploy?Показати відповідь
Правильна відповідь: Чи перевірено цю версію з версіями, з якими вона працює
Pact Broker знає, які версії споживачів і провайдерів перевірили кожен контракт. Перевірка блокує деплой, що зламав би партнера, вже присутнього в продакшені.
- Який головний ризик контрактних тестів, написаних лише командою провайдера?
Показати відповідь
Правильна відповідь: Вони тестують те, що провайдер вважає використанням, а не реальне
Контракти від споживачів фіксують реальне використання. Контракти лише від провайдера часто пропускають поле, від якого залежить клієнт, або тестують поля, якими ніхто не користується.
- Навіщо рев'ювати дизайн API до написання коду?
Показати відповідь
Правильна відповідь: Змінювати опублікований контракт потім дорого для всіх клієнтів
Рев'ю специфікації наперед ловить незрозумілі помилки, відсутню пагінацію чи непослідовні назви, поки виправлення - одна правка, а не міграція з версіями.
Збірні тести з цією темою
Запитання з кількох тем одразу - як на співбесіді на конкретну вакансію.
Задачі на код
Напишіть рішення просто в браузері - тести перевірять його одразу. Класика співбесід на JavaScript (debounce, deepClone, Promise.all, LRU-кеш), на TypeScript (дженерики, звуження й утилітні типи, перевіряє справжній компілятор), серверна логіка на Node.js (middleware, обмеження частоти, черги задач), SQL-запити в справжньому PostgreSQL і на React: компоненти й хуки на кшталт списку справ, вкладок, useDebounce та useInterval.
Відкрити задачі →