2017-02-07 3 views
0

Я пытаюсь сделать HTTP-запрос в JMeter, который содержит несколько случайных чисел в пределах фиксированного диапазона (в частности, 0-50). С каждым запросом мне нужно отправить около 45 различных целых чисел, поэтому по любому заданному запросу в пределах указанного диапазона есть шесть целых чисел, которые не включены. Очевидно, что {__Random()} не работает, так как он неизбежно генерирует некоторые равные значения. Моя идея, и, пожалуйста, медведь со мной, потому что я новичок в этом, должен был создать массив целых чисел, например:Несколько уникальных случайных значений в одном запросе в JMeter

String line = "0, 1, 2, 3, 4, 5....."; String[] numbers = line.split(",");

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

vars.put("VAR_" + counter, line); VAR_1 = 1 VAR_2 = 2 and so on...

затем перетасовать массив (который я не знаю, как это сделать в Beanshell) и генерировать что-то вроде:

VAR_1 = 16 VAR_2 = 27 ...

отправить со следующей просьбой.

Если кто-нибудь может помочь мне с этим или предложить более простой способ, я бы очень благодарен. Благодарю.

ответ

0

Я понял это. Это своего рода уродливое и громоздкое, но довольно простое и делает именно то, что мне нужно для этого. В JSR223 PreProcessor мой код

def list = [0,1,2,3,4,5,.....]; 
Collections.shuffle(list); 
String VAR_1 = Integer.toString(list.getAt(0)); 
vars.put("VAR_1", VAR_1); 
String VAR_2 = Integer.toString(list.getAt(1)); 
vars.put("VAR_2", VAR_2); 
String VAR_3 = Integer.toString(list.getAt(2)); 
and so on..... 

Мне пришлось ввести 50 переменных вручную. Я уверен, что был более простой способ, но я вполне доволен. Спасибо за предложения.

0
  1. перетасовать список просто использовать Collections.shuffle() методу
  2. Рассмотрите возможность использования JSR223 Test Elements и Groovy language вместо Beanshell, как это:

    • Больше Java совместимый
    • имеет лучшую производительность
    • построил - в поддержку JSON, XML и некоторого «синтаксического сахара», который сводит к минимуму и упрощает код

    Заканчивать Groovy Is the New Black статью для более подробной информации

+0

Спасибо за ваш комментарий, я переключился на JSR223 + Groovy, но у меня все еще есть проблемы. Я видел комментарий, который вы сделали в ответ на то, что кто-то делает что-то подобное, и вы предложили использовать класс Secure.Random. Я попробовал что-то вроде этого: «Random rand = new SecureRandom() int number = rand.nextInt (50);' но это не сработало. Опять же, я пытаюсь создать около 45 уникальных целых чисел из 50 для любого заданного запроса. –

+0

Почему бы вам просто не использовать функцию [Counter test element или __counter()] (https://www.blazemeter.com/blog/how-use-counter-jmeter-test) и получить последовательные номера? 45 случайных чисел из 50 не имеют для меня большого смысла. –

+0

Я знаю, это звучит странно, но это то, что мне нужно делать. Это относительно простая концепция; на любой заданный запрос будет 5 целых чисел, которые не включены в диапазон. Я тестирую игру, которая зависит от выбора чисел. Это решение будет работать достаточно хорошо, если бы я мог перетасовывать номера после каждого запроса.'BufferedReader br = новый BufferedReader (новый FileReader ("myfile.csv")); Строка; int counter = 1; while ((line = br.readLine())! = Null) { vars.put ("VAR_" + счетчик, строка); counter ++; } br.close(); ' –

Смежные вопросы