จากการพูดคุยเรื่องการทดสอบ RESTful API ที่ Facebook
มีการพูดถึง Silk ซึ่งเป็น framework สำหรับการทดสอบ RESTful API
ด้วยการเขียนเอกสารในรูปแบบ Markdown
ดังนั้นจึงลองนำมาใช้งานแบบขำ ๆ กันหน่อย

เริ่มต้นด้วยการติดตั้ง Silk

สิ่งที่ต้องติดตั้งก่อนคือภาษา Go
จากนั้นทำการกำหนด $GOPATH ให้พร้อม
ทำการติดตั้งด้วยคำสั่ง

$go get github.com/matryer/silk

จากนั้นก็สามารถใช้งานคำสั่ง silk ได้
ซึ่งอยู่ที่ $GOPATH/bin

สร้าง RESTful API แบบง่าย ๆ เอาไว้ทดสอบนิดหน่อย

โดยเลือกใช้ stubby4j มาช่วยสร้าง
เนื่องจากมันง่าย ๆ มาก
สิ่งที่ต้องการคือ API เป็นดังนี้

  • Request ใช้งานผ่าน HTTP GET
  • Response ทำการส่งค่า id และ name ในรูปแบบ JSON

สามารถสร้าง APIs ง่าย ๆ ดังนี้

มี response เป็นดังนี้

ทำการ start API server ด้วยคำสั่ง

$java -jar stubby4j-version -d test.yaml

ได้เวลานำ Silk มาใช้ทดสอบ API ที่สร้างกันแล้ว

แนวคิดของ Silk นั้นดูเรียบง่ายมาก ๆ คือ
ทำการเขียนเอกสารเพื่ออธิบาย API ในรูปแบบ Markdown ปกติ
และได้ทำการกำหนดข้อตกลงการใช้งานสำหรับเรื่องต่าง ๆ ไว้ให้ เช่น

  • โครงสร้างของเอกสารเป็นอย่างไร
  • การกำหนด Request และรูปแบบข้อมูลต่าง ๆ ทั้ง parameter, header, cookie และ body
  • การตรวจสอบผลการทำงาน หรือ assert reponse ที่ API ส่งกลับมาเช่น Response code, content type และ data เป็นต้น

ตัวอย่างการทดสอบ API ข้างต้นสามารถเขียนง่าย ๆ ได้ดังนี้

จากนั้นสามารถทดสอบ API ที่เขียนอธิบายในไฟล์ markdown ดังนี้

$silk -silk.url="http://localhost:8882/"  get_user_by_id.md

ผลการทำงานแสดงดังนี้

silk: running 1 file(s)...
PASS

คำอธิบาย
ทำการกำหนด url ของ API
ทำการกำหนดไฟล์ markdown ที่เขียนอธิบาย API ไว้
ซึ่งสามารถระบุได้มากกว่า 1 file หรือสามารถใช้ wildcard ก็ได้นะ เช่น *.md

เพียงเท่านี้ก็สามารถเขียนเอกสารอธิบาย API
ซึ่งทดสอบได้อีกด้วย
แสดงว่าเราได้สร้างเอกสารที่มีชีวิตขึ้นมาแล้วนะครับ

Source code ตัวอย่างอยู่ที่ Github:Hello Silk

ปล. ถ้าใครเขียน code ภาษา Go เป็น
ก็สามารถเขียน code เพื่อทดสอบผ่าน silk runner ได้อีกด้วย
ซึ่งแน่นอนว่าจะมีประโยชน์และยืดหยุ่นกว่าการใช้งาน commad line

Reference Websites
http://go-talks.appspot.com/github.com/matryer/silk/other/presentation/silk.slide#1