จากการมานั่งคุยและแบ่งปันเรื่องของการทดสอบระบบ 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 ได้แบบง่าย ๆ

Component Testing

การใช้งานก็ง่าย ๆ มาก ยกตัวอย่างดังนี้

คำอธิบาย

ก่อนทำการทดสอบ จะสร้าง Mock API server ขึ้นมา
นั่นหมายความว่า ถ้าระบบทำการเรียก API ด้วย path /api1 แล้ว
(ไม่สนใจว่าจะไป Host อะไร)
จะ return ค่าจาก API ที่ mock ขึ้นมาทันที

ทำให้เราสามารถทดสอบระบบงานได้ทันที
นั่นหมายความว่า
ทั้ง test case และข้อมูลของการทดสอบ
เราสามารถควบคุมได้อยู่หมัด
ส่งผลให้การทดสอบเสถียรและน่าเชื่อถือได้มากขึ้น

สุดท้ายแล้ว เครื่องมือมันดีนะ
แต่คำถามคือ เราเขียนชุดการทดสอบนี้ตอนไหนมากกว่า !!  

เนื่องจากถ้าเขียนหลังจากพัฒนาเสร็จแล้ว น่าจะก่อให้เกิดปัญหามากกว่าหรือไม่ ?