QA Boost: 3-денний тренінг

  • Введення в API: Ознайомлення з поняттям API, його роллю у розробці програмного забезпечення та важливістю тестування.

  • Основи тестування API: Розуміння методів тестування API, створення HTTP-запитів, перевірка відповідей, обробка статусу кодів.

  • Автоматизація API-тестів: Введення в автоматизацію тестування API з використанням популярних інструментів, таких як Postman та RestAssured.

  • Тестування безпеки API: Вивчення базових принципів тестування безпеки API та перевірка на вразливості.

Введення в API

Ознайомлення з поняттям API, його роллю у розробці програмного забезпечення та важливістю тестування.

API (Application Programming Interface)

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

Основні аспекти поняття API

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

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

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

  4. Розділення відповідальностей: API дозволяє розділити відповідальність між різними компонентами програми чи різними програмами. Наприклад, серверний API може надавати можливість веб-додаткам звертатися до бази даних, не розкриваючи деталей підключення до неї.

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

Роль API у розробці програмного забезпечення:

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

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

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

  4. Партнерство: Відкриті API дозволяють розробникам створювати додатки, які розширюють функціональність певного програмного продукту. Це важливо для партнерства та розвитку екосистеми навколо продукту.

Важливість тестування API:

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

  2. Інтеграційне тестування: Тестування взаємодії між різними компонентами програмного забезпечення може виявити проблеми, пов’язані з передачею даних або некоректною взаємодією.

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

  4. Безпека: Тестування API може допомогти виявити можливі уразливості, такі як недостатні контролі при передачі даних або доступ до конфіденційної інформації через API.

  5. Автоматизоване тестування: Тестування API може бути автоматизовано, що дозволяє швидко та ефективно перевірити функціональність та стабільність API.

Давайте ще переглянемо презентацію

або відкрити у новій вкладці  Google Презентація

Більше інформації про ведення API

Для отримання додаткового матеріалу потрібно перейти за посиланням 
Google Drive

Давайте пройдемо тести

Введення в API

Трішки юмору

Чому програміст не може знайти свою дівчину?
Тому що він використовує REST API.

Як програмісти вітають один одного?
Вони кажуть: "Привіт, World API".

Як називається API, яке допомагає людям заснути?
Sleepy API.

Як називається API, яке допомагає вам знайти роботу?
LinkedIn API.

Основи тестування API

Розуміння методів тестування API, створення HTTP-запитів, перевірка відповідей, обробка статусу кодів.​

Розуміння методів тестування API:

 

  1. Функціональне тестування API: Тут перевіряється, чи повертають методи та функції очікувані результати. Для цього ви передаєте вхідні параметри через HTTP-запит та перевіряєте, чи повертає відповідь очікуваний результат.

  2. Інтеграційне тестування API: У цьому випадку ви перевіряєте взаємодію між різними компонентами чи сервісами. Ви створюєте сценарії, де одна частина викликає методи іншої частини та перевіряєте, чи відбувається взаємодія належним чином.

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

  4. Тестування продуктивності API: Під час такого тестування перевіряється, як добре API працює під великим навантаженням. Ви вимірюєте час відповіді, швидкість обробки запитів тощо.

 

Створення HTTP-запитів:

 

  1. HTTP-методи: Ви використовуєте методи HTTP, такі як GET, POST, PUT, DELETE, для взаємодії з різними ресурсами.

  2. URI: Ви вказуєте URI (Uniform Resource Identifier) для вказання ресурсу, з яким ви хочете взаємодіяти.

  3. Параметри: Ви передаєте параметри через запити, які можуть включати дані для пошуку, сортування, фільтрації тощо.

Перевірка відповідей:

 

  1. Парсинг відповіді: Ви отримуєте відповідь у форматі JSON, XML або іншому форматі, та парсите її, щоб отримати значущі дані.

  2. Перевірка даних: Ви перевіряєте, чи повернуті дані відповідають очікуванням, та перевіряєте правильність значень.

Обробка статус-кодів:

 

  1. Статус-коди HTTP: При кожному HTTP-запиті сервер повертає статус-код, який вказує на результат операції. Наприклад, 200 означає успішний запит, 404 — ресурс не знайдено, 500 — внутрішня помилка сервера.

  2. Перевірка статус-кодів: Ви перевіряєте статус-код, щоб зрозуміти, чи вдалося виконати запит належним чином.

  3. Обробка помилок: Ви також обробляєте можливі помилки або некоректні статус-коди та реагуєте на них відповідним чином.

Розуміння методів тестування API, створення HTTP-запитів, перевірка відповідей, обробка статусу кодів.

Для отримання додаткового матеріалу потрібно перейти за посиланням 
Google Drive

Більше практики, тестів та інформації на нашому практикуму https://iqaengineer.com/ua/api_testing/

або відкрити у новій вкладці  Google Презентація

Давайте пройдемо тести

Розуміння методів тестування API, створення HTTP-запитів, перевірка відповідей, обробка статусу кодів.​

