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