หลังจากการแบ่งปันความรู้และประสบการณ์ที่พอรู้มาบ้าง
ใน course Full-Stack Automation Software Testing รุ่น 3 ที่ Skooldio
ซึ่งในครั้งนี้น่าได้แบ่งปันเรื่องที่ตัวผมเองสนใจ
ทั้งเรื่องของ Contract testing ด้วย Pact
ทั้งเรื่องของ Service component testing
ทั้งเรื่องของ Internal vs External testing technique
และการจัดการ dependency ต่าง ๆ ของระบบที่ต้องการทดสอบ
เช่น database และ external system เป็นต้น

เทคนิคที่แนะนำเกี่ยวกับการจัดการ dependency ของระบบที่ต้องการทดสอบ

มีทั้งแบบ internal คือ จัดการใน code ของ test case
และ external คือ การจัดการอยู่ข้างนอก code
ยกตัวอย่างเช่น

การจัดการ database และ external system มีเทคนิค และ เครื่องมือดังนี้

  • ใช้งาน mock library ของแต่ละ programming และ framework ไปเลย เช่น jest, mockito เป็นต้น
  • ใช้งาน container เข้ามาช่วย เช่น Test container สามารถจัดการใน code ของ test case ได้เลย แต่ต้องมี docker ในเรื่องก่อน
  • จัดการ external system เช่น HTTP REST API ด้วย library ใน code ต่าง ๆ ได้ เช่น Nock, MSW, Gock และ WireMock เป็นต้น หรือใช้งาน Mock API Server ข้างนอกได้ เช่น Postman Mock Server, Stubby
  • ในส่วนของ Frontend ก็จัดการ request ต่าง ๆ ที่ออกจาก web browser ด้วยพวก Network routing ด้วย Playwright และ Cypress แบบง่าย ๆ

เป้าหมายของเครื่องมือ และ เทคนิคต่าง ๆ เหล่านี้
ใช้งานเพิ่มช่วยควบคุม dependency ต่าง ๆ ให้ทำงานตามที่เราต้องการ
ทั้ง success case, failure case และ edge case ต่าง ๆ
เพื่อช่วยให้สามารถ run test case ซ้ำ ๆ มีความเสถียร และ น่าเชื่อถือมากยิ่งขึ้น
เมื่อผลการทดสอบผ่านตามที่ต้องการแล้ว
ถึงจะทำ integration test และ end-to-end test ต่อไป
ก่อนที่จะทำการส่งมอบระบบงานไปยังผู้ใช้งานนั่นเอง

ปล. ในครั้งนี้มีตัวอย่างของการนำ BDD มาใช้งาน ซึ่งเป็นคำถามในการแบ่งปัน
โดยในยกตัวอย่างการใช้งาน Cucumber และ Robot framework
ที่สนับสนุน Gherkin style ของ feature file มาอีกด้วย