Автоматизируйте отправку запроса и сохранение ответа

Есть URL-адрес, который я хочу нажать и сохранить ответ. Идентификатор URL необходимо увеличивать каждый раз и сохранять ответ. Например -

Первый запрос на получение – http://google.com/getdata/?Id=1

Первый ответ - один

Второй запрос — http://google.com/getdata/?Id=2

Второй ответ - два

и так далее...

Я хочу каждый раз выполнять запрос с увеличением идентификатора и сохранять ответ

Я пытался использовать fiddler, но не смог понять, как увеличить идентификатор и сохранить ответ.

P.S. - Я должен сделать около 6 00 000 просмотров


person Karma5    schedule 02.04.2018    source источник
comment
какой язык сценариев вы планируете использовать?   -  person srp    schedule 02.04.2018
comment
Можете ли вы уточнить, как вы хотите сохранить ответы?   -  person user7294900    schedule 02.04.2018


Ответы (7)


Поскольку упоминается тег «Почтальон», я могу помочь вам в реализации этого в Postman. У Postman есть приятная особенность использования «переменных».

Вы можете использовать переменные среды или глобальные переменные.

Подробнее об этом читайте в их документации: https://www.getpostman.com/docs/v6/postman/environments_and_globals/variables

Вы можете использовать глобальную переменную, такую ​​​​как «счетчик», и установить для нее значение 1 / любую начальную точку, которую вы хотите. Затем вы можете изменить свой запрос следующим образом: http://google.com/getdata/?Id={{iteration}}

Теперь в скрипте Tests запроса можно написать следующий скрипт

let i = parseInt(pm.globals.get('iteration')) + 1; pm.globals.set('iteration', i);

Кроме того, для доступа к ответу вы можете использовать следующую команду в сценарии Test: console.log(pm.response); // Use pm.response as per your needs

Сохраните запрос в коллекции. Теперь загрузите Postman's Runner и выберите коллекцию. Теперь вы можете установить количество итераций 6 00 000 и нажать «Выполнить»!

Помните, что тяжелые итерации приведут к снижению производительности.

person Sivcan Singh    schedule 02.04.2018
comment
Я получаю сообщение об ошибке, в запросе нет тестов - person Karma5; 02.04.2018
comment
Это не ошибка. Бегун показывает, что вы не настроили никаких тестов. Однако, если вы написали console.log внутри запросов, то 1). Запустите Консоль Почтальона (Вид › Консоль Почтальона) 2). Теперь запустите сборку с помощью runner. Вы увидите, что ваши ответы зарегистрированы в консоли. - person Sivcan Singh; 02.04.2018
comment
Проблема в том, что {{iteration}} отображается как неразрешенная переменная, переменная не определена в текущей среде. - person Karma5; 02.04.2018
comment
О, вы настроили среду, а затем поместили в нее переменную «итерация»? Когда вы используете бегун, вам нужно выбрать «Среда» из раскрывающегося списка — он находится чуть выше поля итераций с левой стороны. - person Sivcan Singh; 03.04.2018

В JMeter вам нужно щелкнуть , Ctrl+0 и Ctrl+1, чтобы создать группу потоков и HTTP-запрос

В группе тем введите нужное количество обращений в Number of Threads (users).

В HTTP-запросе укажите Server Name or IP www.google.com и Path /getdata/?Id=${__threadNum}.

__threadNum создаст увеличивающееся число от потока 1 до числа обращений.

Для небольшого количества обращений или отладки вы можете добавить Просмотр дерева результатов для просмотра запроса. /response, нажав Ctrl+9 на уровне Test Plan/Thread Group.

Чтобы сохранить ответ, используйте постпроцессор, в частности, добавив экстрактор регулярных выражений ниже HTTP. Запросите, нажав Ctrl+2.

