android-testing
วันนี้มีโอกาสไปแบ่งปันเรื่อง Automated testing for Android app
ในงาน Test Automation Meetup ครั้งที่ 1
โดยเน้นไปที่แนวคิดสำหรับการทดสอบ Android app
ซึ่งในปัจจุบันมีเครื่องมือ และ library ต่าง ๆ เยอะมากมาย
หนึ่งในนั้นคือ Android Testing Support Library (ATSL)

ประกอบไปด้วย

  • UI Automator
  • Espresso
  • AndroidJUnitRunner
  • JUnit 4

แนวคิดหลัก ๆ ในการทดสอบระบบงาน

เพียงตอบ 2 คำถามให้ได้ว่า

  1. สิ่งที่เราเพิ่มและแก้ไขไปนั้น มันทำงานได้อย่างถูกต้องตามที่คาดหวังหรือไม่ ?
  2. สิ่งที่เราเพิ่มและแก้ไขไปนั้น มันส่งผลกระทบต่อส่วนการทำงานอื่น ๆ หรือไม่ ?

ถ้าคุณไม่มั่นใจ แสดงว่าต้องหาวิธีการที่เหมาะสม
เพื่อทำให้คุณมั่นใจในคำตอบมากยิ่งขึ้น
หัวใจคือ Fast feedback นั่นเอง

เครื่องมือ และ Library ที่แนะนำ ประกอบไปด้วย

  • Espresso
  • Screengrab สำหรับ capture หน้าจอการทำงานของ Android app ซึ่งทำงานร่วมกับ Espresso ซึ่งผมเคยเขียนการใช้งานเบื้องต้นไว้ที่ blog นี้
  • Monkey testing สำหรับการทำ Stress testing โดยจะสร้าง event ต่าง ๆ ขึ้นมาแบบอัตโนมัติ

สิ่งที่เน้นมาก ๆ คือ Espresso

เป็น Library ที่สร้างจากทีมพัฒนาของ Google นั่นเอง
สร้างมาจาก developer เพื่อ developer
ทำให้เราสามารถทำ UI Testing ได้ง่ายและสะดวกขึ้นมา
แต่ก็มีข้อจำกัดพอสมควรเหมือนกัน

โดยที่ UI Testing ใช้สำหรับทดสอบว่า
Android app ที่เราพัฒนาขึ้นมานั้น
สามารถติดตั้งบน device หรือ emulator ได้
สามารถทำงานได้จริง
มิใช่เพียงแค่สวย ดูดีอย่างเดียว

Espresso นั้นประกอบไปด้วย component หลัก 3 ตัวคือ

  1. View Matcher สำหรับค้นหา element ต่าง ๆ จาก view
  2. View Action สำหรับจำลองการทำงานต่าง ๆ เช่น การกดปุ่ม การกรอกข้อมูล เป็นต้น
  3. View Assertion สำหรับการตรวจสอบผลการทำงาน ว่าเป็นไปตามที่คาดหวังหรือไม่

Slide อยู่ที่นี่

โดยทั้งหมดนี้เป็นเพียงจุดเริ่มต้น

ของการทดสอบแบบอัตโนมัติสำหรับ Android app
อยากให้ทุก ๆ คน ลองนำแนวทางนี้ไปฝึกและใช้งานดูนะครับ
ซึ่งน่าจะทำให้เราสามารถตอบสองคำถามจากข้างต้น
ด้วยความเชื่อมั่นมากยิ่งขึ้น

ก้าวแรกสำคัญเสมอครับ จากนั้นก็ก้าวต่อไปเท่านั้นเอง