ความสัมพันธ์ใน LoadRunner กับตัวอย่าง Web_Reg_Save_Param

ความสัมพันธ์คืออะไร?

ความสัมพันธ์ตามชื่อคือกลไกในการกำหนดความสัมพันธ์ระหว่างตัวแปรหรือเอนทิตีสองตัว พจนานุกรมให้คำนิยามว่าเป็น "ความสัมพันธ์ทางสถิติระหว่างตัวแปรตั้งแต่สองตัวขึ้นไป โดยที่การเปลี่ยนแปลงอย่างเป็นระบบในตัวแปรอื่นๆ มาพร้อมกับการเปลี่ยนแปลงอย่างเป็นระบบในค่าของตัวแปรหนึ่งตัว"

ทำไมเราถึงต้องการความสัมพันธ์?

มาทำความเข้าใจความสัมพันธ์กันจากสถานการณ์ต่อไปนี้

พิจารณาว่าคุณกำลังบันทึกสคริปต์โดยใช้ LoadRunner

การสื่อสารระหว่างไคลเอ็นต์-เซิร์ฟเวอร์

  1. ในระหว่างการบันทึก ไคลเอ็นต์จะส่งคำขอไปยังเซิร์ฟเวอร์เพื่อเริ่มเซสชัน
  2. เซิร์ฟเวอร์ได้รับการร้องขอและจัดสรร ID เซสชัน ABC ใหม่
  3. ลูกค้าเก็บรหัสเซสชั่น ABC ไว้ในสคริปต์
  4. ลูกค้าเริ่มต้นเซสชันด้วย ID ABC และส่งคำขอไปยังเซิร์ฟเวอร์เพื่ออนุญาตให้บันทึกได้
  5. เซิร์ฟเวอร์รู้จัก ID ABC และอนุญาตให้ไคลเอนต์บันทึกสคริปต์

ความสัมพันธ์ขณะบันทึก

  1. ตอนนี้ เรามาศึกษาการสื่อสารระหว่างไคลเอนต์และเซิร์ฟเวอร์ระหว่างการเล่นซ้ำกัน
  2. ในระหว่างการเล่นซ้ำ ไคลเอนต์จะส่งคำขอไปยังเซิร์ฟเวอร์เพื่อเริ่มเซสชัน
  3. เซิร์ฟเวอร์ได้รับการร้องขอและจัดสรร ID เซสชันใหม่ XYZ
  4. ลูกค้าเริ่มต้นเซสชันด้วย ID เซสชันที่บันทึกไว้ก่อนหน้านี้ ABC และส่งคำขอไปยังเซิร์ฟเวอร์เพื่ออนุญาตให้บันทึก
  5. เซิร์ฟเวอร์ไม่สามารถระบุ ID ABC ได้เนื่องจากคาดว่าจะมี ID XYZ ที่ได้รับการจัดสรรและเซสชันล้มเหลว

ความสัมพันธ์ในขณะที่เล่นซ้ำ

เราต้องการโซลูชันที่จะจับแยกวิเคราะห์ค่าไดนามิกที่ส่ง ณ รันไทม์และส่งค่านี้กลับไปยังเซิร์ฟเวอร์ ต่อไปนี้คือลักษณะการสื่อสารระหว่างไคลเอนต์และเซิร์ฟเวอร์ด้วยโซลูชันนี้

  1. ในระหว่างการเล่นซ้ำ ไคลเอนต์จะส่งคำขอไปยังเซิร์ฟเวอร์เพื่อเริ่มเซสชัน
  2. เซิร์ฟเวอร์ได้รับการร้องขอและจัดสรร ID เซสชัน ZZZ ใหม่
  3. ลูกค้าแยกวิเคราะห์เซสชันใหม่ ID ZZZ จากคำขอ
  4. ลูกค้าส่งคำขอเพื่อเริ่มเซสชันด้วย id ZZZ
  5. เซิร์ฟเวอร์รู้จัก ID ZZZ และอนุญาตให้ไคลเอนต์เล่นสคริปต์ซ้ำ

เราต้องการความสัมพันธ์

นี่ไม่มีอะไรนอกจาก ความสัมพันธ์.

คลิก Good Farm Animal Welfare Awards หากไม่สามารถเข้าถึงวิดีโอได้

ในกรณีของ VUGen ความสัมพันธ์คือความสัมพันธ์ที่มีผลผูกพันระหว่างการตอบกลับและคำขอใดๆ ก่อนหน้านี้

