ในการพัฒนา Android app นั้นการทดสอบนั้นสำคัญมาก ๆ
ทั้ง Developer testing คือ การทดสอบในมุมมองของนักพัฒนา
ทั้ง Customer testing คือ การทดสอบในมุมมองของลูกค้าหรือผู้ใช้งาน

แต่สิ่งหนึ่งที่มักจะละเลยไปมากคือ Stress Testing
ดังนั้นมาสรุปกันหน่อยว่าต้องทำอะไรบ้าง ?

เริ่มด้วย Android Monkey Testing

สำหรับจำลอง event ต่าง ๆ ขึ้นมาแบบ random
ซึ่งสามารถใช้งานผ่าน command-line ได้ดังนี้

$adb shell monkey -p YOUR_PACKAGE_NAME

เรื่องที่ 2 คือความเร็วและช้าของ Network ที่ใช้งาน

ในการกำหนดความเร็วความช้าของระบบ Network นั้น
สามารถกำหนดผ่าน emulator ได้ง่าย ๆ เลย
เพราะว่ามี feature นี้อยู่แล้ว

แต่ถ้าต้องการทดสอบผ่าน device จริง ๆ
การจำลองระบบ network มันก็ยากพอสมควร
ดังนั้นสิ่งที่แนะนำก็คือ Debug Drawer
ซึ่งสามารถกำหนดความเร็วของระบบ Network ใน App ของเราได้เลย
ตัวอย่างเช่น

แสดงการใช้งานดังรูป

เรื่องที่ 3 App จัดการกับ Error ต่าง ๆ ได้หรือไม่ ?

ตัวอย่างเช่นถ้ามี error ส่งกลับมาจาก HTTP แล้ว
App ของเราสามารถจัดการหรือรับมือได้หรือไม่ ?
เพื่อดูว่า error ที่เกิดขึ้นมา ถูกส่งไปยังระบบของเราหรือไม่ ?

ตัวอย่างการกำหนด Error rate ผ่าน Debug Drawer

เรื่องที่ 4 การทำงานใน Offline mode

ตัวอย่างเช่นการปิดระบบ network และเปิด airplane mode เป็นต้น
เป้าหมายที่เราต้องการคือ

  • App crash หรือไม่ ?
  • ทำการแสดงข้อความต่าง ๆ ให้ผู้ใช้งานหรือไม่ ?
  • Caching data ถูกจัดเก็บได้อย่างถูกต้องหรือไม่ ?
  • เมื่อกลับมาทำงานแบบ Online mode แล้ว App สามารถทำงานได้อย่างถูกต้องหรือไม่ ? เช่น clear cache หรือส่ง caching data ไปยังระบบกลาง เป็นต้น

เรื่องที่ 5 ทำการ Update app ดูบ้างสิ

ถ้า App มีการเก็บข้อมูลต่าง ๆ ไว้ทั้งใน device และ server แล้ว เช่น

  • การเปลี่ยนแปลงที่ SharedPreference
  • การเปลี่ยนแปลงที่ Database
  • การเปลี่ยนแปลงที่ API

สิ่งที่ต้องทำคือ ถ้าทำการ update app แล้ว
ข้อมูลต่าง ๆ เหล่านั้นยังคงอยู่ ไม่ถูกลบไป
และผู้ใช้งานสามารถใช้งาน App ต่อไปได้

เรื่องที่ 6 ทำการลบ App หรือ clear memory/data ใน background mode ดูสิ

App ส่วนมากมักจะทำการเก็บข้อมูล หรือ ทำงานหลายอย่างใน background mode
ดังนั้นบางครั้งถ้าเราไปลบข้อมูลของ App
ในขณะที่อยู่ใน background mode แล้วทำการเปิด App ขึ้นมาใช้
อาจจะทำให้ App crash ได้ เนื่องจากไม่ทำการตรวจสอบข้อมูลและ re-initial ข้อมูลใหม่ขึ้นมา

ดังนั้นสามารถทดสอบได้ง่าย ๆ เช่น
เข้าไป clear data/memory usage ใน device
หรือทำการลบผ่าน command line ดังนี้

$adb shell am kill YOUR_PACKAGE_NAME

หรือเข้าไปกำหนดค่าไม่ให้ device เก็บ activity เมื่อผู้ใช้งานไม่ใช้งาน App นั้นแล้ว

ยังมีเรื่องอื่น ๆ อีกเช่น

  • การหมุนหน้าจอ (Orientiaion)
  • Multi-window mode และ TransactionTooLargeException สำหรับ Android N
  • เรื่องของการทดสอบพวก Unit testing, Integration testing, API testing และ UI testing ก็อย่าให้ขาดนะ !!

ขอให้สนุกกับการพัฒนา Android app ครับ

Reference Websites
https://android.jlelse.eu/stress-testing-android-apps-601311ebf590#.21g9b3twk