Как я могу сравнить RESTful-сервис с переменными параметрами? - PullRequest
1 голос
/ 06 марта 2012

В настоящее время я работаю над сравнительным тестированием RESTful-сервиса, который я сделал, и отчасти хочу убедиться, что он работает в разумное количество раз для большого массива параметров. Например, допустим, у меня есть RESTful API вида some_site.com/item?item_id=y. В этом случае, чтобы убедиться, что мой сервис работает так быстро, как мне хотелось бы, я бы хотел попробовать много значений для y по одному, предпочтительно из какого-то текстового файла. Я не могу придумать способ сделать это в ab или httperf. Я открыт для использования другой программы бенчмаркинга, если есть, но предпочел бы что-нибудь простое и легкое. То, что я хочу сделать, кажется чем-то довольно стандартным, так что я предполагаю, что уже должна быть программа, которая позволит мне это сделать, но примерно час поиска в Google не получил ответа. Идеи? * * 1002

Ответы [ 2 ]

1 голос
/ 03 апреля 2012

У меня только что был хороший опыт использования JavaScript (через BSF / Rhino) в JMeter.

Я поместил одну группу потоков в свой план тестирования и прикрепил «Простой контроллер» с двумя элементами под ним - сэмплер «HTTP Request» и «BSF PreProcessor».

Установите для языка BSF значение «javascript» и введите код в текстовое поле или укажите его в файле (используйте полный путь или относительно CWD процесса JMeter).

/* Since `Math.random()` gives us float, we use `java.util.Random()`
 * see: http://docs.oracle.com/javase/7/docs/api/java/util/Random.html */
var Random = new Packages.java.util.Random();

var min = 10-1;
var max = 2;
var maxLines = (min)+Random.nextInt(max-min);

var s = '';

for (var d = 0; d <= maxLines; d++) {
  s += d.toString()+','+Random.nextInt(1000).toString()+'\n';
}

// s => '0,312\n1,104\n2,608\n'

vars.put('PAYLOAD', s);

Теперь я могу сослаться на ${PAYLOAD} в HTTP-запросе!

Вы можете сгенерировать JSON, но вам потребуется обновить jakarta-jmeter-2.5.1/lib/js-1.6R5.jar до последней версии Rhino , чтобы получить JSON.stringify и JSON.parse. Это прекрасно сработало и для меня, хотя я подумал, что приведу здесь простой пример.

Вы также можете использовать препроцессор BSF для параметров URL, просто установите другую переменную с помощью vars.put('X', 'some value') и передайте ее как ${X} в параметре запроса.

Этот пост в блоге , кстати, немного помог.

1 голос
/ 08 марта 2012

Ответ: Jmeter (который, очевидно, потрясающий). Этот FAQ объясняет, как это сделать. Надеюсь, это поможет кому-то еще, так как мне потребовался целый день поисков, чтобы понять это.

...