
Нагрузочное тестирование api (Postman)
Первым шагом необходимо загрузить коллекцию в инструмент Postman. Для этого нажать на кнопку “Import” и загрузить коллекцию любым удобным способом. Мы загрузили коллекцию в разделе Link.
Рисунок 1. Импорт коллекции запросов
После выгрузки, коллекция запросов отобразилась в дереве запросов, структурированная на основе эндпоинтов.
Рисунок 2. Загруженная коллекция запросов
Для реализации нагрузочного тестирования выберем парадигму пользовательских сценариев. То есть каждый сценарий будет представлять собой последовательное выполнение запросов, в соответствии с наиболее частыми действиями пользователя. Выбранные сценарии для реализации нагрузочного тестирования:
Авторизация;
Создание питомца;
Редактирование питомца;
Создание заказа на питомца;
Для того, чтобы необходимые методы выполнялись последовательно, создадим вспомогательную коллекцию запросов и реструктуризируем необходимые нам запросы.
Рисунок 3. Тестовые сценарии для выполнения нагрузочного тестирования
После того, как сформирован набор тестовых сценариев, необходимо добавить в выполнение методов проверки, которые будут выполнятся после получения ответа на каждый из запросов.
Проверки представлены в листинге 1.
Листинг 1. Проверки для каждого запроса
//POST Create user, Get logs user into system, Get user by user name
//проверка на возвращение успешного статуса
pm.test("200 status",function()
{
pm.response.to.have.status(200);
});
//проверка на ожидаемый результат выполнения
pm.test("Response time",function (){
pm.expect(pm.response.responseTime).to.be.below(400)
})
//POST add a new pet
//проверка на корректный статус ответа
pm.test("200 status",function()
{
pm.response.to.have.status(200);
});
//проверка на ожидаемое время исполнения запроса
pm.test("Response time",function (){
pm.expect(pm.response.responseTime).to.be.below(400)
});
//установка полученных значений из тела ответа в переменные окружения
var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("petId", jsonData.id);
postman.setEnvironmentVariable("petName",jsonData.name)
//GET find pet by id
//проверка на корректный статус ответа
pm.test("200 status",function()
{
pm.response.to.have.status(200);
});
//проверка на ожидаемое время исполнения запроса
pm.test("Response time",function (){
pm.expect(pm.response.responseTime).to.be.below(400)
});
//проверка на корректность полученных данных
pm.test("Is coorect name pet",function(){
var jsonData = JSON.parse(responseBody);
pm.environment.get("petName");
pm.expect(pm.environment.get("petName")==jsonData.name)
});
PUT update pet
//проверка на корректность статуса ответа
pm.test("200 status",function()
{
pm.response.to.have.status(200);
});
//проверка на соответствие ожидаемому времени ответа
pm.test("Response time",function (){
pm.expect(pm.response.responseTime).to.be.below(400)
})
GET find pet by id
//проверка на корректность статуса ответа
pm.test("200 status",function()
{
pm.response.to.have.status(200);
});
//проверка на соответствие ожидаемому времени ответа
pm.test("Response time",function (){
pm.expect(pm.response.responseTime).to.be.below(400)
})
//проверка на корректность внесенных изменений
pm.test("Is changed name pet",function(){
var jsonData = JSON.parse(responseBody);
pm.expect("changeName"==jsonData.id)
});
Для того, чтобы сделать запуск нагрузочного тестирования, необходимо вызвать контекстное меню коллекции запросов и нажать на Run Collection.
Рисунок 4. Контекстное меню коллекции запросов
Открывается окно, где можно указать параметры запуска коллекции. Установим 3 повторения и задержку между запросами в 60 милисекунд.
Рисунок 5. Установка параметров нагрузочного запуска коллекции
После установки всех параметров нажмем
на кнопку “Run Load
Testing”. После выполнения
всех тестовых сценариев в окне отображается
результат запуска.
Рисунок 6. Результат запуска нагрузочного тестирования