จากที่แบ่งปันเรื่อง Full Stack Testing ที่ Skooldio ไปนั้น
ได้อธิบายถึงการสร้างหรือจำลอง dependencies ต่าง ๆ ที่ระบบงานต้องใช้งาน
เพื่อควบคุมผลการทำงานให้เป็นไปตามที่ต้องการ
ไม่ว่าจะ success หรือ failure
เพื่อช่วยให้เราทดสอบระบบงานของเราได้อย่างมั่นใจ และ ทำซ้ำ ๆ ได้บ่อยเท่าที่ต้องการ
หนึ่งในวิธีการที่แนะนำไป แต่ยังไม่ทำการ demo ให้ดู
นั่นก็คือ การใช้งาน TestContainer
จึงมาเขียนอธิบายให้เพิ่มเติมดังนี้

ต้องติดตั้ง Docker ลงเครื่องก่อนนะครับ

ความต้องการของระบบประกอบไปด้วย

  • ทำการดึงข้อมูลจาก MySQL database
  • ทำการดึงข้อมูลด้วย id จะมีทั้ง success และ failure case
  • ใน failure case จะมี 2 cases คือ ไม่พบข้อมูล และ database error

สามารถเขียน code การเชื่อมต่อและดึงข้อมูลจาก database แบบง่าย ๆ ได้ดังนี้

คำถามต่อมาคือ จะทำการทดสอบอย่างไรดี ?

ซึ่งมีทั้ง unit test และ integration test
สามารถทดสอบได้ตามที่ต้องการ หรือ ตามความสามารถ
แต่หัวใจของการทดสอบต้อง

  • สร้างความเชื่อมั่นให้เรา ทีม และ product
  • สามารถทดสอบซ้ำได้ ทั้งบนเครื่อง และ CI/CD server

ดังนั้นจึงเลือกวิธีการสร้าง database server ขึ้นมาด้วย container (Docker)
แต่ให้ทำการสร้าง container ในการ test ด้วย TestContainer for Go ไปเลย
ยังไม่พอ ให้ทำการสร้าง table และ data for test ตาม test case ที่กำหนดไว้

ยกตัวอย่างเช่นการทดสอบ Success case

ตัวอย่าง data for test ใน success case

ทำการ run test กันหน่อย

ลองเพิ่มอีกสัก case เช่น หาข้อมูลที่ต้องการไม่เจอใน database

เพียงเท่านี้ก็สามารถทดสอบระบบงาน กับ database ได้แบบง่าย ๆ
น่าจะเป็นอีกหนึ่งวิธีการในการทดสอบระบบงาน
ลองศึกษาและนำไปใช้งานกันดูครับ
ขอให้สนุกกับการ coding และ testing …

ตัวอย่างของ source code ที่ GitHub:Up1