การทดสอบเชิงบวกและการทดสอบเชิงลบพร้อมตัวอย่าง
⚡ สรุปอย่างชาญฉลาด
การทดสอบเชิงบวกและเชิงลบร่วมกันตัดสินว่าซอฟต์แวร์ยอมรับสิ่งที่ควรยอมรับและปฏิเสธสิ่งที่ไม่ควรยอมรับ บทความนี้จะอธิบายทั้งสองแนวทาง เทคนิคที่อยู่เบื้องหลัง ตัวอย่างเชิงปฏิบัติ และแนวทางปฏิบัติที่ช่วยลดการรั่วไหลของข้อบกพร่อง
การทดสอบซอฟต์แวร์คือกระบวนการตรวจสอบและยืนยันความถูกต้องของแอปพลิเคชันซอฟต์แวร์ เพื่อตรวจสอบว่ามันทำงานได้ตามที่คาดหวังหรือไม่ จุดประสงค์คือเพื่อค้นหาข้อบกพร่องและปรับปรุงคุณภาพของผลิตภัณฑ์ การทดสอบซอฟต์แวร์มีสองวิธี ได้แก่ การทดสอบเชิงบวกและการทดสอบเชิงลบ
แนวทางทั้งสองนี้ตอบคำถามที่ตรงกันข้ามกัน กล่าวคือ แอปพลิเคชันทำงานได้หรือไม่เมื่อทุกอย่างเป็นไปอย่างราบรื่น และแอปพลิเคชันยังคงเสถียรอยู่หรือไม่เมื่อมีสิ่งผิดปกติเกิดขึ้น?
การตรวจพบผลบวกคืออะไร?
การทดสอบเชิงบวก เป็นการทดสอบประเภทหนึ่งที่ดำเนินการกับแอปพลิเคชันซอฟต์แวร์โดยการป้อนชุดข้อมูลที่ถูกต้องเป็นอินพุต เพื่อตรวจสอบว่าแอปพลิเคชันซอฟต์แวร์ทำงานได้ตามที่คาดหวังเมื่อได้รับอินพุตที่เป็นบวกหรือไม่
การทดสอบเชิงบวกดำเนินการเพื่อตรวจสอบว่าแอปพลิเคชันซอฟต์แวร์ทำงานได้ตรงตามที่คาดหวังไว้หรือไม่ ดังนั้นจึงเรียกอีกอย่างว่าการทดสอบเส้นทางแห่งความสุข (happy path testing)
ตัวอย่างเช่น ลองพิจารณาช่องป้อนข้อความตัวเลขที่แสดงด้านล่างนี้
มีช่องข้อความในแอปพลิเคชันที่รับได้เฉพาะตัวเลขเท่านั้น ระบบจะยอมรับค่าที่ป้อนได้ถึง 99999 และค่าอื่นใดนอกเหนือจากนี้จะไม่เป็นที่ยอมรับ หากต้องการทดสอบเชิงบวก ให้ตั้งค่าอินพุตที่ถูกต้องจาก 0 ถึง 99999 และตรวจสอบว่าระบบยอมรับค่าเหล่านี้หรือไม่
การทดสอบเชิงลบคืออะไร?
การทดสอบเชิงลบ เป็นวิธีการทดสอบที่ใช้กับแอปพลิเคชันซอฟต์แวร์โดยการป้อนชุดข้อมูลที่ไม่ถูกต้องหรือไม่เหมาะสมเข้าไป เพื่อตรวจสอบว่าแอปพลิเคชันซอฟต์แวร์ทำงานได้ตามที่คาดหวังหรือไม่เมื่อได้รับข้อมูลจากผู้ใช้ในเชิงลบหรือไม่พึงประสงค์
จุดประสงค์ของการทดสอบเชิงลบคือเพื่อให้แน่ใจว่าแอปพลิเคชันซอฟต์แวร์จะไม่ล่มและยังคงเสถียรเมื่อป้อนข้อมูลที่ไม่ถูกต้อง ดังนั้นจึงเรียกอีกอย่างว่าการทดสอบเส้นทางข้อผิดพลาดหรือการทดสอบความล้มเหลว
ตัวอย่างเช่น ลองพิจารณาฟิลด์เดียวกันนี้ที่รับตัวอักษรแทนตัวเลข
การทดสอบเชิงลบสามารถทำได้โดยการป้อนอักขระ A ถึง Z หรือจาก a ถึง z ระบบซอฟต์แวร์อย่างใดอย่างหนึ่งไม่ควรยอมรับค่า ไม่เช่นนั้นควรแสดงข้อความแสดงข้อผิดพลาดสำหรับการป้อนข้อมูลที่ไม่ถูกต้องเหล่านี้
ในการทดสอบทั้งสองประเภท จำเป็นต้องพิจารณาสิ่งต่อไปนี้:
- ป้อนข้อมูล
- การกระทำที่จำเป็นต้องดำเนินการ
- ผลลัพธ์เอาท์พุต
ผลตรวจเป็นบวก เทียบกับ ผลตรวจเป็นลบ: ความแตกต่างที่สำคัญ
ทั้งสองแนวทางมีจุดร่วมกัน กรณีทดสอบ โครงสร้าง ความแตกต่างอยู่ที่ข้อมูลที่คุณป้อนเข้าไปและผลลัพธ์ที่ผ่านเกณฑ์นั้นพิสูจน์อะไรได้บ้าง
| พารามิเตอร์ | การทดสอบเชิงบวก | การทดสอบเชิงลบ |
|---|---|---|
| ยังเป็นที่รู้จัก | การทดสอบเส้นทางที่มีความสุข | การทดสอบเส้นทางข้อผิดพลาดหรือความล้มเหลว |
| อินพุตที่ใช้ | ข้อมูลถูกต้องและเป็นไปตามที่คาดไว้ | ข้อมูลไม่ถูกต้อง ผิดปกติ หรือไม่คาดคิด |
| เป้าหมาย | ตรวจสอบว่าฟังก์ชันดังกล่าวทำงานได้ตามที่ควรจะเป็นหรือไม่ | ยืนยันว่าฟีเจอร์ดังกล่าวปฏิเสธสิ่งที่มันไม่ควรปฏิเสธ |
| ผลลัพธ์ที่คาดหวัง | กระบวนการเสร็จสมบูรณ์เรียบร้อยแล้ว | เกิดข้อผิดพลาดที่ชัดเจน แต่ระบบยังคงเสถียร |
| การจัดการข้อผิดพลาด | ไม่ใช่จุดโฟกัส | จุดสนใจทั้งหมด |
| คุ้มครอง | แคบ ตรงตามข้อกำหนด | กว้างขวาง ครอบคลุมทุกสิ่งทุกอย่างที่อยู่นอกเหนือข้อกำหนด |
| ความเสี่ยงโดยทั่วไปหากไม่ปฏิบัติตาม | คุณสมบัติหลักเสียหาย | ข้อผิดพลาดและช่องโหว่ด้านความปลอดภัยส่งผลกระทบต่อกระบวนการผลิต |
การทดสอบเชิงบวกที่ล้มเหลวบ่งชี้ว่าฟังก์ชันการทำงานเสียหาย การทดสอบเชิงลบที่ล้มเหลวบ่งชี้ว่ามีตัวป้องกันหายไป ซึ่งจะมีค่าใช้จ่ายในการซ่อมแซมสูงกว่ามากเมื่อผู้ใช้พบปัญหาแล้ว
เทคนิคการทดสอบที่ใช้สำหรับการทดสอบผลบวกและผลลบ
ในทางปฏิบัติ เทคนิคการออกแบบข้อมูลป้อนเข้าแบบคลาสสิกสองวิธี ก่อให้เกิดทั้งกรณีเชิงบวกและเชิงลบจากข้อกำหนดเดียวกัน:
- การวิเคราะห์มูลค่าขอบเขต
- การแบ่งส่วนความเท่าเทียมกัน
การวิเคราะห์มูลค่าขอบเขต
นี่เป็นหนึ่งในเทคนิคการทดสอบซอฟต์แวร์ที่กรณีทดสอบได้รับการออกแบบให้รวมค่าไว้ที่ขอบเขต ถ้าข้อมูลอินพุตถูกใช้ภายในขีดจำกัดค่าขอบเขต แสดงว่านั้นเป็นการทดสอบเชิงบวก หากข้อมูลอินพุตถูกเลือกนอกขีดจำกัดค่าขอบเขต แสดงว่าเป็นการทดสอบเชิงลบ
ตัวอย่างเช่น ลองดูช่วงที่ยอมรับได้ตามที่แสดงด้านล่างนี้
ระบบสามารถรับค่าตัวเลขตั้งแต่ 0 ถึง 10 ได้ ตัวเลขอื่นๆ ทั้งหมดถือเป็นค่าที่ไม่ถูกต้อง ภายใต้เทคนิคนี้ จะมีการทดสอบค่าขอบเขต -1,0,1, 9,10,11, XNUMX และ XNUMX, XNUMX, XNUMX
การแบ่งส่วนความเท่าเทียมกัน
ดีไซน์นี้เป็น การทดสอบซอฟต์แวร์ เทคนิคการแบ่งข้อมูลอินพุตออกเป็นหลายพาร์ติชัน ค่าจากแต่ละพาร์ติชันจะต้องได้รับการทดสอบอย่างน้อยหนึ่งครั้ง พาร์ติชันที่มีค่าที่ถูกต้องจะใช้สำหรับการทดสอบเชิงบวก ในขณะที่พาร์ติชันที่มีค่าไม่ถูกต้องจะถูกใช้สำหรับการทดสอบเชิงลบ
ตัวอย่างเช่น ลองศึกษาพาร์ติชั่นทั้งสองที่แสดงด้านล่างนี้
ค่าตัวเลขตั้งแต่ศูนย์ถึงสิบสามารถแบ่งออกเป็นสอง (หรือสาม) ส่วน ในกรณีของเรา เรามีสองส่วนคือ -10 ถึง -1 และ 0 ถึง 10 สามารถนำค่าตัวอย่าง (5 และ -5) จากแต่ละส่วนมาทดสอบสถานการณ์ได้ ดูได้จาก... การแบ่งส่วนสมมูลและการวิเคราะห์ค่าขอบเขต บทเรียนสำหรับตัวอย่างเพิ่มเติม
วิธีการตรวจหาเชื้อทั้งผลบวกและผลลบ
ลำดับต่อไปนี้จะเปลี่ยนข้อกำหนดหนึ่งข้อให้กลายเป็นชุดกรณีบวกและลบที่สมดุลกัน
- โปรดอ่านข้อกำหนดเกี่ยวกับข้อจำกัดต่างๆ โปรดสังเกตรูปแบบที่ยอมรับ ช่วง และช่องข้อมูลที่จำเป็นทั้งหมด สิ่งใดก็ตามที่ข้อกำหนดอนุญาตจะถือเป็นกรณีเชิงบวก และสิ่งใดก็ตามที่ข้อกำหนดไม่อนุญาตจะถือเป็นกรณีเชิงลบ
- เขียนกรณีเชิงบวกก่อน ป้อนข้อมูลที่ถูกต้อง ดำเนินการตามขั้นตอน และบันทึกผลลัพธ์ที่คาดหวังไว้เป็นค่าพื้นฐาน
- หาค่าลบจากขีดจำกัดเดียวกัน ใช้การวิเคราะห์ค่าขอบเขตและการแบ่งส่วนความเท่าเทียมกันเพื่อสร้างช่องว่าง ข้อมูลประเภทที่ไม่ถูกต้อง และตัวเลขที่อยู่นอกช่วง
- เพิ่มข้อมูลที่เป็นปรปักษ์ เพิ่ม การแทรก SQL สตริง โทเค็นหมดอายุ และข้อมูล API ที่ผิดรูปแบบ การทดสอบความปลอดภัย ช่องว่างต่างๆ จะปรากฏให้เห็นตั้งแต่เนิ่นๆ
- ขยายขอบเขตไปยังการตรวจสอบที่ไม่เกี่ยวข้องกับการทำงานหลัก A โหลดทดสอบ จำนวนผู้ใช้งานที่ได้รับการสนับสนุนเป็นค่าบวก ในขณะที่ การทดสอบความเครียด นอกเหนือจากขีดจำกัดนั้นคือกรณีลบที่ตรงกัน
- เลือกสถานที่ดำเนินการคดีแต่ละคดี อย่าให้ผลตรวจเป็นลบ การทดสอบควันและสติสัมปชัญญะซึ่งเป็นเกตบวกที่รวดเร็ว และรันเกตเหล่านั้นในเชิงฟังก์ชันและ การทดสอบการถดถอย รอบ
การถอนเงินจากตู้ ATM จะแสดงการจับคู่ กรณีที่ถูกต้องคือการป้อนรหัส PIN ที่ถูกต้องและจำนวนเงินที่ถูกต้อง ดังนั้นคุณจะได้รับเงินสดและใบเสร็จรับเงิน กรณีที่ไม่ถูกต้องคือการป้อนรหัส PIN ที่ไม่ถูกต้อง และคาดว่าจะได้รับข้อความปฏิเสธ จากนั้นบัตรจะถูกระงับ
แนวทางปฏิบัติที่ดีที่สุดเพื่อรักษาสมดุลให้เหมาะสม
- เขียนกรณีศึกษาอย่างน้อยสองกรณีต่อข้อกำหนดแต่ละข้อ โดยเป็นกรณีศึกษาเชิงบวกหนึ่งกรณีและกรณีศึกษาเชิงลบหนึ่งกรณี ก่อนเริ่มการพัฒนา
- จัดลำดับความสำคัญของกรณีที่มีปัญหาตามผลกระทบ ดังนั้นความผิดพลาดในการฉีดข้อมูลและการชำระเงินจึงมีความสำคัญมากกว่าข้อผิดพลาดด้านการป้อนข้อมูลทั่วไป
- ควรระบุข้อความแสดงข้อผิดพลาดอย่างชัดเจน ไม่ใช่แค่บอกว่าการดำเนินการล้มเหลว เพราะข้อความที่ไม่ชัดเจนก็ถือเป็นข้อบกพร่องเช่นกัน
- เว้นที่ว่างไว้สำหรับ การทดสอบเชิงสำรวจและบันทึกผลการค้นพบผ่านทางของคุณ กระบวนการจัดการข้อบกพร่อง.
⚠️คำเตือน: ห้ามทดสอบกรณีเชิงลบกับสภาพแวดล้อมการใช้งานจริงโดยเด็ดขาด การทดสอบเหล่านั้นมีไว้เพื่อบังคับให้เกิดความล้มเหลว และการทำให้ระบบล่มโดยเจตนาจะส่งผลกระทบต่อผู้ใช้จริงและข้อมูลจริง


.png)
.png)
.png)
.png)