Перейти к содержимому

AxelM

Регистрация: 22 фев 2007
Offline Активность: 09 окт 2015 14:30
-----

#104218 Запуск сэмпла каждые 6 секунд, вне зависимости от того, завершился ли

Написано AxelM 15 апреля 2012 - 05:20

Я делал это вот так: #5 (тема форума "Sleep thread of BeanShell Listener")
  • 1


#101218 Актуальность данных в Jmetr

Написано AxelM 17 февраля 2012 - 06:58

А при такой схеме насколько критична скорость между Master - Моим ПК, и Slave?Т.к. у меня очень слабый канал а пинг около 500мс в среднем.
И трасерт показывает 13-20 хопов...


На сколько именно не могу сказать, т.к. у меня всё в одной подсети, и я с этими проблемами не сталкиваюсь. Теоретически это не должно влиять на мощность нагрузки webserver.

Или же лучше запускать напрямую все с сервера нагрузки в моем случае Slave через консоль со снятием скриншотов и пользоваться этим.Правда неудобно будет менять параметры тестов и работать придется в консоли через __P функцию


У меня фреймворк как раз и работает через __P функцию. Просто я все параметры описываю как раз через эту функцию (напишите тест в GUI, а запускайте через командную строку). А что касается наглядного вида хода тестирования, то может помочь ConsoleStatusLogger .
  • 1


#99309 Передача данных в xml файл, при тестировании WEB Service

Написано AxelM 30 декабря 2011 - 11:19

Тогда a la Java

while ((Line = br.readLine()) != null)
     {
        if (i == (Number))
        {   
              //vars.put("VAR", Line);
              //k =  ${__split(${VAR},VAR,|)}
              
              s = Line.split("|");
              System.out.println(s[1]);
              for(int j =0; j < s.length ; j++)
                System.out.println(s[j]);
        }
        i++;
     }

  • 1


#99021 Передача данных в xml файл, при тестировании WEB Service

Написано AxelM 22 декабря 2011 - 07:03


Т.е. вот это пробовали: __split?


Да, подобным образом пытаюсь реализовать ошибка происходит на строке ${__split(${VAR},VAR,|)}, для VAR указал значение как в примере и объявил в User Defined Variables


В аттаче jmx-файл, в котором реализован пример функции split.
c=${__split(${VAR},VAR,|)}
Debug Sampler:
JMeterVariables:
JMeterThread.last_sample_ok=true
JMeterThread.pack=org.apache.jmeter.threads.SamplePackage@13a1505
START.HMS=100141
START.MS=1324537301056
START.YMD=20111222
TESTSTART.MS=1324537510275
VAR=a||c|
VAR_1=a
VAR_2=?
VAR_3=c
VAR_4=?
VAR_n=4
c=a||c|

Прикрепленные файлы

  • Прикрепленный файл  split.zip   1,15К   2 Количество загрузок:

  • 1


#98934 Передача данных в xml файл, при тестировании WEB Service

Написано AxelM 20 декабря 2011 - 12:10

Вот эту строку
int Number = ${__Random(0,${NumberOfString})};

заменить на эту

int Number = ${__Random(1,${NumberOfString})};

Меня же самого сбила с толку фраза "строки считаются от 1". Прошу прощения.



  • 1


#98784 Передача данных в xml файл, при тестировании WEB Service

Написано AxelM 16 декабря 2011 - 06:12


Ничего страшного в нем нет. Давайте свой сценарий или расскажите подробнее, где происходит ошибка.
Еще одна альтернатива: я делал на BeanShell чтение рандомной строки из файла. Там через FileInputStream и BufferedReader. Могу скинуть код.


AxelM, запостите код пожалуйста - ломаю голову не могу прочитать строку по номеру иль случайным образом из файла в jmeter


Например, необходимо произвольным образом выбирать логины из файла. Создать файл c://WINDOWS//Temp//TMP//1.csv, где перечислены логины

login_tt1
login_rr2
login_ww3
login_uu4

Определить переменную NumberOfString = количество строк в файле (считается от 1)
Создать BeanShell PreProcessor следующего содержания