มีหลายสถานการณ์ที่คำขอขึ้นอยู่กับการตอบกลับที่ได้รับก่อนหน้านี้จากเซิร์ฟเวอร์ เช่น Session ID วันที่/เวลาของเซิร์ฟเวอร์ที่ดึงมาจากเซิร์ฟเวอร์ ค่าเหล่านี้จะแตกต่างกันทุกครั้งที่คุณเรียกใช้แอปพลิเคชันหรือบันทึกสคริปต์ แน่นอนว่า หากการเรียกใช้สคริปต์ขึ้นอยู่กับค่าที่เซิร์ฟเวอร์ส่งคืน นั่นหมายความว่าคุณจำเป็นต้องค้นหากลไกที่คุณสามารถ “จับ” การตอบสนองของเซิร์ฟเวอร์และแนบไปกับคำขอที่เซิร์ฟเวอร์คาดหวัง โดยทั่วไปจะเรียกว่า Correlation ใน LoadRunner

พูดง่ายๆ ก็คือ วิธีแก้ปัญหาโดยใช้ Correlation คือ:

  1. จับค่าเอาต์พุตจากขั้นตอน
  2. ใช้ค่าที่บันทึกไว้ข้างต้นเพื่อใช้เป็นอินพุตสำหรับขั้นตอนต่อๆ ไปทั้งหมด

ความสัมพันธ์แบ่งออกเป็น 2 ประเภทใน VUGen/LoadRunner:

  • ความสัมพันธ์อัตโนมัติ
  • ความสัมพันธ์ด้วยตนเอง

ความสัมพันธ์อัตโนมัติ

LoadRunner มีกลไกในการสร้างความสัมพันธ์โดยอัตโนมัติได้อย่างง่ายดาย

VUGen จะกำหนดให้คุณเรียกใช้สคริปต์ที่บันทึกไว้อย่างน้อยสองครั้ง เพื่อให้สามารถเปรียบเทียบค่าต่างๆ ในการตอบสนองของเซิร์ฟเวอร์เป็นการภายในได้

ความสัมพันธ์อัตโนมัติสามารถแบ่งได้เป็น 3 ประเภท:

  • ตรวจจับความสัมพันธ์อัตโนมัติ
  • ความสัมพันธ์ตามกฎเกณฑ์
  • การเชื่อมโยงข้อความทั้งหมด
ชื่อกฎ ควรใช้เมื่อใด
ตรวจจับความสัมพันธ์อัตโนมัติ ตรวจจับและเชื่อมโยงข้อมูลไดนามิกสำหรับแอปพลิเคชันเซิร์ฟเวอร์ที่รองรับโดย HP LoadRunner
ตามกฎเกณฑ์ ใช้เมื่อทำงานกับแอปพลิเคชันเซิร์ฟเวอร์ที่ไม่รองรับซึ่งทราบบริบท
สัมพันธ์กันทั้งหมด ช่วยเชื่อมโยงข้อมูลไดนามิกทั้งหมดในลักษณะที่ไม่เปิดเผย

แม้ว่าความสัมพันธ์อัตโนมัติจะดูง่ายกว่า แต่ก็อาจเกิดข้อผิดพลาดได้ง่ายและทำงานได้ไม่เกิน 5% ของกรณี ขอแนะนำให้ใช้ความสัมพันธ์แบบแมนนวลเสมอ

หากต้องการกำหนดค่าความสัมพันธ์อัตโนมัติในขณะที่บันทึก ให้ดำเนินการกำหนดค่าด้านล่างในการตั้งค่าเวลาบันทึกหลังจากบันทึกสคริปต์แล้ว

คลิกที่บันทึก =>ตัวเลือกการบันทึก (หรือคลิก Ctrl +F7)

ความสัมพันธ์อัตโนมัติ

หน้าต่างด้านล่างจะเปิดขึ้น:

ความสัมพันธ์อัตโนมัติ

คลิกที่ Correlation =>Configuration – หน้าต่างด้านล่างจะเปิดขึ้น

ความสัมพันธ์อัตโนมัติ

