The Art of Unit Testing


ตอนเริ่มทำงานใหม่ ๆ ผมก็พอรู้จัก Unit Test มาบ้างแล้ว แต่ที่รู้จักคือมีแค่ Assertion ธรรมดา สร้างไว้เพื่อทดสอบโค้ดส่วนต่าง ๆ ว่าสิ่งที่ต้องการสร้างนั้นทำงานถูกต้อง เหมือนเวลาเขียนโค้ดแล้วอยากรู้ว่าสิ่งที่เราคิดทำงานถูก ก็จะไปสร้างโปรแกรมเล็ก ๆ มี main แล้วใส่โค้ดส่วนนั้นไว้ลองรันดู แต่หลังจากเริ่มทำงาน สิ่งที่รู็จักเพิ่มขึ้นคือการตั้งค่าต่าง ๆ เพื่อทำให้ Unit Test เดิมสามารถทำงานได้

ช่วงแรกก็พยายามที่จะรัน รู้สึกตื่นเต้นว่ามีเทคนิคต่าง ๆ เยอะเลย มีการกำหนด setup เพื่อสร้าง Object ต่าง ๆ ก่อนทดสอบ มี Class ที่สร้างมาเพื่อใช้ในการทดสอบโดยเฉพาะเรียกว่า Mock แต่กว่าจะรันพวกนี้ได้แต่ละครั้ง เหนื่อยมาก จนสุดท้ายก็เลิกทำ และเลิกเขียนไป หลัง ๆ มีน้องเข้ามาใหม่ ก็พยายามให้น้องเขียน Unit Test แต่ลดพวก dependency พวกนี้ลง ให้มันจบใน Unit Test นั้นไม่มี dependency แต่มันก็ยังเหนื่อยอยู่ดี จนมาเจอหนังสือเล่มนี้แหละ ที่ @plutoniix แนะนำ และก็ตัดสินใจซื้อทันที กว่าจะได้หนังสือมาก็ปลายเดือนที่แล้ว แต่พออ่านก็รู้สึกคุ้มหละที่ซื้อมา แม้หนังสือจะบอกว่าใช้ .NET เป็นตัวอย่างแต่คนที่เขียนภาษาอื่นก็สามารถเอาไปใช้ได้เหมือนกัน ตั้งแต่ปลายเดือนที่แล้วจนถึงตอนนี้ที่อ่านแล้วได้มาเช่น

  • รู้ว่า Unit Test และ Integration Test ต่างกันยังไง เมื่อไหร่ควรใช้อะไรทดสอบ แต่ละอย่างมีความจำเป็นยังไง
  • วิธีใช้ Unit Test Framework ในหนังสือยกตัวอย่าง NUnit
  • Stub คืออะไร Mock คืออะไร ต่างกันยังไง
  • Isolation Framework คืออะไร มันช่วยให้ชีวิตการเขียน Test Unit ดีขึ้นยังไง (อ่านถึงบทนี้ทำผมปลื้มเล่มนี้เลยหละ :) )
  • ข้อดีของ Unit Test และการใช้ในการพัฒนา และใช้คู่กับ Automate Build Tools

ตอนนี้อ่านถึงแค่นี้แหละ กำลังเล็งเล่มอื่นที่เล่มนี้อ้างอิงถึงอย่าง xUnit Test Patterns: Refactoring Test Code แต่กว่าจะได้ซื้อคงอีกซักพักหลังจากอ่านที่ซื้อมาในงานหนังสือรอบนี้หมด เรียกว่าหนังสือเข้าแถวรอยาวเหยียดเลย สงสัยต้องลองทำแบบเล่มนี้แล้ว ใส่ไปใน Todo ตัวเองว่าจะอ่านอาทิตย์ละเท่าไหร่

อ๊ะ ยังไม่ได้พูดถึงอีกเล่มสินะ ที่กำลังอ่านอยู่ Zen To Done เล่มนี้ได้จากบล๊อกหมอตอนอ่าน Feed (แต่ตอนอ่านเป็นเรื่อง The Power of Less นะ) ตอนอ่านรีวิวคิดว่าเป็นหนังสือที่ดีมากเลย อ่านจบแล้วจะมาบล๊อกเล่าอีกที หรือไม่ก็ลองอ่านจากบล๊อกในลิงค์ก่อนก็ได้ แล้วจะติดใจเหมือนผม :)

About llun

Just a programmer

,