การทดสอบความทนทานในการทดสอบซอฟต์แวร์คืออะไร? (พร้อมตัวอย่าง)
⚡ สรุปอย่างชาญฉลาด
การทดสอบความทนทาน (Endurance Testing) คือการเรียกใช้แอปพลิเคชันภายใต้ภาระการทำงานปกติที่คาดการณ์ไว้เป็นระยะเวลานาน เพื่อตรวจสอบว่าประสิทธิภาพการทำงานลดลงเมื่อเวลาผ่านไปหรือไม่ การทดสอบนี้สามารถตรวจจับข้อบกพร่องที่การทดสอบภายใต้ภาระการทำงานเพียงหนึ่งชั่วโมงไม่สามารถตรวจพบได้
การทดสอบความทนทานคืออะไร?
การทดสอบความทนทาน เป็นการทดสอบซอฟต์แวร์ประเภทไม่ทำงาน โดยที่ซอฟต์แวร์ได้รับการทดสอบโดยมีการโหลดสูงซึ่งขยายออกไปเป็นระยะเวลาที่มีนัยสำคัญ เพื่อประเมินพฤติกรรมของแอปพลิเคชันซอฟต์แวร์ภายใต้การใช้งานอย่างยั่งยืน วัตถุประสงค์หลักของการทดสอบความทนทานคือเพื่อให้แน่ใจว่าแอปพลิเคชันมีความสามารถเพียงพอที่จะรองรับโหลดที่ขยายออกไปโดยไม่ทำให้เวลาตอบสนองลดลง
การทดสอบประเภทนี้จะดำเนินการในขั้นตอนสุดท้ายของรอบการทำงาน การทดสอบความทนทานเป็นกระบวนการที่ยาวนานและบางครั้งอาจใช้เวลานานถึงหนึ่งปี ซึ่งอาจรวมถึงการใช้โหลดภายนอก เช่น การรับส่งข้อมูลทางอินเทอร์เน็ตหรือการกระทำของผู้ใช้ ทำให้การทดสอบความทนทานแตกต่างออกไป โหลดการทดสอบซึ่งโดยปกติจะสิ้นสุดภายในเวลาประมาณสองสามชั่วโมง
ความอดทนหมายถึงความสามารถ กล่าวอีกนัยหนึ่ง คุณสามารถเรียกการทดสอบความทนทานว่าเป็นการทดสอบความจุได้
เป้าหมายของการทดสอบความอดทน
- เป้าหมายหลักของการทดสอบความทนทานคือการตรวจสอบหน่วยความจำรั่ว
- เพื่อค้นหาว่าระบบทำงานอย่างไรภายใต้การใช้งานอย่างยั่งยืน
- เพื่อให้แน่ใจว่าหลังจากผ่านไปเป็นเวลานาน เวลาตอบสนองของระบบจะยังคงเท่าเดิมหรือดีกว่าการเริ่มการทดสอบ
- เพื่อกำหนดจำนวนผู้ใช้และ/หรือธุรกรรม ระบบที่กำหนดจะสนับสนุนและบรรลุเป้าหมายด้านประสิทธิภาพ
- ในการจัดการการโหลดในอนาคต เราต้องเข้าใจว่าทรัพยากรเพิ่มเติมจำนวนเท่าใด (เช่น ความจุของโปรเซสเซอร์ ความจุของดิสก์ การใช้หน่วยความจำ หรือแบนด์วิธเครือข่าย) ที่จำเป็นเพื่อรองรับการใช้งานในอนาคต
- โดยทั่วไปการทดสอบความทนทานทำได้โดยการโอเวอร์โหลดระบบหรือโดยการลดทรัพยากรระบบบางอย่างและประเมินผลที่ตามมา
- ดำเนินการเพื่อให้แน่ใจว่าข้อบกพร่องหรือหน่วยความจำรั่วจะไม่เกิดขึ้นหลังจากช่วงการใช้งานที่ค่อนข้าง "ปกติ"
สิ่งที่ต้องตรวจสอบในการทดสอบความทนทาน
ในการทดสอบความทนทาน มีการทดสอบสิ่งต่อไปนี้
- ทดสอบการรั่วไหลของหน่วยความจำ– มีการตรวจสอบเพื่อตรวจสอบว่ามีหน่วยความจำรั่วในแอปพลิเคชันหรือไม่ ซึ่งอาจทำให้ระบบหรือระบบปฏิบัติการล่มได้
- ทดสอบการปิดการเชื่อมต่อระหว่างชั้นของระบบ – หากการเชื่อมต่อระหว่างชั้นต่างๆ ของระบบปิดไม่สำเร็จ อาจส่งผลให้โมดูลบางส่วนหรือทั้งหมดของระบบหยุดทำงาน
- ทดสอบการเชื่อมต่อฐานข้อมูลปิดสำเร็จ– หากปิดการเชื่อมต่อฐานข้อมูลไม่สำเร็จ อาจส่งผลให้ระบบล่มได้
- ทดสอบเวลาตอบสนอง – ระบบได้รับการทดสอบเวลาตอบสนองของระบบเนื่องจากแอปพลิเคชันมีประสิทธิภาพน้อยลงอันเป็นผลมาจากการใช้งานระบบเป็นเวลานาน
วิธีดำเนินการทดสอบความทนทาน
ด้านล่างนี้เป็นวิธีการทดสอบพื้นฐานสำหรับการทดสอบความทนทาน
- สภาพแวดล้อมการทดสอบ – ระบุฮาร์ดแวร์ ซอฟต์แวร์ ระบบปฏิบัติการที่จำเป็นสำหรับการทดสอบความทนทาน การมอบหมายบทบาทและความรับผิดชอบภายในทีม เป็นต้น สภาพแวดล้อมควรพร้อมก่อนดำเนินการทดสอบ นอกจากนี้ คุณยังต้องประมาณขนาดการผลิตฐานข้อมูลทั่วไปและการเติบโตในแต่ละปี ซึ่งจำเป็นสำหรับการทดสอบว่าแอปพลิเคชันของคุณจะตอบสนองอย่างไรหลังจากผ่านไป 1, 2 หรือ 5 ปี
- การสร้างแผนการทดสอบ สถานการณ์ – ขึ้นอยู่กับลักษณะของการทดสอบ - ด้วยตนเองหรืออัตโนมัติหรือทั้งสองอย่างรวมกัน กรณีทดสอบ การออกแบบ การทบทวน และการดำเนินการควรได้รับการวางแผน การทดสอบเพื่อเน้นย้ำระบบ การทดสอบจุดแตกหัก ฯลฯ ควรเป็นส่วนหนึ่งของแผนการทดสอบด้วย การทดสอบเพื่อเน้นย้ำระบบจะกำหนดจุดพักในแอปพลิเคชัน
- การประมาณการทดสอบ – ให้การประมาณว่าต้องใช้เวลานานเท่าใดจึงจะเสร็จสิ้นขั้นตอนการทดสอบ ควรวิเคราะห์โดยพิจารณาจากผู้ทดสอบจำนวนหนึ่งที่เกี่ยวข้องและจำนวนรอบการทดสอบที่ต้องการ
- การวิเคราะห์ความเสี่ยง - วิเคราะห์ความเสี่ยงและดำเนินการป้องกันอย่างเหมาะสม การจัดลำดับความสำคัญของกรณีทดสอบตามปัจจัยความเสี่ยง และระบุความเสี่ยงและปัญหาด้านล่าง ผู้ทดสอบอาจค่อยๆ ในระหว่างการทดสอบความทนทาน
- ประสิทธิภาพจะยังคงสม่ำเสมอเมื่อเวลาผ่านไปหรือไม่
- มีปัญหาเล็กๆ น้อยๆ อื่น ๆ ที่ยังไม่ถูกตรวจพบหรือไม่?
- มีการรบกวนจากภายนอกที่ไม่ได้รับการแก้ไขหรือไม่?
- ตารางการทดสอบ – กำหนดงบประมาณ การส่งมอบภายในกรอบเวลา เช่น การทดสอบความทนทาน ใช้การจัดเรียงธุรกรรมจำนวนมากแต่เป็นธรรมชาติกับระบบ/แอปพลิเคชันเป็นระยะเวลาต่อเนื่องกัน
ตัวอย่างการทดสอบความทนทาน
ในขณะที่ การทดสอบความเครียด นำระบบที่ทดสอบไปสู่ขีดจำกัด การทดสอบความทนทาน นำแอปพลิเคชันไปสู่ขีดจำกัด ล่วงเวลา.
ตัวอย่างเช่น ปัญหาที่ซับซ้อนที่สุด เช่น การรั่วไหลของหน่วยความจำ การใช้งานเซิร์ฟเวอร์ฐานข้อมูลสูงเกินไป และระบบไม่ตอบสนอง มักเกิดขึ้นเมื่อซอฟต์แวร์ทำงานเป็นเวลานาน หากคุณละเลยการทดสอบความทนทาน โอกาสในการตรวจพบข้อบกพร่องดังกล่าว ก่อนการใช้งานจริงจะค่อนข้างต่ำ
เครื่องมือทดสอบความทนทาน
- เว็บโหลด
- โหลดเสร็จสมบูรณ์
- Apache JMeter
- โหลดรันเนอร์
- ความก้าวหน้า
- โหลดUI
- เปิดSTA
- Rational Performance Tester
ข้อดีของการทดสอบความทนทาน
- ช่วยในการกำหนดว่าปริมาณงานสามารถจัดการระบบภายใต้โหลดได้อย่างไร
- ให้ข้อมูลที่ถูกต้องซึ่งลูกค้าสามารถใช้เพื่อตรวจสอบหรือปรับปรุงความต้องการโครงสร้างพื้นฐานของตนได้
- ระบุปัญหาด้านประสิทธิภาพที่อาจเกิดขึ้นหลังจากที่ระบบทำงานในระดับสูงเป็นระยะเวลานานขึ้น
- ปัญหาทั่วไปจะระบุไว้ในการทดสอบประสิทธิภาพแบบกำหนดเป้าหมายที่มีขนาดเล็กกว่า ซึ่งหมายความว่าจะทำให้แอปพลิเคชันยังคงพร้อมใช้งานแม้ว่าจะมีภาระงานจำนวนมากในช่วงเวลาสั้นๆ ก็ตาม
- การทดสอบความทนทานยังใช้เพื่อตรวจสอบว่าประสิทธิภาพลดลงหรือไม่หลังจากใช้งานเป็นเวลานาน
ข้อเสียของการทดสอบความทนทาน
- มักเป็นการยากที่จะกำหนดว่าความเครียดควรค่าแก่การนำไปใช้มากน้อยเพียงใด
- การทดสอบความทนทานอาจทำให้แอปพลิเคชันและ/หรือเครือข่ายล้มเหลวซึ่งอาจส่งผลให้เกิดการหยุดชะงักอย่างมีนัยสำคัญหาก สภาพแวดล้อมการทดสอบ ไม่ได้โดดเดี่ยว
- ข้อมูลสูญหายหรือเสียหายอย่างถาวรสามารถเกิดขึ้นได้จากการที่ระบบเครียดมากเกินไป
- การใช้ทรัพยากรยังคงสูงมากหลังจากขจัดความเครียดออกไปแล้ว
- ส่วนประกอบของแอปพลิเคชันบางอย่างไม่สามารถตอบสนองได้
- ผู้ใช้จะสังเกตเห็นข้อยกเว้นที่ไม่สามารถจัดการได้
การทดสอบนี้เข้ากับกลุ่มการทดสอบประสิทธิภาพอย่างไร
การทดสอบประสิทธิภาพเป็นคำที่ใช้เรียกโดยรวม รูปแบบต่างๆ ที่กล่าวถึงด้านล่างนี้แตกต่างกันเพียงแค่ลักษณะของแรงที่ใช้และระยะเวลาที่คงแรงไว้ ซึ่งเป็นเหตุผลที่ทำให้มักเกิดความสับสนระหว่างการทดสอบทั้งสามประเภทนี้
| ประเภทการทดสอบ | รูปแบบการโหลด | คำถามมันตอบ |
|---|---|---|
| โหลดการทดสอบ | คาดการณ์ปริมาณการใช้ไฟฟ้าสูงสุด ระยะเวลาสั้น | ระบบสามารถบรรลุเป้าหมายภายใต้ปริมาณการใช้งานสูงสุดปกติได้หรือไม่? |
| การทดสอบความเครียด | เพิ่มขึ้นเกินขีดความสามารถจนกระทั่งเกิดความเสียหาย | มันพังตรงไหน และมันพังอย่างราบรื่นหรือไม่? |
| การทดสอบขัดขวาง | พุ่งขึ้นอย่างรุนแรงอย่างฉับพลัน แล้วก็ลดลง | รถคันนี้สามารถเอาตัวรอดและฟื้นตัวจากแรงกระแทกจากการจราจรได้หรือไม่? |
| การทดสอบความทนทาน | สามารถรับน้ำหนักปกติได้นานหลายชั่วโมง | ประสิทธิภาพจะลดลงเมื่อเวลาผ่านไปหรือไม่? |
| การทดสอบการแช่ | การรับน้ำหนักอย่างต่อเนื่องเป็นระยะเวลานาน | มีการรั่วไหลของหน่วยความจำหรือการใช้ทรัพยากรมากเกินไปหรือไม่? |
| การทดสอบความเสถียร | ภาระที่แตกต่างกันไปตามสภาวะต่างๆ | ระบบยังคงเชื่อถือได้หรือไม่เมื่อสภาวะเปลี่ยนแปลงไป? |
| การทดสอบปริมาตร | ผู้ใช้งานทั่วไป ปริมาณข้อมูลมหาศาล | มันสามารถรองรับการเติบโตของฐานข้อมูลได้หรือไม่? |
การทดสอบความทนทานและการทดสอบการแช่น้ำมักถูกมองว่าเป็นคำที่มีความหมายเหมือนกัน โดยทั่วไปแล้ว การทดสอบทั้งสองแบบสามารถรับภาระงานต่อเนื่องได้เป็นเวลานาน หากทีมงานมีการแยกแยะความแตกต่างระหว่างการทดสอบทั้งสอง การทดสอบความทนทานจะเน้นที่การดูว่าเวลาตอบสนองเพิ่มขึ้นหรือไม่ ในขณะที่การทดสอบความทนทานจะเน้นที่การใช้ทรัพยากร เช่น หน่วยความจำ ตัวจัดการไฟล์ และพูลการเชื่อมต่อ การทดสอบแบบใดแบบหนึ่งมักจะให้หลักฐานสำหรับการทดสอบทั้งสองแบบ
ตัวชี้วัดสำคัญที่ต้องบันทึกระหว่างการทดสอบ
การทดสอบประสิทธิภาพจะดีได้ก็ต่อเมื่อคุณบันทึกข้อมูลขณะที่มันทำงาน บันทึกค่าทั้งหกนี้ทั้งฝั่งเซิร์ฟเวอร์และฝั่งไคลเอนต์ จากนั้นเปรียบเทียบกับค่าพื้นฐานแทนที่จะเปรียบเทียบกับความรู้สึกส่วนตัว
| เมตริก | มันบอกคุณอะไร | ป้ายเตือน |
|---|---|---|
| เวลาตอบสนองโดยเฉลี่ย | ประสบการณ์การใช้งานทั่วไป | การเคลื่อนตัวขึ้นด้านบนใดๆ ตลอดแนวการวิ่ง |
| เวลาตอบสนองเปอร์เซ็นไทล์ที่ 95 | ประสบการณ์ของผู้ใช้งานที่ช้าที่สุด | สูงกว่าค่าเฉลี่ยมาก ซึ่งหมายถึงความไม่สม่ำเสมอ |
| ทางเข้า | จำนวนคำขอที่ประมวลผลต่อวินาที | การตกขณะที่น้ำหนักคงที่ |
| อัตราความผิดพลาด | สัดส่วนของคำขอที่ล้มเหลวหรือหมดเวลา | การเพิ่มขึ้นใดๆ ที่เกินกว่าเกณฑ์ที่ตกลงกันไว้ |
| การใช้งาน CPU และหน่วยความจำ | พื้นที่เหลือเฟือสำหรับทรัพยากรเซิร์ฟเวอร์ | ความทรงจำที่ลอยขึ้นไปแล้วไม่เคยหวนกลับมา |
| การเชื่อมต่อฐานข้อมูลและเธรด | ความเหนื่อยล้าจากสระว่ายน้ำ | จำนวนที่เพิ่มขึ้นอย่างต่อเนื่องโดยไม่มีการปล่อย |
อ่านค่าเฉลี่ยและเปอร์เซ็นไทล์ควบคู่กันไป ค่าเฉลี่ย 800 มิลลิวินาที โดยมีค่าเปอร์เซ็นไทล์ที่ 95 อยู่ที่ 900 มิลลิวินาที แสดงถึงระบบที่มีความสม่ำเสมอ แต่หากค่าเฉลี่ยเดียวกันนี้มีค่าเปอร์เซ็นไทล์ที่ 95 อยู่ที่ 9 วินาที หมายความว่าผู้ใช้ 1 ใน 20 คนกำลังประสบปัญหา และค่าเฉลี่ยที่แสดงนั้นปกปิดปัญหานี้ไว้
ให้ดูที่รูปทรง ไม่ใช่แค่ค่าของตัวเลข ในการทดสอบระยะยาวใดๆ หากเส้นกราฟทรัพยากรคงที่ แสดงว่าผ่านการทดสอบ และหากเส้นกราฟเพิ่มขึ้น แสดงว่ามีการรั่วไหล แม้ว่าตัวเลขสัมบูรณ์จะยังอยู่ในขีดจำกัดที่กำหนดไว้ ณ เวลาที่การทดสอบสิ้นสุดลงก็ตาม
การทดสอบความทนทาน: ข้อสรุปที่สำคัญ
- In วิศวกรรมซอฟต์แวร์, การทดสอบความทนทานเป็นส่วนหนึ่งของการทดสอบการรับน้ำหนัก
- การทดสอบความทนทานเป็นกระบวนการที่ใช้เวลานานและบางครั้งอาจใช้เวลานานถึงหนึ่งปี
- มีการตรวจสอบเพื่อตรวจสอบ
- ทดสอบการรั่วไหลของหน่วยความจำ
- ทดสอบเวลาตอบสนอง
- ทดสอบการเชื่อมต่อฐานข้อมูล ฯลฯ


