Чертовски простое тестирование API с
Лопато Алексей QA, TL, Sith Верю в Темную Сторону Силы, баги бек-енда, серверные уязвимости и другие плохие вещи... -cфера:аутсорсинговая компания-проекты: mobile, web, IoT, AR/VR…-срок проектов: от 3 месяцев до 6 лет email - a.lopato@mobidev.bizskype - 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 newmannewman run mycollection.jsonnewman run mycollection.json -n 3newman run mycollection.json -n 3 -e dev_environment.json -g dev_globals.json -d data.csvhttps://github.com/postmanlabs/newman
Итог Плюс:- Использования без нагрузки графического интерфейса из командной строки;- Предоставляет возможности непрерывной интеграции - CI;- Data Driven Testing c данными из CSV файла;- Поддержка репортеров (html,cli,json,junit);
+ + + + =
Итог: -Просто; -Быстро;-Автоматизация от Темной Стороны :)
Postman: -Лёгок в освоении и использовании;-Не идеальный, но универсальный инструмент с широкими возможностями;-Ручное, полу-автоматическое и автоматическое тестирование;
…и Postman
Спасибо за внимание!Вопросы? Лопато Алексей email a.lopato@mobidev.bizskype alexey.lopato.md