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

เป็นสิ่งที่ JMeter เซิร์ฟเวอร์พร็อกซี HTTP?
การขอ JMeter HTTP Proxy Server คือตัวบันทึกในตัวที่อยู่ระหว่างเบราว์เซอร์และเว็บไซต์ที่กำลังทดสอบ มันจะเฝ้าดูและบันทึกกิจกรรมของผู้ใช้ในขณะที่เรียกดูแอปพลิเคชันตามปกติ และแปลงคำขอที่บันทึกไว้แต่ละรายการให้เป็นตัวอย่างคำขอ HTTP ภายในแผนการทดสอบ JMeter 3.0 องค์ประกอบดังกล่าวได้รับการตั้งชื่อว่า เครื่องบันทึกสคริปต์ทดสอบ HTTP(S)และทั้งสองชื่อนี้ใช้เรียกส่วนประกอบเดียวกัน
บันทึก การทดสอบ ช่วยให้ผู้ทดสอบบันทึกและเล่นซ้ำกิจกรรมกับเป้าหมายการทดสอบได้ เป็นการทดสอบแบบอัตโนมัติประเภทหนึ่ง แต่สามารถใช้งานได้พร้อมกันหลายคน
เหตุใดจึงควรบันทึกเสียงแทนการเขียนบทด้วยมือ?
เส้นทางการใช้งานของผู้ใช้จริงบนเว็บไซต์สมัยใหม่จะสร้างคำขอหลายสิบรายการ แต่ละรายการมีส่วนหัว คุกกี้ และพารามิเตอร์แบบฟอร์มของตัวเอง Typing การป้อนข้อมูลทั้งหมดลงในเครื่องสุ่มตัวอย่างด้วยมือนั้นช้าและมีโอกาสเกิดข้อผิดพลาดสูง การบันทึกจะจับภาพการรับส่งข้อมูลที่เบราว์เซอร์ส่งมาอย่างแม่นยำ ซึ่งมีข้อดีสามประการ:
- ความถูกต้อง: ลำดับส่วนหัว คุกกี้ และช่องข้อมูลที่ซ่อนอยู่ จะถูกบันทึกไว้ตรงตามที่เซิร์ฟเวอร์ได้รับทุกประการ
- ความเร็ว: การเดินทางสิบหน้าใช้เวลาเพียงไม่กี่นาทีในการบันทึก แต่ใช้เวลาหลายชั่วโมงในการเขียนด้วยมือ
- ครอบคลุม: การเรียกใช้ AJAX ในเบื้องหลังซึ่งมองไม่เห็นในส่วนติดต่อผู้ใช้ยังคงปรากฏในการบันทึก
การบันทึกนี้เป็นเพียงจุดเริ่มต้น ไม่ใช่การทดสอบที่เสร็จสมบูรณ์ ยังคงต้องมีการทำความสะอาด การเชื่อมโยง และการกำหนดค่าพารามิเตอร์เพิ่มเติมก่อนที่จะสามารถนำไปใช้ได้ โหลดการทดสอบส่วนด้านล่างนี้จะอธิบายเส้นทางทั้งหมดตั้งแต่ต้นจนจบ JMeter หน้าต่างสำหรับสคริปต์ที่เล่นซ้ำได้อย่างน่าเชื่อถือ
ที่นี่คือ แผนงาน ของตัวอย่างเชิงปฏิบัตินี้
วิธีการบันทึกสคริปต์ใน JMeter 5.x
เวอร์ชันปัจจุบันคือ Apache JMeter 5.6.3 ซึ่งเผยแพร่เมื่อวันที่ 9 มกราคม 2024 และกำหนดให้ต้องมี Java 8 หรือหลังจากนั้น พร้อมด้วย Java แนะนำ 17 รายการ ผู้ที่ทำตามขั้นตอนการใช้งานพร้อมภาพประกอบด้านล่างของหน้านี้ในเวอร์ชันดังกล่าวจะไม่พบโหนด WorkBench เนื่องจากถูกลบออกไปในเวอร์ชัน 5.0 ฟังก์ชันการทำงานไม่ได้หายไป แต่ถูกย้ายไปที่อื่น ตอนนี้ตัวบันทึกถูกเพิ่มเข้าไปในแผนการทดสอบโดยตรงและเรียกว่า HTTP(S) Test Script Recorder
เส้นทางที่เร็วที่สุดคือเทมเพลตแบบรวม เลือก เนื้อไม่มีมัน > แม่แบบ > การบันทึก และ JMeter สร้างแผนงานที่สมบูรณ์ซึ่งประกอบด้วยกลุ่มเธรด ค่าเริ่มต้นของคำขอ HTTP ตัวควบคุมการบันทึก และตัวบันทึกเอง ซึ่งเชื่อมต่อเข้าด้วยกันเรียบร้อยแล้ว การสร้างโครงสร้างเดียวกันนี้ด้วยตนเองต้องทำตามขั้นตอนด้านล่าง
- สร้างโครงร่างแผนงาน เพิ่ม Thread Group จากนั้นเพิ่ม Recording Controller ไว้ใต้ Thread Group นั้น นี่คือตำแหน่งที่ไฟล์เสียงที่บันทึกไว้จะถูกจัดเก็บ
- เพิ่มเครื่องบันทึกเข้าไปในแผนการทดสอบ คลิกขวาที่โหนดแผนการทดสอบ แล้วเลือก เพิ่ม > องค์ประกอบที่ไม่ใช่การทดสอบ > เครื่องบันทึกสคริปต์ทดสอบ HTTP(S)มันเป็นกลุ่มพี่น้องของกลุ่ม Thread ไม่ใช่ลูกของกลุ่มนั้น
- ตั้งค่าพอร์ต ค่าเริ่มต้นคือ 8888 พอร์ตว่างใดๆ ก็ใช้ได้ ตราบใดที่เบราว์เซอร์ได้รับการตั้งค่าให้ตรงกัน
- เลือกกระเป๋า Target ตัวควบคุม เลือกตัวควบคุมการบันทึกที่สร้างไว้ในขั้นตอนแรก เพื่อให้คำขอถูกจัดกลุ่มในตำแหน่งที่คุณคาดหวัง แทนที่จะกระจัดกระจายอยู่ที่รากของแผน
- เพิ่ม URL รูปแบบการกีดกัน ในแท็บการกรองคำขอ ให้ยกเว้นทรัพยากรคงที่โดยใช้รูปแบบเช่น .*\.(bmp|css|js|gif|ico|jpe?g|png|svg|woff2?)วิธีนี้จะช่วยลดขั้นตอนการทำความสะอาดด้วยตนเองส่วนใหญ่ที่อธิบายไว้ในภายหลัง
- เริ่มการบันทึก คลิก เริ่มต้น ที่ด้านบนของแผงควบคุมเครื่องบันทึก JMeter Apache เขียนว่าJMeterในขณะนี้ ให้ย้ายไฟล์ TemporaryRootCA.crt ไปยังโฟลเดอร์ bin ซึ่งจะทำให้สามารถบันทึกผ่าน HTTPS ได้
- ตั้งค่าเบราว์เซอร์ให้ชี้ไปยังพร็อกซี โดยใช้ localhost และพอร์ตที่เลือก จากนั้นจึงใช้งานแอปพลิเคชันตามปกติ
- หยุดและจัดระเบียบให้เรียบร้อย กดหยุด ลบสายเรียกเข้าจากบุคคลที่สามที่เหลือทั้งหมด และบันทึกแผน
- ตรวจสอบความถูกต้องก่อนขยายขนาด คลิกขวาที่กลุ่มเธรดแล้วเลือก ตรวจสอบวิธีนี้จะรันแผนเพียงครั้งเดียวด้วยเธรดเดียว ดังนั้นข้อผิดพลาดจะปรากฏขึ้นก่อนที่จะมีการใช้งานโหลดใดๆ
อีกหนึ่งนิสัยที่สำคัญที่ทำให้สคริปต์ที่ใช้งานได้จริงแตกต่างจากสคริปต์ที่เชื่อถือได้ คือ ให้ใช้ส่วนติดต่อผู้ใช้แบบกราฟิกสำหรับการสร้างและแก้ไขข้อผิดพลาดเท่านั้น จากนั้นจึงทำการทดสอบจริงจากบรรทัดคำสั่ง jmeter -n -t plan.jmx -l results.jtl -e -o reportซึ่งจะสร้างแดชบอร์ด HTML ด้วยเช่นกัน คำสั่งเดียวกันนี้เป็นพื้นฐานของ การทดสอบแบบกระจาย ครอบคลุมเครื่องกำเนิดไฟฟ้าหลายเครื่อง การติดตั้งมีรายละเอียดอยู่ในเอกสารนี้ JMeter คู่มือการติดตั้งและขั้นตอนทั้งหมดได้ถูกบันทึกไว้ในเอกสารแล้ว Apache JMeter หน้าบันทึก.
⚠️ หมายเหตุเกี่ยวกับเวอร์ชัน: ภาพหน้าจอในคำแนะนำด้านล่างนี้ถูกบันทึกจากอุปกรณ์รุ่นเก่า JMeter เวอร์ชันที่ยังคงมีโหนด WorkBench อยู่ แต่ WorkBench ถูกลบออกไปแล้วในเวอร์ชันก่อนหน้า JMeter 5.0. แนวคิดทุกอย่างยังคงใช้ได้เหมือนเดิม เพียงแต่ตำแหน่งของเครื่องบันทึกเปลี่ยนไป และขั้นตอนปัจจุบันก็คือขั้นตอนที่กล่าวไว้ข้างต้น
ขั้นตอนที่ 1) การตั้งค่าเซิร์ฟเวอร์ HTTP Proxy
นี่คือคำแนะนำทีละขั้นตอนในการตั้งค่าพร็อกซี
- เริ่มต้น JMeter
- เลือก แผนการทดสอบ บนต้นไม้
- เพิ่ม กลุ่มกระทู้คลิกขวาที่ แผนการทดสอบ และเพิ่มกลุ่มเธรดใหม่: เพิ่ม > กระทู้ (ผู้ใช้) > กลุ่มกระทู้
- เพิ่ม คำขอ HTTPเลือกกลุ่มเธรด แล้วคลิกขวา เพิ่ม > กำหนดค่าองค์ประกอบ > ค่าเริ่มต้นของคำขอ HTTP
ในองค์ประกอบค่าเริ่มต้นคำขอ HTTP ใหม่: ในชื่อเซิร์ฟเวอร์หรือ IP ให้ป้อน "google.com" คุณควรเว้นช่องอื่นๆ ว่างไว้
- เพิ่ม ตัวควบคุมการบันทึกคลิกขวาที่ “กลุ่มเธรด” แล้วเพิ่มตัวควบคุมการบันทึก: เพิ่ม > ตัวควบคุมลอจิก > ตัวควบคุมการบันทึก
- เพิ่ม Proxy Server ไปยัง WorkBench คลิกขวาบน Workbench แล้วเพิ่มพร็อกซี HTTP: เพิ่ม > องค์ประกอบที่ไม่ใช่การทดสอบ > พร็อกซีเซิร์ฟเวอร์ HTTP. เกี่ยวกับ JMeter 5.x คลิกขวาที่ แผนการทดสอบ แทนโหนดและเลือก เครื่องบันทึกสคริปต์ทดสอบ HTTP(S).
- ชุด Target ตัวควบคุม โดยที่สคริปต์ที่บันทึกไว้ของคุณจะถูกเพิ่ม
- เริ่มต้น พร็อกซีเซิร์ฟเวอร์ กลับไปที่ HTTP Proxy Server แล้วคลิก เริ่มต้น ปุ่มที่ด้านล่าง ตอนนี้ของคุณ JMeter พร็อกซีเซิร์ฟเวอร์เริ่มต้น
- เริ่มเบราว์เซอร์ของคุณ (ฉันใช้ Firefox), เลือก เครื่องมือ > ตัวเลือกเสริม (Option) > ค้นหาระดับสูง > เครือข่าย > การตั้งค่า > ป้อนพร็อกซี HTTP ตามรูปด้านล่าง ในปัจจุบัน Firefox การเผยแพร่บทสนทนาเดียวกันนี้สามารถเข้าถึงได้ผ่านทาง การตั้งค่า > ทั่วไป > ตั้งค่าเครือข่าย.
ขั้นตอนที่ 2) บันทึกกิจกรรมของคุณ
- ตอนนี้เปิดตัว http://www.google.com ในเว็บเบราว์เซอร์ของคุณ (JMeter ยังเปิดอยู่)
- ทำกิจกรรมค้นหาคำสำคัญ “guru99"
- กลับไป JMeterใน HTTP Proxy Server คลิก หยุด เมื่อเสร็จแล้ว
- หลังจากบันทึกเสร็จจะพบว่า JMeter สร้างคำขอ HTTP ใหม่โดยอัตโนมัติตามรูปด้านล่าง
JMeter ได้บันทึกคำขอของผู้ใช้ไปแล้ว หน้าแรก of Google เว็บไซต์. http://www.google.com/
คำขอ HTTP อื่นๆ แสดงในรูปด้านบน คุณควรลบออก เพราะบางครั้ง JMeter นอกจากนี้ยังบันทึกลิงก์โฆษณาบางส่วนขณะที่คุณค้นหาคำหลักบนเว็บไซต์ด้วย Googleเราควรเพิกเฉยต่อสิ่งเหล่านั้นในแผนการทดสอบของเรา
- คลิก ไฟล์ > บันทึกแผนการทดสอบของคุณเป็น
- จะมีกล่องโต้ตอบปรากฏขึ้น > ป้อนชื่อแผนการทดสอบของคุณในช่องชื่อไฟล์ > คลิกบันทึก ตอนนี้แผนการทดสอบของคุณถูกบันทึกแล้วในชื่อ RecordingTestPlan.jmx
ขั้นตอนที่ 3) เรียกใช้แผนการทดสอบของคุณ
- เลือก กลุ่มเธรด > เพิ่ม > ผู้ฟัง > รายงานสรุป
- รายงานสรุปจะแสดงสถิติพื้นฐานบางประการ
- เลือก Thread Group กรอกข้อมูลตามภาพด้านล่าง
คุณสามารถอ้างอิงบทความได้ JMeter การทดสอบประสิทธิภาพ เพื่อทราบรายละเอียดเกี่ยวกับการกำหนดค่า Thread Group
- ก่อนเริ่มการทดสอบ ให้เลือก “รายงานสรุป” เมื่อพร้อมที่จะทำการทดสอบ ให้เลือก เรียกใช้ > เริ่ม (Ctrl+R) JMeter โปรแกรมจะเล่นกิจกรรมของคุณซ้ำ 100 ครั้ง ในระหว่างการทดสอบ สถิติจะเปลี่ยนแปลงไปจนกว่าการทดสอบจะเสร็จสิ้น
ขั้นตอนที่ 4) บันทึกผลการทดสอบของคุณ
- คลิก บันทึกข้อมูลตาราง เพื่อบันทึกผลการทดสอบลงไฟล์
- ป้อนชื่อของผลการทดสอบแล้วคลิกบันทึก ผลการทดสอบใน JMeter จะถูกบันทึกในรูปแบบ *.csv เป็นค่าเริ่มต้น
ดาวน์โหลดแผนทดสอบการบันทึกไฟล์
ดาวน์โหลดไฟล์ HTTP Proxy Server
การบันทึกข้อมูลการรับส่ง HTTPS และใบรับรอง
ปัจจุบันเว็บไซต์เกือบทุกแห่งใช้ HTTPS ซึ่งคู่มือฉบับเดิมเขียนขึ้นก่อนที่ HTTPS จะใช้ พร็อกซีไม่สามารถอ่านข้อมูลที่เข้ารหัสได้ เว้นแต่เบราว์เซอร์จะเชื่อถือพร็อกซีนั้น ดังนั้นจึงจำเป็นต้องมีขั้นตอนเพิ่มเติมอีกหนึ่งขั้นตอน
เมื่อเครื่องบันทึกเริ่มทำงาน JMeter สร้างใบรับรองรากชั่วคราวชื่อ อาปาเช่JMeterTemporaryRootCA.crt ในไดเร็กทอรี bin ของมัน นำไฟล์นั้นไปนำเข้าในเบราว์เซอร์ในฐานะหน่วยงานออกใบรับรองที่เชื่อถือได้ แล้วรีสตาร์ทเบราว์เซอร์ JMeter ขณะนี้สามารถแสดงใบรับรองของตนเองสำหรับแต่ละเว็บไซต์และถอดรหัสเซสชันเพื่อบันทึกได้แล้ว
มีสามประเด็นสำคัญที่ควรทราบ:
- ใบรับรองนี้มีอายุเจ็ดวัน นี่เป็นการกระทำโดยเจตนา ลบมันทิ้งแล้วปล่อยไว้ JMeter สร้างอันใหม่ขึ้นมาแทนที่จะขยายอายุการใช้งาน
- เมื่อใช้งานเสร็จแล้วให้นำออก การปล่อยให้ใบรับรองรากที่เชื่อถือได้ติดตั้งอยู่บนเครื่องที่ใช้งานอยู่เป็นความเสี่ยงด้านความปลอดภัยที่แท้จริง ไม่ใช่ความเสี่ยงเชิงทฤษฎี
- แอปพลิเคชันบางตัวปฏิเสธการใช้งานนี้ เว็บไซต์ที่ใช้การตรึงใบรับรองหรือ TLS แบบร่วมกันไม่สามารถบันทึกผ่านพร็อกซีได้เลย และต้องสร้างสคริปต์ด้วยตนเองจากเครื่องมือสำหรับนักพัฒนาเบราว์เซอร์แทน
ความสัมพันธ์: การทำให้สคริปต์ที่บันทึกไว้สามารถเล่นซ้ำได้
สคริปต์ที่บันทึกไว้จะจำลองสิ่งที่เกิดขึ้นครั้งแรกได้อย่างแม่นยำ ซึ่งโดยปกติแล้วจะไม่เหมือนกับสิ่งที่เกิดขึ้นในครั้งที่สอง ตัวระบุเซสชัน โทเค็น และคีย์ที่สร้างขึ้นซึ่งถูกบันทึกไว้ จะกลายเป็นค่าที่ไม่ใช้งานแล้วเมื่อสคริปต์ถูกเล่นซ้ำ และการทำงานจะล้มเหลวในลักษณะที่ดูเหมือนข้อผิดพลาดของแอปพลิเคชัน
ความสัมพันธ์คือคำตอบ โพสต์โปรเซสเซอร์ เช่น นิพจน์ปกติ (Regular Expression Ex)tracทอร์ หรือ JSON ExtracTor จะดึงค่าล่าสุดจากผลตอบรับการล็อกอิน เก็บไว้ในตัวแปร และในภายหลังการร้องขอต่างๆ จะอ้างอิงถึงตัวแปรนั้นแทนที่จะใช้ค่าคงที่ที่บันทึกไว้
ขั้นตอนการทำงานนั้นสั้น:
- เล่นสคริปต์ซ้ำอีกครั้งโดยใช้ Listener สำหรับ View Results Tree แล้วค้นหาคำขอที่ล้มเหลวรายการแรก
- เปรียบเทียบคำขอที่ล้มเหลวกับข้อมูลที่บันทึกไว้ ค่าใดๆ ที่แตกต่างกันระหว่างการทำงานสองครั้งจำเป็นต้องหาความสัมพันธ์กัน
- เพิ่มอดีตtracอ้างอิงจากผลตอบสนองที่สร้างค่าดังกล่าว จากนั้นแทนที่ค่าคงที่ด้วยการอ้างอิงตัวแปร
- เพิ่ม การยืนยัน ดังนั้น หน้าเว็บที่ส่งคืน HTTP 200 พร้อมข้อความแสดงข้อผิดพลาด ก็ยังคงไม่ผ่านการทดสอบอยู่ดี
หลังจากทำการหาความสัมพันธ์แล้ว สคริปต์จึงจะสามารถขยายขนาดได้อย่างปลอดภัย การบันทึกข้อมูลที่ไม่สัมพันธ์กันกับผู้ใช้ร้อยคนนั้นเป็นการวัดการจัดการข้อผิดพลาดมากกว่าการวัดประสิทธิภาพ การปฏิบัติองค์ประกอบเพิ่มเติมจะกล่าวถึงในส่วนต่างๆ JMeter บทเรียน.
การแก้ไขปัญหา
หากคุณพบปัญหาขณะดำเนินการตามสถานการณ์ข้างต้น โปรดทำดังต่อไปนี้:
- ตรวจสอบว่าคุณเชื่อมต่ออินเทอร์เน็ตผ่านพรอกซีหรือไม่ ถ้าใช่ ให้ลบพรอกซีออก
- เปิดตัวอย่างใหม่ของ JMeter.
- เปิดไฟล์ RecordingTestPlan.jmx ใน JMeter.
- คลิกขวาที่ Workbench > Merge > เลือก HTTP Proxy Server.jmx JMeter 5.x ให้รวมเข้ากับโหนด Test Plan แทน เนื่องจาก WorkBench ไม่มีอยู่อีกต่อไปแล้ว
- คลิกที่ กลุ่มหัวข้อ > รายงานสรุป
- เรียกใช้การทดสอบ
อาการอีกสองอย่างต่อไปนี้เป็นสาเหตุหลักของความล้มเหลวที่เหลืออยู่ หากเบราว์เซอร์แจ้งว่าไม่สามารถเชื่อมต่อได้ แสดงว่าเครื่องบันทึกไม่เคยเริ่มทำงาน หรือพอร์ตที่ตั้งค่าในเบราว์เซอร์ไม่ตรงกับพอร์ตที่ตั้งค่าไว้ในเครื่องบันทึก JMeterหากหน้าเว็บโหลดได้ตามปกติ แต่ไม่มีอะไรปรากฏในโครงสร้าง แสดงว่าการรับส่งข้อมูลเป็น HTTPS และยังไม่ได้นำเข้าใบรับรอง



















