จากการมานั่งคุยและแบ่งปันเรื่องของการทดสอบระบบ web แบบอัตโนมัตินั้น
หนึ่งในเครื่องมือที่ลองนำมาใช้งานกันคือ Cypress
จากการลองใช้งานพบว่า
ไม่ยากแต่ก็ไม่ง่ายนัก เพราะว่า ต้องเขียน test script ในภาษา JavaScript
แต่ถ้าพูดถึงความสามารถต้องบอกว่า ดีมาก ๆ
ทั้งความเร็วในการทำงาน
ทั้ง report ของการทดสอบ ทั้ง
VDO ของการทดสอบ (ได้เฉพาะ browser เป็น electron เท่านั้น)
แต่ความสามารถที่ผมต้องการมากที่สุดคือ Test double
เพื่อจำลอง dependency ต่าง ๆ สิ่ง Cypress สนับสนุนอยู่แล้ว คือ
จากระบบงานที่ลงมือทำนั้น
ระบบ web จะทำการดึงข้อมูลจาก backend ผ่าน RESTful API
ดังนั้นสิ่งที่ต้องการคือ
การจำลองข้อมูลจาก backend ทั้งข้อมูลในกรณี success และ failure
พบว่า Cypress ทำได้ง่ายมาก ๆ นั่นคือ Network request นั่นเอง
ซึ่งทำให้การทดสอบสะดวกขึ้นมาก
ส่งผลให้ผมสามารถทดสอบแบบ Component testing ได้แบบง่าย ๆ
การใช้งานก็ง่าย ๆ มาก ยกตัวอย่างดังนี้
[gist id="bb1ea7c0188f2a8b6892ebac11d2a1f6" file="hello_specs.js"]คำอธิบาย
ก่อนทำการทดสอบ จะสร้าง Mock API server ขึ้นมา
นั่นหมายความว่า ถ้าระบบทำการเรียก API ด้วย path /api1 แล้ว
(ไม่สนใจว่าจะไป Host อะไร)
จะ return ค่าจาก API ที่ mock ขึ้นมาทันที
ทำให้เราสามารถทดสอบระบบงานได้ทันที
นั่นหมายความว่า
ทั้ง test case และข้อมูลของการทดสอบ
เราสามารถควบคุมได้อยู่หมัด
ส่งผลให้การทดสอบเสถียรและน่าเชื่อถือได้มากขึ้น
สุดท้ายแล้ว เครื่องมือมันดีนะ
แต่คำถามคือ เราเขียนชุดการทดสอบนี้ตอนไหนมากกว่า !!เนื่องจากถ้าเขียนหลังจากพัฒนาเสร็จแล้ว น่าจะก่อให้เกิดปัญหามากกว่าหรือไม่ ?