Mobile App Testing – Phần 1 – Cách cài đặt app vào máy ảo android

Bước 1: Sau khi tạo xong máy ảo, ta cần chuyển app về chế độ developer để có thể cài app từ nguồn khác không phải google play. Ta cần vào Setting>About emulator device>Build number. Ta ấn khoảng 5 lần cho đến khi có thông báo “Developer options have been enabled”. Sau đó khởi động lại máy

Bước 2: Trước khi thực hiện bước này, cần đảm bảo là platform-tools folder được thêm vào path ở enviroment variables

 

anh1.png

Như vậy ta có thể chạy lệnh adb ở bất kỳ chỗ nào. Sau đó ta đến folder chưa file app, ấn Ctrl + Shift + Righ Click rồi chọn Open Command Line Window here. Sau đó ta chạy

adb kill-server

adb start-server

để restart adb server. Sau đó bật thiết bị ảo lên, gõ

adb devices

để kiểm tra xem thiết bị có được nhân ra không. Rồi ta gõ

adb install app.apk

để cài app lên thiết bị ảo (hãy đổi app.apk thành tên app của bạn, nhớ là có đuôi .apk). Như vậy ta đã hoàn thành xong việc cài đặt app.

Advertisements
Posted in Mobile Testing | Tagged , , , , | Leave a comment

Robotframework – phần 5: Data driven với robot framework dùng file excel

Trong trường hợp form có rất nhiều field và ta cần dùng nhiều combination of data, việc để data ở file test case sẽ rất bất tiện khi cần chỉnh sửa. Trong trường hợp này ta sẽ để data ở 1 file bên ngoài, ví dụ như file excel rồi đọc dữ liệu từ file này. Sau đây là demo

Bước 1: Để đọc được file excel, ta cần cài thư viện openpyxl bằng cách mở cmd và gõ

pip install openpyxl

Bước 2: Tạo 1 file test case giống như thế này tên là datadrivenxls.robot

*** Settings ***
Documentation  Demonstrate a need for data-driver testing
Library  Selenium2Library
Resource  ../resources/DataManager.robot
Resource  ../resources/TaskhubApp.robot
*** Variables ***

*** Test Cases ***
Data driver test case
    [Documentation]  Test case 1
    ${Data} =  DataManager.Get CSV Data  C:\\development\\robotproject\\data\\users.csv
    TaskhubApp.Login with invalid info  ${Data}

Case này có nghĩa là đọc dữ liệu file excel rồi sau đó đưa dữ liệu này vào keywork tự tạo là Login with invalid info để chạy. Bước tiếp theo ta sẽ tạo DataManager.Get CSV Data và TaskhubApp.Login with invalid info nhưng trước hết ta cần tạo 1 file excel tên là user.xlsx trong thư mục data

anh33.jpg

anh31.jpg

Bước 3: Trong project ta sẽ tạo 1 folder là resources (để chứa các pageobjects, các hàm chung, hàm xử lý dữ liệu). Sau đó ta sẽ 1 file là DataManager.robot để tự tạo 1 keywork cho riêng để lấy dữ liệu từ file excel như sau

*** Settings ***
Documentation  Use this layer to get data from external files
Library  ../CustomLibs/Excel.py

*** Keywords ***
Get Excel Data Into Dict
    [Arguments]  ${FilePath}
    ${Data} =  read excel data into dict  ${FilePath}
    [Return]  ${Data}

Bước tiếp theo là cần tạo 1 hàm python tên là read_excel_data_into_dict để đọc dữ liệu ở trong file Excel.py trong thư mục CustomLibs

anh32.jpg

def read_excel_data_into_dict(filename):
    data = []
    workbook = load_workbook(filename, read_only=True)
    first_sheet = workbook.sheetnames[0]
    worksheet = workbook[first_sheet]
    wksheetList = list(worksheet.rows)
    firstRow = []
    for rowIndex in range(0, wksheetList.__len__()):
        row = wksheetList[rowIndex]
        rowDict = {}
        for colIndex in range(0, len(row)):
            if rowIndex == 0:
                firstRow.append(row[colIndex].value)
            else:
                rowDict[firstRow[colIndex]] = row[colIndex].value
        if rowIndex > 0:
            data.append(rowDict)
    return data

Hàm này sẽ lấy tên các cột lưu vào firstRow, rồi dùng cái này để tạo các key cho array of nhiều dictionary. Ví dụ như file excel của bạn trông như thế này

anh31.jpg

thì dictionary được tạo ra sẽ như thế này

[{u’username’: u’steve1′, u’password’: u’tas’, u’error message’: u’AC9001: You have entered invalid username or password. Please try again.’}]

Giả sử thông tin này được lưu và biến data thì về sau ta có thể truy vấn data dễ dàng như là data[0][‘username’] để lấy ra username của cột đầu tiên.

