Как преобразовать скрипт JMeter для веб-сервиса в скрипт LoadRunner для этого веб-сервиса?

У меня есть скрипт JMeter, который отправляет 3 типа XML-запросов на веб-сервис.

Например, для 2-го типа - SOAPMethod 'getHeadlines' я отправляю такой XML-запрос:

<?xml version="1.0" encoding="UTF-8"?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
  <S:Header/>
  <S:Body>
    <ns2:getHeadlines xmlns:ns2="http://******.com/">
      <startDate>${startDate}</startDate>
      <endDate>${endDate}</endDate>
      <contributor>${randomNameContributor2}</contributor>
      <topic>${randomNameTopic2}</topic>
      <maxCount>${maxCount}</maxCount>
    </ns2:getHeadlines>
  </S:Body>
</S:Envelope>

и я использую

Препроцессор BeanShell 2.1 - для получения случайного {randomNameContributor2}:

String[] argsCrnt21=vars.getObject("arrayOfContributors");  //initialization of array
int randomElement=(int)(Math.random()*argsCrnt21.length ); //random element number
vars.put("randomNameContributor2", argsCrnt21[randomElement] ); //initialization of random variable for 'randomNameContributor2'

и по аналогии я использую

Препроцессор BeanShell 2.2 - для получения случайного {randomNameTopic2}:

String[] argsCrnt22=vars.getObject("arrayOfTopics");  //initialization of array
int randomElement=(int)(Math.random()*argsCrnt22.length ); //random element number
vars.put("randomNameTopic2", argsCrnt22[randomElement] ); //initialization of random variable for 'randomNameTopic2'

Константа ${maxCount}` предопределена в разделе пользовательских переменных JMeter.

Для получения переменных как ${RandomStartDate} и ${RandomEndDate} (мне нужно получить случайный интервал от [01-06-2011; 31-07-2012], который имеет фиксированную предопределенную продолжительность ${Interval0}) я использую препроцессор BSF со следующим java-скриптом:

var startDate = new Date();
startDate.setDate(1);
startDate.setMonth(06);
startDate.setYear(2011);
var startDateTime = startDate.getTime();

var endDate = new Date();
endDate.setDate(31);
endDate.setMonth(07);
endDate.setYear(2012);
var endDateTime = endDate.getTime();

var randomSDate = new Date();
var randomSDateTime = startDateTime+Math.random()*((endDateTime -${Interval0}) -startDateTime );
randomSDate.setTime(randomSDateTime);

var randomEDate = new Date();
var randomEDateTime = (randomSDateTime +  ${Interval0});    // adds interval to start date 
randomEDate.setTime(randomEDateTime);   // transforms to string format

var rndSDate = randomSDate.getDate();
var rndSMonth = randomSDate.getMonth()+1 ;
var rndSYear = randomSDate.getFullYear();

var rndEDate = randomEDate.getDate();      // disassembles the end date to year-month-day format
var rndEMonth = randomEDate.getMonth()+1 ;
var rndEYear = randomEDate.getFullYear();

if (rndSDate.toString().length == 1)      // add 0 to the left of month and day if they have only 1 symbol
rndSDate = "0" + rndSDate;
if (rndSMonth.toString().length == 1)
rndSMonth = "0" + rndSMonth;

if (rndEDate.toString().length == 1)      // add 0 to the left of month and day if they have only 1 symbol
rndEDate = "0" + rndEDate;
if (rndEMonth.toString().length == 1)
rndEMonth = "0" + rndEMonth;

var RandomStartDate = rndSYear + "-" + rndSMonth + "-" + rndSDate;
vars.put ("RandomStartDate", RandomStartDate);

var RandomEndDate = rndEYear + "-" + rndEMonth + "-" + rndEDate;
vars.put ("RandomEndDate", RandomEndDate);

Теперь мне нужно преобразовать этот скрипт JMeter в скрипт LR.

Не могли бы вы посоветовать мне, как мне начать реализацию этой идеи? Первое, что мне нужно знать, это - какой должна быть структура скрипта LR для моего случая?


person Nadezhda T    schedule 03.09.2013    source источник
comment
Можете ли вы использовать протокол WebServices?   -  person Buzzy    schedule 03.09.2013
comment
@Buzzy, протокол SOAP, но мой вопрос о том, как создать код C в LR, который даст мне результат, аналогичный тому, что я получил в JMeter.   -  person Nadezhda T    schedule 03.09.2013


Ответы (1)


см. web_custom_request() и web_add_header() для механики отправки запроса на сервер с типом виртуального пользователя HTTP. Остальное напрямую связано с вашим знанием языка программирования C, независимо от LoadRunner.

person James Pulley    schedule 03.09.2013
comment
@James Pulley, да, я знаю эти функции LR. Моя трудность в том, что у меня нет опыта программирования на C и никакого опыта в создании алгоритмов и структуры кода для программирования на C. Не могли бы вы посоветовать мне какие-либо источники для новичков с краткими примерами на C, как этот или подобный тип задач решено, если это возможно? Может есть видео уроки по решению подобных задач? И второй вопрос - можно ли использовать код java-скрипта, который у меня уже есть? Как это встроить в код для LR? - person Nadezhda T; 04.09.2013
comment
Не хочу показаться идиотом, но я думаю, что пришло время компании нанять профессионала с опытом работы с Loadrunner. Вам нужно сделать больше, чем просто преобразовать сценарии, если это единственное, что требуется, вы можете обратиться к штатному разработчику с опытом работы с C, чтобы он помог вам, но вы должны знать, как различные настройки работают в loadrunner, чтобы иметь успешный и содержательный тестовый запуск с помощью loadrunner. Если вы просто хотите узнать, как отправить XML с помощью loadrunner, загляните в этот блог - person Abhishek Asthana; 05.09.2013
comment
Знание и сообразительность языка вашего инструмента тестирования производительности являются базовыми навыками для тестировщика производительности, независимо от инструмента. Вам нужно будет сотрудничать с двумя людьми, двое из которых будут успешными на этом этапе: (1) кто-то, кто хорошо разбирается в C, временных структурах и строках, и (2) кто-то, кто очень хорошо разбирается в пространстве LoadRunner. Вы обнаружите, что некоторые элементы, которые вы выполняете в коде, могут быть обработаны с помощью LR более эффективно, чем просто прямой перевод ваших предыдущих усилий 1: 1. - person James Pulley; 05.09.2013