การทดสอบการโหลด API ด้วย K6
การทดสอบการโหลด API เป็นกระบวนการจำลองทราฟฟิกของผู้ใช้ไปยังจุดสิ้นสุด API เพื่อวัดประสิทธิภาพและความสามารถในการจัดการคำขอจำนวนมาก จุดประสงค์ของการทดสอบโหลด API คือเพื่อค้นหาปัญหาด้านประสิทธิภาพ เช่น เวลาตอบสนองช้า อัตราข้อผิดพลาดสูง หรือปัญหาอื่นๆ ที่อาจส่งผลต่อประสบการณ์ของผู้ใช้
ในการโหลดการทดสอบ API คุณต้องส่งคำขอจำนวนมากไปยังตำแหน่งข้อมูล API โดยใช้เครื่องมือหรือเฟรมเวิร์กที่ออกแบบมาเพื่อจุดประสงค์นี้โดยเฉพาะ โดยทั่วไป คำขอเหล่านี้ได้รับการออกแบบเพื่อจำลองพฤติกรรมของผู้ใช้ที่หลากหลาย รวมถึงคำขอที่เกิดขึ้นพร้อมกัน คำขอประเภทต่างๆ และขนาดเพย์โหลดที่แตกต่างกัน ประสิทธิภาพและความสามารถในการปรับขนาดของเอ็นด์พอยต์นั้นพิจารณาจากการวิเคราะห์การตอบสนองจาก API ภายใต้เงื่อนไขการโหลดที่แตกต่างกัน
ความเสถียรและความน่าเชื่อถือของเว็บแอปพลิเคชันที่ใช้ API สามารถรับประกันได้โดยการทดสอบโหลด ด้วยการทดสอบโหลด วิศวกรซอฟต์แวร์และผู้ดูแลระบบสามารถระบุปัญหาที่อาจเกิดขึ้นและเพิ่มประสิทธิภาพ API เพื่อจัดการกับปริมาณการใช้งานที่สูง ช่วยให้มั่นใจได้ว่าผู้บริโภคของ API จะได้รับประสบการณ์ผู้ใช้ที่สอดคล้องและตอบสนอง
ประเภทต่างๆ ของการทดสอบการโหลด API
มีการทดสอบหลายประเภทที่สามารถใช้เพื่อประเมินประสิทธิภาพของจุดสิ้นสุด API:
- การทดสอบประสิทธิภาพ : เราสามารถใช้ประเภทการทดสอบนี้เพื่อวัดเวลาตอบสนองของ API ภายใต้เงื่อนไขการโหลดที่แตกต่างกัน เป้าหมายคือการระบุว่า API สามารถประมวลผลและตอบสนองต่อคำขอได้เร็วเพียงใด
- การทดสอบความเครียด : เราใช้การทดสอบความเครียดเพื่อทดสอบความสามารถของ API ในการจัดการกับคำขอจำนวนมาก เป้าหมายคือการระบุความจุสูงสุดของ API และลักษณะการทำงานเมื่อถึงขีดจำกัด
- การทดสอบการเพิ่มขึ้นอย่างรวดเร็ว : เราใช้การทดสอบการเพิ่มขึ้นอย่างรวดเร็วเพื่อประเมินความสามารถของ API ในการจัดการปริมาณการใช้ข้อมูลที่เพิ่มขึ้นอย่างรวดเร็ว นอกจากนี้ยังสามารถช่วยระบุลักษณะการทำงานของ API เมื่อมีทราฟฟิกเพิ่มขึ้นอย่างไม่คาดคิด
- การทดสอบความทนทาน : เราใช้การทดสอบความทนทานเพื่อประเมินประสิทธิภาพของ API ภายใต้การโหลดที่ต่อเนื่องเป็นระยะเวลานาน เป้าหมายคือการระบุประสิทธิภาพที่ลดลงหรือการรั่วไหลของหน่วยความจำที่อาจเกิดขึ้นเมื่อเวลาผ่านไป
- การทดสอบปริมาณ : เราใช้การทดสอบปริมาณเพื่อประเมินประสิทธิภาพของ API ภายใต้ปริมาณคำขอเฉพาะ เป้าหมายคือกำหนดจำนวนคำขอสูงสุดที่ API สามารถจัดการได้ในขณะที่รักษาระดับประสิทธิภาพที่ยอมรับได้
K6
สำหรับบท ช่วยสอนนี้ เราจะใช้K6 เป็นเครื่องมือโอเพ่นซอร์สอันทรงพลังที่ออกแบบมาเพื่อโหลดทดสอบเว็บแอปพลิเคชันและ API พนักงานที่ Grafana LabsเขียนในGoและมีภาษาสคริปต์ที่ใช้ JavaScript ที่ทันสมัย ซึ่งทำให้ง่ายต่อการเขียนและบำรุงรักษาสคริปต์ทดสอบ นอกจากนี้ ยังนำเสนอคุณสมบัติที่หลากหลาย รวมถึงการสนับสนุนโปรโตคอล HTTP/1.1, HTTP/2, WebSocket และ gRPC และการผสานรวมกับเครื่องมือ DevOps ยอดนิยมเช่นGrafana , InfluxDBและPrometheus
อินเทอร์เฟซที่ใช้งานง่ายของ K6 ความสามารถในการเขียนสคริปต์ที่ทรงพลัง และการผสานรวมเข้ากับเครื่องมือต่างๆ ทำให้ K6 เป็นตัวเลือกที่เหมาะสำหรับวิศวกรซอฟต์แวร์และผู้ดูแลระบบที่ต้องการโหลดทดสอบ API ของตนอย่างมีประสิทธิภาพและประสิทธิผล
ติดตั้งแพ็คเกจ
npm install k6
เมื่อคุณติดตั้งแพ็คเกจ K6 NPMแล้ว คุณสามารถบันทึกโค้ด JavaScript ลงในไฟล์ได้ ตัวอย่างเช่นjokes_api_load_test.jsจากนั้นรันคำสั่งต่อไปนี้เพื่อดำเนินการทดสอบ:
k6 run --vus 100 --duration 4m jokes_api_load_test.js
การทดสอบโหลดประกอบด้วยการทดสอบห้าประเภทที่แตกต่างกัน:
- การทดสอบประสิทธิภาพ : การทดสอบนี้ผ่านด้วยรหัสสถานะ 200
- การทดสอบความเครียด : การทดสอบนี้ล้มเหลวด้วยรหัสสถานะ 200 การทดสอบดำเนินการโดยมีผู้ใช้เสมือน 300 รายดำเนินการตามคำขอสำเร็จ แต่ผู้ใช้เสมือน 9700 รายล้มเหลว
- Spike Test : การทดสอบนี้ล้มเหลวด้วยรหัสสถานะ 200 การทดสอบดำเนินการกับผู้ใช้เสมือน 100 ราย แต่ไม่มีรายใดที่สามารถดำเนินการตามคำขอได้สำเร็จ
- การทดสอบความทนทาน : การทดสอบนี้ล้มเหลวโดยมีรหัสสถานะเป็น 200 การทดสอบดำเนินการกับผู้ใช้เสมือน 100 ราย โดยมี 100 รายที่ดำเนินการตามคำขอและ 9900 รายที่ล้มเหลว
- การทดสอบปริมาณ : การทดสอบนี้ล้มเหลวโดยมีรหัสสถานะเป็น 200 การทดสอบดำเนินการกับผู้ใช้เสมือน 347 คน โดยมี 40898 คนล้มเหลว และสำเร็จเพียง 347 คน
K6 ดำเนินการทดสอบกับผู้ใช้เสมือน 100 ราย และจำนวนผู้ใช้เสมือนสูงสุดคือ 100 รายด้วย ดังนั้น เมตริกจึงvus_maxแสดงจำนวนผู้ใช้เสมือนสูงสุดในระหว่างการทดสอบ
ประเด็นที่สำคัญ
ต่อไปนี้คือวิธีที่เราสามารถใช้ผลการทดสอบการโหลด API เพื่อปรับปรุงประสิทธิภาพและความเสถียรของตำแหน่งข้อมูล API:
- ปรับปรุงการจัดการข้อผิดพลาด : เปอร์เซ็นต์คำขอ HTTP ที่ล้มเหลวสูงบ่งชี้ว่าอาจมีปัญหาเกี่ยวกับการจัดการข้อผิดพลาดในจุดสิ้นสุด API การระบุและแก้ไขปัญหาเหล่านี้สามารถช่วยปรับปรุงความเสถียรของอุปกรณ์ปลายทางได้
- เพิ่มประสิทธิภาพ : ระยะเวลาคำขอ HTTP เฉลี่ย 236.7ms ค่อนข้างช้า อาจเกิดจากการสืบค้นฐานข้อมูลที่ไม่มีประสิทธิภาพหรือการสื่อสารเครือข่ายที่ช้า เพื่อปรับปรุงประสิทธิภาพ การตรวจสอบและปรับโค้ด การสืบค้น และทรัพยากรอื่นๆ ที่เกี่ยวข้องในคำขอให้เหมาะสมอาจเป็นประโยชน์
- โครงสร้างพื้นฐานของสเกล : การทดสอบยังระบุว่าจุดสิ้นสุดอาจต้องการความช่วยเหลือเพื่อจัดการกับทราฟฟิกปริมาณมาก การปรับขนาดโครงสร้างพื้นฐาน เช่น การเพิ่มจำนวนเซิร์ฟเวอร์หรือการใช้โหลดบาลานเซอร์ สามารถช่วยให้แน่ใจว่าจุดสิ้นสุดสามารถรองรับปริมาณการรับส่งข้อมูลที่สูงขึ้นโดยไม่ทำให้ช้าลงหรือหยุดทำงาน
- ปรับปรุงข้อความแสดงข้อผิดพลาด : การทดสอบที่ล้มเหลวสามารถช่วยระบุข้อผิดพลาดทั่วไป ซึ่งเราสามารถใช้เพื่อปรับปรุงข้อความแสดงข้อผิดพลาดสำหรับตำแหน่งข้อมูล API ข้อความแสดงข้อผิดพลาดที่ดีขึ้นสามารถช่วยวิศวกรซอฟต์แวร์ในการระบุและแก้ไขปัญหาเมื่อเกิดขึ้นได้อย่างรวดเร็ว
- เพิ่มความครอบคลุมการทดสอบ : การทดสอบประเภทต่างๆ ที่ใช้ในการทดสอบโหลดสามารถช่วยระบุพื้นที่ของจุดสิ้นสุด API ที่ต้องมีการทดสอบเพิ่มเติม นอกจากนี้ การเพิ่มความครอบคลุมการทดสอบสามารถช่วยให้แน่ใจว่าจุดสิ้นสุดทำงานอย่างถูกต้องและทำงานได้ดีภายใต้ทราฟฟิกผู้ใช้และสถานการณ์ประเภทต่างๆ
ทำซ้ำต่อไป จัดส่งต่อไป และช่วยเหลือผู้ใช้ปลายทางต่อไป
— — —
*** ทิ้งฉันไว้ หากคุณพบว่าสิ่งนี้มีประโยชน์ หรือแบ่งปันความคิดเห็นของคุณในความคิดเห็น





































![รายการที่เชื่อมโยงคืออะไร? [ส่วนที่ 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)