Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

ตอบคำถาม แนวทางในการทดสอบ API ที่พัฒนาด้วย NodeJS

$
0
0

จากการแบ่งปันความรู้เรื่องการพัฒนาระบบ API ด้วย NodeJS นั้น
มีคำถามเกี่ยวกับแนวทางในการทดสอบว่า

  • มีแบบไหนบ้าง
  • ทำอย่างไรบ้าง

จึงทำการสรุปในแบบที่เคยทำไว้บ้าง ดังนี้

โดยปกติชอบแบ่งการทดสอบเป็น 2 แบบ คือ

  • ทดสอบมุมมองของผู้ใช้งาน หรือ ภายนอก (External test) มักจะใช้เครื่องมือ หรือ ภาษาโปรแกรมต่างจากการพัฒนา
  • ทดสอบในมุมมองนักพัฒนา หรือ ภายใน (Internal test) มักจะใช้เครื่องมือ หรือ ภาษาโปรแกรมเดียวกับการพัฒนา

แบบที่ 1 External test

จะใช้งาน Postman + newman สำหรับการทดสอบ API แบบง่าย ๆ

แบบที่ 2 Internal test

สำหรับ API test นั้นสามารถแบ่งได้หลาย level ดังนี้

  • Unit test
  • Component test
  • Contract test
  • Integration test
  • End-to-End test

ขึ้นอยู่กับความเชื่อมั่น หรือ ความต้องการของระบบงาน และ การทดสอบ
แน่นอนว่ามีทั้งข้อดีและข้อเสีย
ยิ่งเป็นพวก integration และ end-to-end test ก็จะยิ่งเพิ่มความเชื่อมั่นสูงสุด
แต่ต้องระวังในเรื่องของความเร็วในการทดสอบว่า ช้า หรือ เร็ว
รวมทั้งเรื่องของการจัดการ environment/dependency
เพื่อไม่ให้การทดสอบไม่เสถียร

ส่วน unit, component และ contract นั้น
จะทดสอบได้เร็วมาก ๆ แต่ความเชื่อมันของระบบโดยรวมอาจจะน้อย

ตัวอย่างและวิธีการทดสอบเป็นดังนี้

Production code เป็นการดึงข้อมูล user ด้วย id

[gist id="4e153460662727cf5961935620549fd1" file="user.js"]

Unit test ด้วย Jest

สามารถทำการ mock ตัว axios ได้เลย
จากนั้นก็สามารถจำลอง response ได้เลย

[gist id="4e153460662727cf5961935620549fd1" file="test-01.js"]

Component test ด้วย SuperTest และ Nock

ทำการทดสอบ API ด้วยการ start server และ ยิง request ด้วย SuperTest
และทำการจำลองการยิง request ไปยัง external API ด้วย Nock
ซึ่งกำหนดพฤติกรรมการทำงานให้เหมือนจริงได้ ในกรณีต่าง ๆ

ตัวอย่างการใช้งาน

[gist id="4e153460662727cf5961935620549fd1" file="test-02.js"]

ลองนำไปใช้งานกันดูครับ
ขอให้สนุกกับการ coding


Viewing all articles
Browse latest Browse all 1997

Trending Articles