API (Application Programming Interface) – являє собою набір правил, котрий надає можливість різним програмам взаємодіяти між собою. Завдяки API сучасні веб-додатки і сервіси можуть обмінюватись інформацією, запитувати дані або виконувати певні операції по запиту, таким чином забезпечується інтеграція між собою різних компонентів, таких як frontend, backend, бази даних і зовнішні сервіси.

При роботі з API можуть виникати різні проблеми і помилки – як через некоректну роботу самого API, так і через неправильне підключення/взаємодію з ним.

Тестування API

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

Види тестування API

1. Тестування методів – кожен метод API перевіряється окремо, щоб переконатись, що методи працюють правильно та повертають очікувані результати. Тестування включає перевірку вхідних даних, виконання операцій і перевірку виводу.

2. Тестування взаємодії – перевірка взаємодії API з іншими API, компонентами програми та сервісами. Показує, що API успішно надсилає та отримує дані, а також обробляє різні сценарії використання.

3. Тестування авторизації та аутентифікації – перевірка доступу до API, як працюють механізми авторизації та доступу до функцій та даних.

4. Тестування обробки помилок – перевірка поведінки API у випадку непередбачуваних ситуацій та помилок, наприклад передачі некоректних даних. Дозволяє переконатись, що API правильно обробляє винятки і повертає відповідні коди помилок.

5. Тестування продуктивності – перевірка роботи API при підвищених навантаженнях, його пропускної здатності та продуктивності. Дозволяє переконатись, що API продовжить коректно працювати в разі підвищеного попиту на програмний сервіс.

6. Тестування безпеки – перевірка вразливостей безпеки API, мета якої запобігти витоку даних або несанкціонованому доступу. Перевіряються заходи безпеки API, проводяться тести на проникнення для встановлення можливих вразливостей.

Принципи тестування API

Деякі принципи для побудови надійних та ефективних тестів для API:

  • Використання різноманітних вхідних даних – під час тестування API важливо використовувати різні варіанти тестових даних, граничні значення, некоректні дані. Це допомагає переконатись, що API правильно обробляє всі можливі вхідні сценарії.
  • Автоматизація тестування – багато чого у тестуванні API можна автоматизувати (наприклад перевірку окремих функцій та даних що повертаються, обробку помилок, тестування продуктивності). Автоматизовані тести API значно заощаджують час та знижують ризики людської помилки.
  • Включення тестування API у процеси CI/CD (якщо такі є в компанії), дає змогу регулярно перевіряти його працездатність, і отримувати зворотний зв’язок про проблеми одразу після їх виникнення.
  • Перевірка безпеки – важливо ретельно тестувати API на вразливості та перевіряти механізми авторизації, щоб API та система були захищені від потенційних загроз та атак.

Інструменти тестування API

Під час тестування API, тестувальники використовують спеціальні інструменти, які дозволяють спростити та автоматизувати тестування.

Перелік деяких поширених інструментів для тестування API:

  • Postman: надає можливість створювати і надсилати HTTP-запити, отримувати та перевіряти відповіді від API. Також має функціонал створення та запуску автоматизованих тестів, генерації документації, спільної роботи в команді.
  • SoapUI: дозволяє тестувати та налагоджувати SOAP і REST API, створювати і надсилати запити, автоматизувати тестування, генерувати тестові звіти, відстежувати продуктивність.
  • JMeter: дає змогу надсилати HTTP-запити та проводити навантажувальне тестування API, щоб перевірити його працездатність та продуктивність в стресових умовах.
  • REST-assured: Java-бібліотека, яка надає зручний спосіб для тестування REST API, використовуючи спрощений синтаксис. Вона дає змогу виконувати запити, перевіряти відповіді та створювати автоматизовані тести.

Приклад послідовності кроків застосування тестування API

Розглянемо теоретичний приклад застосування тестування API. Уявімо REST API для системи управління завданнями, і припустимо, що цей API надає наступні методи:

  • GET /tasks – отримати список усіх завдань
  • GET /tasks/{id} – отримати інформацію про конкретне завдання
  • POST /tasks – створити нове завдання
  • PUT /tasks/{id} – оновити інформацію про завдання
  • DELETE /tasks/{id} – видалити завдання

Кроки тестування можуть бути такими:

1. Визначити вимоги та дослідити документацію API, щоб зрозуміти, які поля мають бути в task, як його створити та оновити, очікувані коди стану та структура відповідей.

2. Створити тест-кейси для покриття наступних перевірок, наприклад:

  • Тест методу GET /tasks – відправити GET-запит на /tasks і переконатись, що отримана відповідь містить список завдань.
  • Тест методу GET /tasks/{id} – створити тестовий task, отримати його ідентифікатор, після чого відправити GET-запит на /tasks/{id} і переконатись, що повертається інформація про task з відповідним ідентифікатором та даними.
  • Тест методу POST /tasks – відправити POST-запит на /tasks з тестовими даними для створення нового task і переконатись, що task успішно створено і повертається відповідний код стану (наприклад: 201 Created).
  • Тест запиту PUT /tasks/{id} – створити тестовий task, отримати його ідентифікатор, після чого надіслати PUT-запит на /tasks/{id} з оновленими даними і переконатись, що завдання успішно оновлено та повертається відповідний код стану (наприклад: 200 OK).
  • Тест запиту DELETE /tasks/{id} – створити тестовий task, отримати його ідентифікатор, після чого надіслати запит на його видалення. Перевірити, що на запит DELETE /tasks/{id} повертається відповідний код стану (наприклад: 200 OK або 204 No Content). Також можна переконатись, що сутність task з відповідним ідентифікатором видалено з бази даних, а запит GET /tasks/{id} повертає 404 Not Found.

3. Підготувати оточення та інструменти тестування (наприклад Postman), для надсилання запитів і перевірки відповідей API.

4. Надіслати запити що відповідають тест-кейсам до API (наприклад використовуючи Postman).

5. Перевірити відповіді від API, використовуючи очікувані результати зазначені в тест-кейсах. Наприклад, переконатись що повертається правильний код стану, структура тіла відповіді відповідає очікуваній, а значення полів task коректні.

6. Перевірити як API обробляє помилки, шляхом надсилання некоректних запитів. Переконатись, що повертаються відповідні коди стану та описи помилок.

7. Згенерувати звіт про результати виконання тестів. Включити в нього інформацію про пройдені та не пройдені тести, помилки, та інші корисні дані.

8. Регулярно проводити повторне тестування, для підтвердження працездатності API та виявлення проблем, особливо після внесених змін до коду API або його оточення.

Наостанок слід додати, що під час тестування API, починати бажано з позитивних перевірок, тобто надсилати коректні дані, перевіряючи стандартні сценарії використання API. Це потрібно, щоб зрозуміти в першу чергу що API виконує свою основну функцію, адже в протилежному випадку в інших перевірках не буде сенсу.