ทดสอบ Mobile App แบบ Automated ด้วย Appium ทำยังไงกันนะ
Automated Test คือ การทดสอบเล่นแอปฯ โดยอัตโนมัติ ซึ่งมีส่วนช่วยอย่างมากกับ flow ต่างๆ ที่ Tester ต้องเล่นเองซ้ำๆ (Manual Test) โดยเฉพาะ Application ปัจจุบันมักถูกออกแบบเป็น step-by-step ยิ่งการทดสอบซ้ำซากเป้นเรื่องน่าเบื่อ
บางคนอาจจะสามารถเล่น flow เดิมๆ ซ้ำๆ หลายรอบได้โดยไม่รู้สึกแปลกอะไร แต่จะดีกว่าไหมถ้ามีตัวช่วยให้ไม่ต้องเล่นเอง นอกจากจะลดข้อผิดพลาดจากมนุษย์ (human error) แล้ว ยังทำให้การเล่น flow เดิมมันเป็นแบบเดิมจริงๆ อย่างปฏิเสธไม่ได้
Robot Framework เป็นภาษาโปรแกรมภาษาหนึ่ง ที่ออกแบบมาให้อ่านเข้าใจง่าย มีความ Tester friendly สูง มีเครื่องไม้เครื่องมือ (Library) ในสำหรับการทดสอบที่แตกต่างกัน เช่น api test, ui test หรือแม้กระทั่ง recorder เจ้าดังอย่าง Selenium ที่ใช้สำหรับบันทึกการเล่นเว็บเป็น robot framework script ได้
Mobile มีการเขียนโค้ดแบบ native framework และ cross-platform framework เช่นเดียวการเขียน Test บน native Android ใช้ Espresso ส่วน iOS ใช้ XCUITest ซึ่งคนที่คุ้นเคยที่สุดคงเป็น Developer มากกว่า Tester แน่นอน
เอาล่ะ เกริ่นมาเยอะแล้ว ซึ่งจากข้อมูลข้างต้น ผมจะพา Robot Framework ให้ไปต่อในโลกของ Mobile Application โดยอาศัยเครื่องมือที่ชื่อว่า.....
Appium เป็นเครื่องมือหนึ่งที่ทำงานเป็น server เพื่อเชื่อมโยงระหว่าง robot framework, mobile app และ device ผ่าน AppiumLibrary ทำให้เราสามารถใช้งานคำสั่ง robot script เพื่อให้เกิดเป็น Automated Test ได้
***
เนื่องจากบทความนี้จะมีการพูดถึง iOS และ Android ขอกำหนดสัญลักษณ์ประกอบเมื่อพูดถึง
iOS ==> 🍎 และ Android ==> 🤖
***
1. ติดตั้งเครื่องมือที่จำเป็น
1.1 ติดตั้ง DevTools แต่ละ platform
1.2 ติดตั้ง Robot framework และ AppiumLibrary
% pip3 install robotframework-appiumlibrary
1.3 ติดตั้ง Appium V2 (beta)
% npm install -g appium@next
ติดตั้ง appium driver สำหรับ UITest iOS 🍎
% appium driver install xcuitestติดตั้ง appium driver สำหรับ UITest Android 🤖
% appium driver install uiautomator2ติดตั้ง appium plugin สำหรับเชื่อมต่อ driver
% appium plugin install execute-driver
2. เตรียมของสำหรับการรันทดสอบ
------------------------------------------------------------
>> FastTrack <<
ถ้าใครพอใช้ github เป็น สามารถไปดู robot script, ตัวอย่าง project, archive file ได้เลยนะครับ
2.1 Archive ของ app
- ไฟล์ *.apk สำหรับ Android 🤖 (ได้จากการ Build APK บน Android Studio)
- ไฟล์ *.app สำหรับ iOS 🍎 (ได้จากการ archive บน Xcode)
2.2 เตรียม robot script (ตัวอย่างนี้ สำหรับ iOS 🍎)
# robot-android.robot *** Settings *** Library AppiumLibrary *** Variables *** ${URL} http://127.0.0.1:4723/wd/hub ${PLATFORM} iOS ${DEVICE_TARGET} 16.4 ${DEVICE_NAME} iPhone 14 Pro ${APP_LOCATION} /Users/mac/Library/Developer/Xcode/DerivedData/LordGiftApp-bxshrfvjsdgidwagmmysbrkbyusj/Build/Products/Debug-iphonesimulator/LordGiftApp.app ${BUNDLE_ID} th.in.lordgift.LordGiftApp *** Test Cases *** Open App Open Application ${URL} platformName=${PLATFORM} platformVersion=${DEVICE_TARGET} deviceName=${DEVICE_NAME} app=${APP_LOCATION} automationName=XCUITest bundleId=${BUNDLE_ID} # Try simple actions Click Element //XCUIElementTypeButton[@name="Click Me"] Input Text //XCUIElementTypeTextField Hello, robot is typing.. Sleep 2s Swipe By Percent 0 10 0 100 [Teardown] Close Application No Operation
- ใช้ plugin VSCode: https://marketplace.visualstudio.com/items?itemName=d-biehl.robotcode
- ใช้ record, inspect UI ผ่านเครื่องมือ Appium Inspector**
3. เริ่มต้นใช้งาน
3.1 start Appium Server
**รันแล้วไม่ต้องปิด Terminal เพราะตัวมันเป็น app. server% appium -pa /wd/hub --use-plugins execute-driver --allow-cors
3.2 Run robot script
% robot robot-appium-ios.robot
https://github.com/lordgift/robot-framework-ios 🍎 |
สิ่งที่เกิดขึ้น
- Simulator จะรันขึ้นมาโดยอัตโนมัติ (หรือจะเปิดไว้ก่อนก็ได้ เพื่อจะได้ไม่ช้า)
- จะมีการติดตั้ง mobile app ที่ทำหน้าที่เป็น driver ก่อน
- จะมีการติดตั้ง app ของเรา
- app เราจะถูกเรียกขึ้นมาเอง
- มีการเล่นตาม actions ที่เราเขียนไว้ใน robot script
ถึงตรงนี้ น่าจะพอเห็นคร่าวๆ แล้วว่าเราจะทำ automated test บน mobile ได้ยังไง ต้องลงอะไรบ้างถึงจะเทสได้ ขั้นตอนจะดูเยอะๆ หน่อย พยายามลดทอนขั้นตอนบางอย่าง แต่ถ้าจับทางได้แล้วก็น่าจะลุยต่อได้ไม่ยากครับ