ในการพัฒนา 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
- Protocol ที่ใช้เชื่อมต่อ
- Endpoint สำหรับการเรียกใช้งาน
- ข้อมูลของ request ว่าเป็นอย่างไรบ้าง
- ข้อมูลของ reponse ว่าเป็นอย่างไรบ้าง
มาดูข้อดีของ 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 เพียงช่วยทำให้เราพัฒนาได้เร็ว และ สะดวกเท่านั้น อย่าลืมว่ามันไม่ใช่ของจริงนะครับ