การทดสอบความทนทานในการทดสอบซอฟต์แวร์คืออะไร? (พร้อมตัวอย่าง)

⚡ สรุปอย่างชาญฉลาด

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

  • 🕒 ภาระคงที่: ปริมาณการรับส่งข้อมูลการผลิตที่คาดการณ์ไว้จะล่าช้าเป็นเวลาหลายชั่วโมงหรือหลายวัน แทนที่จะเป็นเพียงไม่กี่นาที
  • 📉 จุดเน้นของการเสื่อมสภาพ: คำถามคือเวลาตอบสนองจะค่อยๆ เพิ่มขึ้นหรือไม่ ไม่ใช่ว่าบรรลุเป้าหมายแล้วหรือไม่
  • 💧 สิ่งที่พบโดยทั่วไป: การรั่วไหลของหน่วยความจำ การหมดลงของกลุ่มการเชื่อมต่อ และการเติบโตอย่างไม่จำกัดของไฟล์บันทึกหรือแคช
  • 📊 ชุดอุปกรณ์ตรวจสอบ: หน่วยความจำ, ซีพียู, เวลาตอบสนอง, ปริมาณงาน และการเชื่อมต่อฐานข้อมูลตลอดการทำงาน
  • 🛠️ เครื่องมือ: เครื่องมือวัดภาระงานมาตรฐานจะควบคุมปริมาณการรับส่งข้อมูล ในขณะที่เครื่องมือ APM จะบันทึกเส้นโค้งการใช้ทรัพยากร
  • 🇧🇷 การแลกเปลี่ยน: ผลลัพธ์ที่ได้มีคุณค่าสูง แต่ใช้เวลานานในการได้มา ซึ่งจำกัดความถี่ในการดำเนินการทดสอบ

การทดสอบความทนทานคืออะไร

การทดสอบความทนทานคืออะไร?

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

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

ความอดทนหมายถึงความสามารถ กล่าวอีกนัยหนึ่ง คุณสามารถเรียกการทดสอบความทนทานว่าเป็นการทดสอบความจุได้

เป้าหมายของการทดสอบความอดทน

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

สิ่งที่ต้องตรวจสอบในการทดสอบความทนทาน

การทดสอบความทนทาน

ในการทดสอบความทนทาน มีการทดสอบสิ่งต่อไปนี้

  • ทดสอบการรั่วไหลของหน่วยความจำ– มีการตรวจสอบเพื่อตรวจสอบว่ามีหน่วยความจำรั่วในแอปพลิเคชันหรือไม่ ซึ่งอาจทำให้ระบบหรือระบบปฏิบัติการล่มได้
  • ทดสอบการปิดการเชื่อมต่อระหว่างชั้นของระบบ – หากการเชื่อมต่อระหว่างชั้นต่างๆ ของระบบปิดไม่สำเร็จ อาจส่งผลให้โมดูลบางส่วนหรือทั้งหมดของระบบหยุดทำงาน
  • ทดสอบการเชื่อมต่อฐานข้อมูลปิดสำเร็จ– หากปิดการเชื่อมต่อฐานข้อมูลไม่สำเร็จ อาจส่งผลให้ระบบล่มได้
  • ทดสอบเวลาตอบสนอง – ระบบได้รับการทดสอบเวลาตอบสนองของระบบเนื่องจากแอปพลิเคชันมีประสิทธิภาพน้อยลงอันเป็นผลมาจากการใช้งานระบบเป็นเวลานาน

วิธีดำเนินการทดสอบความทนทาน

ด้านล่างนี้เป็นวิธีการทดสอบพื้นฐานสำหรับการทดสอบความทนทาน

  • สภาพแวดล้อมการทดสอบ – ระบุฮาร์ดแวร์ ซอฟต์แวร์ ระบบปฏิบัติการที่จำเป็นสำหรับการทดสอบความทนทาน การมอบหมายบทบาทและความรับผิดชอบภายในทีม เป็นต้น สภาพแวดล้อมควรพร้อมก่อนดำเนินการทดสอบ นอกจากนี้ คุณยังต้องประมาณขนาดการผลิตฐานข้อมูลทั่วไปและการเติบโตในแต่ละปี ซึ่งจำเป็นสำหรับการทดสอบว่าแอปพลิเคชันของคุณจะตอบสนองอย่างไรหลังจากผ่านไป 1, 2 หรือ 5 ปี
  • การสร้างแผนการทดสอบ สถานการณ์ – ขึ้นอยู่กับลักษณะของการทดสอบ - ด้วยตนเองหรืออัตโนมัติหรือทั้งสองอย่างรวมกัน กรณีทดสอบ การออกแบบ การทบทวน และการดำเนินการควรได้รับการวางแผน การทดสอบเพื่อเน้นย้ำระบบ การทดสอบจุดแตกหัก ฯลฯ ควรเป็นส่วนหนึ่งของแผนการทดสอบด้วย การทดสอบเพื่อเน้นย้ำระบบจะกำหนดจุดพักในแอปพลิเคชัน
  • การประมาณการทดสอบ – ให้การประมาณว่าต้องใช้เวลานานเท่าใดจึงจะเสร็จสิ้นขั้นตอนการทดสอบ ควรวิเคราะห์โดยพิจารณาจากผู้ทดสอบจำนวนหนึ่งที่เกี่ยวข้องและจำนวนรอบการทดสอบที่ต้องการ
  • การวิเคราะห์ความเสี่ยง - วิเคราะห์ความเสี่ยงและดำเนินการป้องกันอย่างเหมาะสม การจัดลำดับความสำคัญของกรณีทดสอบตามปัจจัยความเสี่ยง และระบุความเสี่ยงและปัญหาด้านล่าง ผู้ทดสอบอาจค่อยๆ ในระหว่างการทดสอบความทนทาน
  • ประสิทธิภาพจะยังคงสม่ำเสมอเมื่อเวลาผ่านไปหรือไม่
  • มีปัญหาเล็กๆ น้อยๆ อื่น ๆ ที่ยังไม่ถูกตรวจพบหรือไม่?
  • มีการรบกวนจากภายนอกที่ไม่ได้รับการแก้ไขหรือไม่?
  • ตารางการทดสอบ – กำหนดงบประมาณ การส่งมอบภายในกรอบเวลา เช่น การทดสอบความทนทาน ใช้การจัดเรียงธุรกรรมจำนวนมากแต่เป็นธรรมชาติกับระบบ/แอปพลิเคชันเป็นระยะเวลาต่อเนื่องกัน

