Этот метод будет имитировать работу assert, так как в JavaScript нет этой встроенной функции или ключевого слова. Для понимания способа реализации этого метода на практике я расскажу о том, как assert работает в других языках программирования. Нельзя недооценивать скорый дедлайн, проблемы сервера с API, проблемы с интернетом и внезапное изменение API. Недостаток опыта тестирования и знаний JavaScript приведет к увеличению времени на написание автотестов. Таким образом, закладывая время на разработку тестов, старайтесь все это учесть для точной оценки сроков и качественного тестирования. Наконец, еще раз хочу напомнить, что тестирование API становится особенно востребованным в свете растущей популярности микросервисной архитектуры.
Например, у меня был случай, когда на проекте обновили библиотеку и она стала намного жестче с ошибкам интеграции. Тут то и выяснилось, что запросы исходные системы присылали “кто во что горазд”. Обратите внимание на то, что мы вроде как тестируем API-метод, но после его выполнения лезем в графический интерфейс и проверяем, как там выглядит результат нашего запроса.
Если же это апи другое (например, это библиотека на каком то языке програмирования), то тут вариантов не много – писать тесты на этом языке и планомерно покрывать все варианты. Если же swagger нет, тогда можно написать ручками. Тут ничего сложного нет и зависит только от Ваших возможностей и того, что есть в компании.
Оптимальность кода достигается тщательным продумыванием каждой строчки и отсечением всего лишнего; при этом алгоритм должен выполняться за минимальное число шагов. В качестве приятного бонуса я приведу небольшую пошаговую инструкцию по воспроизведению запроса в Fiddler. В свою очередь, SOAP API передает все инструкции в подробном письме стандартного вида, используя конверт (единичный HTTP-запрос) лишь как средство доставки. Для лучшего понимания разницы подходов я рекомендую читателю посмотреть следующую инфографику.
Казалось бы, программные интерфейсы – это территория разработчиков. Ниже мы рассмотрим выгоды использования тестирования API. Включаю запись, смотрю каждый шаг, который показал стейкхолдер, и по этим действиям составляю тест-кейсы с ожидаемым результатом. Таски усложняются именно тем, что доступ к исходному веб-приложению ограничен, а возможность выполнения задач принимают статус «Заблокирован».
API (Application Programming Interface) – это набор инструкций и протоколов, которые позволяют программам взаимодействовать между собой. API используются для обмена данными между разными приложениями, веб-сервисами и серверами. По факту это всё то же самое, что в GUI + дополнительные тесты. В интерфейсе нельзя подвигать местами поля или изменить название поля.
Postman поддерживает множество типов авторизации, параметры для каждого из них отличаются. Используем авторизацию по API Key, полученному из личного кабинета в Test IT. Прописываем название соответствующего API, в данном случае api/register. Речь пойдёт об архитектуре REST, часто использующейся для взаимодействия сайтов и приложений. При этом активно применяется JSON (JavaScript Object Notation – текстовый формат обмена данными на языке JavaScript). Практиковать составление запросов можно, используя ресурс reqres.in.
Только вот из такого текста разработчик очень долго будет угадывать, что не понравилось системе… Нехорошо, стоит завести баг. Это как раз особенность API, поэтому очень важно её проверить. Бизнес-логика и проверки “а что можно ввести в такое-то поле” одинаковы для GUI и API, а вот переставить поля местами в графическом интерфейсе не получится. На конкретных примерах мы остановимся подробнее в следующих разделах. Этим и отличается API от GUI — тут нельзя снять границу из серии “убрать maxlenght”, зато можно и нужно проверить особенности API запросов. Потому что нет абстрактных методов, которые делают “ничего”, просто отправляются.
Ведь потом изменится входной запрос и у нас вся интеграция сломается! А это нехорошо… Так что смотрим как система реагирует на перестановки. Так что прячем hidden-заголовки и проверяем без них в этом пункте.
При написании же автотеста без этих методов вы будете вынуждены выполнить его до конца со всеми проверками, которые можно было бы и не делать из-за уже найденных ошибок. Стоит отметить, что и Java, и Python имеют средства работы с http в числе стандартных возможностей, но https://deveducation.com/ я неоднократно сталкивался с мнением, что они не слишком удобны. Просмотрите внимательно оставшиеся после применения фильтра запросы и постарайтесь выявить те, которые относятся именно к логике действий. В случае необходимости обратитесь за разъяснениями к разработчикам.
После запуска в Postman стоит создать папку с коллекцией запросов. Для этого нужно во вкладке Collections нажать на New Collection. В примерах рассмотрим статус 200 ОК, который информирует об успешности выполнения операции, т.е.
Также спросил, нет ли у них swagger или чего то подобного. Если есть – супер, можно уже начать ручное тестирование – читаем документацию и пробуем. Не забываем протестировать “разнообразные варианты”. Настал день, когда команда разработки познакомилась с заказчиками. Провели онлайн-встречу, customer показал свое веб-приложение и как с ним работать, мы задали интересующие нас вопросы и записали встречу на видео.
В API это ещё важнее, чем просто в графическом интерфейсе. Поймет ли пользователь, что именно он сделал не так, где именно ошибся? Помните, плохое сообщение об ошибке приведет к тому, что вас будут дергать по пустякам, вырывая из контекста. Читаем, как должно быть, проверяем, как есть на самом деле.
С бизнесовой точки зрения очень удобно, когда все ошибки прописывают прямо в ТЗ. Это можно быть разделение на «Особенности использования» и «Исключительные ситуации», как в Folks (логин для входа тут). Тогда тестируем блок «Исключительные ситуации».
Или вот описание Jira Cloud REST API, выберем в левом навигационном меню какой-нибудь метод, например «Delete avatar». Там есть описание метода, а потом в блоке Responces переключалки между кодами ответов. Настало время приступить к написанию автотестов! Давайте попробуем сделать что-то посложнее, применив метод вложенных условий. Для улучшения структуры и оптимальности кода, а также сокращения времени на анализ ошибок FAIL, я хочу предложить вам использование двух методов – вложенных условий и assert’ов. С другой стороны, механизм авторизации бывает достаточно сложным, его не всегда легко пройти только с помощью запросов.
Работал автоматизатором на крупном государственном проекте. В статье речь будет идти о REST API, так как этот подход является более распространенным из-за своей относительной простоты и удобства для разработчиков. SOAP API преимущественно характерен для больших корпоративных (enterprise) систем. Вы не видите, что внутри у замка, но вы можете использовать инструменты и собственное восприятие, чтобы пощупать замок и узнать, что же у него внутри. А также вы знаете про другие замки и можете применить эту информацию к этому конкретному. Конечно, в этой ситуации сложно исполнить такую работу, не имея самого основного инструмента под рукой.
Смотрим на то, что все поля из требований вернулись, и что в них правильное значение. А то вдруг я сохраняю имя “Оля”, а там всегда сохраняется “Тестовый”… Очень удобно сразу автотесты писать в том же постмане, если отдельного фреймворка нет — идем по ТЗ и каждое поле выверяем. Самое простое, что можно сделать — дернуть пример из документации, чтобы посмотреть, как метод вообще работает.
Здесь команда path(«results.total») позволяет извлечь значение, используя JsonPath либо XPath (в зависимости от того, в каком формате предоставлен ответ). Обратите внимание, что вызываемый метод postRequest определен в моем фреймворке, а не в библиотеке rest-assured. Для работы с языком Python используется популярная библиотека requests. Проанализируйте приходящие ответы (вкладка Response) и их коды.
Окончила бакалавриат в УрФУ в 2016 году по специальности “Фундаментальная информатика и информационные технологии”. В настоящее время продолжает обучение в УрФУ в магистратуре по специальности “Инженерия программного обеспечения”. В сентябре 2017 года прошла стажировку в “Лаборатории качества”. Любимая цитата “Работать надо не 8 часов, а головой”.
Между PATCH и DELETE запросами скорость также зависит от логики сервера и конкретной ситуации. Оба запроса могут работать быстро, если используются оптимальные методы обработки данных на сервере. В итоге оба метода свелись к выбору между «читаемостью кода», «легкостью и скоростью реализации автотеста» и «количеству найденных ошибок при одном запуске теста». Если вы хотите быстро писать автотесты, но при этом готовы исправлять ошибки по мере их обнаружения, то используйте метод assert’ов. Если у вас есть время на продумывание структуры проверок, выявление зависимостей параметров в ответе, и вы хотите получить все ошибки сразу – используйте метод вложенных условий.
Конечно, для понимания проще «parsed»/«pretty print», но в том случае, когда вам необходимо скопировать часть запроса, лучше переключиться в режим «source». Кроме того, скорость запроса также зависит от факторов, тестирование api таких как скорость сети, загруженность сервера и оптимизация кода API. Поэтому важно проводить тестирование производительности API и выбирать оптимальные методы запросов в каждой конкретной ситуации.