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

สรุปสิ่งที่แบ่งปันใน Course Automated testing for Android App

$
0
0

android-testing-course

android-testing-course สองวันที่ผ่านมามีโอกาสแบ่งปัน เรื่องการทดสอบแบบอัตโนมัติสำหรับ Android app (Automated testing for Android App) ซึ่งจัดโดยสถาบัน IMC จึงทำการสรุปเนื้อหาต่าง ๆ ไว้ดังต่อไปนี้

วันที่หนึ่ง

ทำการอธิบายถึงปัญหาของการพัฒนา และทดสอบ Android App ในปัจจุบัน ตลอดจนเครื่องไม้เครื่องมือที่เยอะมาก ๆ ซึ่งทำให้ยากต่อการเริ่มต้นเรียนรู้ และนำไปใช้งาน รวมทั้งอธิบายถึงรูปแบบการทดสอบ ที่มักจะทดสอบแบบ manual กันทั้งหมด ซึ่งใช้ทั้งเวลา คน และค่าใช้จ่ายจำนวนมาก ดังนั้น ถ้าเรามีวิธีการที่ช่วยลดสิ่งต่าง ๆ เหล่านี้ลงไปได้ มันน่าจะดีขึ้นไม่มากก็น้อยนะ หนึ่งในวิธีการคือ การทดสอบแบบอัตโนมัตินั่นเอง (Automated testing)
แต่ว่าเส้นทางที่ไปถึงนั้น มันไม่ง่ายเลย เนื่องจากต้องทุ่มเททั้งแรงกายและแรงใจ เพื่อสร้างสิ่งต่าง ๆ เหล่านี้ขึ้นมา เพื่อให้ได้ซึ่งคำว่า คุณภาพ เพื่อให้ได้มาซึ่งความเชื่อมั่น
โดยการทดสอบที่แนะนำ และพาทำ workshop ประกอบไปด้วย 1. Unit testing ด้วย JUnit4 สำหรับการทดสอบในส่วนของ business logic รวมทั้งส่วนการทำงานภายในของ Android App โดยขอเรียกว่าเป็น Developer testing ซึ่งการทดสอบไม่จำเป็นต้องใช้งาน Emulator หรือ Device จริง ๆ เลย ส่งผลให้การทดสอบเร็วมาก ๆ ได้นำเอาแนวคิด Test-Driven Development (TDD) เข้ามาใช้งาน ตลอดจนเรื่องของ Code coverage อีกด้วย รวมทั้งแนะนำเทคนิคต่าง ๆ ของ JUnit4 2. User Interface testing (UI) ด้วย Espresso สำหรับการทดสอบในมุมมองของผู้ใช้งาน หรือ Customer testing นั่นคือ ทำการทดสอบผ่าน User Interface ของ App นั่นเอง แน่นอนว่า ต้องทำการทดสอบบน Emulator หรือ Device จริง ๆ เพื่อทำให้มั่นใจว่า App ที่พัฒนาขึ้นมานั้น ติดตั้งได้จริง ทำงานได้จริง ทำให้ใช้เวลาในการทดสอบนานกว่า Unit test อย่างมาก ดังนั้นจำเป็นต้องทดสอบในระดับ feature เท่านั้น 3. Stress testing ด้วย Monkey test เป็นเครื่องมือที่มีมากับ Android SDK อยู่แล้ว จะทำสร้าง event สำหรับการใช้งาน App แบบมั่ว ๆ เพื่อทดสอบว่า App ที่เราพัฒนายังสามารถทำงานได้ ในสถานการณ์ หรือ การใช้งานรูปแบบต่าง ๆ หรือไม่

วันที่สอง

หลังจากที่เราทำการทดสอบในส่วนต่าง ๆ เรียบร้อยแล้ว จากนั้นจึงแนะนำเรื่องของ Continuous Integration(CI) ซึ่งเป็นแนวปฎิบัติเพื่อ
  • ทำการ integrate code ในส่วนต่าง ๆ เข้ากันบ่อย
  • ทำการทดสอบอยู่อย่างบ่อย ๆ
  • ทำให้ได้รับ feedback ต่าง ๆ อย่างรวดเร็ว
โดยให้ทุกคนสร้างระบบ Continuous Integration ด้วย Jenkins รวมทั้งการออกแบบ build pipeline ของการทำงานอีกด้วย ตั้งแต่การดึง source code จาก Version Control System การ compile source code การทดสอบ Unit test การทำสอบ UI test การทำรายงานเรื่อง Code coverage จากนั้นทำการแนะนำเรื่อง Continuous Delivery และ Continuos Deployment ซึ่งทำการแนะนำ Fastlane สำหรับ Android app ทั้ง Supply และ Screengrab เพื่อสร้างระบบการ deploy แบบอัตโนมัติ เป็นเรื่องใหม่แต่อยากขอแนะนำให้ลองนำไปใช้งานดูนะ มันแจ่มมาก ๆ ปิดท้ายด้วยเรื่องของ Mocking หรือ Test double แน่นอนว่ามีเรื่อง Testable code อีกด้วย ในส่วนนี้อาจจะสอนเร็วไปหน่อย !! แต่อยากให้นักพัฒนาทุกคนลองกลับไปศึกษาเพิ่มเติม เนื่องจากเป็นสิ่งที่นักพัฒนาทุกคนต้องเข้าใจ และนำไปประยุกต์ใช้งานได้ เช่น เรื่องของ SOLID, Refactoring และ Clean code เป็นต้น

สุดท้ายแล้ว

หวังว่าความรู้ต่าง ๆ ในสองวันนี้ น่าจะเป็นจุดเริ่มต้นสำหรับการเดินทางเรื่อง Automated testing และนำไปต่อยอดเพื่อประยุกต์ใช้สำหรับการพัฒนา Android App ต่อไป ขอบคุณทั้ง 16 คนที่มาร่วมเดินทางไปกับผม และทางสถาบัน IMC ที่ให้โอกาส ส่วนตัวผมได้ทั้งความรู้ และ ความสนุกสนานอย่างมาก รวมทั้งจะนำ feedback ต่าง ๆ ไปปรับปรุงสำหรับครั้งต่อ ๆ ไปครับ

Viewing all articles
Browse latest Browse all 1997

Trending Articles