เขาบอกไว้ว่าคุณค่าจาก การออกแบบที่มันทดสอบได้ง่าย (Testable design)
มันจะส่งผลให้ code ที่สร้างมานั้น ดีขึ้นกว่าเดิม
ดังนั้น เรามาดูหน่อยกันหน่อยสิว่า
Testable design มันเป็นอย่างไร รวมทั้งมีแนวคิดต่างๆ อย่างไร ?
Testable design คืออะไร ?
คุณ Roy Osherove
ผู้เขียนหนังสือ The art of unit testing with example in .Net กล่าวไว้ว่า
“a given piece of code should be easy and quick to write a unit test against”
ในแต่ละส่วนของ code มันควรจะสามารถเขียน unit test เพื่อทดสอบได้ง่าย และ รวดเร็ว
นั่นหมายความว่า code ที่มัน testable design นั้น
จะง่ายต่อการสร้าง object
จะง่ายต่อการ implement
จะง่ายต่อการจำลองเหตุการณ์ต่างๆ เพื่อทดสอบ
จะง่ายต่อการเรียกใช้งาน
ดังนั้น software ที่เราสร้างขึ้นมานั้น
ควรที่จะทำการทดสอบได้ง่าย (Testability)
คำถาม :: เราจะออกแบบอย่างไรดีล่ะ ?
วิธีการที่เรามักได้ยิน หรือ ถูกบอกต่อมาอย่างยาว
นั่นก็คือ ออกแบบในรูปแบบ Modular สิ
แล้วไอ้ Modular มันคืออะไรล่ะ ?
มันการแยกส่วนการทำงานที่ต่างกัน ออกจากกัน
โดยแต่ละดลุ่มเรียกว่า module
ทำให้แต่ละ module มีหน้าที่การทำงานอย่างใดอย่างหนึ่ง
ไม่ใช่ทำงานแบบมากมายมหาศาล
ทำให้ระบบงานมีความยืดหยุ่นสูงมาก
รวมทั้งดูแลรักษาง่ายอีกด้วย
เมื่อเราออกแบบระบบให้มีความยึดหยุ่นแล้ว
มันจะส่งผลต่อ code ด้วยเช่นกัน
นั่นคือ จะลด dependency ต่างๆ ออกไปเยอะ
ยิ่ง dependency ระหว่าง module ด้วย ก็จะลดไปได้มาก
แสดงดังรูป
โดยการออกแบบแบบ modular นั้น
เป็นแนวทางหนึ่งสำหรับการสร้างระบบให้ทดสอบได้ง่าย
แน่นอนว่า ส่งผลต่อ code ก็เช่นเดียวกัน
แต่แนวทางนี้มันเป็นเพียง แนวคิด ที่ไม่สามารถจับต้องได้
ดังนั้น เรามาลองศึกษาวิธีการที่สามารถจับต้อง และ เข้าถึงได้ง่าย
ตลอดจนสามารถนำไปใช้งานได้เลยดีกว่า …
ซึ่งจะนำมาอธิบายใน blog ต่อไปครับ …
อย่าลืมว่า
การออกแบบที่ดี คือ มันจะต้องง่ายต่อการเรียนรู้ นะครับ