วันนี้ทำการแนะนำเกี่ยวกับการทดสอบระบบแบบอัตโนมัติ หนึ่งในเครื่องมือที่แนะนำสำหรับมือใหม่ไป คือ Selenium IDE ใช้สำหรับการทดสอบระบบที่ทำงานบน web browser โดยไม่จำเป็นต้องเขียน code มากนัก เพราะว่าเป็นเครื่องมือแบบ record and playback นั่นเอง
โดยเราสามารถบันทึกชุดการทดสอบที่ได้จากการ record ลงไฟล์ ซึ่งไฟล์จะมีนามสกุล .side ที่มันสนุกกว่านั้นคือ สามารถนำไฟล์นี้ มา run ผ่าน command line ได้ ผ่านเครื่องมือที่ชื่อว่า Command-line Runner
ส่งผลให้เราสามารถนำชุดการทดสอบนี้ ไป run ใน pipeline ของระบบ Continuous Integration ได้เลย โดยสามารถ run ชุดการทดสอบผ่าน browser ต่าง ๆ หรือจะผ่าน Selenium grid ก็ได้อีกด้วย
ก่อนหน้านี้ Node 18.0 นั้น ได้เพิ่ม Test runner module เข้ามา ช่วยให้เราสามารถเขียน test case และ run ผ่าน node command ได้เลย แต่สิ่งที่ขาดไปคือ cli option สำหรับการ run test แบบเฉพาะไปเลย ดังนั้นใน Node 18.1.0 นั้น ได้เพิ่มเข้ามาให้ นั่นคือ เพิ่ม --test flag เข้ามานั่นเอง
วันนี้ทำการ review test case ของระบบ มีทั้ง unit, integration, component และ end-to-end test แล้วก็เจอ test case แปลก ๆ ที่คิดว่าไม่น่าจะดี จึงสรุปไว้นิดหน่อย
ปัญหาแรก Test ผ่าน เมื่อมีการเปลี่ยนแปลงขึ้นมา !!
เมื่อมีการเปลี่ยนแปลง requirement และ code แล้ว ผลที่ได้คือ test case ดันทำงานผ่านซะงั้น นั่นหมายความว่า test case ที่เรามีนั้น มันไม่ครอบคลุมเพียงพอ หรือ ไม่น่าเชื่อถือหรือไม่ ?
ปัญหาที่สอง ทำการ Fake dependency สำหรับ integration และ end-to-end test
เราสนใจที่ business logic เป็นหลัก เนื่องจากมีความซับซ้อน ดังนั้นจึงพยายามที่จะจำลอง dependency ที่ถูกใช้งาน เช่น database, external api เป็นต้น แต่ถ้าสามารถทดสอบกับระบบจริง ๆ ได้หรือบ่อยที่สุด จะเป็นสิ่งที่ดีที่สุด
สุดท้ายแล้ว จำเป็นต้องยก use case และสิ่งที่ต้องการมาเป็นที่ตั้ง จากนั้นจึงมาพูดคุย ออกแบบ วางแผนกัน ว่าควรจะใช้หรือไม่ใช้ น่าจะเป็นแนวทางที่เหมาะสมกว่า