สองวันที่ผ่านมามีโอกาสแบ่งปัน
เรื่องการทดสอบแบบอัตโนมัติสำหรับ 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 ต่าง ๆ อย่างรวดเร็ว