> For the complete documentation index, see [llms.txt](https://swit-school.gitbook.io/qa-book/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://swit-school.gitbook.io/qa-book/testuvannya-igor/vstup-do-testuvannya-ari/instrumenti-ta-testuvannya-ari.md).

# Інструменти та тестування АРІ

## Інструменти для роботи з API

Вище ми вже згадували: звичайні GET запити можна надсилати за допомогою браузера. Але спеціальні інструменти, які призначені для розробки і тестування API надають можливість не тільки відправляти різні типи запитів, але й зберігати запити, показувати результати в різних форматах, виступати в ролі proxy сервера. І багато багато-багато чого іншого.

Серед таких інструментів:

* **Postman** — в тому числі існує в розширенні для Google Chrome, яке в безкоштовній версії дозволяє посилати запити, записувати їх, показувати історію. Доволі зручний і зрозумілий інструмент. [Поради тестування API в Postman](https://qagroup.com.ua/publications/porady-testuvannia-ari-v-postman/)

<figure><img src="https://lh6.googleusercontent.com/_srbU1n6U1SfijJmmkH-pjBFgdytQteBNAM1akoFLDt49lJjhV-vBq4mPwDI9KlLCAG4kEHiki_BnSOjH27biE3QhHmuKW2fWHVLeuZKI91HeDp44dLUA2P0j67V3Cbc9DSwF6cMI1lnd-691V6dIbzDwg=s2048" alt=""><figcaption></figcaption></figure>

* **jMeter** — інструмент, який здобув популярність перш за все завдяки інструменту для Perfomance Testing (тестування навантажаження), яке можна проводити з його допомогою. Але це лише одна з безлічі його застосувань.

<figure><img src="https://lh6.googleusercontent.com/8Z6QrG0BeF83se8tV1XOWraPB29NzmnS2E7wwedVRCRYH8mDVYEPP6h8Cs-V5w33AdpOkPtAwZ-NGZaA4YghhtBqLEPsaoqWdeFKVQFJMPkUkgksnNqPwVopvKFTswNwZh5T7djr0DMlAGcjDra__Zf_Yg=s2048" alt=""><figcaption></figcaption></figure>

* **Fiddler** — дозволяє переглядати HTTP запити.

<figure><img src="https://lh3.googleusercontent.com/iZp8StL-ZNbsrLdygLHpz19Ee6t9T56xBqIbUN5QW04Ep6Kbd0EG1mMIEZKn7PiAVQFqCxjCAL9EPOiCjFCZ8y5AVuz3gtaFBjlq8CWXevaW3nhHBJDrH2Xg6GOtYzKM533wsdC93TZsQPx2821MCusbWA=s2048" alt=""><figcaption></figcaption></figure>

* **SoapUI** — потужний продукт для розробки і тестування веб додатків.

<figure><img src="https://lh6.googleusercontent.com/LE_wx1E2UQdI1I6qixFMONtL8C5aCojnaGyH2SUNDuZOmcalUBoM_KDJdAViod_7tal-kNbY6lVhLmn8TKJnO78c_n9VFMDJW-lNll5sssQ7Ose03WeTT0X3A-qJGuMj1uovKcoSLU85PIIn_FbywhvhAw=s2048" alt=""><figcaption></figcaption></figure>

* Advanced REST Client — ще одне розширення для Chrome для роботи з API (конструкція запитів, їх показ теж в зручному вигляді).

## Тестування API

А тепер — дуже коротко про те, як тестувати API. Звичайно, тут є своя специфіка. Тестування спрямоване на перевірку функціонування перш за все бізнес логіки додатку.

Типові помилки в API:

* Збій обробки помилкових умов;
* Невикористані flag
* Відсутній або дублюється функціонал;
* Питання налаштування: труднощі при підключенні і отриманні відповіді від API;
* Проблеми з безпекою API;
* Питання по багатопоточності;
* Проблеми з продуктивністю: буває час відгуку API дуже високий;
* Помилки;
* Некоректна обробка валідних значень;
* Дані відповіді некоректно структуровані (JSON або XML).

<figure><img src="https://lh5.googleusercontent.com/b601NXFKIOqMFRGNM_4RbdCcS-LhWlc5zD_1kAFnCuAxqHPxd2DLdP_lnamli7lE7V6Scdz75JpnH4r9xU6_IrRCW0G3E9RESsELTUiPuClcxPAWJ0WL-XNb2LsYVcNPCe_7QD3E1RmGujS2XxC6BqGZJA=s2048" alt=""><figcaption></figcaption></figure>

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

#### Але при тестуванні API цілком можна використовувати загальноприйняті техніки тестування ПЗ:

* Оглядове дослідницьке тестування — тести повинні виконати набір викликів, задекларованих в API, щоб перевірити загальну працездатність системи;
* Перевірка документації — перевіряється повнота описів функцій API, її зрозумілість і, в свою чергу, є фінальним результатом.
* Аналіз граничних значень — в API запитах в явному вигляді можуть передаватися значення параметрів. Це відмінний привід виділити кордону вхідних і вихідних значень і перевірити їх.
* Розбиття на класи еквівалентності — навіть у невеликого API є безліч варіантів використання і безліч комбінацій вхідних і вихідних змінних. Тому ми можемо зайвий раз використовувати наші навички виділення еквівалентних класів.
* Юзабіліті-тестування — перевіряє, чи є API функціональним і володіє зручним інтерфейсом, також перевіряється інтеграція з іншими;
* Тестування безпеки — перевіряє використовуваний тип аутентифікації і шифрування даних за допомогою HTTP;
* Автоматизоване тестування — створення скриптів, програм або настройка додатків, які можуть тестувати API на регулярній основі;

Як бачите всі види тестування, до яких ми так звикли — функціональне тестування, тестування навантаження, тестування безпеки, юзабіліті, тестування документації — не чужі при тестуванні API теж. В принципі, це й не дивно, оскільки API є повноцінним самостійним продуктом.

<br>
