มาลอง Automated Test Mobile on macOS (Robot Framework)
บทความนี้จะพูดถึงการเทส moblie เป็นหลัก พอดีว่ามีโอกาสได้ทำ Automated Test ใน Mac mini ซึ่งเดิมที่แพรใช้ Windows ในการทำ Automated Test แต่การใช้ Windows ในการเทสก็มีข้อจำกัดในการเทสอยู่บ้าง ซึ่งข้อจำกัดที่กล่าวมานั้นคือการเทส mobile ระบบ iOS
ทำไมถึง Test Mobile iOS ใน Windows ไม่ได้ ?
>> การทดสอบ Mobile ระบบ iOS จำเป็นต้องใช้โปรแกรมเฉพาะของมันเนื่องจากโปรแกรมบางตัวสามารถรันบนระบบปฎิบัติการ macOS
สิ่งที่ทุกคนต้องเตรียมให้พร้อมก่อนการ Automated Test (Mobile) มีดังนี้
- Visual Studio Code (แล้วแต่ความถนัดของผู้ใช้)
- Android Studio
- Xcode
- Appium (How to Install Appium Server)
- Python (OSX — Nothing to be done, python is present by default.)
- Robot Framework
pip install robotframework
easy_install robotframework - AppiumLibrary
pip install robotframework-appiumlibrary
** Install (or upgrade) the latest Selenium2Library 3 release ** - AppiumLibrary
pip install robotframework-appiumlibrary
- IOSLibrary
pip install — upgrade robotframework-ioslibrary
- AndriodLibrary
pip install — upgrade robotframework-androidlibrary
เมื่อติดตั้งทุกอย่างเรียบร้อยแล้วก็จะมาถึงจุดที่ทุกคนรอค่อยนั้นคือการ Automated Test Mobile แต่ Platform ของ Mobile นั้นมีอยู่ 2 Platform นั้นคือ Android และ iOS โดยแพรจะเริ่มจาก…
Android
ต้องบอกก่อนเลยว่า ก่อนที่จะทำการทดสอบ Adroid จะมีการ Set Path ที่ยุ่งยากนิดหน่อยแต่ไม่ยากเกินไปสำหรับมือใหม่
How to Setting Path Android_Home and Java_Home
- ใช้คำสั่ง
sudo nano ~/.bash_profile
จากนั้นใสรหัส Password
- ทำการ Set ตำแหน่งของ Android_Home และ Java_Home
export PATH=$ANDROID_HOME/platform-tools:$PATH
export PATH=$ANDROID_HOME/tools:$PATH
export ANDROID_HOME=/Users/Shared/Android/sdk
export JAVA_HOME=$(/usr/libexec/java_home)
export PATH=$JAVA_HOME/bin:$PATH
เมื่อทำการ Set Path Android_Home และ Java_Home เสร็จแล้วขั้นตอนต่อมาคือการ เปิด Emulator ซึ่งมีวิธีดังนี้
List Emulator and Open Emulator
- List Emulator
cd ~/Android/Sdk/tools/bin && ./avdmanager list avd
Ex. nextzycnxs-mini:Shared nextzycnx$ cd Android/Sdk/tools/bin && ./avdmanager list avd
- Open Emulator
cd ~/Android/Sdk/tools && ./emulator -avd NAME_OF_YOUR_DEVICE
Ex. nextzycnxs-mini:Shared nextzycnx$ cd Android/Sdk/tools && ./emulator –avd Nexus_5X_API_26
*** หมายเหตุ *** ในการใช้คำสั่งเพื่อ แสดง Emulator ทั้งหมด หรือคำสั่งเปิด Emulator ต้องตรวจตำแหน่งของ Directory ว่าอยู่ตำแหน่งเดียวกันแล้ว
คำสั่งในการเปิด Application แบบ Automated
- เตรียม test script (android)
โดยสิ่งที่สำคัญให้ใส่ค่า Capabilities ให้ถูกต้องและครบถ้วน สามารถดูได้จาก AppiumLibrary ที่ Keyword ชื่อ Open Application
จะรู้ได้อย่างไรว่าต้องกำหนดค่าอย่างไร
${REMOTE_URL} http://localhost:4723/wd/hub # URL to appium server
${PLATFORM_NAME} Android
${PLATFORM_VERSION} 8.0.0
${DEVICE_NAME} Nexus_5X_API_26
${APP_PACKAGE} com.xxx.xxxx.xxxxx.xxxx
${APP_ACTIVITY} com.xxx.xxx.xxxx.xxxxx.xxxx.xxxxxActivity
${REMOTE_URL} คือ URL ของ Appium server ใช้ตามของ Library ได้เลย
${PLATFORM_NAME} คือ Platform ของโทรศัพท์ซึ่งถ้าหากเป็น Android ให้ใส่ค่าเป็น Android ได้เลย
${DEVICE_NAME} คือ ชื่อของ Emulator ที่จะเรียกใช้งาน
${APP_PACKAGE} คือ ชื่อแพ็คเก็จของแอพที่จะใช้ (อาจจะต้องถาม Programmer หรือ สามารถดูเองได้จาก Android Studio)
${APP_ACTIVITY} คือ ชื่อ Activity ของแอพที่จะใช้ (อาจจะต้องถาม Programmer หรือ สามารถดูเองได้จาก Android Studio)
วิธีดูชื่อ Package และ Activity ใน Android Studio แบบพื้นฐาน
>> Project > Project Name > app > src > main > AndroidManifest.xml
จะเจอไฟล์ที่ชื่อ AndroidManifest.xml เราสามารถเข้าไปดูข้อมูล Package และ Activity ได้ แต่บางโปรเจคอาจจะมีความซับซ้อนหากไม่ทราบจริงๆ ถามจาก Programmer จะดีที่สุด
2. รันคำสั่ง Robot ซึ่งสามารถใช้ได้ 2 คำสั่งคือ
pybot File_Name.robot
ตัวอย่างเช่น pybot AndroidTest.robot (เนื่องจากชื่อไฟล์ชื่อ AndroidTest.robot)robot File_Name.robot
ตัวอย่างเช่น robot AndroidTest.robot (เนื่องจากชื่อไฟล์ชื่อ AndroidTest.robot)
*** หมายเหตุ ***หากจะใช้คำสั่ง robot File_Name.robot python ต้องเป็น version 3 ขึ้นไป และต้องตรวจตำแหน่งของ Directory ว่าอยู่ตำแหน่งที่อยู่เดียวกับไฟล์ Test Script ที่จะทดสอบด้วยหรือไม่
Terminal ที่ไม่สามารถปิดได้คือ Appium และ Emulator เพราะถ้าปิด มันจะถือเป็นการปิดตัว Emulator และ ปิดการทำงานของ Appium
iOS
ส่วนของ iOS จะไม่มีความยุ่งยากเหมือนของ Android ที่ต้อง Set Path นู้นนี่นั้น แต่ความยากมันอยู่ตรงที่เราต้องมีเครื่อง Mac (ราคามันก็จะน่ารักประมาณหนึ่ง) เพื่อเอาไว้เปิดโปรแกรม Xcode ซึ่งโปรแกรม Xcode จะมีให้ติดตั้งได้เฉพาะระบบปฎิบัติการ macOS เท่านั้น และ Simulator ของ iOS นั้นไม่มีตัวเสริมเหมือน Android ที่หากไม่ลง Android Studio ก็จะมี Genymotion ทำหน้าที่เป็นเป็น Emulator แทน ดังนั้นเราจึงจำเป็นต้องลงโปรแกรม Xcode เพื่อจะใช้ Simulator ได้
คำสั่งในการเปิด Application แบบ Automated
- เตรียม test script (iOS)
โดยสิ่งที่สำคัญให้ใส่ค่า Capabilities ให้ถูกต้องและครบถ้วน สามารถดูได้จาก AppiumLibrary ที่ Keyword ชื่อ Open Application
จะรู้ได้อย่างไรว่าต้องกำหนดค่าอย่างไร
·${REMOTE_URL} http://localhost:4723/wd/hub # URL to appium server
·${PLATFORM_NAME} iOS
·${PLATFORM_VERSION} 11.0
·${DEVICE_NAME} iPhone Simulator
·${APP_LOCATION} /Users/nextzycnx/Library/Developer/Xcode/DerivedData/HelloWorld-gqpazzdeiwoyuvffapoiivcfsjhr/Build/Products/Debug-iphonesimulator/HelloWorld.app
·${BUNDLE_ID} com.nextzy.HelloWorld
${REMOTE_URL} คือ URL ของ Appium server ใช้ตามของ Library ได้เลย
${PLATFORM_NAME} คือ Platform ของโทรศัพท์ซึ่งถ้าหากเป็น iOS ให้ใส่ค่าเป็น iOS ได้เลย
${PLATFORM_VERSION} คือ เวอร์ชั่นของ iOS ที่ต้องการใช้
${DEVICE_NAME} คือ ชื่อของ Simulator ที่จะเรียกใช้งาน
${APP_PACKAGE} คือ ชื่อแพ็คเก็จของแอพที่จะใช้ (อาจจะต้องถาม Programmer หรือ สามารถดูเองได้จาก Xcode)
${BUNDLE_ID} คือ ชื่อ Bundle ของแอพที่จะใช้ (อาจจะต้องถาม Programmer หรือ สามารถดูเองได้จาก Xcode)
- วิธีดูชื่อ Location และ Bundle ใน Xcode แบบพื้นฐาน
>> Bundle > คลิกที่ ชื่อโปรเจ็คซึ่งในตัวอย่างคือ HelloWorld
>> Location > คลิกที่ Xcode > Preferences…
2. สามารถใช้คำสั่งรัน Robot ได้โดยไม่จำเป็นต้องเปิด Simulator ก่อน ซึ่งสามารถรันได้สองคำสั่ง
pybot File_Name.robot
ตัวอย่างเช่น pybot iOSTest.robot (เนื่องจากชื่อไฟล์ชื่อ iOSTest.robot)robot File_Name.robot
ตัวอย่างเช่น robot iOSTest.robot (เนื่องจากชื่อไฟล์ชื่อ iOSTest.robot)
*** หมายเหตุ *** หากจะใช้คำสั่ง robot File_Name.robot python ต้องเป็น version 3 ขึ้นไป และต้องตรวจตำแหน่งของ Directory ว่าอยู่ตำแหน่งที่อยู่เดียวกับไฟล์ Test Script ที่จะทดสอบด้วยหรือไม่
Terminal ที่ไม่สามารปิดได้คือ Appium เหตุผลก็คือหากปิด Appium จะหยุดการทำงาน และ Appium คือปัจจัยหลักในการรัน Automated
ยังไงก็ขอฝากบทความนี้ไว้ หากมีโอกาสได้ลองอะไรใหม่ๆ แพรจะมาแชร์ให้อีกนะค่ะ