![Manual-testing]()
![manual-vs-automated-testing-which-of-them-is-in-demand]()
การสร้างชุดของ 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 หรอกนะ
กันอยู่อีกหรือไง ?