Screen Shot 2557-10-17 at 10.30.52 AM
ในการพัฒนา software ในปัจจุบันในบ้านเรา เริ่มมีการพูดถึง unit test เยอะขึ้น
แต่สิ่งหนึ่งที่มักได้ยินจาก developer ที่ไม่เขียน ก็คือ มันเขียนยาก
นั่นคือเหตุผลหลัก ที่ทำให้ไม่เขียน unit test
หรือจะพยายามบอกว่า ไม่มีเวลา มันใกล้ dead line แล้ว
หรือบอกว่า ถ้าทำ unit test แล้วต้องให้มันครอบคลุม code ใกล้ 100%

จากเหตุผลเหล่านี้ ทำให้การพัฒนา software พาเราเข้าสู่โลกมืด (Dark side)
ซึ่งมันง่ายที่จะเข้าไป แต่ยากที่จะถอนตัวออกมา …

ในฐานะที่เราเป็น developer สำหรับพัฒนา software

สิ่งหนึ่งที่พึงระลึกไว้ก็คือ เราต้องมีความเป็นมืออาชีพในหน้าที่ของตนเอง (Professionalism)
ตัวอย่างเช่น

  • เราจะไม่ส่งมอบ code ที่ไม่มี unit test ครอบคลุม
  • เราจะไม่ส่งมอบ code ที่เราไม่รู้ ไม่เข้าใจมันอย่างดี
  • เรารู้หรือไม่ว่าเราส่งมอบอะไรไปบ้าง  ส่งมอบ code ที่แย่ๆ ไปหรือไม่ คุณรู้หรือไม่ ?
  • การจะรู้ว่าคุณส่งมอบอะไรไปบ้าง นั่นคือ คุณต้องมีระดับของ code coverage ที่สูง ถ้ามีระดับที่ต่ำหรือไม่มีเลย นั่นคือ คุณไม่รู้อะไรเลย !!

มาถึงตรงนี้สามารถสรุปได้ง่ายๆ ว่า
เมื่อถึง deadline แล้ว สิ่งที่คุณส่งมอบไปนั้น คุณต้องรู้และเข้าใจว่าไม่ได้ส่งขยะไปให้นะ
และส่งมอบ feature ต่างๆ ได้ครบถ้วน และ ถูกต้อง
นั่นบอกว่า คุณจำเป็นต้องทำ code coverage ให้อยู่ในระดับที่สูงอยู่เสมอ

ลองกลับไปดูว่า สิ่งที่คุณทำอยู่นั้น คืออะไร เป็นอย่างไร ?

หลายๆ คน อาจจะบอกว่า code ที่ไม่มี unit test มันก็สามารถทำงานได้นะ

ผมเห็นด้วยกับประโยคนี้ แต่

คุณไม่มีทางรู้เลยว่า code มันสามารถทำงานได้ ถ้าคุณไม่ทำการทดสอบ
ดังนั้น แสดงว่าคุณทำการทดสอบ ไม่ว่าวิธีการใดก็วิธีการหนึ่ง
ซึ่ง code coverage ไม่ได้เข้ามาเกี่ยวข้องเลย

วิธีการแบบนี้ คำว่า deadline จะมีความสำคัญกว่า คำว่า คุณภาพ เสมอ
ทำให้ผลที่ได้ ก็น่าจะเห็นหรือเป็นกันอยู่ !!!
แล้วยังจะทำกันต่อไปอีกหรือ ?

สุดท้ายแล้ว

ผมเชื่อว่า code coverage ที่อยู๋ในระดับสูง มันคือสิ่งที่ต้องอยู่ใน code ที่ทำการส่งมอบเสมอ

  • เพื่อช่วยคุณลดเวลาในการ debugging
  • เพื่อช่วยลดเวลาในการอ่าน และ ทำความเข้าใจ code
  • เพื่อช่วยลดเวลาในการถกเถียง
  • เพื่อช่วยลดเวลาในการแก้ไข
  • เพื่อช่วยให้ code มีความน่าเชื่อถือ และ ทำงานได้ตามที่คาดหวัง

ดังนั้น เพื่อที่จะลดเวลาเหล่านี้ลงไป
ถึงเวลาที่คุณต้องมาเขียน unit test แล้วล่ะ
และต้องเขียน unit test ก่อนที่จะเขียน code ด้วยนะ
เพื่อจะได้ไม่ต้องมานั่ง debug code ที่ไม่มี unit test คลุม

มาเริ่มกันเถอะนะ …