มีโอกาสไปแบ่งปันความรู้ในเรื่องของการทดสอบระบบงานที่ Skooldio
โดยใช้ชื่อ course ว่า Full Stack Automation Testing จำนวน 2 วัน
เพื่อให้เห็นภาพของการทดสอบในขั้นตอนการส่งมอบ software ว่าเป็นอย่างไรบ้าง
จากนั้นทำการออกแบบ และ เข้าใจรูปแบบของการทดสอบ
ฝึกใช้งานเครื่องมือการทดสอบต่าง ๆ
จากนั้นก็ลง workshop กันต่อไป

หัวข้อหลัก ๆ ที่แบ่งปันไปประกอบไปด้วย

  • ปัญหาในการทดสอบระบบงาน
  • ปัญหาของการปรับเปลี่ยนจาก manual มา automation
  • เรา focus ที่ Quality หรือ Quantity มากกว่ากัน
  • เรียนรู้ขั้นตอนการส่งมอบ software ว่าเป็นอย่างไร
  • แนวทางการทดสอบ ผมจะเรียกว่า ทำก่อนค่อยคิด หรือคิดก่อนแล้วค่อยทำ
  • Test-First vs Test-Last vs Test-Later
  • การทดสอบที่ดีเป็นอย่างไร
  • การออกแบบ test case ใน level ต่าง ๆ
  • การใช้เครื่องมือใน test level ต่าง ๆ
  • การสร้างระบบ Continuous Integration เพื่อทดสอบอย่างต่อเนื่อง

สิ่งที่เน้นเยอะ ๆ มีดังนี้

การได้มาซึ่ง test case ตามขั้นตอนต่าง ๆ ของการส่งมอบ software เช่น

  • Requirement ได้ acceptance test ไหม
  • Architecture ได้ integration test ไหม
  • Design ได้ function/flow/story test ไหม
  • Implementation ได้ unit test ไหม

เพื่อช่วยให้เราเข้าใจเกี่ยวกับ สิ่งที่กำลังจะลงมืออย่างชัดเจนมากยิ่งขึ้น
แต่จะทำกับ requirement ทั้งหมดเพียงครั้งเดียวคงไม่ไหว
ดังนั้นการทำแบบ iterative and incremental จึงน่าสนใจขึ้น

รูปแบบของ test ที่ดี ประกอบไปด้วย

  • Fast
  • Isolate
  • Repeat
  • Understand

ต่อมาถ้าจะให้การทดสอบละเอียดมากยิ่งขึ้น ต้องเข้าใจ Architecture ด้วย

เพื่อให้เราเข้าใจโครงสร้างของระบบ
จะทำให้เราสามารถออกแบบ test case ในแต่ละส่วนงานได้
รวมถึงการเลือกใช้เครื่องมือที่เหมาะสมต่อไป

โดยจะแนะนำรูปแบบของการทดสอบ ซึ่งประกอบไปด้วย

  • End-to-end test
  • Integration test
  • Component/Isolated test
  • Contract test
  • Unit test

เพื่อช่วยให้ทีมเข้าใจในรูปแบบและขอบเขตของการทดสอบตรงกัน

จากนั้นก็เลือกเครื่องมือของแต่ละส่วน และ การทดสอบแต่ละแบบ

ยกตัวอย่างเช่น

  • ในฝั่งของ API พาใช้งาน Postman + newman รวมทั้งเขียน code สำหรับการทดสอบภายในระบบงาน
  • เขียน code ทดสอบด้วย JavaScript ด้วย library ต่าง ๆ เช่น jest, supertest และ nock เป็นต้น
  • ไล่จาก blackbox testing ไปยัง gray และ white box testing
  • การทดสอบฝั่ง UI เช่น Playwright เป็นต้น ซึ่งทดสอบทั้ง web browser testing และ visual testing
  • การจัดการ dependency ต่าง ๆ เช่น Mock API server และ Database รวมทั้งเรื่องของ data test ซึ่งมีความสำคัญอย่างมาก

ปิดด้วยการรวมทั้งหมดมาอยู่ใน pipeline ของระบบ Continuous Integration and Delivery ต่อไป

ไว้ course หน้าเจอกันครับ
ลองนำความรู้ต่าง ๆ ที่แนะนำไป ลองปรับใช้งานกัน
หรือนำไปฝึกฝนให้เชียวชาญมากยิ่งขึ้น