ที่นี่ คุณจะต้องทำเครื่องหมายว่าเลือกแล้วกับแอปพลิเคชันทั้งหมด (ASPNET) ฯลฯ ที่ใช้ในใบสมัครเรื่องของคุณ ทางด้านขวามือ คุณจะเห็นกฎที่จะตรวจจับตัวเลือกที่เป็นไปได้สำหรับความสัมพันธ์ เช่น _VIEWSTATE คุณยังสามารถเพิ่มแอปพลิเคชันเพิ่มเติมหรือกฎที่กำหนดเองได้โดยคลิกที่ปุ่มกฎใหม่

คุณยังสามารถคลิกที่ กฎ คุณจะเห็นดังต่อไปนี้:

ความสัมพันธ์อัตโนมัติ

เพื่อให้ความสัมพันธ์อัตโนมัติทำงานได้ คุณต้องแน่ใจว่าการสแกนกฎถูกทำเครื่องหมายว่าเลือกไว้ หากคุณคลิกที่ค่าที่สัมพันธ์กันโดยอัตโนมัติ VUGen จะไม่แจ้งให้คุณเลือกตัวเลือกเมื่อพบตัวเลือกที่มีความสัมพันธ์ แต่จะเชื่อมโยงค่าเหล่านั้นแทน

เราจะมาทำความเข้าใจเกี่ยวกับ API ที่ใช้ในการหาความสัมพันธ์กันในภายหลัง อย่างไรก็ตาม แนะนำให้ใช้การเปรียบเทียบ HTML แทนการเปรียบเทียบข้อความ

เมื่อคุณเลือกกฎใดๆ แล้ว ให้คลิกปุ่มตกลงเพื่อปิดหน้าต่าง

คลิกที่ ความสัมพันธ์อัตโนมัติจากเมนูและ VUGen จะสร้างสคริปต์ใหม่ (โดยไม่ต้องบันทึก) ด้วยการกำหนดค่าใหม่ VUGen จะเพิ่มโค้ดที่จำเป็นโดยอัตโนมัติเพื่อจัดการความสัมพันธ์ เราจะดูตัวอย่างโดยละเอียดเพิ่มเติมใน Manual Correlation

โปรดทราบว่า หากคุณดำเนินการเชื่อมโยงด้วยตนเองหรือใช้ความสัมพันธ์อัตโนมัติ ส่วนของโค้ดจะมีไวยากรณ์และฟังก์ชันที่เหมือนกันทุกประการ

ขั้นตอนในการเชื่อมโยงสคริปต์อัตโนมัติ:

  1. บันทึกสคริปต์
  2. เล่นซ้ำสคริปต์
  3. ระบุค่าที่จะสัมพันธ์กัน
  4. เลือกค่าและคลิกปุ่มเชื่อมโยงอัตโนมัติ
  5. ตรวจสอบสคริปต์โดยการรันอีกครั้ง การวิ่งที่ประสบความสำเร็จหมายถึงความสัมพันธ์ที่ประสบความสำเร็จ

เคล็ดลับ:

  • สหสัมพันธ์ช่วยเรียกใช้สคริปต์ของคุณด้วยค่าที่แตกต่างกัน
  • ความสัมพันธ์ยังช่วยลดขนาดของสคริปต์ของคุณด้วย

ความสัมพันธ์แบบแมนนวล

ความสัมพันธ์แบบแมนนวลเป็นเรื่องเกี่ยวกับการเขียนโค้ดลงในสคริปต์ของคุณโดยตรงเพื่อรองรับค่าที่เปลี่ยนแปลงตลอดเวลา เราสามารถแบ่งออกเป็นขั้นตอนด้านล่าง:

  1. กำหนดค่าที่จะจับ
  2. ค้นหาขอบเขตข้อความด้านขวาและด้านซ้ายของค่าที่จะจับภาพ (WEB)
  3. ค้นหาว่าควรใช้ขอบเขตข้อความใด
  4. เพิ่มฟังก์ชัน web_reg_save_param ให้กับสคริปต์ เหนือส่วนของโค้ดที่ร้องขอหน้าเว็บที่มีค่าที่จะจับภาพ
  5. เพิ่มชื่อพารามิเตอร์ ขอบเขตด้านซ้าย ขอบเขตด้านขวา และรายการที่เกิดขึ้นให้กับฟังก์ชัน
  6. กำหนดพารามิเตอร์ของค่าไดนามิกในสคริปต์ทุกครั้งที่เกิดขึ้น
  7. ตรวจสอบการดำเนินการที่ถูกต้อง
web_reg_save_param (" OracleAppJSESSIONID3",
	"LB/IC=JSESSIONID=",
	"RB/IC=;",
	"Ord=l",
	"Search=headers",
	"RelFrameId=l",
	LAST);