Vậy là ta đã hoàn thành xong keywork DataManager.Get Excel Data Into Dict. Tiếp theo là đến TaskhubApp.Login with invalid info using dict.

Bước 4: Ở trong thư mục resources, ta hãy tạo một file tên là TaskhubApp.robot để lưu các hàm chung mà không liên quan đến datamanager. Ta cần tạo keyword như sau

*** Settings ***
Library  Selenium2Library
*** Keywords ***
Login with invalid info using dict
    [Arguments]  ${InvalidInfo}
    :FOR  ${LoginScenario}  IN  @{InvalidInfo}
    \   Open browser  http://172.18.0.25:9082/TH6  firefox
    \   input text  id=loginForm:username  ${LoginScenario['username']}
    \   input text  id=loginForm:password  ${LoginScenario['password']}
    \   click button  id=loginForm:loginButton
    \   page should contain  ${LoginScenario['error message']}

Bạn hãy thay id bằng id trên trang web của bạn. Giờ ta có thể chạy file test case được tạo ở bước 2 là datadrivenxls.robot

robot -d results tests/datadrivenxls.robot

 

 

 

 

 

 

 

Posted in Automation Test, Robot framework | Tagged , , , , , , | Leave a comment

Robotframework – phần 4: Chạy robotframework test trên android (2018)

Ở part 2, chúng ta đã cài đặt được robotframework và chạy được ví dụ đầu tiên. Hôm nay chúng ta sẽ cho nó chạy trên android. Các bước như sau:

Bước 1: Cài đặt jdk, cái này thì chúng ta có thể tìm được cách cài đặt

Bước 2: Mở cmd gõ

pip install robotframework-appiumlibrary

để cài đặt library appium cho robotframework, nhưng library này là chưa đủ. Để tương tác với các android devices, chúng ta cần cài đặt appium server.

Bước 3: Cài appium server

Ta cần tìm node.js rồi tải về. Sau đó mở cmd rồi gõ

npm install -g appium

sau đó

npm install wd

npm install -g appium-doctor

appium-doctor được cài để kiểm tra xem ta đã config đúng cho appium server chạy được chưa. Chúng ta sẽ quay lại với appium-doctor sau bước 4.

Bước 4: Cài android studio

Đây là link tải về https://developer.android.com/studio/index.html. Sau khi cài đặt xong ta mở phần config ra để lấy nơi để android sdk bằng cách click vào đây

anh19.jpg

rồi chọn SDK Manager. Đây là nơi để sdk, ta cần copy link này

anh20.jpg

Sau đó mở Enviroment Variables, tạo 1 system variable như sau

anh21.jpg

Nhớ thay variable value bằng link ta lấy được từ phần configure của android studio. Sau đó thêm các folder sau vào phần path

C:\Users\synergix-80\AppData\Local\Android\Sdk\tools;

C:\Users\synergix-80\AppData\Local\Android\Sdk\tools\bin;

C:\Users\synergix-80\AppData\Local\Android\Sdk\platform-tools;

anh22.jpg

Bây giờ ta quay trở lại với appium-doctor. Mở cmd rồi gõ

appium-doctor

Nhìn xuống cuối, nếu thấy dòng  ### Diagnostic completed, no fix needed. ### thì nghĩa là phần cài đặt cho appium server đã xong.

Bước 5: Mở cmd gõ appium. Appium server sẽ được khởi tạo và listen ở 0.0.0.0:4732. Gần xong rồi, chỉ cần tạo 1 android virtual device.

Bước 6: Sau khi tạo 1 project ở android studio, ta navigate tới Tools>AVD Manager

anh23.jpg

Rồi click Create Virtual Device, chọn một device definition theo sở thích, rồi ấn next. Ở select a system image, chọn 1 cái ở tab Recommened và ấn nút download rồi ấn next. Sau đó điền AVD name, rồi ấn finish, sau đó click vào đây để chạy device vừa tạo

anh24.jpg

AVD name của device này sẽ được dùng ở file test case của robotframework để chạy. Ta thử mở cmd rồi gõ

emulator -list-avds

Ta sẽ thấy tên device vừa tạo được list ra.

Bước 7: Cài python six package và chạy ví dụ

Mở cmd gõ

pip install six

Sau khi cài xong, ta mở pycharm lên và gõ test case như sau

*** Settings ***
Library  AppiumLibrary  15
Documentation  Suite name

*** Variables ***

*** Test Cases ***
User should be required to sign in when checking out
    [Documentation]  Test case info
    [Tags]  Smoke
    Open Application  http://localhost:4723/wd/hub  platformName=Android  platformVersion=7.0  deviceName=Nexus5XAPI24  app=com.android.chrome  browserName=Chrome
    go to url  http://www.google.com.vn

