1stubby

เมื่อเราต้องการสร้างหรือใช้งานข้อมูลจากระบบอื่นๆ ผ่าน HTTP Server อื่นๆ เช่น REST, SOAP เป็นต้น
แต่ว่าปัญหาที่มักจะเกิดคือ ระบบงานของเราที่พัฒนาขึ้นมานั้น
ต้องเรียกใช้งานส่วนต่างๆ เหล่านี้เสมอ ซึ่งมันก่อให้เกิดปัญหาได้ เช่น

  • ระบบที่เราใช้ยังไม่พร้อม หรือยังไม่เสร็จ
  • ระบบมีการทำงานที่ล่าช้า
  • ทำการทดสอบที่ยากมาก

เนื่องจากต้องมีการจัดเตรียมข้อมูลต่างๆ ให้พร้อม
ดังนั้น มันมีวิธีการแก้ไขอย่างไรบ้างล่ะ ?

ในปัจจุบันมีวิธีการแก้ไขปัญหาดังกล่าว หลากหลายวิธี
หนึ่งในนั้นคือการสร้าง Stub HTTP Server ขึ้นมา
เพื่อสร้างอยู่ใน development environment
โดยมี library ที่แนะนำก็คือ Stubby4j พัฒนาด้วยภาษา Java
ทำให้ง่ายต่อการทดสอบมากยิ่งขึ้น

มาดูกันว่ามันคืออะไร และ พัฒนามันขึ้นมาอย่างไร

เริ่มต้นด้วยว่า Stubby4j คืออะไร

คือ Stub HTTP(s) Server ใช้สำหรับทดสอบระบบงานในส่วนที่ใช้งาน
พวก Web service เช่น REST, WSDL และ SOAP เป็นต้น
รวมทั้ง external service อื่นๆ อีกด้วย

การทำงานของ Stubby4j อยู่บน Jetty
ทำให้ Service ที่ทำการ Stub มานั้นจะคล้ายหรือเหมือนกับของจริงกันเลยทีเดียว

คำว่า Stubby มาจากคำแสลงในภาษารัสเซีย แปลว่า ขวดเบียร์

แล้วทำไม developer ต้องใช้มันด้วยล่ะ ?

ในการพัฒนา developer นั้นต้องการ สิ่งเหล่านี้บ้างไหม

  • ทำการจำลอง response ที่จะเกิดจาก server จริงๆ โดยไม่ต้องการติดต่อไปยัง network ภายนอก
  • ถ้าระบบที่ต้องการใช้งานยังพัฒนาไม่เสร็จ แต่ได้ข้อตกลงในการแลกเปลี่ยนระหว่างระบบแล้ว
  • ทำการตรวจสอบ HTTP Header code ทั้งสำเร็จและไม่สำเร็จ
  • ทำการสร้าง response ตาม parameter ที่กำหนด ผ่านทั้ง HTTP และ HTTPs protocol
  • ใช้งาน HTTP Method ทุกๆ ตัว เช่น HEAD, GET, POST, PUT และ  DELETE เป็นต้น
  • ต้องการใช้และจำลอง Basic Authentication
  • ต้องการทดสอบ HTTP Redirect เช่นพวก HTTP Code 30x เป็นต้น
  • ต้องการข้อมูลสำหรับการทำ integration test
  • ต้องการกำหนด Delay time ของ response

ขั้นตอนการใช้งาน

1. ทำการ Download  Stubby4j

2. สร้างไฟล์ yaml สำหรับกำหนด request และ response ที่ต้องการ
ตัวอย่าง
ต้องการ request ผ่าน URI ชื่อว่า hello-world
ทำการใช้งานผ่าน HTTP GET
มันคือ REST service นั่นเอง

ส่วนของ response นั้นให้ส่งข้อมูลกลับมาในรูปแบบ Application/json
สามารถกำหนดได้ดังนี้

3. ทดสอบสร้าง REST service ที่เราต้องการ
ด้วยคำสั่ง
$java -jar stubby4j-2.0.21.jar -d hello.yaml

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

Screen Shot 2557-07-02 at 2.19.45 PM

คำอธิบาย
Stubby4j นั้นจะมีส่วนการทำงานต่างๆ ให้เรา คือ

  • Admin portal configure คือ แสดงข้อมูลที่เราจัดการไว้ในไฟล์ yaml
  • Admin portal status คือ ส่วนแสดงข้อมูลต่างๆ ของ Stub HTTP Server เช่น
    • JVM และ parameter ต่างๆ ที่ใช้งาน
    • มีสถิติการเรียกใช้งาน
    • Service ต่างๆ ที่ทำการสร้างไว้

รูปแสดง สถิติการเรียกใช้งาน

Screen Shot 2557-07-02 at 2.30.20 PM

รูปแสดง  Service ต่างๆ ที่กำหนดไว้

Screen Shot 2557-07-02 at 2.30.49 PM

4. ตรวจสอบการทำงานของ REST service ผ่าน url http://localhost:8882/hello-world
ผลการทำงานเป็นดังรูป

Screen Shot 2557-07-02 at 2.23.07 PM

ถ้าต้องการรู้ว่ามี parameter อะไรให้ใส่ตอน run Stubby4j

สามารถใช้คำสั่งดังนี้
$java -jar stubby4j-2.0.21.jar -help

จะแสดง parameter ทั้งหมดที่สามารถใช้งานได้ดังนี้

Screen Shot 2557-07-02 at 3.34.39 PM

เพียงเท่านี้ เราก็สามารถสร้าง Stub HTTP Server ของ external/internal service
เพื่อใช้ในการทดสอบและพัฒนาได้แล้วครับ
ลองดูว่าเครื่องมือนี้เหมาะกับคุณหรือไม่ หรือมันช่วยแก้ไขปัญหาอะไรบ้าง