В настоящее время я работаю над бенчмаркингом службы RESTful, которую я сделал, и часть этого заключается в том, чтобы убедиться, что она работает разумное количество раз для большого набора параметров. Например, предположим, что у меня есть RESTful API вида some_site.com/item?item_id=y
. В этом случае, чтобы быть уверенным, что мой сервис работает так быстро, как мне хотелось бы, я хотел бы попробовать много значений для y одно за другим, желательно из какого-нибудь текстового файла. Я не могу понять, как это сделать в ab или httperf. Я готов использовать другую программу бенчмаркинга, если она у меня есть, но предпочел бы что-то простое и легкое. То, что я хочу сделать, кажется чем-то довольно стандартным, поэтому я предполагаю, что уже должна быть программа, которая позволяет мне это сделать, но час или около того гугления не дал мне ответа. Идеи?
Как сравнить службу RESTful с переменными параметрами?
Ответы (2)
Ответ: Jmeter (что, по-видимому, круто). В этом разделе часто задаваемых вопросов объясняется, как это сделать. Надеюсь, это поможет кому-то еще, так как мне потребовался день поиска, чтобы понять это.
У меня только что был хороший опыт использования JavaScript (через BSF/Rhino) в JMeter.
Я поместил одну группу потоков в свой план тестирования и вставил «Простой контроллер» с двумя элементами под ним — сэмплером «Запрос HTTP» и «Предварительный процессор BSF».
Установите язык 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}
в параметре запроса.
Это сообщение в блоге очень помогло немного, кстати.