Трішки юмору

Життя QA інженера: Якщо у вас немає статус-коду для власного життя, можливо, ви маєте оновити свій API.

Одруження як HTTP-запит: Я візьму POST-запит з обіцянкою любові та відправлю на адресу "/вінішуючий/шлюб". Очікуйте статус-код 201 Created!

Якщо тестер взаємодіє зі своїм кофе: GET /кава/збадьорити. Відповідь: 418 I'm a teapot.

Життя без тестування API: Як ви будете знати, чи вам сьогодні довезуть піцу? 404 Pizza Not Found!

Тестери та статус-коди: 200 OK знайти помилки і внести зміни. 500 Internal Server Error відкрито допомагати розібратися.

Спеціалізований інтернет для QA: Якщо ви відкриєте нову вкладку, у вас буде GET-запит. Якщо закриєте, DELETE-запит!

Тестування безпеки API

Огляд безпеки API

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

Аутентифікація та авторизація

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

Тестування ін'єкцій

Це одна з найпоширеніших вразливостей. Під час тестування слід перевірити, чи валідуються та екрануються дані, які надходять від користувача, щоб уникнути SQL-, HTML- та інших ін’єкцій.

Захист від перехоплення сесій

Переконайтеся, що дані, передані між клієнтом та сервером, шифруються та захищені від перехоплення, таким чином унеможливлюючи зловмисникам здійснити атаку MITM (Man-In-The-Middle).3

Валідування даних

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

Більше інформації про тестування безпеки API

Для отримання додаткового матеріалу потрібно перейти за посиланням 
Google Drive

Більше практики, тестів та інформації на нашому практикуму https://iqaengineer.com/ua/api_testing/

або відкрити у новій вкладці  Google Презентація

Давайте пройдемо тести

Тестування безпеки API

Цікаві історії

  1. Крадіжка даних через недостатньо захищені API: У 2017 році компанія Equifax стала жертвою атаки через вразливість в їх API. Зловмисники використали «Broken Authentication» для доступу до конфіденційної інформації понад 143 мільйонів клієнтів, включаючи соціальні номери.

  2. Криза безпеки з Facebook API: У 2018 році було виявлено, що компанія Cambridge Analytica використовувала API Facebook для збору даних мільйонів користувачів без їхньої згоди. Цей інцидент підкреслив важливість правильної аутентифікації та авторизації у великих системах.

  3. Злам Tesla API через перебір паролів: У 2020 році дослідникам вдалося отримати доступ до системи Tesla, використовуючи брутфорс атаку на API, через яке автомобіль керується додатком.

  4. Вразливість OAuth в Reddit API: У 2018 році було виявлено, що Reddit API дозволяв зловмисникам використовувати аутентифікаційний токен для доступу до чужого облікового запису без пароля.

  5. Смарт-годинники та виток даних через API: У 2019 році було виявлено, що деякі смарт-годинники мали вразливості в API, через які зловмисники могли отримати доступ до особистих даних користувачів, таких як геолокація та здоров’я.

  6. Підзарядка електромобілів через API: У 2018 році дослідники виявили вразливість в API для підзарядки електромобілів, яка дозволяла атакувачам переключати зарядку на інші автомобілі або вимикати її взагалі.

  7. Міжнародний аеропорт та недостатня авторизація: У 2014 році дослідники змогли використати API міжнародного аеропорту, щоб отримати доступ до пасажирських даних, включаючи номери бортових квитків.

  8. Злам API для діагностики автомобілів: У 2021 році було виявлено вразливість в API, яке використовується для діагностики та програмування автомобілів. Зловмисники могли отримувати доступ до найсекретніших функцій автомобіля.

  9. Атака на Twitter API: У 2020 році зловмисники використали вразливість в API Twitter для злому облікових записів відомих осіб та компаній, щоб поширити шахрайські повідомлення.

  10. Скарги через недостатню безпеку API фінансових служб: Системи API фінансових служб часто використовуються для передачі грошових коштів. Недостатня безпека API може призвести до втрати грошей та порушення довіри користувачів.

Автоматизація API-тестів: Введення в автоматизацію тестування API з використанням популярних інструментів, таких як Postman та RestAssured.

Автоматизація API-тестів

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

Postman

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

RestAssured

це бібліотека для тестування REST API на мові Java. Вона надає можливість писати тестові сценарії в коді, що дозволяє інтегрувати автоматизовані тести безпосередньо в ваш проект. RestAssured спрощує створення запитів, перевірку відповідей та обробку статусу кодів.

Тести в RestAssured

або відкрити у новій вкладці  Google Презентація

Тести в Postman

або відкрити у новій вкладці  Google Презентація

Більше інформації про автоматизацію тестування API

Для отримання додаткового матеріалу потрібно перейти за посиланням 
Postman
RestAssured
Сніпети

Більше практики, тестів та інформації на нашому практикуму https://iqaengineer.com/ua/api_testing/

Давайте пройдемо тести

Автоматизація API

Практичні завдання

Перехід