Các thông tin platformVersion=7.0 deviceName=Nexus5XAPI24 cần được theo đổi theo tên device và phiên bản android của device

anh26.jpg

Cuối cùng gõ lệnh sau ở terminal.

robot -d results tests/google.robot

anh25.jpg

We are done here.

 

Posted in Robot framework | Tagged , , , , , | Leave a comment

Cách trở thành automation tester (automation engineer)

Wow thực sự hôm nay mình đã tìm thấy một webinar chia sẻ rất hay của một chị đang làm senior automation engineer cho Twitter. Cũng may là chị ấy nói khá rõ, không quá nhanh nên mình sẽ update English subtitle dần. Đây là link xem webinar https://register.gotowebinar.com/register/1079399747834113027

Posted in Automation Test | Tagged , | Leave a comment

Robot framework – phần 2: Cài đặt robot framework và chạy ví dụ đầu tiên trên pycharm

Với cách cài đặt này, người dùng sẽ phải một IDE của python, không còn là eclipse mà mình hay dùng. Tuy nhiên cài đặt chạy code bằng cách này mình thấy nhẹ nhàng hơn rất nhiều. Dưới đây là các bước chi tiết:

Bước 1: Đầu tiên là cài python, phiên bản 2.7.14. Các bạn chú ý, option cuối là Add python.exe to path phải được chọn thành Will be installed on hard driver. Sau đó các bạn tải geckodriver về để có thể chạy test trên phiên bản mới nhất. Bạn cần add folder bạn để file geckodriver.exe vào path.

Bước 2: Mở cmd, gõ

pip install robotframework-selenium2library==1.8.0

Ở đây mình dùng một phiên bản cũ của selenium2library vì nó tương thích với 1 plugin tên là IntelliBot tý nữa mình sẽ cài. Tuy đây là bản cũ nhưng nó vẫn có thể làm việc được với phiên bản firefox mới nhất cho đến ngày 15/4/2018. Phiên bản này được lựa chọn dựa trên một khóa học trên udemy tên là Robot Framework Test Automation – Level 1 ( Selenium ). Các bạn nên mua khóa học này nếu muốn tìm hiểu nghiêm túc về robotframework.

Bước 3. Bước này mình sẽ cài pycharm, chỉ đơn giản là search google rồi tải bản 2017.2.6 về theo link này https://www.jetbrains.com/pycharm/download/previous.html. Sau khi cài đặt xong, ở màn hình mở đầu, các bạn chọn Configuration>Plugin>Browser repositories

 

anh12.jpg

Sau đó search IntelliBot rồi cài đặt. Các bạn nhớ restart pycharm sau khi cài xong.anh13.jpg

Bước 4: Vậy là cài đặt đã xong, giờ các bạn vào File>New Project, chọn tên cho project của mình. Sau đó tạo 1 file đuôi là .robot với nội dung như dưới đây:

anh13.jpg

Bước 5: Các bạn di chuột tới đây rồi chọn Terminal để chạy lệnh

anh14.jpg

Các bạn gõ lệnh

robot -d results tests/google.robot

Lệnh này có nghĩa là chạy các test case trong file google.robot rồi để report về kết quả chạy test case trong thư mục results.

Vậy là xong, vậy là chúng ta đã biết hai cách cài đặt và chạy test case của robot. Cách này đơn giản hơn nhiều cách trước.

 

Posted in Automation Test, Selenium | Tagged , , | Leave a comment

Cách drag drop và hover trên trang web với selenium

Trong selenium có một class tên là Actions sẽ giúp ta có thể drag drop và hover lên web element. Đoạn code của nó như sau

Actions myActs = new Actions(driver);

