ведущий QA-инженер, ООО «ГК «Иннотех», РФ, г. Москва
СТРАТЕГИЯ ПОДГОТОВКИ ТЕСТОВЫХ ДАННЫХ ЧЕРЕЗ POSTMAN FLOWS ПРИ ТЕСТИРОВАНИИ API
АННОТАЦИЯ
В сфере разработки программного обеспечения тестирование играет ключевую роль в обеспечении качества и стабильности продукта. Неотъемлемой частью процесса тестирования является работа с тестовыми данными. Часто, подготовка этих данных превращается в рутинную, трудоемкую и подверженную ошибкам задачу, особенно когда речь идет о тестировании API. В связи с необходимостью решения этих проблем, целью работы явилась разработка стратегии по подготовке тестовых данных через инструмент Postman Flows и оценка возможностей применения данной технологии. В исследовании применялись методы системного анализа и моделирования информационных процессов. Результаты позволяют рекомендовать предложенную стратегию к внедрению в проект с целью повышения эффективности тестирования и сокращения времени и трудозатрат на его проведение.
ABSTRACT
In the field of software development, testing plays a key role in ensuring product quality and stability. Working with test data is an integral part of the testing process. Often, preparing this data turns into a routine, time-consuming and error-prone task, especially when it comes to API testing. Due to the need to solve these problems, the aim of the work was to develop a strategy for preparing test data through the Postman Flows tool and evaluate the application of this technology. The research used methods of system analysis and modeling of information processes. The results allow us to recommend the proposed strategy for implementation in the project in order to increase the effectiveness of testing and reduce the time and labor costs for its implementation.
Ключевые слова: тестирование ПО, контроль качества, обеспечение качества, тестовые данные, инструменты тестирования
Keywords: software testing, quality control, quality assurance, test data, testing tools
Тестирование контракта Application Programming Interface (API) — это неотъемлемая часть разработки программного обеспечения. Оно позволяет убедиться в корректной работе API, его стабильности и безопасности. Для эффективного тестирования API необходимы тестовые данные, которые имитируют реальные запросы и ответы и соответствуют структуре, ограничениям и бизнес-правилам системы. В связи с этим, для упрощения процесса тестирования и повышения его эффективности широко применяются различные способы, позволяющие генерировать тестовые данные, соответствующие заданным критериям. Рассмотрим основные из них.
1. Postman API предлагает мощный инструмент для работы с API — коллекции запросов, позволяющий собирать запросы, группировать их в коллекции и запускать в определенной последовательности. На первый взгляд, это звучит как идеальное решение, но у Postman есть свои ограничения:
- Слабая конфигурируемость. Невозможно задать сложные связи между запросами: поддерживается только линейная последовательность. Это означает, что невозможно создать сценарий, где один запрос зависит от результатов нескольких других, например, если нужно использовать данные из одного запроса для другого.
- Ограниченная гибкость. Postman API не позволяет использовать динамические данные, такие как случайные числа, даты, или данные из внешних источников. Это ограничивает возможности для создания реалистичных тестовых данных.
Таким образом, этот инструмент подходит для простых сценариев, но для сложных тестов, где требуется "интеллектуальная" генерация данных, он оказывается недостаточно мощным.
2. Insomnia предлагает более продвинутую систему для работы с запросами. В ней есть возможность создавать цепочки запросов (Chains), где каждый запрос может быть зависимым от предыдущих. Это позволяет создавать тесты, имитирующие реальные пользовательские сценарии.
Однако, существует ряд недостатков при работе со сложными сценариями:
- При разработке сложных тестовых сценариев невозможно отслеживать зависимости.
- Ограниченная работа с зависимыми данными: при необходимости получать идентификаторы (ID) из нескольких предыдущих запросов, Insomnia может выполнить их только один раз. Например, если нам необходимо создать транзакцию, где отправитель и получатель — разные пользователи, Insomnia сгенерирует только один ID для обоих. Это приводит к некорректным данным и не позволяет полностью имитировать реальный сценарий.
Можно сделать вывод, что Insomnia - полезный инструмент для простых сценариев, но для сложных, с множеством взаимосвязей и зависимостей, его функционал ограничен.
3. Cамый гибкий и мощный подход — это использование скриптов, который позволяет описать тестовые сценарии с помощью языка программирования, что позволяет создавать сценарии любой сложности, использовать динамические данные, а также работать с результатами выполнения других запросов. Однако:
- Данный метод требует знаний языков программирования, что может быть препятствием для тестировщиков, которые не имеют опыта разработки.
- Сложность отладки ошибок в скриптах.
В итоге, скрипты — самый гибкий и мощный инструмент для генерации тестовых данных, но он требует определенных навыков и может быть сложным в изучении.
Рассмотрим генерацию тестовых данных через инструмент Postman Flows на примере тестирования REST API сервера, имитирующего работу платежной системы. Для полноценного тестирования необходимо выполнить ряд действий:
1. Авторизация - получение доступа к системе с правами администратора.
2. Создание пользователей - создание нескольких тестовых пользователей, чтобы имитировать реальные операции.
3. Проведение транзакций - осуществление перевода средств между созданными пользователями.
В Postman Flow можно создать набор запросов, который автоматизирует процесс подготовки тестовых данных для всех шагов сценария. Рассмотрим данный процесс подробнее. Основой Flow является блок запроса, Send Request в котором указан какой-либо запрос из коллекции, например Environment, переменные которого будут отображаться в данном блоке. На схеме это baseUrl для сбора url для каждого environment и token для авторизации. При необходимости можно так же использовать любые другие переменные. Начало сценария по созданию транзакции идет следующим образом: создаются два пользователя: отправитель и получатель. Далее процесс из первого блока идет в SendRequest, цифра «2» обозначает количество повторов цикла, внутри которого происходит создание пользователя результатом чего является ID. Затем данный ID отправляется в блок Collect, который аккумулирует в себе данные, генерирующиеся в цикле при каждой итерации. Результатом работы двух циклов первого блока является создание двух пользователей: отправителя и получателя дальнейшей транзакции. Вторым этапом «CreateTransaction» создается непосредственно транзакция, в запросе которой передаются: ID созданных пользователей, сумма транзакции, ID транзакции, после чего данные логируются в следующем виде:
> POST http://localhost:3000/users
> POST http://localhost:3000/users
> POST http://localhost:3000/transactions
"031ac42a-2ca4-4a3f-9ddc-413dffae690ff"
Рисунок 1. Схема автоматизированных запросов по подготовке тестовых данных в Postman Flow
Более сложные тестовые сценарии рекомендуется декомпозировать до простых линейных.
Таким образом можно выделить ряд плюсов генерации тестовых данных через инструмент Postman Flow:
- Простой и интуитивно понятный интерфейс, позволяющий создавать автоматизированные тесты и процессы без написания кода.
- Flow предлагает "схемы" - готовые блоки кода, которые можно использовать для различных задач. Это позволяет быстро начать работу с инструментом, при отсутствии глубоких знаний в программировании. Не нужно тратить время на написание сложных кодов, достаточно выбрать подходящий "сниппет" и добавить переменные.
- Возможность легко визуализировать структуру и взаимосвязи между API-запросами для организации представления порядка запросов и их данных, что делает процессы тестирования более прозрачными и понятными.
- Возможность автоматизации повторяющихся действий, такие как отправка запросов, обработка ответов и проверка данных, что позволяет сфокусироваться на более сложных задачах, требующих творческого мышления.
К недостаткам инструмента можно отнести отсутствие возможности экспортировать коллекции в оффлайн и возможность работы только в облачном решении Postman Flow, что может стать проблемой если нужно использовать инструмент без доступа к интернету или если необходимо хранить тесты локально, а также наличие дефектов, которые могут влиять на результаты тестирования.
Таким образом, мы рассмотрели алгоритм генерации данных через Postman Flow на примере создания тестовых пользователей и проведения транзакции между ними. Можно сделать вывод, что Postman Flow – это многофункциональный инструмент, который позволяет значительно упростить и ускорить процесс подготовки тестовых данных для API. Он позволяет автоматизировать рутинные операции, обеспечить точность и повторяемость данных, что в конечном итоге приводит к более эффективному и продуктивному процессу тестирования.
Генерация тестовых данных по заданным критериям имеет ряд преимуществ: ускорение процесса тестирования так как генераторы данных позволяют быстро создавать большие объемы тестовых данных, что сокращает время, затрачиваемое на ручное создание тестовых наборов; повышение качества тестирования и проверка системы в различных сценариях, выявляя скрытые ошибки и недоработки; а так же повышение эффективности разработки. Генерация тестовых данных автоматизирует рутинные задачи, освобождая время тестировщиков для более важных задач. Важно отметить, что генерация тестовых данных не должна происходить рандомно. Необходимо тщательно продумать требования к структуре, ограничениям и бизнес-правилам, чтобы генерируемые данные были достоверными и максимально приближенными к реальным условиям. Таким образом, генераторы тестовых данных являются ценным инструментом для разработчиков и тестировщиков, повышающим эффективность и качество разработки программного обеспечения.
Выбор решения для генерации тестовых данных зависит от конкретной ситуации, сложности API, наличия необходимых навыков и ресурсов. Если нужны простые тестовые данные, Postman или Insomnia могут быть достаточными. Для сложных сценариев и использования динамических данных, скрипты — лучший выбор. Однако существуют и альтернативные решения, которые могут быть более удобными в конкретной ситуации. Выбор правильного инструмента и подхода поможет создать реалистичные тестовые данные, увеличить покрытие тестами и обеспечить качественное тестирование API.
Список литературы:
- Duda R.O., Hart P.E., Stork D.G. Pattern classification and scene analysis. New York: Wiley, 1973. V. 3., 73-74 с.
- Dusting E., Rashka J., Paul J. Automated Software Testing / ADDISON-WESLEY. – 2022, 146-147 с.
- Westerveld D. API Testing and Development with Postman: A practical guide to creating, testing, and managing APIs for automated software testing. Packt Publishing – 2021. – 89-92 c.
- Ефимов, С.Н. Проектирование вычислительной сети эффективной архитектуры для распределенного решения сложных задач / С.Н. Ефимов, В.В. Тынченко, В.С. Тынченко; под ред. проф. Г.П. Белякова // Вестник Сибирского государственного аэрокосмического университета : сб. науч. тр. – Красноярск : СибГАУ. – 2007. – Вып. 3(16). – 36-41 с.
- Зеленов С.В., Зеленова С.А.. Генерация позитивных и негативных тестов парсеров // Программирование, том. 31, №6, 2005, 25–40 с.
- Избачков Ю.С., Петров В.Н., Васильев А.А., Телина И.С. Информационные системы: Учебник для вузов. 3-е изд. / Спб.: Издательский дом «Питер», 2021. С. 114.