2016-04-22 8 views
1

Я пытаюсь скорректировать или создать «Проверить» в загрузочном инструменте Gatling, но не знаю, как это сделать. Я прошел через продвинутый учебник doc с официального сайта Gatling, но не смог точно найти корреляцию динамического значения.Корреляция Динамическое значение в Gatling

Ниже peice кода из моего сценария

.feed(feeder) 

    .exec(http("EnterDetails") 
     .post("/events/review.action") 
     .headers(headers_6) 
     .formParam("userInfo.spgEmail", "") 
     .formParam("userInfo.title", "") 
     .formParam("userInfo.firstName", "${FirstName}") 
     .formParam("userInfo.lastName", "${LastName}") 
     .formParam("userInfo.address1", "Open") 
     .formParam("userInfo.address2", "") 
     .formParam("userInfo.city", "${City}") 
     .formParam("userInfo.state", "NYY") 
     .formParam("userInfo.country", "US") 
     .formParam("userInfo.zipCode", "10016") 
     .formParam("userInfo.primaryNoInfo.optedIn", "false") 
     .formParam("userInfo.phoneTwoInfo.optedIn", "false") 
     .formParam("userInfo.phoneThreeInfo.optedIn", "false") 
     .formParam("userInfo.primaryNoInfo.validInd", "Y") 
     .formParam("userInfo.phoneTwoInfo.validInd", "") 
     .formParam("userInfo.phoneThreeInfo.validInd", "") 
     .formParam("userInfo.phoneUseType1", "0") 
     .formParam("userInfo.primaryNoInfo.phoneNumber", "9876543211") 
     .formParam("userInfo.primaryNoInfo.extension", "") 
     .formParam("userInfo.country1", "US%28%2B1%29") 
     .formParam("__checkbox_userInfo.primaryNoInfo.oneTimeOptInPresent", "true") 
     .formParam("userInfo.phoneUseType2", "-1") 
     .formParam("userInfo.phoneTwoInfo.phoneNumber", "") 
     .formParam("userInfo.phoneTwoInfo.extension", "") 
     .formParam("userInfo.country2", "US%28%2B1%29") 
     .formParam("__checkbox_userInfo.phoneTwoInfo.oneTimeOptInPresent", "true") 
     .formParam("userInfo.phoneUseType3", "-1") 
     .formParam("userInfo.phoneThreeInfo.phoneNumber", "") 
     .formParam("userInfo.phoneThreeInfo.extension", "") 
     .formParam("userInfo.country3", "US%28%2B1%29") 
     .formParam("__checkbox_userInfo.phoneThreeInfo.oneTimeOptInPresent", "true") 
     .formParam("userInfo.email", "") 
     .formParam("userInfo.retypeEmail", "") 
     .formParam("userInfo.nonCCPayment", "true") 
     .formParam("userInfo.SPGNumber", "") 
     .formParam("userInfo.arrivalCarrier", "") 
     .formParam("userInfo.transportationNumber", "") 
     .formParam("userInfo.transportationArrTime", "") 
     .formParam("userInfo.hotelArrivalTime", "") 
     .formParam("userInfo.hotelDepartureTime", "") 
     .formParam("userInfo.SRequest", "") 
     .formParam("userInfo.IAgree", "true") 
     .formParam("__checkbox_userInfo.IAgree", "true") 
     .formParam("method%3Aexecute", "Review+Your+Reservation+")) 
    .pause(2) 
    .exec(http("ReviewREservation") 
     .get(uri3 + "/s01000706679492?AQB=1&ndh=1&pf=1&t=21%2F3%2F2016%2012%3A45%3A54%204%200&D=D%3D&fid=31A8BC73D5B8ACEB-2B64CD0ACE185774&ce=UTF-8&pageName=Review%20Reservation&g=https%3A%2F%2Fstg.starwoodmeeting.com%2Fevents%2Freview.action&r=https%3A%2F%2Fstg.starwoodmeeting.com%2Fevents%2Fselectcreate%21execute.action%3FselRoom%3D1&cc=USD&ch=StarGroups&server=StarGroups&c2=SOCIAL&c3=1603295001&c4=271&c5=SI&c6=YES&c8=en&s=1600x838&c=24&j=1.6&v=N&k=Y&bw=1042&bh=733&AQE=1") 
     .headers(headers_3)) 
    .pause(7) 
    .exec(http("request_13") 
     .post("/events/confirm.action") 
     .headers(headers_6) 
     .formParam("method%3Aexecute", "Complete+Your+Reservation")) 
    .pause(4) 

    .exec(http("CompleteReservation") 
     .get(uri3 + "/s03623649917832?AQB=1&ndh=1&pf=1&t=21%2F3%2F2016%2012%3A46%3A5%204%200&D=D%3D&fid=31A8BC73D5B8ACEB-2B64CD0ACE185774&ce=UTF-8&pageName=Reservation%20Confirmation&g=https%3A%2F%2Fstg.starwoodmeeting.com%2Fevents%2Fconfirm.action&r=https%3A%2F%2Fstg.starwoodmeeting.com%2Fevents%2Freview.action&cc=CAD&purchaseID=20160421_734091125&ch=StarGroups&server=StarGroups&events=purchase&products=%3B271%3B1%3B100.00&c2=SOCIAL&c3=1603295001&c4=271&v4=20160421_734091125&c5=SI&c6=YES&c8=en&s=1600x838&c=24&j=1.6&v=N&k=Y&bw=1042&bh=733&AQE=1") 
     .headers(headers_3)) 

