Image may be NSFW.
Clik here to view.
Clik here to view.

- ระบบ API หรือ Backend
- ระบบ Mobile หรือ Frontend ทั้ง Android และ iOS
ส่วนการทำงานของ Backend หรือ API
สิ่งที่ขาดไม่ได้เลยก็คือ Continuous Integration และ Continuous Deployment นั่นหมายความว่า เมื่อมีการเปลี่ยนแปลง source code และ resource ต่าง ๆ แล้ว จะมีระบบที่ทำงานแบบอัตโนมัติตั้งแต่- จัดเตรียม Environment
- Build process
- Testing process
- Deployment process
ส่วนการทำงานของ Frontend หรือ Mobile
เริ่มต้นด้วย process การทำงาน ซึ่งมีหลายรูปแบบ โดยที่ผมขอแนะนำคือ รูปการทำงานแบบนี้ นำมาจากบทความเรื่อง Automating Mobile Deployment จากทีมพัฒนา AutoCAD 360 Image may be NSFW.Clik here to view.

- เมื่อเพิ่ม Animation ต่าง ๆ เข้ามา
- ต้องทำการ deploy app
- ต้องทำการ login
- ต้องทำการเตรียมข้อมูลต่าง ๆ
- ต้องการ clear ข้อมูลต่าง ๆ
มีเครื่องมืออะไรช่วยบ้างล่ะ ?
ในการพัฒนา Android และ iOS นั้นมีเครื่องมือช่วยเยอะมาก ๆ (แต่มักไม่นำมาใช้งานกัน !!) ตัวอย่างเช่น User Interface Testing ก็มีให้เลือกมากมาย เช่น- Android
- UI Automator
- Espresso
- Appium
- Calabash
- Robotium
- iOS
- UI Testing + XCTest
- Appium
- Calabash
- Flank
การสร้างระบบ Continuous Integration Server
สำหรับ Mobile app นั้นมันไม่ใช่เรื่องง่ายเลย แต่ก็สามารถทำได้ โดยประกอบไปด้วยสิ่งต่าง ๆ ดังต่อไปนี้ ระบบการ Build ทำงานดังนี้- เมื่อทำการเปลี่ยนแปลง source code มายังระบบ Source Control เช่น Git เป็นต้น
- ระบบ Continuous Integration จะทำการดึง source code มาทำงาน
- ขั้นตอนการทำงานประกอบไปด้วย compile, unit testing, UI testing และ Code Analysis
- ถ้าทำงานผ่านจะทำการสร้าง Artifact file ออกมาเช่น APK สำหรับ Android และ IPA สำหรับ iOS
- จากนั้นทำการ upload Artifact file ไปยัง Server กลางเพื่อทดสอบต่อไป เช่น TestFight, HockerApp, Google Play Beta/Alpha เป็นต้น
- Unit testing สำหรับทดสอบการทำงานของ code สำหรับ Mobile app
- Android ใช้งาน Unit4 และ Android Instrument test
- iOS ใช้งาน XCTest, Quick และ Nimble
- Integration testing สำหรับทำการทดสอบการทำงานร่วมกันระหว่าง Frontend และ Backend
- End-to-End testing สำหรับทดสอบการทำงานทั้งระบบ
- Android ใช้งาน UI Automator, Espresso, Appium และ Calabash
- iOS ใช้งาน UI test, Appium และ Calabash
โดย process และเครื่องมือต่าง ๆ เหล่านี้
ไม่ได้ทำงานแบบ perfect หรือสมบูรณ์แบบ แต่ช่วยทำงานการ development และ deployment สะดวกมากขึ้น ลดงานที่ต้องทำซ้ำ ๆ ออกไป ลดงานที่มักจะเกิดความผิดพลาดบ่อย ๆ ออกไป ทำให้รู้ปัญหาและแก้ไขได้อย่างรวดเร็ว จะได้มีเวลาไปทำในส่วนอื่น ๆ ที่สำคัญต่อไปแต่การสร้างมันขึ้นมาไม่ใช่เรื่องง่าย เนื่องจากทุกคนต้องทำความเข้าใจร่วมกัน และมีเป้าหมายร่วมกันผมเชื่อว่าทุกคนต้องการจะสร้างระบบที่มีคุณภาพออกไปให้ผู้ใช้งานเสมอ