ใน Bun v1.2.4 ที่ปล่อยออกมานั้น สนับสนุน static site แล้ว ดังนั้นสามารถ run พวกไฟล์ html ตรง ๆ ได้เลย ทำให้ง่ายต่อสาย frontend development มาลองใช้งานกันดู
เรื่องของ test strategy สำคัญมาก ๆ ต้องตอบให้ได้ หรือ ตกลงกันก่อน ว่าจะทดสอบแบบไหน อย่างไร มีขอบเขตอย่างไร ก็ลงมือ เช่น unit test, integration test, component test, contract test และ end-to-end test เป็นต้น
ใน test case จะมีโครงสร้างมาตรฐาน โดยมักจะแนะนำ AAA (Arrange-Act-Assert)
แต่ละ test case ควรที่จะเป็นอิสระแก่กัน ไม่ใช่ต้อง test แบบเรียงลำดับ เพื่อลดปัญหาของการทดสอบ ทั้ง flaky test, ไม่สามารถทำ parallel testing ได้ รวมทั้งเรื่องเวลาในการทดสอบที่อาจจะนานจนเกินไป ต้องตกลงกันให้ชัดเจน ว่าแนวทางไหนที่ส่งผลดีต่อการพัฒนาและส่งมอบระบบ
แต่ละ test case ควรจัดการ external dependency ให้ดี ๆ ทั้ง datetime, random value, database และ external system เป็นต้น เพราะว่า ถ้าจัดการไม่ดี การทดสอบซ้ำเป็นไปได้ยากมาก ๆ ไม่ใช่อะไรก็จะ mock กันอย่างเดียว !!
ในการทดสอบควรต้องเข้าใจเรื่องของ data test ด้วย ควรให้ครบและครอบคลุม ทั้ง normal case, edge case และ invalid case อาจจะรวมไปถึง non-functional case ด้วย
ชื่อของ test case ควรอ่านเข้าใจได้ง่าย มีความหมายชัดเจน ว่ากำหนดทดสอบเรื่องอะไร ด้วยเงื่อนไขอะไร ผลที่คาดหวังคืออะไร เพื่อให้ง่ายต่อการดูแลรักษาต่อไป ไม่ใช่ทำแล้วทิ้งนะ
เมื่อเจอ bug ต่าง ๆ ทั้งจากการพัฒนา ทดสอบ หรือ บน production ก็ตาม ควรเขียน test case เพื่อ reproduce bug เหล่านั้น ก่อนทำการแก้ไข code ต่อไป มันคือ การเรียนรู็จากความผิดพลาด ไม่ใช่ผิดพลาดเรื่องเดิม ๆ ซ้ำ ๆ แต่เปลี่ยนแค่ data นะ !!
ทุกครั้งที่ทำการ commit code ให้ลองทำการ run test ดูก่อนแบบอัตโนมัติดู เช่น run unit test เป็นต้น ถ้าไม่ผ่าน ก็ไม่ให้ทำการ commit เป็นต้น รวมทั้งยังเอา test ต่าง ๆ ไป run ใน pipline ของ CI/CD ด้วย
Code/test coverage ไม่ได้บอกอะไรเลย เป็นเพียงผลพลอยได้จากการเขียน test เท่านั้น
สุดท้ายเดี๋ยวนี้ เราให้ Generative AI เข้ามาช่วยเขียน test case ให้ได้อีกด้วย ก็ช่วยเพิ่มทางเลือกในการเขียน test ให้สะดวกขึ้น แต่ก็ยังจำเป็นที่ต้องตรวจสอบด้วยคนด้วยเสมอ (Trust but Verify)
ดังนั้น test case ต่าง ๆ ควรมีความน่าเชื่อถือ ทำงานได้อย่างรวดเร็วตามที่หวัง หรือ เหมาะสมกับระบบนั้น ๆ ครอบคุลมใน business logic/use case ต่าง ๆ ที่จำเป็น