WebElement from = driver.findElement(By.byXpath(“// enter xpath here”)):

WebElement to = driver.findElement(By.byXpath(“// enter xpath here”));

myActs.dragAndDrop(from, to).perform();

Còn đây là đoạn code dùng để thực hiện thao tác hover

Actions acts = new Actions(driver);

WebElement elementToHover = driver.findElement(By.byXpath(“// enter xpath here”));

acts.moveToElement(elementToHover).build().perform();

Posted in Selenium | Tagged , , | Leave a comment

Robot framework – phần 1: Cài đặt robot framework và chạy ví dụ đầu tiên trên eclipse

Robot framework, một framework được đánh giá là dễ sử dụng với một người có ít hiểu biết về kỹ thuật. Sau khi chạy được ví dụ đầu tiên dùng framework này, tôi cảm thấy nó khá đơn giản đúng như lời đồn đại. Nó sử dụng một kiểu ngôn ngữ riêng kiểu như code để tạo ra các test cases. Tuy nhiên có nhiều người đưa ra ý kiến rằng việc sử dụng robot framework sẽ không tốt cho các dự án lớn khi mà code của nó khó hiểu và khó maintain. Họ khuyên dùng chuyển sang dùng framework khác theo hướng BDD. Hiện tại tôi cũng đang dùng một framework như vậy đó là Serenity BDD. Nhưng có một điều kỳ lạ là tôi thấy có 3, 4 công ty họ lại đều sử dụng robot framework. Tôi tự hỏi liệu những lời đồn đại là có thật, có thể framework này không tồi tệ đến như vậy. Vậy nên tôi sẽ thử tìm hiểu về framework này và cảm nhận theo cách riêng của mình. Hôm nay tôi sẽ thực hiện bước cơ bản đầu tiên đó là cài đặt và chạy một ví dụ đơn giản.

Cài đặt

B1) Cài đặt eclipse, đảm bảo bạn đã cài java.

B2) Tạo một maven project và cài đặt các thư việc để dùng robot framework

Đầu tiên cần tạo một maven project, sau khi ấn next next thì chọn cái artifact id là quickstart rồi ấn next

anh1.jpg

Bạn có thể nhập gì tùy thích cho mấy cái group id và artifact rồi ấn Finish

anh2.jpg

Ok, giờ thì cần chỉnh sửa file pom để eclipse lấy các thư việc mình cần về dùng.  Chúng ta cần robot framework cùng SeleniumLibrary ở phần dependency

<dependency>

<groupId>org.robotframework</groupId>

<artifactId>robotframework</artifactId>

<version>3.0.2</version>

</dependency>

<dependency>

<groupId>com.github.hi-fi</groupId>

<artifactId>robotframework-seleniumlibrary</artifactId>

<version>3.9.1.0</version>

<scope>test</scope>

</dependency>

Cái seleniumlibrary sẽ cung cấp cho chúng ta các keywork để viết test case.

Tiếp sau đó là thêm cái này để chạy test

<build>

<plugins>

<plugin>

<groupId>org.robotframework</groupId>

<artifactId>robotframework-maven-plugin</artifactId>

<version>1.4.7</version>

<executions> <execution>

<goals>

<goal>run</goal>

</goals>

</execution> </executions>

</plugin>
</plugins>

</build>

Tóm lại là file pom sẽ như thế này

File pom

Có một điểm rất cần lưu ý là version ghi trong file pom nên là version ổn định và mới nhất. Khi dùng mới nhất, mình sẽ có thể có nhiều cơ hội thành công hơn khi chạy trên phiên bản firefox mới nhất. Sau khi ấn save, eclipse sẽ tải các thư viện cần thiết về từ maven repository.

Giờ ta cần cho eclipse biết là ta sẽ dùng jdk thay vì jre cho project vừa tạo, nếu không lúc chạy test case sẽ có lỗi. Ta cần vào window>Preferences>Java, rồi thêm jdk vào như này

anh5.jpg

Rồi giờ vào project build path để thay jre bằng jdk

anh6.jpg

Ok, done, giờ là lúc tạo file test case.

B3) Tạo 1 file Tc1.txt ở thư mục src/test

anh3.jpg

Giờ cần nhập nội dung cho test case như sau

*** Settings ****** Settings ***

Documentation  A resource file containing the application specific keywords

Library SeleniumLibrary
*** Test Cases ***

Check out joe colantonio dot com

Open Browser  https://www.joecolantonio.com  ff

Close Browser

Có một vấn đề khiến tôi mất gần 1 tiếng để sửa đó là khi chạy robot framework không phân tích được file của mình và báo lỗi unsupport char np0 gì đó, hóa ra đó là do ở đây phải là 2 dấu cách

anh4.jpg

Và cái lỗi np0 gì đó thì cần vào đây để cài đặt vm argument để robot framework biết là file test case của mình có định dạng là utf8 và hãy phân tích đi.

Giờ ta vào Run as > Run Configuration, right click vào Maven Build chọn new, rồi nhập

anh10.jpg

2 cái option là Resolve Workspace artifacts và Update Snapshots để eclipse auto build mấy thư viện project cần rồi add vào project của mình.

Tiếp theo là thêm cái này vào VM arguments để robot framework phân tích được file test case của mình.

anh11.jpg

Và giờ chúng ta ấn run là được. Ngoài ra còn có cách chạy khác bằng lệnh maven qua console là bạn mở thư mục project ra, mở command line ở đây và chạy

mvn robotframework:run

Nếu muốn dùng gecko driver cho robot framework thì tải geckodriver về rồi để ở đâu đó, như ở đây là tôi để ở trong thư mục của project rồi thêm argument này vào

-Dwebdriver.gecko.driver=”geckodriver.exe”

Nếu để chỗ khác thì thay cái geckodriver.exe bằng đường dẫn của của chỗ đó.

Thanks,

Bài tiếp tôi sẽ cài đặt robot framework IDE là RED.

Posted in Automation Test, Robot framework | Tagged , , , , | Leave a comment