Чертовски простое
тестирование API с
Лопато
Алексей
QA, TL, Sith
Верю в Темную
Сторону Силы,
баги бек-енда,
серверные
уязвимости
и другие плохие
вещи...
-
cфера:
аутсорсинговая компания
-
проекты:
mobile, web, IoT, AR/VR…
-
срок проектов:
от 3 месяцев до 6 лет
email - a.lopato@mobidev.biz
skype - alexey.lopato.md
План на сегодня
➔
За что я люблю Postman
➔
Синтаксис
➔
Мониторинг
➔
Макетные (Mock) сервера
➔
Проверки на время отклика
➔
Построение потоков
➔
Использование встроенных библиотек
➔
Очистка переменных
➔
Использование Newman
и многое другое
➔
Пойти на вечеринку, после этого доклада...
Кто такой Postman?
За что я люблю Postman:
➔
простой интерфейс
➔
пре-запросные и тест скрипты с
использованием JavaScript
➔
множество встроенных возможностей
➔
регулярные фиксы и обновления
➔
светлая и
темная
темы оформления:)
➔
поддержка Windows, MacOS, Linux
Коллекции
Коллекции
Описание тестов
Коллекции
Описание тестов
Метод и адрес
Коллекции
Описание тестов
Метод и адрес
Тесты
Коллекции
Описание тестов
Метод и адрес
Тесты
Результаты тестов
Синтаксис для тестов
Синтаксис для тестов
Старый стиль:
tests["Status code is 200"] = responseCode.code === 200;
Новый Стиль
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
Использование Chai BDD:
Chai
– библиотека поддерживает разнообразные
функции для проверок.
Преимущества:
-
Простота создания тестов и читаемый синтаксис;
-
Поддержка чейнов:
to, be, been, is, that, which, and,
has, have, with, at, of, same, but, does; и уточнений:
not, any, NaN, empty, above, below
Использование Chai BDD:
Примеры:
pm.expect(json.results).to.have.lengthOf(1);
pm.expect(json.results[0].name).to.equal("viktor");
pm.expect(pm.response.responseTime).to.be.below(100);
pm.expect(pm.response.code).to.be.oneOf([201,202]);
Итог
Плюсы:
- Поддержка 2х синтаксисов;
- Возможность простого добавления нескольких
проверок в pm.test;
Минус:
- Знания
Chai
– не так страшно, как кажеться;
Это не тот функционал Постмена
который вы ищите...
Мониторинг
Итог
Плюсы:
- Гибкая настройка из коробки (множество
параметров);
- Визуализация и детализация отчетов;
Минус:
- Ограничения 1,000 запросов в месяц – бесплатно;
Макетные
(Mock)
сервера
Итог
Плюс:
- Имитация 1го или множества Эндпойтов;
- Возможность написания тестов для
неготового АПИ;
Минус:
- Статические (захаркодженные) данные;
Проверки
на время
отклика
Итог
Плюс:
- Один тест, с возможностью добавления в
каждый запрос;
- Указание точного времени или диапазона;
- Идентификация проблемных мест;
Минус:
- Postman не предназначен для нагрузочного
тестирования;
Построение
потоков
Синтаксис:
postman.setNextRequest(Имя Запроса);
postman.setNextRequest(null);
Итог
Плюсы:
- Один набор тестов для разнообразных
кейсов;
- Возможность остановить коллекцию при
определенных условиях;
Использование встроенных
библиотек
Итог
Плюс:
- Возможности парсинга HTML;
Минус:
- Сложнее в использовании чем специализованые
инструменты;
Итог
Плюс:
- Быстрота написания 1 теста для всей схемы;
Минусы:
- Множество дополнительных настроек для
JSONсхемы;
- Сложный дебаг непройденных тестов на основе
невнятных логов;
Очистка переменных
pm.environment.unset();
Итог
Плюс:
- Очистка данных полученных из предыдущих
прогонов;
Рекомендация:
- Размещение в начале ваших тестов;
Newman и
автоматизация
Использование:
npm install -g newman
newman run mycollection.json
newman run mycollection.json -n 3
newman run mycollection.json -n 3
-e dev_environment.json -g dev_globals.json -d data.csv
https://github.com/postmanlabs/newman
Итог
Плюс:
- Использования без нагрузки графического
интерфейса из командной строки;
- Предоставляет возможности непрерывной
интеграции - CI;
- Data Driven Testing c данными из CSV файла;
- Поддержка репортеров (html,cli,json,junit);
+
+
+
+
=
Итог:
-
Просто;
-
Быстро;
-
Автоматизация от Темной
Стороны :)
Postman:
-
Лёгок в освоении и использовании;
-
Не идеальный, но универсальный
инструмент с широкими возможностями;
-
Ручное, полу-автоматическое и
автоматическое тестирование;
…и Postman
Спасибо за
внимание!
Вопросы?
Лопато
Алексей
email a.lopato@mobidev.biz
skype alexey.lopato.md
Ridiculously easy API testing with Postman