Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

Stub Driven Development สำหรับ Mobile Application

$
0
0

stub-00

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

Viewing all articles
Browse latest Browse all 1997

Trending Articles