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