ในบรรดาคำตอบที่มากมายจนไม่มีใครแตะต้องการวิเคราะห์ความเท่าเทียมและการวิเคราะห์ค่าขอบเขตการพิจารณาที่สำคัญในการตอบคำถามที่อยู่ในมือ คำตอบอื่น ๆ ทั้งหมดที่เป็นประโยชน์นั้นมีคุณภาพ แต่เป็นไปได้และเป็นที่นิยมมากกว่าที่จะเป็นเชิงปริมาณ @fishtoaster ให้แนวทางที่เป็นรูปธรรมเพียงแค่แอบดูภายใต้การครอบคลุมของปริมาณการทดสอบ แต่การแบ่งที่เท่าเทียมกันและการวิเคราะห์ค่าขอบเขตทำให้เราทำได้ดีขึ้น
ในการแบ่งพาร์ติชันแบบเท่ากันคุณแบ่งชุดของอินพุตที่เป็นไปได้ทั้งหมดออกเป็นกลุ่มตามผลลัพธ์ที่คาดหวัง ข้อมูลจากกลุ่มใดกลุ่มหนึ่งจะให้ผลลัพธ์ที่เทียบเท่าดังนั้นกลุ่มดังกล่าวเรียกว่าคลาสความเท่าเทียมกัน (โปรดทราบว่าผลลัพธ์ที่เทียบเท่าไม่ได้หมายถึงผลลัพธ์ที่เหมือนกัน)
ตัวอย่างง่ายๆให้พิจารณาโปรแกรมที่ควรแปลงอักขระ ASCII ตัวพิมพ์เล็กเป็นอักขระตัวพิมพ์ใหญ่ ตัวละครอื่น ๆ ควรได้รับการเปลี่ยนแปลงตัวตนคือยังคงไม่เปลี่ยนแปลง นี่คือหนึ่งการแบ่งย่อยที่เป็นไปได้ในคลาสที่เทียบเท่า:
| # | Equivalence class | Input | Output | # test cases |
+------------------------------------------------------------------------+
| 1 | Lowercase letter | a - z | A - Z | 26 |
| 2 | Uppercase letter | A - Z | A - Z | 26 |
| 3 | Non-alphabetic chars | 0-9!@#,/"... | 0-9!@#,/"... | 42 |
| 4 | Non-printable chars | ^C,^S,TAB... | ^C,^S,TAB... | 34 |
คอลัมน์สุดท้ายจะรายงานจำนวนกรณีทดสอบหากคุณระบุจำนวนกรณีทดสอบทั้งหมด ในทางเทคนิคตามกฎของ @ fishtoaster 1 คุณจะต้องรวม 52 กรณีทดสอบทั้งหมดเหล่านั้นสำหรับสองแถวแรกที่ให้ไว้ด้านบนตกอยู่ภายใต้ "กรณีทั่วไป" กฎของ @ fishtoaster 2 จะเพิ่มบางส่วนหรือทั้งหมดจากแถว 3 และ 4 ด้านบนเช่นกัน แต่ด้วยการแบ่งพาร์ติชันที่เท่าเทียมกันการทดสอบกรณีทดสอบหนึ่งกรณีในแต่ละคลาสที่เทียบเท่านั้นเพียงพอแล้ว หากคุณเลือก "a" หรือ "g" หรือ "w" คุณกำลังทดสอบพา ธ ของรหัสเดียวกัน ดังนั้นคุณมีกรณีทดสอบทั้งหมด 4 กรณีแทนที่จะเป็น 52+
การวิเคราะห์ค่าขอบเขตแนะนำให้ปรับแต่งเล็กน้อย: โดยพื้นฐานแล้วมันแสดงให้เห็นว่าไม่ใช่สมาชิกของระดับความเท่าเทียมกันทุกคนคือดีเทียบเท่า นั่นคือคุณค่าของขอบเขตควรได้รับการพิจารณาว่ามีค่าในกรณีทดสอบด้วยตนเอง (เหตุผลหนึ่งที่ง่ายสำหรับเรื่องนี้คือข้อผิดพลาดออกโดยหนึ่งที่น่าอับอาย!) ดังนั้นสำหรับแต่ละชั้นเทียบเท่าคุณสามารถมี 3 อินพุตการทดสอบ ดูโดเมนอินพุตด้านบน - และมีความรู้เกี่ยวกับค่า ASCII - ฉันอาจได้ค่าอินพุตกรณีทดสอบเหล่านี้:
| # | Input | # test cases |
| 1 | a, w, z | 3 |
| 2 | A, E, Z | 3 |
| 3 | 0, 5, 9, !, @, *, ~ | 7 |
| 4 | nul, esc, space, del | 4 |
(ทันทีที่คุณได้รับค่าขอบเขตมากกว่า 3 ค่าที่แนะนำว่าคุณอาจต้องการคิดทบทวนการแบ่งคลาสดั้งเดิมของคุณ แต่นี่ก็ง่ายพอที่ฉันไม่ได้กลับไปแก้ไข) ดังนั้นการวิเคราะห์ค่าขอบเขตทำให้เราเป็นเพียงแค่ กรณีทดสอบ 17 กรณี - ด้วยความมั่นใจอย่างสูงในการครอบคลุมที่สมบูรณ์ - เปรียบเทียบกับกรณีทดสอบ 128 กรณีเพื่อทำการทดสอบแบบละเอียด (ไม่ต้องพูดถึงว่า combinatorics บอกว่าการทดสอบอย่างละเอียดเป็นไปไม่ได้สำหรับแอปพลิเคชันใด ๆ ในโลกแห่งความเป็นจริง!)