จากบทความ Mutation testing and the quest for quality
ทำการอธิบายถึงความแตกต่างระหว่าง Mutation testing และ Code coverage
ซึ่งมีเป้าหมายเพื่อปรับปรุงคุณภาพของ software
โดยมีเรื่องหนึ่งที่น่าสนใจ คือ Pyramid of Software Quality
จึงนำมาสรุปไว้ดังนี้

โดยปกติแล้วผู้ใช้งานจะเห็นเพียงว่า ระบบที่ใช้งานมีคุณภาพหรือไม่

แต่เบื้องหลังของคุณภาพเหล่านั้น ยังมีอีกหลายส่วนที่มักถูกมองข้ามไป
ซึ่งสามารถสรุปได้ด้วย Pyramid of Software Quality
แสดงดังรูป

mutation-testing-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 ที่คุณเขียนหรือไม่ ?