Позволяет пользователю извлекать значения из ответа сервера с помощью регулярного выражения типа Perl. В качестве постпроцессора этот элемент будет выполняться после каждого запроса Sample в своей области, применяя регулярное выражение, извлекая запрошенные значения, генерируя строку шаблона и сохраняя результат в заданное имя переменной.

Импортируйте, чтобы заметить, что для нагрузочного тестирования вам необходимо работать с неграфическим интерфейсом. режим, что означает вызов jmeter с использованием командной строки как jmeter -n -t myTest.jmx

вы будете использовать режим командной строки (называемый режимом без графического интерфейса пользователя), чтобы запустить его для нагрузочного теста. Не запускайте нагрузочный тест в графическом режиме!

Для сохранения всех ответов в один файл см. file">сохранить данные ответа или, если вы хотите сохранить файл для каждого потока/пользователя, вы можете добавить Сохранить ответы в файл

person user7294900    schedule 02.04.2018
comment
Спасибо за ваш ответ. Я не могу понять процесс сохранения ответа. Не могли бы вы уточнить. - person Karma5; 02.04.2018
comment
@Karma5 Добавлены дополнительные сведения о сохранении ответов. - person user7294900; 02.04.2018

Скрипач:

Откройте редактор скриптов (Control + r ), затем добавьте следующий код внутрь OnBeforeResponse.

 static function OnBeforeResponse(oSession: Session) {
        if(oSession.oRequest["X-SAVE-ME"] != "")
        {
            oSession.SaveResponseBody("C:\\tempfiddler\\" + oSession.SuggestedFilename);
        }

    }

Перейдите на вкладку «Композитор» и включите заголовок X-SAVE-ME с любым значением, в URL замените свой ID на # (примерно так: http://google.com/getdata/?Id=#) теперь запросит начальное и конечное значение ID перед выполнением;

person Volpato    schedule 02.04.2018

Пожалуйста, найдите снимок ниже для вашего сценария.

План_тестирования сценария

Сначала перейдите в свойства пользователя и введите «sample_variables = ID, Response_File_Name» или любое другое имя, которое вы выберете для переменных. Перезапустите jmeter. Создайте следующий план: -

  1. Конфигурация набора данных CSV, чтобы иметь добавочные значения и имя файла ответов
  2. HTTP-запрос будет использовать ${ID}
  3. Сохранение ответа в файл будет использовать ${Response_File_Name}

Надеюсь, это поможет.

person sunny_teo    schedule 02.04.2018

Я бы сделал это с помощью командной строки, используя цикл while с завитком к URL-адресу, сохраняя результат тела на стандартном выходе в файл. Это будет выглядеть примерно так:

for i in {1..600000}; do curl "http://google.com/getdata/?id=$i" > body-result-id-$i; done

Я не смог протестировать приведенную выше строку, потому что сейчас у меня нет доступа к консоли, но я думаю, что она должна работать.

person Lluís Suñol    schedule 02.04.2018

В Burp вы можете сделать это с помощью инструмента Intruder. Сначала запишите образец запроса в Burp. Если вы не знаете, как это сделать, обратитесь к начало работы.

Затем щелкните запрос правой кнопкой мыши и выберите «Отправить злоумышленнику».

На вкладке «Позиции» в Intruder сначала нажмите «Очистить», затем выберите раздел, который вы хотите изменить, и нажмите «Добавить».

На вкладке «Полезные нагрузки» выберите тип полезной нагрузки «Числа» и настройте диапазон.

Нажмите «Начать атаку».

Для получения дополнительной информации обратитесь к документации.

person PortSwigger    schedule 03.04.2018

Еще одно решение заключается в том, что вы можете использовать счетчик в jmeter. Это вы можете найти снизу по пути Группа потоков> configElement> Счетчик.

  1. Настройте счетчик в соответствии с вашими потребностями.
  2. Дайте ссылочное имя i для счетчика.
  3. Используйте переменную в своем запросе

Чтобы получить больше информации.

CounterForIncrementID

person prat22    schedule 03.04.2018