ปัญหาที่เจอคือ
ชุดการทดสอบ User Interface ผ่าน Web browser ด้วย Cypress มันช้าขึ้นเรื่อย ๆ
ทำให้ได้รับ feedback ที่ช้าเกินไป
ดังนั้นมาปรับปรุงกันหน่อย
วิธีการปรับปรุงแบบง่าย ๆ ประกอบไปด้วย
- เริ่มจากการอ่าน Best practice จาก Cypress ก่อนเลย
- ควรทดสอบเป็น flow หรือ scenario ไปเลย เพราะว่าถ้าแบ่งเป็น test case เล็ก ๆ จำนวนมาก ๆ จะทำงานช้า ยิ่งในแต่ละ test case ต้องมีการ setup data/state อีก ก็ยิ่งช้า
- Validate ฝั่ง UI ไม่ต้องมาทำนะ หรือทำเท่าที่จำเป็นพอ จะทำอะไรกันเยอะแยะ !!
- ปรับจากการ setup data/state จาก beforeEach มาใช้ before จะดีกว่า แต่ต้องดู use case ด้วย
- ลด ละ เลิก การใช้งาน wait() ซะ !! เจอบ่อยมาก ๆ ทำไมชอบใช้กันนะ ?
- ค่า default ของ Cypress จะใช้งาน I/O เยอะ ทั้งการบันทึก VDO และ screenshot ต่าง ๆ ดังนั้นให้ปิดไปซะ
- ในการจัดการ test case ต่าง ๆ ควรแบ่งกลุ่มของการทดสอบด้วยพวก tag เช่นการใช้งาน Grep plugin ก็จะสะดวกมาก ๆ ทั้งการการทดสอบตาม tag ที่กำหนด หรือจะแยกทดสอบแบบ distributed test และ parallel test ก็สามารถทำได้เลย
การปรับปรุงตามแนวทางนี้ ก็ได้ผลที่น่าพอใจ
สามารถลดเวลาการทดสอบลงไปได้เยอะ
แต่ยังมีจุดที่ต้องปรับปรุงกันไปอย่างต่อเนื่อง
เช่น การมีชุดการทดสอบที่เยอะเกินไป เป็นต้น