จากการแบ่งปันเรื่องการทดสอบ Mobile app ในรูปแบบต่าง ๆ
ทั้งจาก native ตามภาษาของแต่ละ app เช่น Kotlin และ Swift
รวมทั้งพวกที่พัฒนาด้วย Flutter + Dart
ซึ่งภาษาต่าง ๆ เหล่านี้ล้วนมี library ของการทดสอบให้ทั้งหมด เช่น
- Android + Kotlin จะมี Instrumentation test และ Espresso/UIAutomator
- iOS + Swift จะมี XCUITest
- Flutter + Dart จะมี integration test
แต่ตัวที่น่าสนใจคือ Mobile app ที่พัฒนาด้วย Flutter + Dart นั้น
หลาย ๆ ที่มักจะทดสอบด้วยเครื่องมือที่ชื่อว่า Appium
โดยต้องทำการสร้างไฟล์ APK หรือ IPA/APP มาก่อน
หรือติดตั้ง app ที่ที่ device ก่อนทดสอบ
ซึ่งผมจะเรียกการทดสอบแบบนี้ว่า External testing
เพราะว่า เป็นการทดสอบมุมมองของผู้ใช้งาน
แน่นอนว่า ช้าแน่ ๆ และ test case พังบ่อยมาก ๆ
แต่การทดสอบมีความน่าเชื่อสูง
ปัญหาของทดสอบ Flutter app ด้วย Appium นั้นคือ ไม่สามารถ inspect ได้ !!
แต่จาก version ใหม่ ๆ พบว่า Appium inspector
สามารถทำการ inspect app ที่พัฒนาจาก Flutter ได้เลย
ทั้งฝั่งของ Android และ iOS
ไม่ต้องติดตั้ง Flutter driver ใน Appium server อีกต่อไป
แต่ปัญหาที่ตามมาคือ การเข้าถึงแต่ละ element บนหน้าจอนั่นเอง จะทำอย่างไร ?
สิ่งที่สามารถทำได้ประกอบไปด้วย
- by Key
- by Text (ไม่ดี)
- by Semantics Label
สามารถเพิ่มเข้าไปในแต่ละ element ได้
จากนั้นต้องทำการ inspect ใน Appium inspector อีกที
ว่า app บน Android และ iOS นั้นได้ผลเหมือนหรือต่างกันอย่างไร
เพราะว่า เรื่องนี้สำคัญมาก ๆ สำหรับการทดสอบแบบ external นั่นเอง
ไม่ง่าย แต่ก็ไม่ยาก และ ต้องระวังให้มาก ๆ
การทดสอบควรมีทั้ง internal และ external testing เสมอ
เพื่อสร้างความมั่นใจให้ทั้งทีมพัฒนา และ ผู้ใช้งานนั่นเอง