- Форум тестировщиков
- → Просмотр профиля: Репутация: AxelM
Статистика
- Группа: Members
- Сообщений: 118
- Просмотров: 8 988
- Статус: Активный участник
- Возраст: 39 лет
- День рождения: Сентябрь 10, 1984
-
ФИО
Зверев Дмитрий
-
Пол
Мужчина
-
Город
Санкт-Петербург
-
Интересы
Performance testing, automated testing.
14
Хороший
Инструменты
Друзья
AxelM еще не добавил друзей
Последние посетители
#104218 Запуск сэмпла каждые 6 секунд, вне зависимости от того, завершился ли
Написано AxelM 15 апреля 2012 - 05:20
Я делал это вот так: #5 (тема форума "Sleep thread of BeanShell Listener")
#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
Вот эту строку
заменить на эту
Меня же самого сбила с толку фраза "строки считаются от 1". Прошу прощения.
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
Создать 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 не увеличится.
Пардон, на RHEL не pfiles, а lsof
Честно говоря, не понял вопрос. Вас смущает то, что производительность увеличилась всего в 2 раза или что она вообще увеличилась?
В принципе, у вас получается следующие
Потоки; увеличение Throughput (множитель)
1;1
10;2
100;3
В дальнейшем увидите (в общем случае), что при увеличении потоков Throughput не увеличится.
Вы рассчитываете, что при 100 потоках время выполнения будет больше, чем при 10? Ваше приложение очень против. Как мы видим оно масштабирует Ваши запросы так, что при 1, 10, 100 обрабатывает их с одинаковым временем, без очередей.Собственно как получить корреляцию между кол-вом запросов и средним временем выполнения?
Если бы приложение не закрывало дискрипторы, то запрос бы не смог обработаться (приложение, думаю, обрабатывает эту ситуацию). Посмотрите pfiles на всякий случай.ulimit open files == 32K
Пардон, на RHEL не pfiles, а lsof
- 1
#95332 loadUI?
Написано AxelM 08 октября 2011 - 17:47
Пробовать, я пробую. Пока нравится. Но хотелось бы услышать мнение людей, которые это использовали в продакшене (2 года jMeter,3 года loadUI). Какие подводные камни, киллерфичи, и пр.
а самим попробовать использовать?
Попробовал только что loadUI.
Всем известно, что на интерфейс LoadRunner, Jmeter, Grinder и т.д. без слез не взглянешь. loadUI -- это штука, которая поражает своим внешним видом. Такого вы не найдете даже в медиа-плеерах: ползунки, рычажки и прочие свистелки
Ребята подключили даже midi-клавиатуру. Так и представил себе тестировщика ди-джея.
Однако написать более-менее сложный тест на loadUI вряд ли удастся: количество окон получится угрожающе большим. Спасает положение возможность разработки тестов на Groovy. Т.е., например, вытащить значение из ответа при помощи regexp вы сможете уже только зная программирование, рачажки тут не помогут.
Стоит отдать должное архитектуре loadUI. После беглого осмотра: динамически меняется heap у агентов, логи ведутся в БД, сам сценарий пишется в xml, плагины написаны на Groovy (не нравится -- поменяй код под себя), в качестве репортера -- JasperReports (сохраняй отчет во что хочешь). Об отчетах стоит сказать отдельно: сравнение разных запусков, совмещение графиков, куча всяких показателей.
В проектах, где тесты -- это воспроизведение бизнес-процесса, думаю, loadUI будет не слишком удобен. Но взглянуть на него обязательно стоит. Как минимум получите эстетическое удовольствие.
- 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"
Прикрепленные файлы
- Variable_through_thread.jmx.zip 1,71К 47 Количество загрузок:
- 1
#92439 Запуск семплера во время выполнения другого семплера
Написано AxelM 11 августа 2011 - 06:10
Не всё так печально. Я делал похожий тест. Все тесты важны, но не всякие нужны.
axz, как я понял, Вы успешно запускаете тест, но не знаете, в какой момент его остановить, т.к. конец работы одного треда не означает остановку другого.
Используйте Test Action. Назовем первый тред управляющим. Управляющий тред подразумевает остановку всего теста при его завершении.
Запускаете управляющий тред на выполнение n секунд или n раз, после которых вызываете Test Action, где выставляете "Stop All Threads".
Пример в аттаче (используются плагины jmeter plugins).
Вторую проблему, думаю, каждый решает сам. Я не знаю можно ли прокинуть куки между тредами. Лично я (это позволяет тестируемая система) получаю session_id при первом запросе, а затем использую как параметр в каждом последующем.
Может быть, сделать поочередное выполнение тредов, как в Load Runner. Я когда-то писал об этом.
axz, как я понял, Вы успешно запускаете тест, но не знаете, в какой момент его остановить, т.к. конец работы одного треда не означает остановку другого.
Используйте Test Action. Назовем первый тред управляющим. Управляющий тред подразумевает остановку всего теста при его завершении.
Запускаете управляющий тред на выполнение n секунд или n раз, после которых вызываете Test Action, где выставляете "Stop All Threads".
Пример в аттаче (используются плагины jmeter plugins).
Вторую проблему, думаю, каждый решает сам. Я не знаю можно ли прокинуть куки между тредами. Лично я (это позволяет тестируемая система) получаю session_id при первом запросе, а затем использую как параметр в каждом последующем.
Йех, вообще надо бы написать какой-нить плагин на тему межтредового взаимодействия. Только пока не приложу ума, что именно надо дать людям... Может народ сформулирует, как было бы удобней всего видеть такую штуку?
Может быть, сделать поочередное выполнение тредов, как в Load Runner. Я когда-то писал об этом.
Прикрепленные файлы
- Test Plan.jmx.zip 1,65К 14 Количество загрузок:
- 1
#92296 Запуск семплера во время выполнения другого семплера
Написано AxelM 08 августа 2011 - 06:05
Доброго времени суток!
В jmeter'е нужно реализовать следующий сценарий:
http request c post'ом выполняется определенное время (пусть 10 минут),
в течении этого времени надо периодически (каждую минуту) дергать другой request c post'ом к другой странице.
Каким образом можно этого добиться?
Шуршание документации ни к чему ни привело ,
либо плохо шуршал, либо jmeter не позволяет такого (т.е. во время выполняется одного семплера никак не запустить другой)?
Мне кажется, универсальным будет использовать следующее: не надо межтредового взаимодействия, посчитайте (прикиньте) сколько каждый тип запросов занимает в процентах от общего числа запросов, затем используйте "Throughput Controller"
- 1
- Форум тестировщиков
- → Просмотр профиля: Репутация: AxelM
- Политика Конфиденциальности
- Правила форума ·