web_reg_save_param("Siebel_Analytic_ViewState2",
	"LB/IC=ViewState\" value=\"",
	"RB/IC=\"",
	"Ord=1",
	"Search=Body",
	"RelFrameId=l",
	LAST);

ความสัมพันธ์แบบแมนนวลสามารถทำได้โดยการเปรียบเทียบ VUser ขั้นตอนในวิธีการเปรียบเทียบ VUser ของ Correlation สามารถแบ่งได้ดังนี้

  1. ระบุค่าไดนามิกที่ต้องมีความสัมพันธ์กัน
  2. ค้นหาการตอบสนองของเซิร์ฟเวอร์ที่มีค่าไดนามิก
  3. บันทึกค่าไดนามิกในพารามิเตอร์
  4. แทนที่ค่าไดนามิกที่เกิดขึ้นทุกครั้งด้วยพารามิเตอร์
  5. ตรวจสอบการเปลี่ยนแปลง

ทำความเข้าใจกับฟังก์ชัน Web_reg_save_param

VUGen มีฟังก์ชันหรือ API มากมายเพื่อสร้างความสัมพันธ์ระหว่างผู้สมัคร ได้แก่:

  • web_reg_save_param
  • web_reg_save_param_ex
  • web_reg_save_param_regexp
  • web_reg_save_param_xpath

แม้ว่าจะมีการแนะนำสั้นๆ ไว้ที่นี่ แต่หากต้องการทำความเข้าใจฟังก์ชันและพารามิเตอร์โดยละเอียด ให้เปิด VUGen เขียนฟังก์ชัน (หรือใช้ Steps Toolbox) เลื่อนเคอร์เซอร์ไปที่ฟังก์ชันแล้วคลิก F1 ทำความคุ้นเคยกับความช่วยเหลือของ VUGen และสร้างนิสัย คุณจะต้องจัดการกับมันบ่อยมากเมื่อทำงานในอุตสาหกรรมนี้

เรามาดูรายละเอียดฟังก์ชั่นกัน:

web_reg_save_param(ชื่อพารามิเตอร์ , ขอบเขตด้านซ้าย , ขอบเขตด้านขวา )

รายการคุณสมบัติ

แปลง: ค่าที่เป็นไปได้คือ:

HTML_TO_URL: แปลงข้อมูลที่เข้ารหัส HTML ให้เป็นรูปแบบข้อมูลที่เข้ารหัส URL

HTML_TO_TEXT: แปลงข้อมูลที่เข้ารหัส HTML เป็นรูปแบบข้อความธรรมดา คุณลักษณะนี้เป็นทางเลือก

ละเว้นการเปลี่ยนเส้นทาง: หากระบุ “Ignore Redirections=Yes” และการตอบกลับของเซิร์ฟเวอร์เป็นข้อมูลการเปลี่ยนเส้นทาง (รหัสสถานะ HTTP 300-303, 307) การตอบกลับจะไม่ถูกค้นหา หลังจากได้รับการตอบสนองการเปลี่ยนเส้นทางแล้ว คำขอ GET จะถูกส่งไปยังตำแหน่งที่ถูกเปลี่ยนเส้นทาง และทำการค้นหาการตอบสนองจากตำแหน่งนั้น

แอ็ตทริบิวต์นี้เป็นทางเลือก ค่าเริ่มต้นคือ “ละเว้นการเปลี่ยนเส้นทาง=ไม่ใช่”

ปอนด์: ขอบเขตด้านซ้ายของพารามิเตอร์หรือข้อมูลไดนามิก หากคุณไม่ได้ระบุค่า LB ระบบจะใช้อักขระทั้งหมดจากจุดเริ่มต้นของข้อมูลเป็นขอบเขต พารามิเตอร์ขอบเขตจะพิจารณาตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ หากต้องการปรับแต่งข้อความค้นหาเพิ่มเติม ให้ใช้แฟล็กข้อความตั้งแต่หนึ่งรายการขึ้นไป แอตทริบิวต์นี้เป็นสิ่งจำเป็น ดูส่วนข้อโต้แย้งขอบเขต

ไม่พบ: ตัวเลือกการจัดการเมื่อไม่พบขอบเขต และสร้างสตริงว่าง

