ก่อนเก็บ Code Coverage…
โพสต์นี้สั้นๆ
ยกตัวอย่าง Code ที่เขียนนิดหน่อย
สีเขียวคือ coverage แล้ว สีแดงคือ ยังไม่ผ่านในบางสถานการณ์
จริงๆ ในมุมของ Technical มันสามารถเก็บ coverage ตัวนี้ได้ง่ายๆ แหละ
อย่างไรก็ตาม อยากแนะนำให้ถามคำถามอื่นก่อน ก่อนที่จะใส่เข้าไป เพราะมันจะเปิดทางเลือกให้เราเพิ่ม
มี use case อะไรของ component ตัวนี้ ที่ทำให้เกิดเหตุการณ์นี้บ้าง
ข้อดีของคำถามนี้คือ
- จะทำให้เราเข้าใจการทำงานของ component ตัวนี้ในมุมมองผู้ใช้งานได้มากขึ้น
- ถ้าเราไม่สามารถหา use case นี้ได้ หมายความว่า เรากำลังเขียนเกินความจำเป็นอยู่
อย่างกรณีนี้ จริงๆแล้วคือ Test Scenarios ยังไม่ได้เทสกับระบบที่ list มีมากกว่า 1 คน มันเลย จบแบบแปลกๆ
ขณะเดียวกัน ถ้าสมมติ เราไม่ได้ดู use case จะเอาให้ coverage ง่ายๆ เราอาจจะใส่ signer_name
เป็น ‘’
ซึ่งก็อาจจะทำให้ผ่านเคสได้
อย่างไรก็ตาม input ตัวนี้ มันเป็น method ที่เกิดขึ้นจากการ refactor public method ให้แยก method เล็กๆ ออกมา ซึ่งก่อนที่จะส่งค่ามา ก็มีการ verify อะไรก่อนหน้านี้สักหน่อยแล้ว ทำให้ เหตุการณ์ที่ signer_name
เป็น ‘’
เป็นไปไม่ได้ที่จะเกิดขึ้นเลย
นั่นหมายถึง เราได้ coverage แต่ test นี้ impractical ในการใช้งานจริง
ถ้าเราไม่สามารถหา use case มารองรับ ให้ coverage ได้ เอามันออก เป็นอะไรที่ดีที่สุดครับ
Coverage เป็นสิ่งที่ดี หน้าที่มันคือ เตือนเราว่าอาจจะมีเคสหลุดไม่ได้ทดสอบ แต่เราต้องดูด้วยว่า ที่หลุดนั้น relevant ไหม อย่าไถตลอด มันเหนื่อย