ทดสอบ 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

    • ดาวน์โหลด Android Studio ที่นี่ สำหรับ Android 🤖
    • ดาวน์โหลด Xcode ที่นี่ สำหรับ iOS 🍎
    • ดาวน์โหลด NodeJS ที่นี่ เพื่อใช้ npm (หรือถ้าติดตั้งผ่าน homebrew เป็นก็ซัดได้เลย)


        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


        เห็นโค้ดแล้วอย่าเพิ่งตกใจ ในส่วนแรกๆ จะเป็น configuration ที่ระบุรายละเอียดต่างๆ เกี่ยวกับเครื่องและแอปฯ ที่จะส่งเข้าทดสอบ โดยจุดที่ต้องโฟกัสหลักๆ คือตรง Test Cases ที่เราจะต้องใส่ actions ต่างๆ เข้าไป โดยวิธีการได้มาซึ่ง script ส่วนนี้ก็มี 2 ท่า คือ

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 ได้ยังไง ต้องลงอะไรบ้างถึงจะเทสได้ ขั้นตอนจะดูเยอะๆ หน่อย พยายามลดทอนขั้นตอนบางอย่าง แต่ถ้าจับทางได้แล้วก็น่าจะลุยต่อได้ไม่ยากครับ


Facebook Comment

Recent Posts

Popular post of 7 days

Portal คืออะไรกันนะ???

มาตรฐานการตั้งชื่อตัวแปร (Naming Convention)

[Java] ความแตกต่างระหว่าง Overloading กับ Overriding

Popular

[Java] Java 8 DateTime ใหม่ ไฉไลกว่าเดิม

Portal คืออะไรกันนะ???

มาตรฐานการตั้งชื่อตัวแปร (Naming Convention)

เรื่องของ ++i กับ i++

[Java] ความแตกต่างระหว่าง Overloading กับ Overriding

ลืมรหัสปลดล็อค Android เข้าเครื่องไม่ได้ มีทางออกครับ

[Java] Java Static Variable และ Static Method

Push Notification คืออะไร มีวิธีทำอย่างไร (No Code)

พิมพ์ซองจากรายชื่อ excel ด้วยวิธี Mail Merge

[Java] การเชื่อมต่อ database ผ่าน Datasource