ช่วงหลัง ๆ เรามักจะได้ยินรูปแบบการทดสอบระบบงานมากมาย
ทั้ง ice cream testing, pyramid testing, cup cake testing
รวมทั้งอีกหนึ่งแนวคิดคือ Trophy testing
ซึ่งจะเน้นไปที่ทดสอบเฉพาะในส่วนที่จำเป็นมาก ๆ นั่นก็คือ Integration testing
เป็นแนวคิดที่น่าสนใจมาก ๆ ก็เลยไปค้นหาข้อมูลเพิ่ม
เลยเจอบทความเริ่มต้นคือ Write tests. Not too many. Mostly integration
ทำการอธิบายได้ชัดเจน เลยนำมาแปลและสรุปไว้นิดหน่อย
มาเริ่มกันเลย
โดย blog นี้เป็นการสรุปสิ่งที่คุณ Kent C. Dodds พูดไว้
https://www.youtube.com/watch?v=Fha2bVoC8SE&list=PLV5CVI1eNcJgNqzNwcs4UKrlJdhfDjshf#action=share
รวมทั้งคุณ Guillermo Rauch ผู้สร้าง Socket.io ได้ tweet ไว้ว่า
Write tests. Not too many. Mostly integration. https://twitter.com/rauchg/status/807626710350839808จาก tweet นี้สามารถลงรายละเอียดไปได้ 3 ส่วนคือ
ส่วนที่ 1 คือ Write tests
ระบบงานส่วนใหญ่ควรจะเขียน automated test ถ้าคุณเห็นว่าเวลาที่เสียไปมีคุณค่า ช่วยให้เราหาข้อผิดพลาดใน environment ที่เราควบคุมได้ เพื่อที่จะได้แก้ไข ซึ่งมันดีกว่าไปเจอบน production แน่นอน ส่งผลให้ลดเวลาการทำงานลงไปเยอะ เมื่อเราเขียน automated test ในการสร้าง automated test นั้นอาจจะใช้เวลานานหรือไม่นานก็แล้วแต่ แต่สิ่งหนึ่งที่ได้กลับมาคือ ลดเวลาในการดูแลรักษาระบบนั่นเองสิ่งที่ควรคำนึงในการเขียน automated test คือ คุณมีความมั่นใจมากน้อยเพียงใด ที่มันจะช่วยทำให้ระบบงานเราไม่มีข้อผิดพลาดเช่นการใช้งาน static typing และ lint น่าจะช่วยให้เรามีความมั่นใจมากยิ่งขึ้น ว่า code ที่เราเขียนขึ้นมาถูกต้องตามมาตรฐาน แต่ไม่ได้บอกว่า business logic จะทำงานได้อย่างถูกต้อง ไร้ข้อผิดพลาด ดังนั้นเราต้องเพิ่มความเชื่อมั่นด้วยการเขียน automated test ที่ดี ๆ เข้ามาเพิ่มนั่นเอง
ส่วนที่ 2 คือ Not too many
ไม่เขียน automated test มากจนเกินไป หลาย ๆ องค์กรเมื่อได้ยินเรื่องของ code coverage แล้ว ทาง manager และ team มักจะชอบตั้งเป้าหมายให้ค่า coverage สูง ๆ เช่น 100% ดังนั้นเมื่อค่า code coverage ลดลง สิ่งที่นักพัฒนาต้องทำคือ เขียน automated test เพิ่มเติมเพื่อให้ code coverage เพิ่มขึ้น สิ่งเหล่านี้คือ ปัญหา เนื่องจากเราจะเสียเวลามากมายไปกับการเขียน automated test ส่วนใหญ่จะไม่จำเป็นต้องทดสอบ ที่สำคัญการดูแล automated test แบบนี้จะทำให้เราและทีมช้าลงอย่างมากรวมทั้งถ้าเราทดสอบในรายละเอียดมากจนเกินไป สิ่งที่ตามมาคือ เมื่อมีการเปลี่ยนแปลง code แล้ว จะกระทบต่อ automated test จำนวนมาก ซึ่งเป็นสิ่งที่ไม่ดีเลยแต่ถ้าสำหรับ open source project มักจะมีค่า code coverage 100% เพราะว่า project มีขนาดเล็ก และเป็นเครื่องมือที่ถูกนำไปใช้ในหลายกรณี ดังนั้นเรื่อง breaking change จึงเป็นสิ่งที่สำคัญมาก ๆ ต้องระมัดระวังด้วยการเขียน automated test ที่ครอบคลุม