“ไม่พบ=ข้อผิดพลาด” ซึ่งเป็นค่าเริ่มต้น ทำให้เกิดข้อผิดพลาดเมื่อไม่พบขอบเขต

“Not found=warning” (“Not found=empty” ในเวอร์ชันก่อนหน้า) ไม่พบข้อผิดพลาด หากไม่พบขอบเขต จะตั้งค่าการนับพารามิเตอร์เป็น 0 และดำเนินการสคริปต์ต่อไป ตัวเลือก "คำเตือน" เหมาะอย่างยิ่งหากคุณต้องการดูว่าพบสตริงหรือไม่ แต่คุณไม่ต้องการให้สคริปต์ทำงานล้มเหลว

หมายเหตุ: หากเปิดใช้งาน Continue on Error สำหรับสคริปต์ แม้ว่า NOTFOUND จะถูกตั้งค่าเป็น "ข้อผิดพลาด" สคริปต์จะดำเนินต่อไปเมื่อไม่พบขอบเขต แต่มีข้อความแสดงข้อผิดพลาดถูกเขียนลงในไฟล์บันทึกแบบขยาย

แอ็ตทริบิวต์นี้เป็นทางเลือกเช่นกัน

ORD: ระบุตำแหน่งลำดับหรืออินสแตนซ์ของการแข่งขัน อินสแตนซ์เริ่มต้นคือ 1 หากคุณระบุ "ทั้งหมด" ระบบจะบันทึกค่าพารามิเตอร์ในอาร์เรย์ แอ็ตทริบิวต์นี้เป็นทางเลือก

หมายเหตุ: รองรับการใช้อินสแตนซ์แทน ORD สำหรับความเข้ากันได้แบบย้อนหลัง แต่เลิกใช้งานแล้ว

RB: ขอบเขตด้านขวาของพารามิเตอร์หรือข้อมูลไดนามิก หากคุณไม่ได้ระบุค่า RB ระบบจะใช้อักขระทั้งหมดจนถึงจุดสิ้นสุดของข้อมูลเป็นขอบเขต พารามิเตอร์ขอบเขตจะพิจารณาตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ หากต้องการปรับแต่งข้อความค้นหาเพิ่มเติม ให้ใช้แฟล็กข้อความตั้งแต่หนึ่งรายการขึ้นไป แอตทริบิวต์นี้เป็นสิ่งจำเป็น ดูส่วนข้อโต้แย้งขอบเขต

RelFrameID: ระดับลำดับชั้นของหน้า HTML ที่สัมพันธ์กับ URL ที่ร้องขอ ค่าที่เป็นไปได้คือทั้งหมดหรือตัวเลข คลิกแอตทริบิวต์ RelFrameID เพื่อดูคำอธิบายโดยละเอียด แอ็ตทริบิวต์นี้เป็นทางเลือก

หมายเหตุ RelFrameID ไม่ได้รับการสนับสนุนในสคริปต์ระดับ GUI

บันทึกเลน: ความยาวของสตริงย่อยของค่าที่พบ จากออฟเซ็ตที่ระบุ ที่จะบันทึกลงในพารามิเตอร์ แอ็ตทริบิวต์นี้เป็นทางเลือก ค่าดีฟอลต์คือ -1 ซึ่งระบุให้บันทึกที่ส่วนท้ายของสตริง

บันทึกออฟเซ็ต: การชดเชยของสตริงย่อยของค่าที่พบ เพื่อบันทึกลงในพารามิเตอร์ ค่าออฟเซ็ตจะต้องไม่เป็นลบ ค่าดีฟอลต์คือ 0 แอ็ตทริบิวต์นี้เป็นทางเลือก

ค้นหา: ขอบเขตการค้นหา-ตำแหน่งที่จะค้นหาข้อมูลที่คั่น ค่าที่เป็นไปได้คือ ส่วนหัว (ค้นหาเฉพาะส่วนหัว), เนื้อความ (ค้นหาเฉพาะข้อมูลเนื้อหา ไม่ใช่ส่วนหัว), ไม่มีทรัพยากร (ค้นหาเฉพาะเนื้อหา HTML ไม่รวมส่วนหัวและทรัพยากรทั้งหมด) หรือ ทั้งหมด (เนื้อหาการค้นหา ส่วนหัว และทรัพยากร) ค่าเริ่มต้นคือทั้งหมด แอ็ตทริบิวต์นี้เป็นทางเลือก แต่โดยทั่วไปนิยมใช้