การทดสอบความน่าเชื่อถือของซอฟต์แวร์
การทดสอบความน่าเชื่อถือของซอฟต์แวร์เป็นสาขาหนึ่งของการทดสอบซอฟต์แวร์ที่เกี่ยวข้องกับการทดสอบความสามารถของซอฟต์แวร์ในการทำงานภายใต้เงื่อนไขแวดล้อมในช่วงระยะเวลาหนึ่ง การทดสอบความน่าเชื่อถือของซอฟต์แวร์ช่วยค้นพบปัญหามากมายในการออกแบบและการทำงาน ของซอฟต์แวร์
ภาพรวม
ความน่าเชื่อถือของซอฟต์แวร์คือความน่าจะเป็นที่ซอฟต์แวร์จะทำงานได้อย่างถูกต้องในสภาพแวดล้อมที่กำหนดและในช่วงเวลาที่กำหนด โดยใช้สูตรต่อไปนี้ในการคำนวณความน่าจะเป็นของความล้มเหลวโดยการทดสอบตัวอย่างของสถานะอินพุตทั้งหมดที่มีอยู่: เวลาเฉลี่ยระหว่างความล้มเหลว (MTBF) = เวลาเฉลี่ยที่จะเกิดความล้มเหลว (MTTF) + เวลาเฉลี่ยในการซ่อมแซม (MTTR)
- ความน่าจะเป็น = จำนวนกรณีที่ล้มเหลว / จำนวนกรณีทั้งหมดที่อยู่ระหว่างการพิจารณา
เซตของสถานะอินพุตที่เป็นไปได้ทั้งหมดเรียกว่าปริภูมิอินพุต ในการค้นหาความน่าเชื่อถือของซอฟต์แวร์ เราจำเป็นต้องค้นหาปริภูมิเอาต์พุตจากปริภูมิอินพุตและซอฟต์แวร์ที่กำหนด[ 1 ]
สำหรับการทดสอบความน่าเชื่อถือ ข้อมูลจะถูกรวบรวมจากขั้นตอนต่างๆ ของการพัฒนา เช่น ขั้นตอนการออกแบบและการใช้งาน การทดสอบมีข้อจำกัดเนื่องจากข้อจำกัดต่างๆ เช่น ต้นทุนและเวลา ตัวอย่างทางสถิติได้มาจากผลิตภัณฑ์ซอฟต์แวร์เพื่อทดสอบความน่าเชื่อถือของซอฟต์แวร์ เมื่อรวบรวมข้อมูลหรือสารสนเทศได้เพียงพอแล้ว จะมีการศึกษาทางสถิติ ข้อจำกัดด้านเวลาจะถูกจัดการโดยการกำหนดวันที่หรือกำหนดเวลาที่แน่นอนสำหรับการทดสอบ หลังจากขั้นตอนนี้ การออกแบบซอฟต์แวร์จะหยุดลงและเริ่มขั้นตอนการใช้งานจริง เนื่องจากมีข้อจำกัดด้านต้นทุนและเวลา ข้อมูลจึงถูกรวบรวมอย่างระมัดระวังเพื่อให้ข้อมูลแต่ละส่วนมีวัตถุประสงค์และได้รับความแม่นยำตามที่คาดหวัง[ 2 ] เพื่อให้ได้ผลลัพธ์ที่น่าพอใจจากการทดสอบความน่าเชื่อถือ จำเป็นต้องคำนึงถึงลักษณะความน่าเชื่อถือบางประการ ตัวอย่างเช่น เวลาเฉลี่ยในการเกิดความล้มเหลว (MTTF) [ 3 ]วัดจากปัจจัยสามประการ:
- เวลาดำเนินการ
- จำนวนรอบการเปิดปิด
- และเวลาตามปฏิทิน
หากข้อจำกัดอยู่ที่เวลาดำเนินการหรือหากเน้นที่จุดแรกสำหรับการปรับปรุง สามารถใช้การเร่งเวลาแบบบีบอัดเพื่อลดเวลาการทดสอบได้ หากเน้นที่เวลาตามปฏิทิน (เช่น หากมีกำหนดเวลาที่กำหนดไว้ล่วงหน้า) จะใช้การทดสอบความเครียดแบบเข้มข้น[ 2 ] [ 4 ]
การวัด
ความพร้อมใช้งานของซอฟต์แวร์วัดจากค่าเฉลี่ยเวลาระหว่างความล้มเหลว (MTBF) [ 5 ]
MTBF ประกอบด้วยเวลาเฉลี่ยในการเกิดความล้มเหลว (MTTF) และเวลาเฉลี่ยในการซ่อมแซม (MTTR) MTTF คือความแตกต่างของเวลาระหว่างความล้มเหลวสองครั้งติดต่อกัน และ MTTR คือเวลาที่จำเป็นในการแก้ไขความล้มเหลว[ 6 ]
ความพร้อมใช้งานในสภาวะคงที่แสดงถึงเปอร์เซ็นต์ที่ซอฟต์แวร์สามารถใช้งานได้
ตัวอย่างเช่น หาก MTTF เท่ากับ 1000 ชั่วโมงสำหรับซอฟต์แวร์ แสดงว่าซอฟต์แวร์นั้นควรใช้งานได้ต่อเนื่อง 1000 ชั่วโมง
สำหรับซอฟต์แวร์ตัวเดียวกัน หาก MTTR = 2 ชั่วโมง แสดงว่า.
ดังนั้น
ความน่าเชื่อถือของซอฟต์แวร์วัดจากอัตราความล้มเหลว ( )
ความน่าเชื่อถือของซอฟต์แวร์เป็นตัวเลขระหว่าง 0 ถึง 1 ความน่าเชื่อถือจะเพิ่มขึ้นเมื่อข้อผิดพลาดหรือบั๊กในโปรแกรมถูกกำจัดออกไป[ 7 ]มีแบบจำลองการเติบโตของความน่าเชื่อถือของซอฟต์แวร์ (SRGM) มากมาย ( รายชื่อแบบจำลองความน่าเชื่อถือของซอฟต์แวร์ ) รวมถึงแบบลอการิทึม แบบพหุนาม แบบเลขชี้กำลัง แบบกำลัง และแบบรูปตัว S
วัตถุประสงค์ของการทดสอบความน่าเชื่อถือ
วัตถุประสงค์หลักของการทดสอบความน่าเชื่อถือคือการทดสอบประสิทธิภาพของซอฟต์แวร์ภายใต้เงื่อนไขที่กำหนด โดยไม่มีมาตรการแก้ไขใด ๆ โดยใช้ขั้นตอนคงที่ที่ทราบแล้ว โดยคำนึงถึงข้อกำหนดเฉพาะของซอฟต์แวร์นั้น ๆ
วัตถุประสงค์รอง
วัตถุประสงค์รองของการทดสอบความน่าเชื่อถือคือ:
- เพื่อค้นหาโครงสร้างการรับรู้ของความล้มเหลวที่เกิดขึ้นซ้ำๆ
- เพื่อหาจำนวนความล้มเหลวที่เกิดขึ้นในช่วงเวลาที่กำหนด
- เพื่อหาอายุการใช้งานเฉลี่ยของซอฟต์แวร์
- เพื่อค้นหาสาเหตุหลักของความล้มเหลว
- ตรวจสอบประสิทธิภาพของซอฟต์แวร์ส่วนต่างๆ หลังจากดำเนินการป้องกันไว้ก่อนแล้ว
หลักเกณฑ์ในการกำหนดวัตถุประสงค์
ข้อจำกัดบางประการในการกำหนดวัตถุประสงค์ ได้แก่:
- พฤติกรรมของซอฟต์แวร์ควรได้รับการกำหนดภายใต้เงื่อนไขที่กำหนด
- เป้าหมายควรเป็นสิ่งที่สามารถทำได้จริง
- ควรระบุข้อจำกัดด้านเวลา[ 8 ]
ความสำคัญของการทดสอบความน่าเชื่อถือ
การประยุกต์ใช้ซอฟต์แวร์คอมพิวเตอร์ได้ขยายไปสู่สาขาต่างๆ มากมาย โดยซอฟต์แวร์เป็นส่วนสำคัญของระบบอุตสาหกรรม การค้า และการทหาร เนื่องจากมีการใช้งานมากมายในระบบที่สำคัญต่อความปลอดภัย ความน่าเชื่อถือของซอฟต์แวร์จึงเป็นหัวข้อวิจัยที่สำคัญในปัจจุบัน แม้ว่าวิศวกรรมซอฟต์แวร์จะเป็นเทคโนโลยีที่พัฒนาเร็วที่สุดในศตวรรษที่ผ่านมา แต่ก็ยังไม่มีมาตรวัดเชิงปริมาณทางวิทยาศาสตร์ที่สมบูรณ์เพื่อประเมินผล การทดสอบความน่าเชื่อถือของซอฟต์แวร์จึงถูกใช้เป็นเครื่องมือเพื่อช่วยประเมินเทคโนโลยีวิศวกรรมซอฟต์แวร์เหล่านี้[ 9 ]
เพื่อปรับปรุงประสิทธิภาพของผลิตภัณฑ์ซอฟต์แวร์และกระบวนการพัฒนาซอฟต์แวร์ จำเป็นต้องมีการประเมินความน่าเชื่อถืออย่างละเอียด การทดสอบความน่าเชื่อถือของซอฟต์แวร์มีความสำคัญเนื่องจากเป็นประโยชน์อย่างมากสำหรับผู้จัดการซอฟต์แวร์และผู้ปฏิบัติงาน[ 10 ]
เพื่อตรวจสอบความน่าเชื่อถือของซอฟต์แวร์ผ่านการทดสอบ:
- ควรทำการทดสอบจำนวนมากพอและเป็นระยะเวลาที่เพียงพอ เพื่อให้ได้ค่าประมาณที่สมเหตุสมผลว่าซอฟต์แวร์จะทำงานได้นานแค่ไหนโดยไม่เกิดข้อผิดพลาด การทดสอบที่ใช้เวลานานมีความจำเป็นในการระบุข้อบกพร่อง (เช่น การรั่วไหลของหน่วยความจำและการล้นของบัฟเฟอร์) ซึ่งต้องใช้เวลาจึงจะทำให้เกิดข้อผิดพลาดหรือความล้มเหลว
- การกระจายกรณีทดสอบควรสอดคล้องกับลักษณะการใช้งานจริงหรือที่วางแผนไว้ของซอฟต์แวร์ ยิ่งฟังก์ชันหรือส่วนย่อยของซอฟต์แวร์ถูกเรียกใช้งานบ่อยเท่าใด เปอร์เซ็นต์ของกรณีทดสอบที่ควรจัดสรรให้กับฟังก์ชันหรือส่วนย่อยนั้นก็จะยิ่งมากขึ้นเท่านั้น
ประเภทของการทดสอบความน่าเชื่อถือ
การทดสอบความน่าเชื่อถือของซอฟต์แวร์ประกอบด้วยการทดสอบคุณสมบัติ การทดสอบโหลด และ การ ทดสอบการถดถอย[ 11 ]
การทดสอบคุณสมบัติ
การทดสอบคุณสมบัติจะตรวจสอบคุณสมบัติที่ซอฟต์แวร์มีให้ และดำเนินการตามขั้นตอนต่อไปนี้:
- แต่ละคำสั่งในซอฟต์แวร์จะถูกเรียกใช้เพียงครั้งเดียว
- ปฏิสัมพันธ์ระหว่างการดำเนินการทั้งสองลดลง และ
- แต่ละขั้นตอนจะได้รับการตรวจสอบเพื่อให้แน่ใจว่าดำเนินการอย่างถูกต้อง
การทดสอบคุณสมบัติจะตามด้วยการทดสอบโหลด[ 11 ]
การทดสอบการรับน้ำหนัก
การทดสอบนี้ดำเนินการเพื่อตรวจสอบประสิทธิภาพของซอฟต์แวร์ภายใต้ภาระงานสูงสุด ซอฟต์แวร์ใด ๆ จะทำงานได้ดีขึ้นจนถึงระดับภาระงานหนึ่ง หลังจากนั้นเวลาตอบสนองของซอฟต์แวร์จะเริ่มลดลง ตัวอย่างเช่น สามารถทดสอบเว็บไซต์เพื่อดูว่าสามารถรองรับผู้ใช้พร้อมกันได้กี่คนโดยไม่ทำให้ประสิทธิภาพลดลง การทดสอบนี้ส่วนใหญ่มีประโยชน์สำหรับฐานข้อมูลและเซิร์ฟเวอร์แอปพลิเคชันการทดสอบโหลดยังต้องการการทดสอบประสิทธิภาพของซอฟต์แวร์ซึ่งตรวจสอบว่าซอฟต์แวร์บางตัวทำงานได้ดีเพียงใดภายใต้ภาระงาน[ 11 ]
การทดสอบการถดถอย
การทดสอบการถดถอยใช้เพื่อตรวจสอบว่ามีข้อบกพร่องใหม่ใด ๆ เกิดขึ้นจากการแก้ไขข้อบกพร่องก่อนหน้านี้หรือไม่ การทดสอบการถดถอยจะดำเนินการหลังจากการเปลี่ยนแปลงหรือการอัปเดตคุณสมบัติของซอฟต์แวร์ทุกครั้ง การทดสอบนี้จะดำเนินการเป็นระยะ ขึ้นอยู่กับระยะเวลาและคุณสมบัติของซอฟต์แวร์[ 11 ]
การวางแผนการทดสอบ
การทดสอบความน่าเชื่อถือมีค่าใช้จ่ายสูงกว่าการทดสอบประเภทอื่น ดังนั้น ในการทำการทดสอบความน่าเชื่อถือ จึงจำเป็นต้องมีการจัดการและการวางแผนอย่างเหมาะสม แผนนี้รวมถึงกระบวนการทดสอบที่จะดำเนินการ ข้อมูลเกี่ยวกับสภาพแวดล้อม ตารางการทดสอบ จุดทดสอบ เป็นต้น
ปัญหาในการออกแบบกรณีทดสอบ
ปัญหาทั่วไปบางประการที่มักเกิดขึ้นเมื่อออกแบบกรณีทดสอบ ได้แก่:
- สามารถออกแบบกรณีทดสอบได้ง่ายๆ โดยการเลือกเฉพาะค่าอินพุตที่ถูกต้องสำหรับแต่ละฟิลด์ในซอฟต์แวร์ เมื่อมีการเปลี่ยนแปลงในโมดูลใดโมดูลหนึ่ง ค่าเดิมอาจไม่ได้ทดสอบคุณสมบัติใหม่ที่เพิ่มเข้ามาหลังจากซอฟต์แวร์เวอร์ชันเก่า
- อาจมีการทำงานที่สำคัญบางอย่างในซอฟต์แวร์ซึ่งไม่ได้รับการจัดการโดยกรณีทดสอบที่มีอยู่ ดังนั้นจึงจำเป็นต้องตรวจสอบให้แน่ใจว่าได้พิจารณากรณีทดสอบที่เป็นไปได้ทุกประเภทผ่านการเลือกกรณีทดสอบอย่างระมัดระวัง[ 11 ]
การเพิ่มความน่าเชื่อถือผ่านการทดสอบ
การศึกษาในระหว่างการพัฒนาและการออกแบบซอฟต์แวร์ช่วยปรับปรุงความน่าเชื่อถือของผลิตภัณฑ์ การทดสอบความน่าเชื่อถือจะดำเนินการเพื่อกำจัดโหมดความล้มเหลวของซอฟต์แวร์ การทดสอบอายุการใช้งานของผลิตภัณฑ์ควรทำหลังจากส่วนการออกแบบเสร็จสิ้นหรืออย่างน้อยที่สุดการออกแบบทั้งหมดเสร็จสมบูรณ์แล้ว[ 12 ] การวิเคราะห์ความล้มเหลวและการปรับปรุงการออกแบบทำได้ผ่านการทดสอบ
การทดสอบการเติบโตของความน่าเชื่อถือ
[ 12 ] การทดสอบนี้ใช้เพื่อตรวจสอบต้นแบบซอฟต์แวร์ใหม่ซึ่งในตอนแรกคาดว่าจะล้มเหลวบ่อยครั้ง สาเหตุของความล้มเหลวจะถูกตรวจพบและมีการดำเนินการเพื่อลดข้อบกพร่อง สมมติว่า T คือเวลาสะสมทั้งหมดสำหรับต้นแบบ n(T) คือจำนวนความล้มเหลวตั้งแต่เริ่มต้นจนถึงเวลา T กราฟที่วาดสำหรับ n(T)/T เป็นเส้นตรง กราฟนี้เรียกว่า Duane Plot เราสามารถทราบได้ว่าความน่าเชื่อถือจะได้รับมากน้อยเพียงใดหลังจากรอบการทดสอบอื่นๆ ทั้งหมดและแก้ไขได้
แก้สมการที่ 1 สำหรับ n(T)
โดยที่ K คือ e^b ถ้าค่าอัลฟาในสมการเป็นศูนย์ ความน่าเชื่อถือจะไม่ดีขึ้นตามที่คาดหวังสำหรับจำนวนความล้มเหลวที่กำหนด สำหรับค่าอัลฟาที่มากกว่าศูนย์ เวลาสะสม T จะเพิ่มขึ้น นี่อธิบายได้ว่าจำนวนความล้มเหลวไม่ได้ขึ้นอยู่กับระยะเวลาการทดสอบ
ออกแบบกรณีทดสอบสำหรับเวอร์ชันปัจจุบัน
หากมีการเพิ่มฟังก์ชันใหม่ลงในซอฟต์แวร์เวอร์ชันปัจจุบัน การเขียนกรณีทดสอบสำหรับการดำเนินการนั้นจะแตกต่างออกไป
- ขั้นแรก วางแผนว่าจะต้องเขียนกรณีทดสอบใหม่กี่กรณีสำหรับเวอร์ชันปัจจุบัน
- หากฟีเจอร์ใหม่เป็นส่วนหนึ่งของฟีเจอร์ที่มีอยู่แล้ว ให้แชร์กรณีทดสอบของฟีเจอร์ใหม่และฟีเจอร์ที่มีอยู่ระหว่างกัน
- สุดท้ายนี้ ให้รวมกรณีทดสอบทั้งหมดจากเวอร์ชันปัจจุบันและเวอร์ชันก่อนหน้าเข้าด้วยกัน แล้วบันทึกผลลัพธ์ทั้งหมด[ 11 ]
มีกฎที่กำหนดไว้ล่วงหน้าสำหรับการคำนวณจำนวนกรณีทดสอบใหม่สำหรับซอฟต์แวร์ ถ้า N คือความน่าจะเป็นของการเกิดการดำเนินการใหม่สำหรับซอฟต์แวร์เวอร์ชันใหม่ R คือความน่าจะเป็นของการเกิดการดำเนินการที่ใช้ในเวอร์ชันปัจจุบัน และ T คือจำนวนกรณีทดสอบทั้งหมดที่เคยใช้มาก่อนแล้ว
การประเมินความน่าเชื่อถือโดยอิงจากการทดสอบการใช้งาน
วิธีการทดสอบการใช้งานจริงใช้เพื่อทดสอบความน่าเชื่อถือของซอฟต์แวร์ โดยจะตรวจสอบว่าซอฟต์แวร์ทำงานอย่างไรในสภาพแวดล้อมการใช้งานจริงที่เกี่ยวข้อง ปัญหาหลักของการประเมินประเภทนี้คือการสร้างสภาพแวดล้อมการใช้งานดังกล่าว การจำลองประเภทนี้พบได้ในอุตสาหกรรมบางประเภท เช่น อุตสาหกรรมนิวเคลียร์ อุตสาหกรรมการบิน เป็นต้น การคาดการณ์ความน่าเชื่อถือในอนาคตเป็นส่วนหนึ่งของการประเมินความน่าเชื่อถือ
มีเทคนิคสองอย่างที่ใช้ในการทดสอบการทำงานเพื่อทดสอบความน่าเชื่อถือของซอฟต์แวร์:
- การประมาณค่าความน่าเชื่อถือในสภาวะคงที่
- ในกรณีนี้ เราใช้ข้อมูลป้อนกลับจากผลิตภัณฑ์ซอฟต์แวร์ที่ส่งมอบแล้ว โดยขึ้นอยู่กับผลลัพธ์เหล่านั้น เราสามารถคาดการณ์ความน่าเชื่อถือในอนาคตของผลิตภัณฑ์เวอร์ชันถัดไปได้ ซึ่งคล้ายกับการทดสอบตัวอย่างสำหรับผลิตภัณฑ์ทางกายภาพ
- การทำนายโดยอิงจากการเติบโตของความน่าเชื่อถือ
- วิธีนี้ใช้เอกสารขั้นตอนการทดสอบ ตัวอย่างเช่น พิจารณาซอฟต์แวร์ที่พัฒนาแล้ว และเรากำลังสร้างซอฟต์แวร์เวอร์ชันใหม่ที่แตกต่างกัน เราพิจารณาข้อมูลเกี่ยวกับการทดสอบของแต่ละเวอร์ชัน และจากแนวโน้มที่สังเกตได้ เราจะคาดการณ์ความน่าเชื่อถือของซอฟต์แวร์เวอร์ชันใหม่[ 13 ]
การประเมินและการคาดการณ์การเติบโตของความน่าเชื่อถือ
ในการประเมินและทำนายความน่าเชื่อถือของซอฟต์แวร์ เราใช้แบบจำลองการเติบโตของความน่าเชื่อถือ ในระหว่างการทำงานของซอฟต์แวร์ ข้อมูลใดๆ เกี่ยวกับความล้มเหลวจะถูกจัดเก็บในรูปแบบสถิติและป้อนเป็นข้อมูลเข้าสู่แบบจำลองการเติบโตของความน่าเชื่อถือ โดยใช้ข้อมูลนี้ แบบจำลองการเติบโตของความน่าเชื่อถือสามารถประเมินความน่าเชื่อถือของซอฟต์แวร์ได้
มีข้อมูลมากมายเกี่ยวกับแบบจำลองการเติบโตของความน่าเชื่อถือ โดยมีแบบจำลองความน่าจะเป็นหลายแบบที่อ้างว่าสามารถแสดงกระบวนการความล้มเหลวได้ แต่ไม่มีแบบจำลองใดที่เหมาะสมที่สุดสำหรับทุกสภาวะ ดังนั้น เราจึงต้องเลือกแบบจำลองโดยพิจารณาจากสภาวะที่เหมาะสม
การประเมินความน่าเชื่อถือโดยพิจารณาจากการทำงานที่ปราศจากข้อผิดพลาด
ในกรณีนี้ ความน่าเชื่อถือของซอฟต์แวร์จะถูกประเมินโดยใช้สมมติฐานดังต่อไปนี้:
- หากพบข้อบกพร่อง จะมีใครมาแก้ไขหรือไม่
- การแก้ไขข้อบกพร่องจะไม่มีผลกระทบต่อความน่าเชื่อถือของซอฟต์แวร์แต่อย่างใด
- การแก้ไขแต่ละครั้งในซอฟต์แวร์มีความแม่นยำ[ 13 ]
ดูเพิ่มเติม
- การทดสอบซอฟต์แวร์
- การทดสอบการรับน้ำหนัก
- การทดสอบการถดถอย
- วิศวกรรมความน่าเชื่อถือ
- รายชื่อแบบจำลองความน่าเชื่อถือของซอฟต์แวร์
ลิงก์ภายนอก
- เวลาเฉลี่ยระหว่างความล้มเหลว
- การทดสอบอายุการใช้งานซอฟต์แวร์