เนื่องจากการรันเทสในแต่ละข้อนั้น เราสามารถที่จะกำหนดการล้างข้อมูล App ในเครื่องผ่านการใช้งาน Reset Strategies ซึ่งการเลือกใช้งาน Reset Strategies แต่ละแบบนั้นมีผลเป็นอย่างมากกับเวลาในการรันเทส
Reset Options
Platform | default | fullReset | noReset |
iOS | ปิด Application *ไม่ลบข้อมุล app แต่จะไม่ uninstall app | ปิด Application ลบข้อมูล app uninstall app | ไม่ปิด application ไม่ลบข้อมุล app ไม่ uninstall app |
Android | ปิด Application *ลบข้อมูล app ไม่ uninstall app | ปิด Application ลบข้อมูล app uninstall app | ไม่ปิด application ไม่ลบข้อมุล app ไม่ uninstall app |
จากตารางด้านบนจะเห็นว่า แต่ละ option ส่งผลต่อการเทสแตกต่างกันมาก
ข้อควรระวังคือ default reset option iOS และ Android จะค่อนข้างแตกต่างกันในเรื่องของการจัดการข้อมูลนั่นเอง
# Default
Open Application http://127.0.0.1:4723/wd/hub
... automationName=${ANDROID_AUTOMATION_NAME}
... platformName=${ANDROID_PLATFORM_NAME}
... platformVersion=${ANDROID_PLATFORM_VERSION}
... app=${ANDROID_APP} appPackage=io.appium.android.apis
... appActivity=.app.SearchInvoke
# No Reset
Open Application http://127.0.0.1:4723/wd/hub
... automationName=${ANDROID_AUTOMATION_NAME}
... platformName=${ANDROID_PLATFORM_NAME}
... platformVersion=${ANDROID_PLATFORM_VERSION}
... app=${ANDROID_APP} appPackage=io.appium.android.apis
... appActivity=.app.SearchInvoke
... fullReset=${False}
... noReset=${True}
# Full Reset
Open Application http://127.0.0.1:4723/wd/hub
... automationName=${ANDROID_AUTOMATION_NAME}
... platformName=${ANDROID_PLATFORM_NAME}
... platformVersion=${ANDROID_PLATFORM_VERSION}
... app=${ANDROID_APP} appPackage=io.appium.android.apis
... appActivity=.app.SearchInvoke
... fullReset=${True}
... noReset=${False}
เมื่อไหร่ควรใช้ Option ไหน
ตัวอย่าง การเทส module login
การเทส module นี้ เริ่มต้นด้วยการใช้งาน fullReset ก่อนเพื่อเป็นการล้างสถานะล่าสุดใน Suite setup 1 ครั้ง แล้วหลังจากนั้น ในแต่ละ Test Setup เราก็สามารถที่จะรัน App โดยใช้ noReset เพื่อลดระยะเวลาการรันเทสลงนั่นเอง
แต่เราต้องไม่ลืมที่จะ Sign Out ใน Test Teardown ด้วยเพื่อที่เวลารันเทสเคสข้อถัดไปจะสามารถเริ่มจากหน้า Login Page นั่นเอง
References: https://appium.io/docs/en/writing-running-appium/other/reset-strategies/index.html