วันนี้ได้ลองใช้งาน Cotton เป็นเครื่องมือสำหรับการทดสอบ RESTFul API
ได้รับแรงบันดาลใจมากจาก Silk (คนทำน่าจะเลิกทำหรือดูแลไปแล้ว)
ดังนั้นทางพี่อูเลยพัฒนา Cotton ขึ้นมา
ซึ่งยังคงเขียน test case ในรูปแบบไฟล์ Markdown เช่นเดิม
เพิ่มเติมคือความสวยงามและการใช้งานที่ง่ายขึ้น
ดังนั้นเรามาลองใช้งานกัน

ขั้นตอนแรกก็ติดตั้งสิ

$go get github.com/chonla/cotton
$cotton

การใช้งานก็เขียน test case ไม่ยาก มันคือไฟล์ Markdown นี่เอง

แต่มีรูปแบบนิดหน่อย ส่วนที่ใช้งานบ่อย ๆ มีดังนี้

  • ในแต่ละไฟล์เรียกว่า test suite
  • ในแต่ละไฟล์จะมีได้มากกว่า 1 test case ซึ่งแต่ละ test case จะขึ้นต้นด้วย #
  • กำหนด URI และ HTTP Method (verb) สำหรับ API หรือ Enpoint ที่ต้องการทดสอบ จะขึ้นต้นด้วย ##
  • ถ้า Request มาการส่งค่าผ่าน HTTP Request Header จะกำหนดในรูปแบบตาราง ซึ่งดูดีกว่า Silk มาก
  • ส่วนข้อมูลที่ต้องการส่งผ่าน body/payload ของ HTTP ให้ใช้  backtick 3 ตัว
  • ในส่วนการตรวจสอบ response จะอยู่ในส่วน ## Expectation
  • การตรวจสอบจะอยู่ในรูปแบบของตารางเช่นกัน ซึ่งใช้งานง่ายดี
  • การเข้าถึงข้อมูลใช้ตัวแปรชื่อ Data ได้เลย

อธิบายมากไปเสียเวลา มาลองใช้งานกันนิดหน่อย

สร้างไฟล์ Markdown ชื่อว่า httpbin.md
ทำการทดสอบ RESTful API จาก httpbin.org
จากตัวอย่างมีอยู่ 2 test cases คือ GET กับ POST ดังนี้

จากนั้นก็ run สิ รออะไร

$cotton -u http://httpbin.org httpbin.md

ผลที่ได้เป็นดังนี้

Tests executed: 2
Tests passed: 2 (100.00%)
Tests failed: 0 (0.00%)

จากการทดสอบใช้งานพบว่า ยังไม่สามารถ parse 2 test cases ในไฟล์เดียวได้
แต่ก็แก้ไขด้วยการแยกไฟล์ละ 1 test case ได้
แต่ก็ได้แจ้ง issue#2 ไปยังผู้พัฒนาแล้ว

สิ่งที่ทำให้ผมชอบ Silk และ Cotton คือ
ชุดการทดสอบมันคือเอกสารที่มีชีวิต และทำความเข้าใจได้ง่าย
ซึ่งมันอยู่ในตัวเดียวกัน
และใคร ๆ ก็เขียนได้