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

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

เป้าหมายของการทดสอบ Spike
เป้าหมายของการทดสอบ Spike คือการดูว่าระบบตอบสนองต่อการเพิ่มขึ้นและลดลงของโหลดของผู้ใช้โดยไม่คาดคิดอย่างไร ในการทดสอบ Spike ของวิศวกรรมซอฟต์แวร์จะช่วยระบุประสิทธิภาพของระบบจะลดลงเมื่อมีโหลดสูงอย่างกะทันหัน
เป้าหมายอีกประการหนึ่งของ Spike Testing คือการกำหนดเวลาในการฟื้นตัว ระหว่างการโหลดผู้ใช้ที่เพิ่มขึ้นอย่างรวดเร็วติดต่อกันสองครั้ง ระบบต้องใช้เวลาพอสมควรเพื่อรักษาเสถียรภาพ เวลาในการฟื้นตัวนี้ควรต่ำที่สุดเท่าที่จะเป็นไปได้
วิธีทำการทดสอบ Spike
ขั้นตอนง่ายๆ ในการดำเนินการทดสอบ Spike:
ขั้นตอนที่ 1) กำหนดความสามารถในการรับน้ำหนัก
กำหนดความสามารถในการโหลดผู้ใช้สูงสุดของแอปพลิเคชันซอฟต์แวร์ของคุณ
ขั้นตอนที่ 2) เตรียมสภาพแวดล้อมการทดสอบ
เตรียมสภาพแวดล้อมการทดสอบและกำหนดค่าให้บันทึกพารามิเตอร์ประสิทธิภาพ
ขั้นตอนที่ 3) กำหนดโหลดที่คาดหวัง
ใช้โหลดสูงสุดที่คาดหวังกับแอปพลิเคชันซอฟต์แวร์ของคุณโดยใช้ เครื่องมือทดสอบประสิทธิภาพ ที่คุณเลือก
ขั้นตอนที่ 4) เพิ่มภาระ
เพิ่มภาระให้กับระบบอย่างรวดเร็วตามระยะเวลาที่กำหนด
ขั้นตอนที่ 5) ตั้งค่าโหลดกลับเป็นปกติ
ค่อยๆ ลดภาระกลับสู่ระดับเดิม
ขั้นตอนที่ 6) วิเคราะห์ผลลัพธ์
วิเคราะห์กราฟประสิทธิภาพและตัวชี้วัด เช่น ความล้มเหลว เวลาที่ใช้ ผู้ใช้เสมือน ฯลฯ
ตัวอย่างสถานการณ์การทดสอบ Spike
- เมื่อร้านค้าอีคอมเมิร์ซเปิดตัวข้อเสนอพิเศษพร้อมส่วนลดมากมายเช่น Black Friday
- เมื่อเว็บแอพพลิเคชั่นถ่ายทอดสดรายการทีวีสุดโปรด
- เมื่อมีการลดราคาแฟลชบนเว็บไซต์ดีลรายวัน
- เมื่อเนื้อหาบางส่วนของไซต์แพร่ระบาดทางอินเทอร์เน็ต
- ระบบใหม่ได้รับการเผยแพร่สำหรับการผลิต และผู้ใช้หลายคนต้องการเข้าถึงระบบ
- ไฟฟ้าดับอาจทำให้ผู้ใช้ทั้งหมดสูญเสียการเข้าถึงระบบ หลังจากปัญหาไฟฟ้าดับได้รับการแก้ไขแล้ว ผู้ใช้ทั้งหมดจะเข้าสู่ระบบอีกครั้งพร้อมกัน
สถานการณ์การกู้คืนบน Spike Loads
สถานการณ์การกู้คืนหลักสามสถานการณ์ที่สามารถกำหนดค่าเพื่อป้องกัน Spikes ได้แก่:
- ใช้แพลตฟอร์มคลาวด์เช่น AWS, Azure เพื่อเพิ่มความจุของเซิร์ฟเวอร์แบบไดนามิกตามโหลดของผู้ใช้
- ไม่อนุญาตให้ผู้ใช้บางรายเข้าถึงแอปพลิเคชัน เพื่อให้ระบบไม่ต้องเผชิญกับภาระหนัก วิธีนี้จะป้องกันไม่ให้บุคคลที่อยู่เหนือน้ำหนักบรรทุกสูงสุดที่ออกแบบไว้เข้าสู่ระบบ จึงช่วยปกป้องระบบจากการคุกคามของโหลดที่มากเกินไป
- ผู้ดูแลเว็บไซต์อนุญาตให้ผู้ใช้เข้าร่วมระบบได้ อย่างไรก็ตาม พร้อมเตือนว่าอาจเผชิญการตอบสนองช้าเนื่องจากมีภาระหนัก ซึ่งอาจส่งผลเสียต่อประสิทธิภาพของระบบ อย่างไรก็ตามผู้ใช้จะสามารถทำงานร่วมกับระบบได้
ข้อดีและข้อเสียของการทดสอบแบบ Spike
ด้านล่างนี้คือข้อดีและข้อเสียของ Spike Testing:
| ข้อดี | ข้อเสีย |
|---|---|
| ต้องรักษาประสิทธิภาพของซอฟต์แวร์ไม่ว่าจะต้องเสียค่าใช้จ่ายใดก็ตาม อย่างไรก็ตาม เมื่อมีภาระงานของระบบใดๆ เพิ่มขึ้นอย่างมาก ก็มีโอกาสเกิดปัญหาสูง Spike Testing ช่วยทดสอบสถานการณ์ดังกล่าว | ข้อเสียอย่างเดียวของ Spike Testing คือเป็นกระบวนการทดสอบที่มีราคาแพง ดังนั้นจึงจำเป็นต้องมีการตั้งค่าเงื่อนไขการทดสอบพิเศษ อย่างไรก็ตาม หากใช้เวลานานกว่านี้ จะทำให้ ROI เป็นบวกอย่างแน่นอน |
| ในวิธีการทดสอบมาตรฐาน สถานการณ์เลวร้ายถึงกรณีที่เลวร้ายที่สุดอาจไม่ได้รับการแก้ไข อย่างไรก็ตาม การเพิกเฉยไม่ได้หมายความว่าจะไม่เกิดขึ้น ดังนั้นซอฟต์แวร์ทุกตัวควรพร้อมสำหรับความเป็นไปได้ดังกล่าว สถานการณ์กรณีที่เลวร้ายที่สุดประการหนึ่งคือการโหลดซึ่งสามารถตัดสินและย่อให้เล็กสุดได้ด้วยความช่วยเหลือของการทดสอบขัดขวาง |
เครื่องมือทดสอบสไปค์
1) JMeter
การขอ Apache JMeter เป็นเครื่องมือทดสอบขัดขวางโอเพ่นซอร์สของ Java ออกแบบมาเป็นพิเศษเพื่อโหลดพฤติกรรมการทดสอบการทำงานและวัดประสิทธิภาพ เครื่องมือทดสอบประสิทธิภาพนี้สามารถใช้เพื่อวิเคราะห์และวัดประสิทธิภาพของเว็บแอปพลิเคชันหรือบริการที่หลากหลาย ปัจจุบันมีการใช้กันอย่างแพร่หลายสำหรับการทดสอบการทำงาน การทดสอบเซิร์ฟเวอร์ฐานข้อมูล
2) โหลดรันเนอร์
LoadRunner เป็นเครื่องมือทดสอบโหลดสำหรับ Windows และ Linux ซึ่งช่วยให้การทดสอบเว็บและแอปอื่น ๆ พุ่งสูงขึ้น ช่วยในการกำหนดประสิทธิภาพและผลลัพธ์ของการใช้งานแม้ภายใต้ภาระงานหนัก
การทดสอบนี้เข้ากับกลุ่มการทดสอบประสิทธิภาพอย่างไร
การทดสอบประสิทธิภาพเป็นคำที่ใช้เรียกโดยรวม รูปแบบต่างๆ ที่กล่าวถึงด้านล่างนี้แตกต่างกันเพียงแค่ลักษณะของแรงที่ใช้และระยะเวลาที่คงแรงไว้ ซึ่งเป็นเหตุผลที่ทำให้มักเกิดความสับสนระหว่างการทดสอบทั้งสามประเภทนี้
| ประเภทการทดสอบ | รูปแบบการโหลด | คำถามมันตอบ |
|---|---|---|
| โหลดการทดสอบ | คาดการณ์ปริมาณการใช้ไฟฟ้าสูงสุด ระยะเวลาสั้น | ระบบสามารถบรรลุเป้าหมายภายใต้ปริมาณการใช้งานสูงสุดปกติได้หรือไม่? |
| การทดสอบความเครียด | เพิ่มขึ้นเกินขีดความสามารถจนกระทั่งเกิดความเสียหาย | มันพังตรงไหน และมันพังอย่างราบรื่นหรือไม่? |
| การทดสอบขัดขวาง | พุ่งขึ้นอย่างรุนแรงอย่างฉับพลัน แล้วก็ลดลง | รถคันนี้สามารถเอาตัวรอดและฟื้นตัวจากแรงกระแทกจากการจราจรได้หรือไม่? |
| การทดสอบความทนทาน | สามารถรับน้ำหนักปกติได้นานหลายชั่วโมง | ประสิทธิภาพจะลดลงเมื่อเวลาผ่านไปหรือไม่? |
| การทดสอบการแช่ | การรับน้ำหนักอย่างต่อเนื่องเป็นระยะเวลานาน | มีการรั่วไหลของหน่วยความจำหรือการใช้ทรัพยากรมากเกินไปหรือไม่? |
| การทดสอบความเสถียร | ภาระที่แตกต่างกันไปตามสภาวะต่างๆ | ระบบยังคงเชื่อถือได้หรือไม่เมื่อสภาวะเปลี่ยนแปลงไป? |
| การทดสอบปริมาตร | ผู้ใช้งานทั่วไป ปริมาณข้อมูลมหาศาล | มันสามารถรองรับการเติบโตของฐานข้อมูลได้หรือไม่? |
การทดสอบความทนทานและการทดสอบการแช่น้ำมักถูกมองว่าเป็นคำที่มีความหมายเหมือนกัน โดยทั่วไปแล้ว การทดสอบทั้งสองแบบสามารถรับภาระงานต่อเนื่องได้เป็นเวลานาน หากทีมงานมีการแยกแยะความแตกต่างระหว่างการทดสอบทั้งสอง การทดสอบความทนทานจะเน้นที่การดูว่าเวลาตอบสนองเพิ่มขึ้นหรือไม่ ในขณะที่การทดสอบความทนทานจะเน้นที่การใช้ทรัพยากร เช่น หน่วยความจำ ตัวจัดการไฟล์ และพูลการเชื่อมต่อ การทดสอบแบบใดแบบหนึ่งมักจะให้หลักฐานสำหรับการทดสอบทั้งสองแบบ
ตัวชี้วัดสำคัญที่ต้องบันทึกระหว่างการทดสอบ
การทดสอบประสิทธิภาพจะดีได้ก็ต่อเมื่อคุณบันทึกข้อมูลขณะที่มันทำงาน บันทึกค่าทั้งหกนี้ทั้งฝั่งเซิร์ฟเวอร์และฝั่งไคลเอนต์ จากนั้นเปรียบเทียบกับค่าพื้นฐานแทนที่จะเปรียบเทียบกับความรู้สึกส่วนตัว
| เมตริก | มันบอกคุณอะไร | ป้ายเตือน |
|---|---|---|
| เวลาตอบสนองโดยเฉลี่ย | ประสบการณ์การใช้งานทั่วไป | การเคลื่อนตัวขึ้นด้านบนใดๆ ตลอดแนวการวิ่ง |
| เวลาตอบสนองเปอร์เซ็นไทล์ที่ 95 | ประสบการณ์ของผู้ใช้งานที่ช้าที่สุด | สูงกว่าค่าเฉลี่ยมาก ซึ่งหมายถึงความไม่สม่ำเสมอ |
| ทางเข้า | จำนวนคำขอที่ประมวลผลต่อวินาที | การตกขณะที่น้ำหนักคงที่ |
| อัตราความผิดพลาด | สัดส่วนของคำขอที่ล้มเหลวหรือหมดเวลา | การเพิ่มขึ้นใดๆ ที่เกินกว่าเกณฑ์ที่ตกลงกันไว้ |
| การใช้งาน CPU และหน่วยความจำ | พื้นที่เหลือเฟือสำหรับทรัพยากรเซิร์ฟเวอร์ | ความทรงจำที่ลอยขึ้นไปแล้วไม่เคยหวนกลับมา |
| การเชื่อมต่อฐานข้อมูลและเธรด | ความเหนื่อยล้าจากสระว่ายน้ำ | จำนวนที่เพิ่มขึ้นอย่างต่อเนื่องโดยไม่มีการปล่อย |
อ่านค่าเฉลี่ยและเปอร์เซ็นไทล์ควบคู่กันไป ค่าเฉลี่ย 800 มิลลิวินาที โดยมีค่าเปอร์เซ็นไทล์ที่ 95 อยู่ที่ 900 มิลลิวินาที แสดงถึงระบบที่มีความสม่ำเสมอ แต่หากค่าเฉลี่ยเดียวกันนี้มีค่าเปอร์เซ็นไทล์ที่ 95 อยู่ที่ 9 วินาที หมายความว่าผู้ใช้ 1 ใน 20 คนกำลังประสบปัญหา และค่าเฉลี่ยที่แสดงนั้นปกปิดปัญหานี้ไว้
ให้ดูที่รูปทรง ไม่ใช่แค่ค่าของตัวเลข ในการทดสอบระยะยาวใดๆ หากเส้นกราฟทรัพยากรคงที่ แสดงว่าผ่านการทดสอบ และหากเส้นกราฟเพิ่มขึ้น แสดงว่ามีการรั่วไหล แม้ว่าตัวเลขสัมบูรณ์จะยังอยู่ในขีดจำกัดที่กำหนดไว้ ณ เวลาที่การทดสอบสิ้นสุดลงก็ตาม
การทดสอบ Spike: ข้อสรุปที่สำคัญ
- การทดสอบซอฟต์แวร์ เป็นการทดสอบซอฟต์แวร์ประเภทหนึ่งซึ่งมีการทดสอบแอปพลิเคชันซอฟต์แวร์โดยมีปริมาณการรับส่งข้อมูลเพิ่มขึ้นและลดลงอย่างมาก
- วิธีที่ถูกต้องในการทดสอบการขัดขวางคือการเพิ่มจำนวนผู้ใช้โดยไม่คาดคิด ตามมาด้วยภาระงานลดลงทันที
- การโหลดที่ไม่คาดคิดคือคุณลักษณะหลักของข้อตกลง
- ตัวอย่างของสถานการณ์การทดสอบ Spike ในชีวิตจริงคือ เมื่อร้านค้าอีคอมเมิร์ซเปิดตัวข้อเสนอพิเศษพร้อมส่วนลดมากมาย เช่น Black Friday หรืออีกทางหนึ่งเมื่อเว็บแอปพลิเคชันสตรีมรายการทีวีโปรดแบบสด
- JMeter เป็นเครื่องมือที่มีประโยชน์อย่างหนึ่งในการทำการทดสอบขัดขวาง
