stub-00
ในการพัฒนา Mobile app ส่วนใหญ่นั้น
จำเป็นต้องทำงานร่วมกับ Server-side API ผ่านระบบ network
ไม่ว่าจะเป็น RESTful API และ Web Service
ปัญหาที่มักเกิดขึ้นเสมอก็คือ

  • ต่างคนต่างทำงาน
  • ต้องรอกันเสมอ
  • ถ้าฝั่ง API พัฒนาไม่เสร็จ ฝั่ง Mobile app ก็ไม่เสร็จเช่นกัน
  • ถ้าระบบ network มีปัญหา หรือ server มีปัญหา จะทำให้การพัฒนาฝั่ง Mobile app สะดุดหรือหยุดชะงักไป
  • ไม่สามารถจำลองเหตุการณ์ที่ต้องการได้เช่น API ทำงานช้า, API ทำงานผิดพลาด เป็นต้น

และปัญหาอื่น ๆ อีกมากมาย
ดังนั้นถ้ายังคงทำงานกันแบบนี้น่าจะไม่รอดอย่างแน่นอน
คำถามคือ เราจะทำอย่างไรดีล่ะ ?

คำตอบมีหลายแนวทางมาก
ทั้งจากการวางแผน
ทั้งจากขั้นตอนการทำงาน
ทั้งจากโครงสร้างของทีม

หนึ่งในวิธีการที่นำมาใช้คือ Stub Driven Development

เป็นหนึ่งในแนวคิดเรื่อง Test-Double ซึ่งประกอบไปด้วย

  • Dummy
  • Stub
  • Spy
  • Mock
  • Fake

โดย Stub นั้นเป็นการจำลองการทำงานของ Server-side API ขึ้นมา
เรียกเมื่อใดหรือกี่ครั้งก็ตาม จะได้ข้อมูลเหมือนเดิมตลอด
เพื่อทำให้ทางฝั่ง Mobile app สามารถพัฒนาระบบได้
ไม่จำเป็นต้องรอให้ฝั่ง Server-side พัฒนาเสร็จ
แต่สิ่งที่ต้องทำก่อนคือ การพูดคุยและสรุปข้อตกลงในการเชื่อมต่อร่วมกัน
ประกอบไปด้วย

  • Protocol ที่ใช้เชื่อมต่อ
  • Endpoint สำหรับการเรียกใช้งาน
  • ข้อมูลของ request ว่าเป็นอย่างไรบ้าง
  • ข้อมูลของ reponse ว่าเป็นอย่างไรบ้าง

แนวทางนี้มันจะส่งผลต่อการพัฒนา Mobile app อย่างมาก
เช่นเรื่องโครงสร้างของ code ต้องแก้ไข
ให้สามารถสลับการทำงานทั้งของจริงและของปลอมได้ง่าย
นั่นคือ code จะต้องทดสอบได้ง่าย หรือ Testable code นั่นเอง
เป็นเรื่องที่นักพัฒนาทุกคนต้องเรียนรู้ ฝึกฝน และ นำไปใช้งาน

มาดูข้อดีของ Stub Driven Development ว่ามีอะไรบ้าง ?

เริ่มจากทำให้การพัฒนา Mobile app ง่ายขึ้น
แต่อาจจะต้องเสียเวลาในช่วงแรกสำหรับการเตรียมข้อมูลของ API ให้เรียบร้อย
จากนั้นคุณจะสามารถควบคุมสิ่งต่าง ๆ ได้ง่ายขึ้น

ต่อมาคือการพัฒนาจะเร็วขึ้น
บางคนอาจจะบอกว่า เราต้องทำงานเพิ่มขึ้นมันน่าจะช้าลงสิ
แต่ถ้าลงในรายละเอียดแล้วจะพบว่า
เวลาในการเตรียมข้อมูลสำหรับทดสอบนั้น
จะน้อยกว่าเวลาที่ต้องรอให้ฝั่ง Server-side API พัฒนาเสร็จ
จะน้อยกว่าเวลาที่ต้องรอให้ฝั่ง Server-side API แก้ไขข้อผิดพลาดเสร็จ

นักพัฒนา Mobile app จะได้มีสมาธิสำหรับการพัฒนา app
นั่นคือ ทำเพียงเรื่องเดียวในช่วงเวลาหนึ่ง ๆ
แน่นอนว่า มันย่อมส่งผลให้ผลงานออกมาดี

ทำให้คุณรู้ว่าสิ่งที่คุณกำลังทำอยู่นั้นมันใช่หรือไม่ !!
เนื่องจากเมื่อเราจำลองส่วนการทำงานอื่น ๆแล้ว
เราสามารถทดสอบและใช้งาน Mobile app ได้เร็วขึ้น
ดังนั้นทำให้ได้รับ feedback ที่รวดเร็วขึ้น
ทำให้เราพร้อมรับต่อการแก้ไขและเปลี่ยนแปลง

ทำให้โครงสร้างของ code เปลี่ยนไป
เนื่องจากถ้าต้องการเปลี่ยนไปมาระหว่างของจริงกับของปลอม
คุณจะทำอย่างไรเพื่อลดการแก้ไข code
ถ้ายังมาทำการ comment code หรือ มาเปลี่ยน code ไปมาตลอด
แสดงว่ามาผิดทางอย่างแน่นอน

ทำให้นักพัฒนา Mobile app และ Server-side API
สามารถทำงานไปพร้อม ๆ กันได้ดี
ไม่ต้องรอกันอีกต่อไป
แต่จำเป็นต้อง integrate กันบ่อย ๆ

สุดท้ายสามารถทำให้เราทดสอบ Mobile app ได้ง่ายขึ้น
เช่นการทำ User Interface Testing (UI Testing)
เนื่องจากเราสามารถกำหนดข้อมูลในการทดสอบได้
ทำให้สามารถทดสอบซ้ำ ๆ ได้เสมอ
ทำให้มั่นใจได้ว่าระบบทำงานได้อย่างถูกต้องตามที่คาดหวัง

แต่สุดท้ายคุณต้องทำการ integrate กันจริง ๆ อยู่อย่างบ่อย ๆ

เพื่อทำให้เห็นความคืบหน้า
เพื่อทำให้เห็นปัญหา
เพื่อจะได้ทำการแก้ไขได้อย่างทันท่วงที
มันคือการทำงานเป็นทีม
มันคือการพูดคุย
มันคือการทำงานร่วมกัน
นั่นคือธรรมชาติของคน

อย่าใช้ Stub จนหลงลืมปัญหาไปนะ
หรือให้ใช้งานอย่างมีสตินั่นเอง
เพราะว่า Stub เพียงช่วยทำให้เราพัฒนาได้เร็ว และ สะดวกเท่านั้น
อย่าลืมว่ามันไม่ใช่ของจริงนะครับ