← Усі теми

Питання на співбесіді з тестування API з відповідями

Тестування HTTP API: методи й коди відповідей, заголовки й автентифікація, Postman і Newman, curl, негативні й граничні тести, JSON Schema, контрактне тестування з Pact і OpenAPI, моки й віртуалізація сервісів, ідемпотентність і конкурентність, OWASP API Security Top 10, навантажувальне тестування й асинхронні API.

225 запитань для співбесіди з теми Тестування API з відповідями й поясненнями - рівні Junior, Middle і Senior. Приклади запитань, онлайн-тести й задачі на код.

Запитання за рівнями

Приклади запитань

Кілька запитань із кожного рівня з правильною відповіддю й поясненням.

Тестування API · Junior

  1. Що таке тестування API?
    Показати відповідь

    Правильна відповідь: Перевірка інтерфейсу застосунку для програм напряму, без UI

    API-тести надсилають запити до ендпоінтів і перевіряють коди відповідей, тіла, заголовки й побічні ефекти. Вони швидші й стабільніші за UI-тести й доходять до випадків, які UI ховає.

  2. Чому тестування API часто роблять раніше за тестування UI?
    Показати відповідь

    Правильна відповідь: API готове раніше, і баги там дешевше знайти

    Ендпоінти бекенду зазвичай з'являються раніше за екрани. Раннє тестування знаходить баги логіки й валідації, поки UI ще будують.

  3. Чим REST API зазвичай ідентифікує ресурси?
    Показати відповідь

    Правильна відповідь: URL на кшталт /users/42

    У REST кожен ресурс має адресу, а HTTP-методи кажуть, що з ним робити: GET /users/42 читає, DELETE /users/42 видаляє.

  4. Який HTTP-метод має лише читати дані?
    Показати відповідь

    Правильна відповідь: GET

    GET - безпечний метод: він не має змінювати стан сервера. GET, що щось видаляє чи оновлює, - це баг, бо його можуть викликати кеші, краулери й prefetch.

Усі 75 запитань з відповідями →

Тестування API · Middle

  1. Навіщо з часом переносити API-перевірки з Postman у тести в коді?
    Показати відповідь

    Правильна відповідь: Код живе в Git із рев'ю, перевикористанням і звичайним CI

    Тести в тому самому репозиторії, що й сервіс, рев'юються разом із кодом, ділять хелпери й запускаються як будь-який набір тестів. Postman лишається корисним для дослідження.

  2. Що таке REST Assured?
    Показати відповідь

    Правильна відповідь: Java-бібліотека для читабельних API-тестів

    Вона пропонує стиль given/when/then: given().body(...).when().post("/users").then().statusCode(201).

  3. Як перевірити тіло відповіді за JSON Schema в тестах на JavaScript?
    Показати відповідь

    Правильна відповідь: Скомпілювати схему валідатором на кшталт Ajv і перевірити тіло

    Ajv повертає помилки валідації зі шляхами на кшталт /items/0/price, тож падіння легко читати.

  4. Що ловить additionalProperties: false у схемі відповіді?
    Показати відповідь

    Правильна відповідь: Неочікувані поля, як-от злиті внутрішні дані

    Строгі схеми виявляють нові чи злиті поля на кшталт passwordHash. Команди вирішують для кожного API, чи строгість допомагає, чи дає шум.

Усі 75 запитань з відповідями →

Тестування API · Senior

  1. Як розподілити API-тести за рівнями для мікросервісу?
    Показати відповідь

    Правильна відповідь: Багато юніт- і компонентних тестів, контракти між сервісами, мало E2E

    Компонентні тести запускають сервіс із заглушками залежностей і швидко покривають логіку. Контракти стережуть інтеграції; кілька E2E-сценаріїв доводять, що вся система працює.

  2. На що відповідає перевірка Pact can-i-deploy?
    Показати відповідь

    Правильна відповідь: Чи перевірено цю версію з версіями, з якими вона працює

    Pact Broker знає, які версії споживачів і провайдерів перевірили кожен контракт. Перевірка блокує деплой, що зламав би партнера, вже присутнього в продакшені.

  3. Який головний ризик контрактних тестів, написаних лише командою провайдера?
    Показати відповідь

    Правильна відповідь: Вони тестують те, що провайдер вважає використанням, а не реальне

    Контракти від споживачів фіксують реальне використання. Контракти лише від провайдера часто пропускають поле, від якого залежить клієнт, або тестують поля, якими ніхто не користується.

  4. Навіщо рев'ювати дизайн API до написання коду?
    Показати відповідь

    Правильна відповідь: Змінювати опублікований контракт потім дорого для всіх клієнтів

    Рев'ю специфікації наперед ловить незрозумілі помилки, відсутню пагінацію чи непослідовні назви, поки виправлення - одна правка, а не міграція з версіями.

Усі 75 запитань з відповідями →

Збірні тести з цією темою

Запитання з кількох тем одразу - як на співбесіді на конкретну вакансію.

Задачі на код

Напишіть рішення просто в браузері - тести перевірять його одразу. Класика співбесід на JavaScript (debounce, deepClone, Promise.all, LRU-кеш), на TypeScript (дженерики, звуження й утилітні типи, перевіряє справжній компілятор), серверна логіка на Node.js (middleware, обмеження частоти, черги задач), SQL-запити в справжньому PostgreSQL і на React: компоненти й хуки на кшталт списку справ, вкладок, useDebounce та useInterval.

Відкрити задачі →