การสร้างชุดของ Automated test หรือ การทดสอบแบบอัตโนมัติ มันทำได้ยากมาก ๆ
โดยเฉพาะพวกระบบ Legacy
หรือ ระบบที่อยู่มาอย่างยาวนาน
หรือ ระบบที่ไม่ได้เขียน Automated test มาตั้งแต่เริ่มต้น
รวมทั้งยังพบว่า
ทีมพัฒนาส่วนใหญ่จะไม่ลงทุนเพื่อเขียนอีกต่างหาก
เนื่องจากคิดว่า เราคงทำไม่ได้หรอก
เนื่องจากคิดว่า มันสิ่งเปลืองเวลา
เนื่องจากคิดว่า ระบบของเรามันแตกต่าง
เนื่องจากคิดว่า ระบบที่เราสร้างมันไม่สามารถเขียน Automated test ได้หรอกนะ
ซึ่งเป็นแนวคิดที่ไม่ถูกต้อง และ นำไปสู่หายนะในที่สุด
ทำไมนะ ?
บทความนี้ นำข้อมูลมาจาก Blog เรื่อง MANUAL TEST IS UNSUSTAINABLE
ลองย้อนกลับไปดูช่วงเริ่มต้นพัฒนาระบบดูสิ
จะพบว่าการทดสอบแบบ Manual มันทำได้ง่ายมาก ๆ มันใช้เวลาในการทดสอบน้อยมาก แต่เมื่อมันค่อย ๆ เกิดการเปลี่ยนแปลง เมื่อระบบใหญ่ขึ้น การทดสอบแบบ Manual จะใช้เวลานานขึ้น และ ยากขึ้น และดูเหมือนว่า การทดสอบแบบ Manual มันกลับกลายเป็นปัญหา เพราะว่า ไม่สามารถทดสอบได้ครบทุก ๆ feature นั่นหมายความว่า เราไม่สามารถหาปัญหา หรือ ความผิดพลาด ทั้งหมดได้ นั่นหมายถึง คุณภาพของระบบที่พัฒนา มันย่อมไม่ดีใช่ไหม ? นั่นหมายถึง คุณภาพของระบบที่พัฒนา มันไม่ยั่งยืนใช่ไหม ? ปล. บางที่ก็แก้ไขที่ปลายเหตุ ด้วยการเพิ่มคนทดสอบไปสิ !! บางที่ก็กลับไปกดดัน ให้ทดสอบดี ๆ และคาดหวังผลลัพธ์ที่สุดยอด !! สิ่งที่มักพบเจออยู่เป็นประจำ คือ Feature ใหม่ทำงานได้ แต่ feature เก่ากลับทำงานไม่ได้ Bug เก่าที่เคยแก้ไขไปแล้ว กลับมาอีกครั้งหนึ่ง วนแบบนี้ไปเรื่อย ๆ ไม่จบไม่สิ้น แต่ไม่เคยจำกัน ทำไมนะ !!ปัญหามันมาจาก ความสามารถในการพัฒนา และ ทดสอบ มันมีเท่าเดิม
แสดงดังรูป ดังนั้น เมื่อ feature ที่พัฒนาจำนวนมากขึ้นอย่างต่อเนื่อง แต่ความสามารถในการทดสอบแบบ Manual กลับเท่าเดิม ทำให้ไม่สามารถทดสอบได้ครบทุก feature ตั้งแต่เริ่มต้นจนถึงล่าสุด !! แสดงดังรูป ผลที่เกิดขึ้นตามมา มันมักจะพบเจอช่วงท้าย ๆ ของการพัฒนา !! นั่นคือ ไฟไหม้ไงล่ะ ซึ่งทุกคนต้องมาช่วยกันดับไฟ แต่มักจะพบว่า ทุกคนจะถูกไฟเผามากกว่า ปล. เรามักจะต้อง WAR Room ขึ้นมา เพื่อแก้ไขปัญหาเหล่านี้ มีใครคุ้น ๆ บ้างนะ ขนาดของห้องนี้ มันขึ้นอยู่กับขนาด และ งบประมาณของระบบนั่นเอง แสดงดังรูป เราจะพบว่า feature หรือ code ที่ไม่ถูกทดสอบนั้น มันส่งผลต่อ productivity เสมอ มันส่งผลต่อ การประมาณการ เสมอ มันส่งผลต่อ การวางแผน และ คาดการล่วงหน้า เสมอ พบว่า เราไม่ชอบวิธีการที่จะหา Bug ได้ง่าย ๆ แต่เราชอบวิธีการที่ซ่อน หรือ หา Bug ยาก ๆ !! ดังนั้น วิธีการที่เลือก มันจึงพาทุก ๆ คนเข้าสู่ mode การดับไฟ และ ผจญเพลิง ตลอดเวลา ดังนั้น คุณยังจะทำการทดสอบแบบ Manual เป็นหลักกันอยู่อีกหรือ ? คุณยังจะทดสอบอยู่ปลายน้ำของการพัฒนากันอยู่อีกหรือ ? คุณยังจะทำการแก้ไข Bug ต่าง ๆ ที่เดียวเยอะ ๆ กันอยู่อีกหรือ ? คุณยังจะสร้างระบบงานที่ไม่ยั่งยืนแบบนี้อยู่อีกหรือ ? คุณจะยังพัฒนาระบบงานกันแบบนี้อยู่อีกหรือ ? สำหรับตัวผมเอง ตอบได้เลยว่า ไม่แน่นอนลองถามตัวคุณเองสิว่า เรายังจะมาพูด หรือ อ้างว่า เราไม่มีเวลา มาสร้าง Automated test หรอกนะ กันอยู่อีกหรือไง ?