- Список навчальних посібників з тестування API
- Огляд підручників у цій серії з тестування API
- Посібник з тестування API
- Впровадження тестування API у вашій організації
- Висновок
Цей поглиблений посібник з тестування API пояснює все про тестування API, веб-сервіси та як впровадити тестування API у вашій організації:
Отримайте глибоке уявлення про тестування API, а також про концепцію тестування лівого зсуву та веб-сервіси з цього вступного уроку.
У цьому підручнику на прикладах добре пояснюються такі поняття, як Web API, як працює API (з реальними прикладами) і чим він відрізняється від веб-сервісів.
Список навчальних посібників з тестування API
Урок №1: Підручник з тестування API: повний посібник для початківців
Підручник №2: Підручник з веб-сервісів: компоненти, архітектура, типи та приклади
Урок №3: 35 найкращих запитань на співбесіді з ASP.Net та Web API з відповідями
Урок №4: Підручник POSTMAN: Тестування API за допомогою POSTMAN
Урок №5: Тестування веб-сервісів за допомогою HTTP-клієнта Apache
Огляд підручників у цій серії з тестування API
Навчальний посібник | Чого ви навчитеся |
---|---|
Посібник_№1: | Підручник з тестування API: повний посібник для початківців Цей посібник з поглибленого тестування API детально пояснить все про тестування API та веб-сервіси, а також навчить вас, як впровадити тестування API у вашій організації. |
Посібник_2: | Підручник з веб-сервісів: компоненти, архітектура, типи та приклади Цей підручник з веб-сервісів пояснює архітектуру, типи та компоненти веб-сервісів, а також важливу термінологію та відмінності між SOAP та REST. |
Посібник_3: | 35 найкращих запитань на співбесіді з ASP.Net та Web API з відповідями У цьому посібнику ви можете ознайомитися зі списком найпоширеніших запитань на співбесіді з ASP.Net та Web API з відповідями та прикладами для початківців і досвідчених професіоналів. |
Посібник_№4: | Підручник POSTMAN: Тестування API за допомогою POSTMAN У цьому покроковому навчальному посібнику ви дізнаєтеся про тестування API за допомогою POSTMAN, а також про основи POSTMAN, його компоненти та приклади запитів і відповідей простими словами для легкого розуміння. |
Підручник_№5: | Тестування веб-сервісів за допомогою HTTP-клієнта Apache Цей посібник з API присвячений виконанню різних CRUD-операцій над веб-сервісами та тестуванню веб-сервісів за допомогою HTTP-клієнта Apache |
Посібник з тестування API
Цей розділ допоможе вам отримати базове уявлення про веб-сервіси та веб-API, що, в свою чергу, допоможе вам зрозуміти основні концепції в наступних уроках цієї серії з тестування API.
API (Application Programming Interface - інтерфейс прикладного програмування) - це набір усіх процедур і функцій, які дозволяють створювати додатки, отримуючи доступ до даних або функцій операційної системи чи платформ. Тестування таких процедур називається API-тестуванням.
Тестування зсуву вліво
Одним з важливих типів тестування, який сьогодні запитують на співбесідах з тестування API, є тестування зі зсувом ліворуч. Цей тип тестування практикується майже у всіх проектах, які слідують гнучкій методології.
До впровадження Shift Left Testing тестування програмного забезпечення починалося лише після того, як код був завершений і переданий тестувальникам. Така практика призводила до поспіху в останню хвилину, щоб вкластися в дедлайн, а також значною мірою знижувала якість продукту.
Крім того, докладені зусилля (коли дефекти були виявлені на останньому етапі перед виробництвом) були величезними, оскільки розробникам довелося проходити етап проектування та кодування заново.
Життєвий цикл розробки програмного забезпечення (SDLC) перед тестуванням
Традиційний цикл SDLC був таким: Вимоги - Дизайн - Кодування - Тестування.
Недоліки традиційного тестування
- Тестування є крайнім праворуч. Багато витрат виникає, коли баг виявляється в останню хвилину.
- Час, який витрачається на усунення помилки та повторне тестування перед запуском у виробництво, є величезним.
Таким чином, з'явилася ідея змістити фазу тестування вліво, що призвело до появи Shift Left Testing.
Рекомендована література => Зсув тестування вліво: секретна мантра для успіху програмного забезпечення
Етапи тестування лівого зсуву
Тестування з лівим зсувом призвело до успішного переходу від виявлення дефектів до запобігання дефектам. Це також допомогло програмному забезпеченню швидко виходити з ладу і виправляти всі помилки якнайшвидше.
Веб-аплікатор
У загальних рисах, Web API можна визначити як щось, що приймає запит від клієнтської системи до веб-сервера і надсилає відповідь з веб-сервера на клієнтську машину.
Як працює API?
Візьмемо дуже поширений сценарій бронювання авіаквитків на сайті www.makemytrip.com, який є онлайн-сервісом для подорожей, що агрегує інформацію від декількох авіакомпаній. Коли ви бронюєте авіаквиток, ви вводите таку інформацію, як дата вильоту/повернення, клас і т.д. і натискаєте на пошук.
Це покаже вам ціни декількох авіакомпаній та їхню доступність. У цьому випадку додаток взаємодіє з API декількох авіакомпаній і таким чином надає доступ до даних авіакомпанії.
Іншим прикладом є www.trivago.com, який порівнює і перераховує ціни, наявність вільних місць тощо в різних готелях певного міста. Цей веб-сайт взаємодіє з API декількох готелів для доступу до бази даних і перераховує ціни і наявність вільних місць з їхніх сайтів.
Таким чином, Web API можна визначити як "інтерфейс, який полегшує взаємодію між клієнтською машиною і веб-сервером".
Веб-сервіси
Веб-сервіси - це (як і веб-API) сервіси, які надаються з одного комп'ютера на інший. Але основна відмінність між API і веб-сервісами полягає в тому, що веб-сервіси використовують мережу.
Можна з упевненістю сказати, що всі веб-сервіси є веб-аплікаторами, але не всі веб-аплікатори є веб-сервісами (це пояснюється в останній частині статті). Таким чином, веб-сервіси є підмножиною веб-аплікаторів. Зверніться до наведеної нижче схеми, щоб дізнатися більше про веб-аплікатори та веб-сервіси.
Веб-аплікатор проти веб-сервісів
Веб-сервіси проти веб-аплікатора
І Web API, і веб-сервіси використовуються для полегшення комунікації між клієнтом і сервером. Основна різниця полягає лише в способі їх взаємодії.
Кожен з них вимагає тіла запиту, прийнятного на певній мові, їх відмінності в забезпеченні безпечного з'єднання, швидкості зв'язку з сервером і відповіді клієнту і т.д.
Відмінності між веб-сервісами та веб-аплікаторами наведені нижче для довідки.
Веб-сервіс
- Веб-сервіси зазвичай використовують XML (розширювану мову розмітки), а це означає, що вони більш безпечні.
- Веб-сервіси є більш безпечними, оскільки як веб-сервіси, так і API забезпечують SSL (рівень захищених сокетів) під час передачі даних, а також WSS (безпеку веб-сервісів).
- Веб-сервіс - це підмножина веб-аплікатора. Наприклад, Веб-сервіси базуються лише на трьох стилях використання, а саме SOAP, REST та XML-RPC.
- Для роботи веб-сервісів завжди потрібна мережа.
- Веб-сервіси підтримують "Один код для різних додатків". Це означає, що для різних додатків пишеться більш загальний код.
Веб-аплікатор
- Веб-аплікатор зазвичай використовує JSON (JavaScript Object Notation), що означає, що веб-аплікатор працює швидше.
- Веб-аплікатор працює швидше, оскільки JSON має меншу вагу, на відміну від XML.
- Веб-аплікатори - це підмножина веб-сервісів. Наприклад, Всі три стилі веб-сервісів також присутні у веб-аплікаторі, але крім цього, він використовує інші стилі, такі як JSON - RPC.
- Для роботи Web API не обов'язково потрібна мережа.
- Веб-аплікатор може підтримувати або не підтримувати інтероперабельність, залежно від характеру системи або програми.
Впровадження тестування API у вашій організації
У повсякденному житті ми всі звикли взаємодіяти з додатками за допомогою API, але навіть не замислюємося про внутрішні процеси, які керують основною функціональністю.
Наприклад, Уявімо, що ви переглядаєте товари на Amazon.com і бачите товар/пропозицію, яка вам дуже сподобалася, і ви хочете поділитися нею зі своєю мережею Facebook.
Щойно ви натискаєте на іконку Facebook у розділі "Поділитися" на сторінці і вводите свої облікові дані, щоб поділитися, ви взаємодієте з API, який безперешкодно з'єднує веб-сайт Amazon з Facebook.
Зміщення фокусу на тестування API
Перш ніж говорити про тестування API, давайте обговоримо причини, через які додатки на основі API набули популярності останнім часом.
Існує кілька причин, через які організації переходять на продукти та додатки на основі API. Деякі з них наведені нижче для ознайомлення.
#1) Додатки на основі API є більш масштабованими у порівнянні з традиційними додатками/програмним забезпеченням. Швидкість розробки коду є вищою, і той самий API може обслуговувати більше запитів без значних змін у коді чи інфраструктурі.
#2) Командам розробників не потрібно починати кодування з нуля кожного разу, коли вони починають працювати над розробкою функції або додатку. API найчастіше повторно використовують існуючі, повторювані функції, бібліотеки, збережені процедури і т.д., а отже, цей процес може зробити їх більш продуктивними в цілому.
Наприклад, Якщо ви розробник, який працює над веб-сайтом електронної комерції і хочете додати Amazon як платіжний процесор - тоді вам не доведеться писати код з нуля.
Все, що вам потрібно зробити, це налаштувати інтеграцію між вашим сайтом і Amazon API за допомогою ключів інтеграції та викликати Amazon API для обробки платежів під час оформлення замовлення.
#3) API дозволяють легко інтегруватися з іншими системами як для підтримуваних автономних додатків, так і для програмних продуктів на основі API.
Наприклад Уявімо, що ви хочете відправити вантаж з Торонто до Нью-Йорка. Ви заходите в Інтернет, переходите на добре відомий сайт вантажоперевезень або логістики і вводите необхідну інформацію.
Після надання обов'язкової інформації, коли ви натискаєте кнопку "Отримати тарифи", цей логістичний веб-сайт може з'єднатися з декількома API і додатками перевізників і постачальників послуг, щоб отримати динамічні тарифи для комбінації місць відправлення та призначення.
Повний спектр тестування API
Тестування API не обмежується лише надсиланням запиту до API та аналізом відповіді на коректність. API потрібно тестувати на працездатність під різними навантаженнями на предмет наявності вразливостей.
Давайте обговоримо це детальніше.
(i) Функціональне тестування
Функціональне тестування може бути складним завданням через відсутність графічного інтерфейсу.
Давайте подивимось, чим функціональне тестування API відрізняється від тестування додатків на основі графічного інтерфейсу, а також обговоримо деякі приклади на цю тему.
a) Найбільш очевидною відмінністю є відсутність графічного інтерфейсу для взаємодії. Тестувальникам, які зазвичай проводять функціональне тестування на основі графічного інтерфейсу, трохи складніше перейти до тестування додатків без графічного інтерфейсу порівняно з тими, хто вже знайомий з ним.
Спочатку, ще до початку тестування API, вам потрібно буде протестувати і перевірити сам процес автентифікації. Метод автентифікації буде відрізнятися від API до API і включатиме певний ключ або токен для автентифікації.
Якщо ви не можете успішно підключитися до API, то подальше тестування неможливе. Цей процес можна порівняти з автентифікацією користувача в стандартних додатках, де вам потрібні дійсні облікові дані для входу в систему і використання програми.
b) Тестування валідації полів або перевірки вхідних даних є дуже важливим під час тестування API. Якщо доступний інтерфейс на основі форм (GUI), то валідацію полів можна реалізувати у фронт-енді або бек-енді, таким чином гарантуючи, що користувачеві не буде дозволено вводити невірні значення полів.
Наприклад, Якщо в заявці потрібно, щоб дата була у форматі ДД/ММ/РР, ми можемо застосувати цю перевірку у формі збору інформації, щоб переконатися, що заявка отримана і оброблена з правильною датою.
Однак це не так для API-додатків. Ми повинні переконатися, що API добре написаний і здатний забезпечити всі ці перевірки, відрізнити дійсні дані від недійсних і повернути код статусу і повідомлення про помилку перевірки кінцевому користувачеві у відповіді.
c) Тестування коректності відповідей від API на валідні та невалідні відповіді є дуже важливим. Якщо у відповідь від тестового API отримано код статусу 200 (що означає, що все гаразд), але в тексті відповіді вказано, що виникла помилка, то це є дефектом.
Крім того, якщо саме повідомлення про помилку є некоректним, це може ввести в оману кінцевого користувача, який намагається інтегруватися з цим API.
На скріншоті нижче користувач ввів невірну вагу, яка перевищує допустимі 2267 кг. API відповідає кодом статусу помилки і повідомленням про помилку. Однак у повідомленні про помилку неправильно вказані одиниці ваги - фунти замість кілограмів. Це дефект, який може заплутати кінцевого покупця.
(ii) Тестування навантаження та продуктивності
API за своєю суттю мають бути масштабованими.
Це, в свою чергу, робить тестування навантаження і продуктивності важливим, особливо якщо система, що розробляється, повинна обслуговувати тисячі запитів на хвилину або годину, залежно від вимог. Регулярне виконання тестів навантаження і продуктивності на API може допомогти оцінити продуктивність, пікові навантаження і точку перевантаження.
Ці дані корисні при плануванні масштабування програми. Наявність цієї інформації допоможе у прийнятті рішень і плануванні, особливо якщо організація планує додати більше клієнтів, що означатиме збільшення кількості вхідних запитів.
Як впровадити тестування API у вашій організації
Процес впровадження тестування API в будь-якій організації схожий на процес, який використовується для впровадження або розгортання будь-якого іншого інструменту тестування та фреймворку.
У наведеній нижче таблиці узагальнено основні кроки та очікувані результати кожного з них.
Фаза | Крок | Очікувані результати |
---|---|---|
Вибір інструменту | Зберіть вимоги та визначте обмеження | Розуміти вимоги до дослідження ринку для вибору відповідного інструменту тестування API. Наприклад. Який тип API тестується - SOAP або REST? Чи потрібно наймати тестувальника для цієї ролі або навчати існуючого тестувальника? Які саме тести будуть проводитися - функціональні, на продуктивність тощо. Який бюджет на реалізацію? |
Оцініть доступні інструменти | Порівняйте наявні інструменти та виберіть 1-2 інструменти, які найкраще відповідають вимогам. | |
Підтвердження концепції | Реалізуйте підмножину тестів за допомогою інструменту з короткого списку. Презентуйте результати зацікавленим сторонам. Доопрацювати інструмент, який буде впроваджено. | |
Реалізація | Початок роботи | Залежно від обраного вами інструменту, вам потрібно буде встановити необхідний інструмент на ПК, віртуальну машину або сервер. Якщо ви обрали інструмент на основі підписки, створіть необхідні облікові записи команд. Навчіть команду, якщо потрібно. |
Давай, йди. | Створення тестів Виконання тестів Повідомляти про дефекти |
Загальні виклики та шляхи їх подолання
Давайте обговоримо деякі загальні проблеми, з якими стикаються команди QA, намагаючись впровадити фреймворк для тестування API в організації.
#1) Вибір правильного інструменту
Вибір правильного інструменту для роботи - найпоширеніша проблема. На ринку є кілька інструментів для тестування API, доступних на ринку.
Може здатися дуже привабливим впровадити найновіший, найдорожчий інструмент, доступний на ринку - але якщо він не приносить бажаних результатів, то від нього немає ніякої користі.
Тому завжди обирайте інструмент, який відповідає "обов'язковим" вимогам, виходячи з потреб вашої організації.
Ось зразок матриці оцінки інструментів для доступних інструментів API
Інструмент | Ціноутворення | Примітки |
---|---|---|
Мильний інтерфейс | Безкоштовна версія доступна для SoapUI з відкритим вихідним кодом (функціональне тестування) | * REST, SOAP та інші популярні протоколи API та IoT. * Входить до безкоштовної версії Спеціальне тестування SOAP та REST Затвердження повідомлення Створення тесту Drag & Drop Журнали випробувань Тестова конфігурація Тест із записів Доповідь підрозділу. * Повний перелік функцій можна знайти на їхньому сайті. |
Листоноша | Доступний безкоштовний додаток Postman | * Найчастіше використовується для ВІДПОЧИНКУ. * Детальніше про це можна дізнатися на їхньому сайті. |
Parasoft | Це платний інструмент, який вимагає придбання ліцензії, а потім встановлення, перш ніж його можна буде використовувати. | * Комплексне тестування API: функціональне, навантажувальне, безпекове тестування, управління тестовими даними |
ЖИЛЕТ | На основі кількості користувачів | * Автоматизоване тестування REST API. * Записати і відтворити. * Видаляє залежність з фронтенду та бекенду за допомогою mock API. * Потужна перевірка відповіді. * Працює для тестових додатків, розгорнутих на локальному хості/інтранеті/інтернеті. * Інтеграція з JIRA, інтеграція з Jenkins Імпорт з Swagger, Postman. |
HttpMaster | Експрес-версія: завантажити безкоштовно Професійна версія: на основі кількості користувачів | * Допомагає у тестуванні веб-сайтів, а також у тестуванні API. * Інші функції включають можливість визначення глобальних параметрів, надає користувачеві можливість створювати перевірки для валідації відповідей на дані, використовуючи великий набір типів валідації, які він підтримує. |
Бігунок | Залежно від кількості користувачів і типів тарифних планів | * Для моніторингу та тестування API. * Може використовуватися для перевірки даних, щоб гарантувати повернення правильних даних. * Містить функцію відстеження та сповіщення в разі збою будь-якої API-транзакції (якщо ваш додаток вимагає валідації платежів, то цей інструмент може виявитися гарним вибором). |
LoadFocus | Залежно від кількості користувачів і типів тарифних планів | * Може використовуватися для тестування навантаження API - дозволяє запустити кілька тестів, щоб з'ясувати кількість користувачів, яких може підтримувати API. * Простий у використанні - дозволяє запускати тести в браузері. |
PingAPI | Безкоштовно для 1 проекту (1,000 запитів) | * Корисно для автоматизованого тестування та моніторингу API. |
#2) Відсутні тестові специфікації
Як тестувальники, ми повинні знати очікувані результати, щоб ефективно протестувати додаток. Це часто є проблемою, оскільки для того, щоб знати очікувані результати, ми повинні мати чіткі точні вимоги, а це не так.
Наприклад враховуйте вимоги, наведені нижче:
"Заявка повинна приймати тільки дійсну дату відвантаження, а всі недійсні вимоги повинні бути відхилені"
У цих вимогах відсутні ключові деталі і вони дуже неоднозначні - як ми визначаємо дійсну дату? Як щодо формату? Чи повертаємо ми повідомлення про відмову кінцевому користувачеві і т.д.?
Приклад чітких вимог:
1) У заявці повинна бути вказана лише дійсна дата відправлення.
Дата відправлення вважається дійсною, якщо вона
- Не в минулому
- Більше або дорівнює сьогоднішній даті
- У прийнятному форматі: ДД/ММ/РР
2)
Код статусу відповіді = 200
Повідомлення: ОК
3) Дата відправлення, яка не відповідає вищезазначеним критеріям, вважається недійсною. Якщо клієнт надсилає недійсну дату відправлення, він повинен відповісти наступним повідомленням про помилку (повідомленнями):
3.1
Код стану відповіді НЕ 200
Помилка: Вказана дата відправлення є недійсною; будь ласка, переконайтеся, що дата вказана у форматі ДД/ММ/РР.
3.2
Код стану відповіді НЕ 200
Помилка: вказана дата відправлення була в минулому
#3) Крива навчання
Як згадувалося раніше, підхід до тестування API відрізняється від підходу до тестування додатків на основі графічного інтерфейсу.
Якщо ви наймаєте спеціалістів для тестування API в штаті або залучаєте консультантів, то крива навчання підходу до тестування API або інструменту тестування API може бути мінімальною. Будь-яка крива навчання в цьому випадку буде пов'язана з набуттям знань про продукт або додаток.
Якщо існуючому члену команди доручено навчитися тестуванню API, то, залежно від обраного інструменту, крива навчання може бути від середньої до високої, разом зі зміною підходу до тестування. Крива навчання для самого продукту або додатку може бути від низької до середньої, залежно від того, чи тестував цей тестувальник цей додаток раніше чи ні.
#4) Наявний набір навичок
Це безпосередньо пов'язано з попереднім пунктом про криву навчання.
Якщо тестувальник переходить від тестування на основі графічного інтерфейсу, йому потрібно змінити підхід до тестування і вивчити новий інструмент або фреймворк, якщо це необхідно. Наприклад. Якщо API приймає запити у форматі JSON, то тестувальнику потрібно знати, що таке JSON, щоб почати створювати тести.
Тематичне дослідження
Завдання
Для того, щоб масштабувати існуючий додаток, компанія хотіла запропонувати продукт в API, а також стандартний додаток з графічним інтерфейсом. Команду QA попросили надати план тестового покриття, щоб переконатися, що вони готові до тестування API, окрім звичайних тестів на основі графічного інтерфейсу.
Виклики
- Жоден з інших програмних продуктів не мав архітектури на основі API, отже, щоб пристосувати тестування до цього завдання, команді потрібно було створити процес тестування API з нуля. Це означає, що інструменти повинні були бути оцінені, відібрані, доопрацьовані, а команда повинна була пройти навчання для проведення тестів.
- Додаткового бюджету на придбання та впровадження інструменту не було виділено. Це означає, що команді довелося обрати безкоштовний або з відкритим кодом інструмент тестування API, а також навчити когось із існуючої команди виконувати це завдання.
- Вимог до полів API та валідації даних не було. Вимоги були такими: "має працювати так само, як і відповідний додаток з графічним інтерфейсом".
Підхід, якого дотримується команда для зменшення ризиків та вирішення проблем
- Команда QA працювала з командою проекту, щоб визначити наступні вимоги:
- Тип API (REST/SOAP): ВІДПОЧИНОК
- Необхідні тести (функціональні, навантажувальні, безпекові): Тільки функціональне тестування
- Потрібні автоматизовані тести (Так/Ні): Наразі необов'язково
- Звіти про випробування (Так/Ні): Потрібно
- Команда QA провела оцінку доступних інструментів тестування API на основі обов'язкових вимог. Postman API Tool був обраний як інструмент на їхній вибір, оскільки він був безкоштовним і простим у використанні, що мінімізувало криву навчання, а також мав потенціал для автоматизації тестів і поставлявся з хорошими вбудованими звітами.
- Той самий тестувальник, який тестував додаток, був навчений використовувати Postman для створення початкових тестів, усуваючи таким чином будь-які прогалини в знаннях про продукт.
- Щоб задовольнити відсутні вимоги, команда проекту створила документацію високого рівня на місцях за допомогою Swagger. Однак це залишило деякі прогалини щодо прийнятних форматів даних, і це питання було вирішено командою проекту, а очікувані формати були узгоджені та задокументовані.
Висновок
Останнім часом додатки на основі API набули популярності. Ці додатки є більш масштабованими порівняно з традиційними додатками/програмним забезпеченням і дозволяють легше інтегруватися з іншими API або додатками.
У цьому підручнику з тестування API детально пояснюється все про тестування API, тестування Shift Left, веб-сервіси та веб-аплікатори. Ми також розглянули відмінності між веб-сервісами та веб-аплікаторами на прикладах.
У другій частині підручника ми обговорили повний спектр тестування API, як впровадити тестування API у вашій організації, а також деякі загальні проблеми в цьому процесі та шляхи їх вирішення.
Перегляньте наш наступний підручник, щоб дізнатися більше про веб-служби з прикладами!!!
НАСТУПНИЙ УРОК