ผมเชื่อว่า Developer ทุกคนทำการทดสอบสิ่งที่ตัวเองสร้าง
แต่ Developer บางคนอาจจะไม่เขียน test ขึ้นมา (Manual test)
แต่ Developer หลายคนอาจจะเขียน test ขึ้นมา ( Automated test )
เพื่อทำการตรวจสอบสิ่งที่กำลังแก้ไข ว่าทำงานได้อย่างถูกต้อง
เพื่อทำให้มีความมั่นใจต่อระบบที่กำลังพัฒนา
แต่ปัญหาที่มักพบเจอมาก ๆ สำหรับ Testa ก็คือ
- Developer มักจะไม่ค่อยสนใจ test มากเท่าไร
- Developer มักจะไม่ทำการ refactor test เลย
- Developer ไปสนใจเพียง production code เท่านั้น
1. จงจำไว้ว่า Test มันคือ code นะ
อย่าปล่อยให้ test มันเป็น code ชั้น 2 รองจาก production code แต่ให้มองว่าเป็น production code ที่ต้องถูกส่งมอบด้วยเสมอมีคำพูดของคุณ Uncle Bob กล่าวไว้ว่า The good tests are more valuable than production codeดังนั้น test มันจึงมีความสำคัญอย่างมาก อย่าปล่อยให้ test มันรกรุงรังนะครับ
2. Test ควรต้องอ่าน และ ทำความเข้าใจได้ง่าย
เช่นเดียวกับ production code นั่นคือ เราไม่ได้เขียน code เพียงให้ computer เข้าใจและทำงานได้เท่านั้น แต่เราเขียน code เพื่อให้คนอ่าน แต่เราเขียน code เพื่อให้คนเข้าใจได้ง่าย แต่เราเขียน code เพื่อคนอื่นที่จะเข้ามาดูแลรักษาต่อไป ดังนั้น เรื่องของการตั้งชื่อ test เรื่องของการตั้งชื่อตัวแปร เรื่องของการตั้งชื่อ method ต้องใช้ชื่อที่สื่อสารได้ชัดเจน ไม่ใช่ test 1, 2, 3, 4, 5 ...3. Test ควรต้องง่ายต่อการดูแลรักษา ทั้งการเพิ่ม แก้ไข และ ลบ
โดยปกติ ถ้า production code มีการเปลี่ยนแปลงแล้ว จะพบว่าต้องทำการแก้ไข test จำนวนมาก !! ดังนั้น ปัญหามันจึงเกิด ? บางคนอาจจะบอกว่า ต้องใช้เวลาแก้ไข test มากกว่า production code เสียอีก !! บางคนถึงกับลบ test ออกไปเลย !! ดังนั้นถ้าต้องการลดเวลาในการแก้ไข แสดงว่า test มันต้องแก้ไขง่ายนะสิ แสดงว่า test มันต้องไม่ซับซ้อนนะสิ แสดงว่า test มันต้องไม่มีเงื่อนไขที่เยอะนะสิ แสดงว่า test มันต้องไม่มี loop ทำงานนะสิ แสดงว่า test มันต้อง DRY (Don’t Repeat Yourself) นะสิ แสดงว่า test มันต้องไม่ซ้ำซ้อนนะสิ ยุบไปเป็น method ซะ ใช่ไหม ?Developer ลองกลับไปดู test ของระบบสิ
ว่าเป็นไปตาม 3 ข้อข้างต้นหรือไม่ ? ถ้าไม่ ก็น่าจะต้องลงมือ refactor test ได้แล้ว หรือต้องทำอะไรให้มันดีขึ้นแล้วนะ สามารถทำได้ทั้ง manual test และ automated testอย่าลืมว่า การ refactoring นั้น ต้องทำทั้ง test และ production code เสมอ