จากบทความ Mutation testing and the quest for quality
ทำการอธิบายถึงความแตกต่างระหว่าง Mutation testing และ Code coverage
ซึ่งมีเป้าหมายเพื่อปรับปรุงคุณภาพของ software
โดยมีเรื่องหนึ่งที่น่าสนใจ คือ Pyramid of Software Quality
จึงนำมาสรุปไว้ดังนี้
โดยปกติแล้วผู้ใช้งานจะเห็นเพียงว่า ระบบที่ใช้งานมีคุณภาพหรือไม่
แต่เบื้องหลังของคุณภาพเหล่านั้น ยังมีอีกหลายส่วนที่มักถูกมองข้ามไป ซึ่งสามารถสรุปได้ด้วย Pyramid of Software Quality แสดงดังรูป จากรูปจะเห็นว่าส่วนของ Software Quality หรือ คุณภาพของ software มันคือยอดของภูเขาน้ำแข็ง ซึ่งคนทั่วไปจะเห็นเพียงส่วนนี้เท่านั้น ดังนั้นมาดูส่วนอื่น ๆ กันบ้าง1. Code Quality หรือ คุณภาพของ code
เป็นส่วนที่มีอิทธิผลต่อ Software Quality สูงมาก ๆ ถ้า code ที่สร้างขึ้นมามันไร้คุณภาพ ถ้า code ที่สร้างขึ้นมามันดูแลรักษายาก ถ้า code มันยุ่งเหยิง และ ซับซ้อน ถ้า code มันยากต่อการทำความเข้าใจ ดังนั้นเมื่อทำการแก้ไข code แล้ว ผลที่ตามมาก็คือ ส่วนการทำงานอื่น ๆ ทำงานผิดพลาด !! แต่ถ้าไม่มีการเปลี่ยนแปลง code ก็ไม่ต้องไปสนใจ !! ซึ่งมันคงเป็นไปไม่ได้ใช่ไหม ?2. Test Quality หรือ คุณภาพของการทดสอบ
ถ้าคุณต้องการให้คุณภาพของ code สูงแล้ว จำเป็นต้องทำการ refactor code อยู่เป็นประจำ ซึ่งคุณจะมั่นใจในการ refactor code ได้อย่างไรถ้าไม่มีการทดสอบ แน่นอนว่า manual test คงไม่พอ และ เหนื่อยเกินไป เป็นที่มาของ Automated test นั่นเอง ดังนั้นเรื่องคุณภาพของการทดสอบ จึงความสำคัญต่อ Code Quality อย่างมาก ถ้า code ส่วนไหนที่สำคัญ แต่ไม่มีชุดการทดสอบครอบคลุมแล้ว คุณควรจะสร้างชุดการทดสอบส่วนนั้นขึ้นมาซะ อย่ารอช้า !! ลงมือทำเลย3. Mutation testing
เพื่อเพิ่มความมั่นใจว่า ชุดการทดสอบที่เราสร้างขึ้นมานั้น มันช่วยลดความผิดพลาดของ code บน production server คุณต้องมีจำนวน Mutation test coverage ที่สูงมาก ๆ4. Craftsman programmer
มันคือพื้นฐานที่สำคัญสุด ๆ ของ Software Quality ถ้าต้องการเพิ่มคุณภาพของ software ให้สูง จำเป็นต้องทำการปรับปรุงทั้ง production code และ test code เสมอ เนื่องจากพวก test coverage ที่มันสูง ๆ ไม่ได้ตอบโจทย์อะไรเลย มันเพียงแค่บอกว่า code ส่วนไหนไม่ถูกทดสอบเท่านั้นเอง ลองคิดดูสิว่า ถ้า test code มันแย่ ถ้า production code มันแย่ แต่จำนวน test coverage มันสูง แล้วเราจะได้ code ที่อ่านยากมานะสิ แน่นอนว่า ค่าใช้จ่ายในการดูแลย่อมสูงมากมาย !!จากหนังสือ Clean Code เขียนไว้ว่า Clean code always looks like it was written by someone who caresคำถาม วันนี้คุณใส่ใจใน code ที่คุณเขียนหรือไม่ ?