print("--ReadFile--");
try{
  //Open the file
  FileInputStream fstream = new FileInputStream("c://WINDOWS//Temp//TMP//1.csv");
  //Get the object of DataInputStream
  DataInputStream instream = new DataInputStream(fstream);
  BufferedReader br = new BufferedReader(new InputStreamReader(instream));
  String Line;
  int i=1;

  int Number = ${__Random(0,${NumberOfString})};
 
  //Read File Line By Line
  while ((Line = br.readLine()) != null){
	if (i == (Number)){
	//Set variable value
	vars.put("GettingValue", Line);
	}
	i++;
  }
  //Close the input stream
  fstream.close();
}
catch (Exception e){
  print("IO error: " + e.getMessage());
}


В переменной GettingValue будет содержаться рандомная строка
  • 1


#98309 JMeter многопоточность

Написано AxelM 06 декабря 2011 - 16:17

Здравствуйте.
Честно говоря, не понял вопрос. Вас смущает то, что производительность увеличилась всего в 2 раза или что она вообще увеличилась?
В принципе, у вас получается следующие
Потоки; увеличение Throughput (множитель)
1;1
10;2
100;3
В дальнейшем увидите (в общем случае), что при увеличении потоков Throughput не увеличится.

Собственно как получить корреляцию между кол-вом запросов и средним временем выполнения?

Вы рассчитываете, что при 100 потоках время выполнения будет больше, чем при 10? Ваше приложение очень против. Как мы видим оно масштабирует Ваши запросы так, что при 1, 10, 100 обрабатывает их с одинаковым временем, без очередей.

ulimit open files == 32K

Если бы приложение не закрывало дискрипторы, то запрос бы не смог обработаться (приложение, думаю, обрабатывает эту ситуацию). Посмотрите pfiles на всякий случай.
Пардон, на RHEL не pfiles, а lsof
  • 1


#95332 loadUI?

Написано AxelM 08 октября 2011 - 17:47


а самим попробовать использовать?

Пробовать, я пробую. Пока нравится. Но хотелось бы услышать мнение людей, которые это использовали в продакшене (2 года jMeter,3 года loadUI). Какие подводные камни, киллерфичи, и пр.


Попробовал только что loadUI.
Всем известно, что на интерфейс LoadRunner, Jmeter, Grinder и т.д. без слез не взглянешь. loadUI -- это штука, которая поражает своим внешним видом. Такого вы не найдете даже в медиа-плеерах: ползунки, рычажки и прочие свистелки

loadui1.PNG

Ребята подключили даже midi-клавиатуру. Так и представил себе тестировщика ди-джея.

Изображение

Однако написать более-менее сложный тест на loadUI вряд ли удастся: количество окон получится угрожающе большим. Спасает положение возможность разработки тестов на Groovy. Т.е., например, вытащить значение из ответа при помощи regexp вы сможете уже только зная программирование, рачажки тут не помогут.

Стоит отдать должное архитектуре loadUI. После беглого осмотра: динамически меняется heap у агентов, логи ведутся в БД, сам сценарий пишется в xml, плагины написаны на Groovy (не нравится -- поменяй код под себя), в качестве репортера -- JasperReports (сохраняй отчет во что хочешь). Об отчетах стоит сказать отдельно: сравнение разных запусков, совмещение графиков, куча всяких показателей.

В проектах, где тесты -- это воспроизведение бизнес-процесса, думаю, loadUI будет не слишком удобен. Но взглянуть на него обязательно стоит. Как минимум получите эстетическое удовольствие.
  • 1


#95267 отчеты из JMeter

Написано AxelM 07 октября 2011 - 04:20

У меня есть вопрос. А можно ли данные которые отображаются в графическом
виде ( скажем нагрузка CPU, активность сети ) сохранять в файл в виде
пар чисел, метрика-значение? Ну скажем в CSV файл.


Можно
  • 1


#94968 Запись в файл логина и пароля после регистрации

Написано AxelM 30 сентября 2011 - 05:26

Здравствуйте !
Столкнулся со следующей проблемкой. Хотелось бы сделать так чтобы после регистрации логин и пароль которые создаются сами записывались в файл(файл используется в проекте, из него я беру логины и пароли для авторизации).
Как это лучше всего реализовать ?


