ในการพัฒนา 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