การรวมกับการทดสอบหน่วย
คุณควรให้การทดสอบหน่วยของคุณและการทดสอบการรวมเข้าด้วยกันแยกออกจากกันอย่างสมบูรณ์ การทดสอบหน่วยของคุณควรทดสอบสิ่งเดียวและอย่างหนึ่งเท่านั้นและแยกส่วนที่เหลือทั้งหมดของระบบของคุณ หน่วยถูกกำหนดไว้อย่างหลวม ๆ แต่โดยปกติแล้วจะใช้วิธีหรือฟังก์ชัน
มันสมเหตุสมผลที่จะมีการทดสอบสำหรับแต่ละหน่วยเพื่อให้คุณรู้ว่าอัลกอริธึมของมันถูกนำไปใช้อย่างถูกต้องและคุณรู้ทันทีว่าเกิดอะไรขึ้นที่ไหนหากการใช้งานนั้นมีข้อบกพร่อง
เนื่องจากคุณทดสอบการแยกอย่างสมบูรณ์ในขณะที่การทดสอบหน่วยคุณใช้ออบเจ็กต์ stub และ mockเพื่อทำงานเหมือนส่วนที่เหลือของแอปพลิเคชันของคุณ นี่คือที่มาของการทดสอบการรวมเข้าด้วยกันการทดสอบทุกหน่วยในการแยกเป็นสิ่งที่ดี แต่คุณต้องรู้ว่าหน่วยนั้นทำงานร่วมกันได้จริงหรือไม่
ซึ่งหมายความว่าการรู้ว่าแบบจำลองนั้นถูกจัดเก็บจริงในฐานข้อมูลหรือหากมีการออกคำเตือนจริง ๆ หลังจากอัลกอริทึม X ล้มเหลว
การทดสอบพัฒนาขับเคลื่อน
ลองย้อนกลับไปดูการพัฒนาระบบขับเคลื่อนทดสอบ (TDD) มีหลายสิ่งที่ต้องคำนึงถึง
- คุณเขียนการทดสอบหน่วยของคุณก่อนที่คุณจะเขียนรหัสที่ทำให้มันผ่าน
- คุณผ่านการทดสอบเขียนรหัสเพียงพอที่จะทำสิ่งนี้ให้สำเร็จ
- ตอนนี้ผ่านการทดสอบถึงเวลาที่จะถอยกลับ มีสิ่งใดบ้างที่จะปรับปรุงการทำงานของฟังก์ชั่นใหม่นี้? คุณสามารถทำได้อย่างปลอดภัยเนื่องจากทุกอย่างถูกทดสอบ
บูรณาการครั้งแรกกับบูรณาการครั้งสุดท้าย
การทดสอบการรวมเข้ากับวัฏจักร TDD ในหนึ่งในสองวิธี ฉันรู้จักคนที่ชอบเขียนก่อน พวกเขาเรียกการรวมการทดสอบการทดสอบแบบ end-to-end และกำหนดการทดสอบแบบ end-to-end เป็นการทดสอบที่ทดสอบเส้นทางทั้งหมดของ usecase ได้อย่างสมบูรณ์ กำลังตรวจสอบผลลัพธ์เอาต์พุต ฯลฯ ... ) จากนั้นพวกเขาเริ่มต้นด้วยการทดสอบหน่วยแรกของพวกเขาทำให้มันผ่านเพิ่มอีกหนึ่งวินาทีทำให้มันผ่าน ฯลฯ ... ช้าลงมากขึ้นเรื่อย ๆ ของการทดสอบบูรณาการรวมเช่นกันจนกว่าคุณสมบัติจะเสร็จสิ้น
รูปแบบอื่นคือการสร้างการทดสอบหน่วยคุณลักษณะโดยการทดสอบหน่วยและเพิ่มการทดสอบการรวมที่จำเป็นหลังจากนั้น ข้อแตกต่างที่สำคัญระหว่างสองสิ่งนี้คือในกรณีของการทดสอบการรวมระบบก่อนอื่นคุณต้องนึกถึงการออกแบบแอปพลิเคชัน ชนิดนี้ไม่เห็นด้วยกับข้อสมมติฐานที่ว่า TDD นั้นเกี่ยวกับการออกแบบแอปพลิเคชันมากพอ ๆ กับการทดสอบ
ปฏิบัติการ
ที่งานของฉันเรามีการทดสอบทั้งหมดของเราในโครงการเดียวกัน มีกลุ่มแตกต่างกันอย่างไรก็ตาม เครื่องมือการรวมอย่างต่อเนื่องจะเรียกใช้สิ่งที่ถูกทำเครื่องหมายเป็นการทดสอบหน่วยก่อน เฉพาะในกรณีที่ประสบความสำเร็จจะช้าลง (เพราะพวกเขาทำคำขอจริงให้ใช้ฐานข้อมูลจริง ฯลฯ ) การทดสอบบูรณาการดำเนินการเช่นกัน
เรามักจะใช้ไฟล์ทดสอบหนึ่งไฟล์สำหรับหนึ่งคลาสโดยวิธีการ
แนะนำให้อ่าน
- การพัฒนาซอฟต์แวร์เชิงวัตถุโดยการทดสอบหนังสือเล่มนี้เป็นตัวอย่างที่ดีมากของวิธีการทดสอบการรวมระบบครั้งแรก
- ศิลปะแห่งการทดสอบหน่วยพร้อมตัวอย่างใน dot.netในการทดสอบหน่วยพร้อมตัวอย่างใน dot.net: D หนังสือดีมากเกี่ยวกับหลักการที่อยู่เบื้องหลังการทดสอบหน่วย
- Robert C. Martin บน TDD (บทความฟรี): อ่านบทความสองบทความแรกที่เขาลิงก์ด้วยเช่นกัน