Запись в файл можно сделать при помощи BeanShell

print("--WriteToFile--");
 
//Get a value of variable that contains  the string
String Line = vars.get("Line");
 
try{
  //Create the  file
  FileWriter fw = new FileWriter("c://filename.txt", true);
   BufferedWriter bw = new BufferedWriter(fw);
  PrintWriter pw = new  PrintWriter(bw);
  pw.println(Line);
  //Close the output file
   pw.close();
}
catch (IOException e){
  System.out.println("IO error: "  + e.getMessage());
}

В файл c://filename.txt записывается содержимое некой переменной Line.

Ссылка: http://andzhukov.blo...-by-number.html
  • 1


#94966 При подключении Slave машины возникла ошибка

Написано AxelM 30 сентября 2011 - 05:11

Я туда и не смотрю. Похоже, by design. Поищите ошибку на их баг-трекере. Будем знать точно.
  • 1


#93067 Выполнить HTTP запрос один раз для всех юзеров

Написано AxelM 23 августа 2011 - 18:46

Позволю себе задать уже детский вопрос, опять-таки из-за экономии времени и надеясь на вашу благосклонность.

Регэксп постпроцессор возвращает мне GUID в переменной ${GUID}

Что надо написать в первом и втором BeanShell Sampler?

Первый:
props.put("GUID", ${guid});
Резалт:
props.put("GUID", 4c7ca3f8-4fde-4997-9a2e-a090fec4ea03);
Request Headers:
Отмечен красным, то есть зафейлился. GUID передается, дальше непонятно.

Второй:
GUID = props.get("GUID");
Отмечен синим. Но я не знаю что писать в скобках, и как потом использовать это во второй команде.


В аттаче я написал пример с использованием jmeter-plugins

Смотрим на View Results Tree
Debug Sampler в первой тред-группе: "JMeterProperties: GUID=4c7ca3f8-4fde-4997-9a2e-a090fec4ea03111"
Debug Sampler во втрой тред-группе: "JMeterProperties: GUID=4c7ca3f8-4fde-4997-9a2e-a090fec4ea03111"

Прикрепленные файлы


  • 1


#92439 Запуск семплера во время выполнения другого семплера

Написано AxelM 11 августа 2011 - 06:10

Не всё так печально. Я делал похожий тест. Все тесты важны, но не всякие нужны.
axz, как я понял, Вы успешно запускаете тест, но не знаете, в какой момент его остановить, т.к. конец работы одного треда не означает остановку другого.
Используйте Test Action. Назовем первый тред управляющим. Управляющий тред подразумевает остановку всего теста при его завершении.
Запускаете управляющий тред на выполнение n секунд или n раз, после которых вызываете Test Action, где выставляете "Stop All Threads".
Пример в аттаче (используются плагины jmeter plugins).

Вторую проблему, думаю, каждый решает сам. Я не знаю можно ли прокинуть куки между тредами. Лично я (это позволяет тестируемая система) получаю session_id при первом запросе, а затем использую как параметр в каждом последующем.

Йех, вообще надо бы написать какой-нить плагин на тему межтредового взаимодействия. Только пока не приложу ума, что именно надо дать людям... Может народ сформулирует, как было бы удобней всего видеть такую штуку?


Может быть, сделать поочередное выполнение тредов, как в Load Runner. Я когда-то писал об этом.

Прикрепленные файлы


  • 1


#92296 Запуск семплера во время выполнения другого семплера

Написано AxelM 08 августа 2011 - 06:05

Доброго времени суток!

В jmeter'е нужно реализовать следующий сценарий:
http request c post'ом выполняется определенное время (пусть 10 минут),
в течении этого времени надо периодически (каждую минуту) дергать другой request c post'ом к другой странице.

Каким образом можно этого добиться?

Шуршание документации ни к чему ни привело :sad:,
либо плохо шуршал, либо jmeter не позволяет такого (т.е. во время выполняется одного семплера никак не запустить другой)?


Мне кажется, универсальным будет использовать следующее: не надо межтредового взаимодействия, посчитайте (прикиньте) сколько каждый тип запросов занимает в процентах от общего числа запросов, затем используйте "Throughput Controller"
  • 1