ตัวอย่างการทดสอบความทนทาน

ในขณะที่ การทดสอบความเครียด นำระบบที่ทดสอบไปสู่ขีดจำกัด การทดสอบความทนทาน นำแอปพลิเคชันไปสู่ขีดจำกัด ล่วงเวลา.

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

เครื่องมือทดสอบความทนทาน

ข้อดีของการทดสอบความทนทาน

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

ข้อเสียของการทดสอบความทนทาน

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

การทดสอบนี้เข้ากับกลุ่มการทดสอบประสิทธิภาพอย่างไร

การทดสอบประสิทธิภาพเป็นคำที่ใช้เรียกโดยรวม รูปแบบต่างๆ ที่กล่าวถึงด้านล่างนี้แตกต่างกันเพียงแค่ลักษณะของแรงที่ใช้และระยะเวลาที่คงแรงไว้ ซึ่งเป็นเหตุผลที่ทำให้มักเกิดความสับสนระหว่างการทดสอบทั้งสามประเภทนี้

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

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

ตัวชี้วัดสำคัญที่ต้องบันทึกระหว่างการทดสอบ

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

เมตริก มันบอกคุณอะไร ป้ายเตือน
เวลาตอบสนองโดยเฉลี่ย ประสบการณ์การใช้งานทั่วไป การเคลื่อนตัวขึ้นด้านบนใดๆ ตลอดแนวการวิ่ง
เวลาตอบสนองเปอร์เซ็นไทล์ที่ 95 ประสบการณ์ของผู้ใช้งานที่ช้าที่สุด สูงกว่าค่าเฉลี่ยมาก ซึ่งหมายถึงความไม่สม่ำเสมอ
ทางเข้า จำนวนคำขอที่ประมวลผลต่อวินาที การตกขณะที่น้ำหนักคงที่
อัตราความผิดพลาด สัดส่วนของคำขอที่ล้มเหลวหรือหมดเวลา การเพิ่มขึ้นใดๆ ที่เกินกว่าเกณฑ์ที่ตกลงกันไว้
การใช้งาน CPU และหน่วยความจำ พื้นที่เหลือเฟือสำหรับทรัพยากรเซิร์ฟเวอร์ ความทรงจำที่ลอยขึ้นไปแล้วไม่เคยหวนกลับมา
การเชื่อมต่อฐานข้อมูลและเธรด ความเหนื่อยล้าจากสระว่ายน้ำ จำนวนที่เพิ่มขึ้นอย่างต่อเนื่องโดยไม่มีการปล่อย

อ่านค่าเฉลี่ยและเปอร์เซ็นไทล์ควบคู่กันไป ค่าเฉลี่ย 800 มิลลิวินาที โดยมีค่าเปอร์เซ็นไทล์ที่ 95 อยู่ที่ 900 มิลลิวินาที แสดงถึงระบบที่มีความสม่ำเสมอ แต่หากค่าเฉลี่ยเดียวกันนี้มีค่าเปอร์เซ็นไทล์ที่ 95 อยู่ที่ 9 วินาที หมายความว่าผู้ใช้ 1 ใน 20 คนกำลังประสบปัญหา และค่าเฉลี่ยที่แสดงนั้นปกปิดปัญหานี้ไว้

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

การทดสอบความทนทาน: ข้อสรุปที่สำคัญ

  • In วิศวกรรมซอฟต์แวร์, การทดสอบความทนทานเป็นส่วนหนึ่งของการทดสอบการรับน้ำหนัก
  • การทดสอบความทนทานเป็นกระบวนการที่ใช้เวลานานและบางครั้งอาจใช้เวลานานถึงหนึ่งปี
  • มีการตรวจสอบเพื่อตรวจสอบ
  • ทดสอบการรั่วไหลของหน่วยความจำ
  • ทดสอบเวลาตอบสนอง
  • ทดสอบการเชื่อมต่อฐานข้อมูล ฯลฯ

คำถามที่พบบ่อย

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

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

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

ระบบตรวจสอบด้วย AI ตรวจจับจุดที่ตัวชี้วัดเปลี่ยนแนวโน้มและเชื่อมโยงกับการปรับใช้หรืองานที่กำหนดไว้ เปลี่ยนกราฟหลายชั่วโมงให้เป็นข้อมูลผู้ต้องสงสัยที่เฉพาะเจาะจง

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

สรุปโพสต์นี้ด้วย: