การทดสอบเชิงบวกและการทดสอบเชิงลบพร้อมตัวอย่าง

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

การทดสอบเชิงบวกและเชิงลบร่วมกันตัดสินว่าซอฟต์แวร์ยอมรับสิ่งที่ควรยอมรับและปฏิเสธสิ่งที่ไม่ควรยอมรับ บทความนี้จะอธิบายทั้งสองแนวทาง เทคนิคที่อยู่เบื้องหลัง ตัวอย่างเชิงปฏิบัติ และแนวทางปฏิบัติที่ช่วยลดการรั่วไหลของข้อบกพร่อง

  • ✅ ผลตรวจเป็นบวก: ป้อนเฉพาะข้อมูลที่ถูกต้องและตรวจสอบให้แน่ใจว่าแอปพลิเคชันทำงานตามขั้นตอนที่ต้องการอย่างแม่นยำตามที่ระบุไว้ในข้อกำหนด
  • ⛔ ผลตรวจเป็นลบ: ป้อนข้อมูลที่ไม่ถูกต้องหรือผิดปกติลงไป แล้วตรวจสอบว่าแอปพลิเคชันปฏิเสธข้อมูลนั้น แสดงข้อผิดพลาดที่ชัดเจน และทำงานได้อย่างเสถียรหรือไม่
  • 📏 การวิเคราะห์ค่าขอบเขต: ทดสอบขอบเขตของช่วงที่ยอมรับได้ทั้งหมด จากนั้นทดสอบอีกครั้งที่ขอบเขตที่ยอมรับได้ เพื่อตรวจจับข้อผิดพลาดที่เกิดจากการคลาดเคลื่อนไปหนึ่งตำแหน่งได้อย่างรวดเร็ว
  • 🧩 การแบ่งส่วนความเท่าเทียมกัน: แบ่งข้อมูลนำเข้าออกเป็นกลุ่มที่ถูกต้องและไม่ถูกต้อง จากนั้นสุ่มเลือกค่าหนึ่งค่าจากแต่ละกลุ่มแทนที่จะทดสอบทุกอย่าง
  • 🇧🇷 กฎการคุ้มครอง: เขียนกรณีศึกษาอย่างน้อยสองกรณีต่อข้อกำหนดแต่ละข้อ โดยเป็นกรณีเชิงบวกหนึ่งกรณีและกรณีเชิงลบหนึ่งกรณี เพื่อให้แน่ใจว่าเกณฑ์การยอมรับทุกข้อจะไม่ได้รับการทดสอบ
  • 🛡️ ผลตอบแทนด้านความปลอดภัย: กรณีผลลัพธ์เชิงลบเผยให้เห็นช่องโหว่ในการฉีดโค้ด โทเค็นหมดอายุ และข้อยกเว้นที่ไม่ได้จัดการ ซึ่งการทำงานที่ถูกต้องจะไม่พบเห็นเลย
  • 🤖 ความเหมาะสมของระบบอัตโนมัติ: สร้างระบบอัตโนมัติสำหรับการไหลเวียนเชิงบวกที่มีเสถียรภาพเพื่อค่าการถดถอย และสร้างระบบอัตโนมัติสำหรับการตรวจสอบความถูกต้องเชิงลบเพื่อการตอบรับด้านความยืดหยุ่น

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

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

การตรวจพบผลบวกคืออะไร?

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

การทดสอบเชิงบวกดำเนินการเพื่อตรวจสอบว่าแอปพลิเคชันซอฟต์แวร์ทำงานได้ตรงตามที่คาดหวังไว้หรือไม่ ดังนั้นจึงเรียกอีกอย่างว่าการทดสอบเส้นทางแห่งความสุข (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) จากแต่ละส่วนมาทดสอบสถานการณ์ได้ ดูได้จาก... การแบ่งส่วนสมมูลและการวิเคราะห์ค่าขอบเขต บทเรียนสำหรับตัวอย่างเพิ่มเติม

วิธีการตรวจหาเชื้อทั้งผลบวกและผลลบ

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

  1. โปรดอ่านข้อกำหนดเกี่ยวกับข้อจำกัดต่างๆ โปรดสังเกตรูปแบบที่ยอมรับ ช่วง และช่องข้อมูลที่จำเป็นทั้งหมด สิ่งใดก็ตามที่ข้อกำหนดอนุญาตจะถือเป็นกรณีเชิงบวก และสิ่งใดก็ตามที่ข้อกำหนดไม่อนุญาตจะถือเป็นกรณีเชิงลบ
  2. เขียนกรณีเชิงบวกก่อน ป้อนข้อมูลที่ถูกต้อง ดำเนินการตามขั้นตอน และบันทึกผลลัพธ์ที่คาดหวังไว้เป็นค่าพื้นฐาน
  3. หาค่าลบจากขีดจำกัดเดียวกัน ใช้การวิเคราะห์ค่าขอบเขตและการแบ่งส่วนความเท่าเทียมกันเพื่อสร้างช่องว่าง ข้อมูลประเภทที่ไม่ถูกต้อง และตัวเลขที่อยู่นอกช่วง
  4. เพิ่มข้อมูลที่เป็นปรปักษ์ เพิ่ม การแทรก SQL สตริง โทเค็นหมดอายุ และข้อมูล API ที่ผิดรูปแบบ การทดสอบความปลอดภัย ช่องว่างต่างๆ จะปรากฏให้เห็นตั้งแต่เนิ่นๆ
  5. ขยายขอบเขตไปยังการตรวจสอบที่ไม่เกี่ยวข้องกับการทำงานหลัก A โหลดทดสอบ จำนวนผู้ใช้งานที่ได้รับการสนับสนุนเป็นค่าบวก ในขณะที่ การทดสอบความเครียด นอกเหนือจากขีดจำกัดนั้นคือกรณีลบที่ตรงกัน
  6. เลือกสถานที่ดำเนินการคดีแต่ละคดี อย่าให้ผลตรวจเป็นลบ การทดสอบควันและสติสัมปชัญญะซึ่งเป็นเกตบวกที่รวดเร็ว และรันเกตเหล่านั้นในเชิงฟังก์ชันและ การทดสอบการถดถอย รอบ

การถอนเงินจากตู้ ATM จะแสดงการจับคู่ กรณีที่ถูกต้องคือการป้อนรหัส PIN ที่ถูกต้องและจำนวนเงินที่ถูกต้อง ดังนั้นคุณจะได้รับเงินสดและใบเสร็จรับเงิน กรณีที่ไม่ถูกต้องคือการป้อนรหัส PIN ที่ไม่ถูกต้อง และคาดว่าจะได้รับข้อความปฏิเสธ จากนั้นบัตรจะถูกระงับ

แนวทางปฏิบัติที่ดีที่สุดเพื่อรักษาสมดุลให้เหมาะสม

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

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

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

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

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

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

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

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

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