The Way of Testivus

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

  1. If you write code, write tests.
    - ไม่ว่าทำตำแหน่งไหน ถ้าลงมาเขียน Code ต้องทำ Test ด้วย
  2. Don’t get stuck on unit testing dogma.
    - อย่าให้ความเชื่อเดิม ทำลายแนวคิด เช่น Test มืออยู่แล้ว มันทำได้ / Code นี้ใช้มา 20 ปี แล้วไม่มีปัญหา ไม่ต้องเทส
    - Testing needs creativity มันไม่มีท่าที่ตายตัวตอนทำ หลัก Refactor คำกลางๆ หา Idea ใหม่มาเทส ถ้าระบบเดิมมันทำ unit testing ยาก ทำ Component / Integration Test แล้วค่อยกระชับวงล้อมสิ
  3. Embrace unit testing karma.
    - Testing needs flexibility อันนี้ผมมองว่าตัว Test มันไม่ได้มี Pattern ตายตัว ทำแบบนั้น แบบนี้ ต้องไปตาม Code ที่ได้มา flexibility ผมมองว่า Refactoring + Design Pattern เขียน Test ให้ง่าย Code ต้องง่ายด้วย
  4. Think of code and test as one.
    - Test ต้องมาพร้อมกับ Code เสมอ
  5. The test is more important than the unit.
    - อะไร คือ Unit Test > Unit Test พวก Test ที่ไม่มี Dependency พวก DB / File / WebService / ระบบอื่นๆ รวมถึงอะไรที่ต้องมีการเตรียมการก่อนด้วย
    - Unit Test ไม่ได้ตอบทุกสิ่ง แต่อย่างน้อยควรมีเขียนขึ้นมา และมันจะวนไปในส่วนข้อ dogma / karma ถ้ามันซับซ้อนทำให้ง่ายขึ้นสิ
  6. The best time to test is when the code is fresh.
    - เริ่มเขียน Code ไปแล้ว ทำ Test คู่กันไปเลยจะดีที่สุด จากประสบการณ์แล้ว ถ้าทำที่หลัง มันจะ Test ยาก และคนไม่กล้าที่จะ Refactor เพราะ มันศักดิ์สิทธิ์
  7. Tests not run waste away.
    - เขียน Test มาแล้ว กด Run ด้วย ไม่งั้นเขียนมาทำไม
    - Automate ยุคนี้ทำงานง่าย และให้ Feedback ได้เร็วด้วย ถ้าผูก CI/CD ไว้จะดีมาก
  8. An imperfect test today is better than a perfect test someday.
    - เขียน Test ก่อนทีละนิด แม้ว่ามันอาจจะไม่ครอบคุลมในทุก Case แต่ยังดีกว่าจะบอกว่าเดี๋ยวมาทำที้หลัง คำว่าเดี๋ยวมันไม่มีอยู่จริง คนทำอาจจะไม่อยู่แล้วก็ได้
    - อย่าลังเลที่จะเขียน Test
  9. An ugly test is better than no test.
    - อันนี้เรียกว่า ถ้าเจอ Code ที่มันไม่ Clean มันอาจจะมีท่ายากในการทำ Test แต่ Test ที่ได้ มันจะไม่สวย และเหนื่อยทำด้วย
    - อย่างน้อยทำ Test ไปแล้ว เรามีกรอบ มีความมั่นใจใน Refactor มันนะ ว่าของเดิมมันจะไม่พัง
  10. Sometimes, the test justifies the means. (สร้างความชอบธรรม)
    - Test มันบอกแล้วว่า Code ทำอะไร Design มาเพื่ออะไรในช่วงเวลานั้นๆ
  11. Only fools use no tools.
    - ถ้ามี Tools ควรใช้มันนะ ตัวอย่างที่ชัดสุด Manual Test vs Automate Test งานไหนใช้ Automate หรือ เครื่องมือมาช่วยได้ ทำซะ เอาเวลาไปทำอย่างอื่นดีกว่า
  12. Good tests fail.
    - ถ้า Test Run ผ่านหมด ไม่ใช่ว่า เราทำดีนะ บางทีมันยังมีจุดที่ต้อง Improve เพิ่มขึ้นมา ในส่วนที่มองไม่เห็น ตัวนี้ใช้ Code Coverage เข้ามาตอบโจทย์ และช่วยได้นะ

Resource


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts sent to your email.