ช่วงเสาร์และอาทิตย์ที่ผ่านมา
มีโอกาสแบ่งปันเรื่อง Postman in the right way ที่ SCK Dojo
โดยมีเป้าหมายเพื่อแนะนำการใช้งาน Postman
ซึ่งเป็นเครื่องมือสำหรับการทดสอบระบบงาน
แต่จากเท่าที่เจอมาหลาย ๆ ทีมพบว่า
ใช้ Postman ไม่เต็มความสามารถมากนัก
แทนที่จะช่วยลดงาน กลับเพิ่มงานอีก
ดังนั้นจึงเป็นที่มาของการแบ่งปันครั้งนี้

เริ่มต้นจากเป้าหมายของการทดสอบ ประกอบไปด้วย

  • Fast feedback loop เพื่อให้เรารู้ปัญหาจากทุก ๆ การเปลี่ยนแปลง
  • High quality คือคุณภาพที่สูงขึ้น ไม่สามารถต่อรองได้
  • เพิ่มความเชื่อมั่นให้สูงขึ้น

สิ่งที่สำคัญมาก ๆ คือ regression test
ดังนั้นถ้าเราใช้ Postman แล้ว จะช่วยให้เราเข้าถึงเป้าหมายเหล่านี้หรือไม่ ?
ถ้าไม่ น่าจะใช้เครื่องมือผิดวิธีแน่นอน
มาเริ่มกัน

Postman นั้นมีความสามารถเยอะมาก ๆ

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

  • ทดสอบผ่าน protocol ต่าง ๆ เช่น HTTP, MQTT (beta), WebSocket, Socket.io, GraphQL, gRPC
  • เขียน test script สำหรับตรวจสอบ response ว่าเป้นไปตามที่คาดหวังหรือไม่ และจัดการ request ต่าง ๆ ก่อนส่ง request ด้วย pre-request script โดยเขียนในรูปแบบของภาษา JavaScript
  • ทำการจัดการสร้าง request สำหรับทดสอบ protocol ต่าง ๆ ด้วย Collection และ folder
  • โดยปกติจะให้แต่ละ collection มีจำนวน request ไม่เยอะ หรือ แยกตาม flow หรือ scenario เลย ทำให้จัดการง่ายขึ้น
  • อีกอย่าง Postman นั้นมี workspace ให้อีกด้วย
  • การใช้งาน variables สำหรับการจัดการข้อมูลต่าง ๆ ใน Postman ซึ่งมีทั้ง request variable, collection variable และ global variable
  • ชนิดของ variable มีทั้ง plain text และ secret
  • การใช้งาน environment สำหรับจัดการ variable ตาม environment ต่าง ๆ ของระบบที่จะทดสอบเช่น dev, test, staging และ prod เป็นต้น
  • สามารถทำการออกแบบ HTTP Request API ก่อนที่จะพัฒนาได้ รวมทั้งสามารถเขียนเอกสารในรูปแบบ markdown ของ collection และ request ได้เลย ดังนั้นทำให้เราพัฒนาในรูปแบบของ API-first ได้
  • ในส่วนของการออกแบบ API นั้น สามารถกำหนดในส่วนของ response ตามแต่ละรูปแบบ เช่น success และ fail ด้วยการเพิ่ม example เข้าไปในแต่ละ request ได้เลย
  • การกำหนด working directory สำหรับ postman ในการจัดการเกี่ยวกับ data file ต่าง ๆ ที่ใช้ใน postman เพื่อให้ทุกคนในทีมสามารถใช้งานได้เหมือนกัน เพื่อตัดปัญหาเรื่อง path ของ file
  • หลังจากการออกแบบแล้วนั้น สามารถทำการสร้าง Mock Server ผ่าน collection (จะมี request อยู่ใน collection) ที่เราสร้างขึ้นมาได้
  • สิ่งที่เจอปัญหาคือ Mock Server ทำงานแปลก ๆ เรื่องของการ matching example ซึ่งมีแนวคิดและขั้นตอนใน Understanding example matching
  • สามารถ export collection ต่าง ๆ ออกมาเป็นไฟล์ แล้วจัดเก็บใน version control system เพื่อ share กันในทีม (ใช้เมื่อไม่ต้องการใช้งานผ่าน postman team)
  • ในการทดสอบนั้น จะใช้ newman เข้ามาใช้งาน เพื่อ run collection ผ่าน command line ได้ เพื่อให้สามารถทดสอบได้บ่อย และ ง่ายขึ้น รวมทั้งไป integrate เข้ากับ CI/CD ได้อีกด้วย
  • มี API platform สามารถทำงานร่วมกับ Swagger หรือ Open API Specification ได้เลย
  • คร่าว ๆ น่าจะประมาณนี้

รูปแบบของการทดสอบนั้นสำคัญมาก ๆ

ประกอบไปด้วย

  • Integration test
  • Component test (mock/fake dependencies)
  • Contract test ทั้ง Postman และ Pact

ซึ่งต้องรุปตั้งแต่ architecture ของระบบงาน
เพื่อวาง test strategy ต่าง ๆ ออกมา
เพื่อให้ออกแบบระบบให้รองรับกับแนวทางในการทดสอบต่อไป
มันคือ กระบวนการคิดก่อนทำ

ในการทดสอบจะทำทั้ง functional test และ non-functional test

โดย non-functional test คือ performance test
ซึ่ง postman สนับสนุนด้วย
แต่ถ้าอยากทดสอบด้วยเครื่องมืออื่น ๆ
ก็สามารถทำการ convert จาก postman collection ไปยัง script ของเครื่องมืออื่น ๆ ได้
ยกตัวอย่างเช่น

สิ่งที่สำคัญคือ load type ของการทดสอบว่าต้องการอย่างไรบ้าง

ไว้เจอกันการ sharing ต่อ ๆ ไป

ปล. เครื่องมือช่วยให้เราสะดวกขึ้น แต่ถ้ามาทำให้ยุ่งยากขึ้น
เราต้องกลับมาดูว่า เราใช้งานเครื่องมือถูกต้องหรือไม่