หลังจากอีกไม่กี่ปีของการเขียนโปรแกรมและทำงานในโครงการฉันจะให้คำตอบสำหรับคำถามของฉันเอง
ใช่คุณควรเขียนการทดสอบหน่วย การทดสอบแบบเอนด์ - เอนด์นั้นยากที่จะเขียนและเปราะโดยเฉพาะอย่างยิ่งหากพวกเขาใช้องค์ประกอบ UI
หากคุณใช้เฟรมเวิร์กเช่น Django หรือ Rails (หรือคลาสที่คุณกำหนดเอง) คุณควรมีคลาสฟอร์มที่จะจัดการการตรวจสอบความถูกต้องของฟอร์ม คุณจะมีคลาสมุมมองที่แสดงเทมเพลตที่แสดงผลและแบบฟอร์มและจัดการคำขอ GET และ POST
ในการสิ้นสุดการทดสอบคุณจะ:
- รับ URL
- กรอกแบบฟอร์มด้วยข้อมูลที่ถูกต้อง
- โพสต์ฟอร์มไปที่ url
- ตรวจสอบเพื่อให้แน่ใจว่าฐานข้อมูลได้รับการปรับปรุงหรือมีการดำเนินการบางอย่างเนื่องจากรูปแบบที่ถูกต้อง
คุณกำลังทดสอบโค้ดจำนวนมากและความครอบคลุมของคุณจะค่อนข้างดี แต่คุณจะทดสอบเส้นทางที่มีความสุขเมื่อทุกอย่างถูกต้อง คุณจะมั่นใจได้อย่างไรว่าแบบฟอร์มนั้นมีการตรวจสอบที่ถูกต้อง จะทำอย่างไรถ้าใช้แบบฟอร์มนั้นกับหลาย ๆ หน้า คุณยังเขียนแบบอื่นเพื่อจบแบบทดสอบหรือไม่?
ลองอีกครั้งด้วยการทดสอบหน่วย:
- ทดสอบวิธีการรับมุมมอง
- ทดสอบวิธีการดู POST ด้วยแบบฟอร์มปลอม / จำลอง
- ทดสอบแบบฟอร์มด้วยข้อมูลที่ถูกต้อง
- ทดสอบแบบฟอร์มด้วยข้อมูลที่ไม่ถูกต้อง
- ทดสอบผลข้างเคียงของแบบฟอร์ม
โดยใช้การทดสอบหน่วยคุณกำลังทดสอบโค้ดขนาดเล็กลงและการทดสอบนั้นมีความเฉพาะเจาะจงและง่ายต่อการเขียน เมื่อคุณรวมสิ่งนี้เข้ากับ TDD (การทดสอบพัฒนาแบบขับเคลื่อน) คุณจะได้รับรหัสคุณภาพสูงขึ้น
ไม่ควรยกเลิกความง่ายในการเขียนการทดสอบหน่วยเพราะเมื่อคุณอยู่ในโครงการที่ไม่มีการทดสอบอัตโนมัติคุณต้องเริ่มต้นที่ไหนสักแห่ง การเริ่มต้นด้วยการทดสอบหน่วยนั้นง่ายและเร็วขึ้นและช่วยให้คุณเริ่มต้นการทดสอบข้อบกพร่องแทนที่จะเริ่มเฉพาะเส้นทางที่มีความสุข
was told by a co-worker that the reason for this is that we can rip out and change the underlying implementation at any point as long as the end-to-end tests pass.
- นั่นเป็นความจริงของการทดสอบหน่วย ฟังดูแล้วเหมือนกับว่าการทดสอบแบบ end-to-end นั้นถูกใช้เป็นข้อแก้ตัวสำหรับการไม่เขียนการทดสอบหน่วย