0

3種類のXMLリクエストをWebサービスに送信するJMeterスクリプトがあります。

たとえば、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}取得するには ([06-01-2011; 07-31-2012] からランダムな間隔を取得する必要があり、事前定義された期間 ${Interval0} が固定されています)、次の Java スクリプトで BSF PreProcessor を使用します。

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 スクリプトの構造はどうあるべきかということです。

4

1 に答える 1