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

สรุปการแบ่งปันเรื่อง Automated Deployment สำหรับ Mobile App

$
0
0

mobile-app

mobile-app เพิ่งไปแบ่งปันเรื่องระบบ Automated deployment สำหรับ Mobile app มา โดยประกอบไปด้วยส่วนต่าง ๆ เช่น
  • ระบบ API หรือ Backend
  • ระบบ Mobile หรือ Frontend ทั้ง Android และ iOS
มีทั้ง process และเครื่องมือที่ใช้งาน จึงนำมาสรุปไว้นิดหน่อย มาเริ่มกันเลย

ส่วนการทำงานของ Backend หรือ API

สิ่งที่ขาดไม่ได้เลยก็คือ Continuous Integration และ Continuous Deployment นั่นหมายความว่า เมื่อมีการเปลี่ยนแปลง source code และ resource ต่าง ๆ แล้ว จะมีระบบที่ทำงานแบบอัตโนมัติตั้งแต่
  • จัดเตรียม Environment
  • Build process
  • Testing process
  • Deployment process
สามารถใช้จำนวนครั้งการ dpeloy ต่อวัน เพื่อวัดผลการทำงานได้เลย ซึ่งทำให้ทีมพัฒนารับรู้ feedback ต่าง ๆ ได้อย่างรวดเร็ว

ส่วนการทำงานของ Frontend หรือ Mobile

เริ่มต้นด้วย process การทำงาน ซึ่งมีหลายรูปแบบ โดยที่ผมขอแนะนำคือ รูปการทำงานแบบนี้ นำมาจากบทความเรื่อง Automating Mobile Deployment จากทีมพัฒนา AutoCAD 360 1-kpky4g4coe_tql3zuqb9zw โดยการทำงานนั้นสามารถนำแนวคิด Continuous Integration และ Continuous Deployment มาปรับใช้ได้ แต่ในส่วนของการ deploy ต้องรอการ review ในกรณีของ iOS app รวมทั้ง process ต่าง ๆ สำหรับ Mobile app นั้น ยังไม่เสถียรเหมือนกับ Web application และ API (Backend) เท่าไรนัก ยกตัวอย่างเช่น User Interface Testing โดยส่วนใหญ่จะเน้นไปที่ User Experience (UX) คำถามที่น่าสนใจคือ ทดสอบกันตอนไหน ? รวมทั้ง process ต่าง ๆ เหล่านี้มักจะใช้เวลานาน ยังไม่พอนะ พอเอามาพัฒนาและทดสอบ ยิ่งยากและนานเข้าไปใหญ่ แต่ต้องอยู่ในกรอบเวลาที่คนไม่ได้ทำเป็นคนกำหนด !! เช่น
  • เมื่อเพิ่ม Animation ต่าง ๆ เข้ามา
  • ต้องทำการ deploy app
  • ต้องทำการ login
  • ต้องทำการเตรียมข้อมูลต่าง ๆ
  • ต้องการ clear ข้อมูลต่าง ๆ
นี่ยังไม่รวมถึงการทดสอบว่า feature ทำงานได้หรือไม่นะ !!

มีเครื่องมืออะไรช่วยบ้างล่ะ ?

ในการพัฒนา Android และ iOS นั้นมีเครื่องมือช่วยเยอะมาก ๆ (แต่มักไม่นำมาใช้งานกัน !!) ตัวอย่างเช่น User Interface Testing ก็มีให้เลือกมากมาย เช่น
  • Android
    • UI Automator
    • Espresso
    • Appium
    • Calabash
    • Robotium
  • iOS
    • UI Testing + XCTest
    • Appium
    • Calabash
    • Flank
ซึ่งเครื่องมือเหล่านี้ทำงานแบบอัตโนมัติได้อีกด้วย แน่นอนว่ายังต้องมีการทดสอบแบบ Manual เนื่องจากมี scenario ต่าง ๆ ที่ต้องทดสอบมากมาย รวมทั้งเรื่อง User Experience ต่าง ๆ ของการใช้งาน ซึ่งต้องเน้นไปที่กรณีที่จำลอง หรือ ทดสอบแบบอัตโนมัติไม่ได้ หรือ ยาก เพื่อให้เหมาะสมต่อการทดสอบบ้าง

การสร้างระบบ 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 เป็นต้น
สิ่งที่น่าสนใจและต้องใส่ใจคือ การทดสอบ จะถูกแบ่งออกเป็น 3 ส่วนหลัก ๆ คือ
  • 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 สะดวกมากขึ้น ลดงานที่ต้องทำซ้ำ ๆ ออกไป ลดงานที่มักจะเกิดความผิดพลาดบ่อย ๆ ออกไป ทำให้รู้ปัญหาและแก้ไขได้อย่างรวดเร็ว จะได้มีเวลาไปทำในส่วนอื่น ๆ ที่สำคัญต่อไป
แต่การสร้างมันขึ้นมาไม่ใช่เรื่องง่าย เนื่องจากทุกคนต้องทำความเข้าใจร่วมกัน และมีเป้าหมายร่วมกัน
ผมเชื่อว่าทุกคนต้องการจะสร้างระบบที่มีคุณภาพออกไปให้ผู้ใช้งานเสมอ

Viewing all articles
Browse latest Browse all 1997

Trending Articles