setUp(scn.inject(atOnceUsers(1))).protocols(httpProtocol) 

В приведенном выше коде есть динамический Purchase ID в

.exec (HTTP ("CompleteReservation") который получает сгенерирована от сервера и должен быть скоррелирован.

Из документации Gatling, я понимаю (исправьте меня, если я ошибаюсь), что нам нужен код элемента проверки, чтобы получить путь к CSS. ERE).

Пожалуйста, дайте мне знать, как мы соотносим .TIA.

+0

Любые ответы пожалуйста :( –

+0

Прежде всего, ваша ссылка «Проверить элемент» неверна. Далее, пожалуйста, укажите, что означает «нужно скоррелировать» .. вы имеете в виду, что ее нужно читать из ответа? поэтому, как выглядит ответ? В основном укажите, что вы хотите с ним делать. – Teliatko

+0

ОК, простыми словами, как мы сопоставляем динамическое значение в Gatling.For Ex: - в Load runner мы берем LB и RB из ответ и коррелировать его, но в Gatling, где мы видим ответ и как мы сопоставляем динамическое значение. –

ответ

1

В Gatling вы должны использовать проверки для извлечения значения из ответа. Взгляните в documentation.

Вы можете использовать regex или xpath для извлечения значения в теге. Но в вашем случае я бы рекомендовал использовать простой regex, потому что IMO в ответе вашего примера не содержит тегов или идентификаторов, где вы можете легко подключиться с помощью xpath. Я имею в виду то, как выражение xpath будет оставаться простым и понятным. Следующее - извлечь ценность в сеанс, а затем использовать его.

Ниже приведен пример сценария извлекая путь запроса URI из ответа, полученного от example.com, который впоследствии напечатанную в консоли:

val scn = scenario("Checks") 
    .exec(
    http("root") 
    .get("/") 
    .check(
     // Extracting URI query path from response body via regexp and storing into session 
     regex("""www\.iana\.org/([a-z/]*)""").find.saveAs("queryPath") 
    ) 
) 
    // Printing the value from session 
    // Important thing to note is how you can access stored value from session 
    .exec { session => 
    println(" QUERY PATH --> " + session("queryPath").as[String]) 
    session 
    } 

В вашем случае ваша последняя часть может выглядеть примерно так:

.exec(http("CompleteReservation") 
    .get(uri3 + "/s03623649917832?AQB=1&ndh=1&pf=1&t=21%2F3%2F2016%2012%3A46%3A5%204%200&D=D%3D&fid=31A8BC73D5B8ACEB-2B64CD0ACE185774&ce=UTF-8&pageName=Reservation%20Confirmation&g=https%3A%2F%2Fstg.starwoodmeeting.com%2Fevents%2Fconfirm.action&r=https%3A%2F%2Fstg.starwoodmeeting.com%2Fevents%2Freview.action&cc=CAD&purchaseID=20160421_734091125&ch=StarGroups&server=StarGroups&events=purchase&products=%3B271%3B1%3B100.00&c2=SOCIAL&c3=1603295001&c4=271&v4=20160421_734091125&c5=SI&c6=YES&c8=en&s=1600x838&c=24&j=1.6&v=N&k=Y&bw=1042&bh=733&AQE=1") 
    .headers(headers_3)) 
    .check(
     regex("""Your confirmation number is (\d+)""") // Regular expression with group which represents confirmation number. 
     .find 
     .saveAs("confirmationNumber") // Now the extracted regexp group is stored in session under "confirmationNumber" as name. 
    ) 
    // Missing, check, transformation or use of value from session 

Я не знаю вашего использования извлеченного значения, поэтому он отсутствует в фрагменте выше. Но я надеюсь, что у вас уже будет идея, как обрабатывать ответы и как использовать извлеченные значения.

Я надеюсь, что это поможет.