從零開始做一個Android自動化


 

移動端自動化簡單說就是,寫好操作app的程序,運行起來,自動執行程序和測試用例,輸出執行結果,結果正確,測試通過。

  1. 自動化可以方便地完成安裝/卸載、啟動/運行、UI適配等環節,節省時間;

  2. 同一測試腳本可以適用於幾乎所有Android機型,可以快速完成兼容性測試;

  3. 可以模擬數據准備,通過一些重復的操作產生簡單的數據;

  4. 可以保存截圖、輸出log、輸出錯誤信息;

  5. 可以長時間運行並保證數據的准確性,避免人為產生的錯誤;

  6. 可擴展性強

  7. ……

常見的移動自動化測試框架有: Appium、Colabash、MonkeyTalk、Robolectric、App Grader. 
網上有更多的自動化測試框架的介紹,(https://www.cnblogs.com/fqfanqi/p/6139435.html)

 

why Appium

  • 同時支持Android、iOS、混合app

  • 支持多語言,PHP 、Python、Ruby、C#、Clojure、Java、Objective-c、JavaScript、以及Perl

  • 能與大多數主流開發測試工具集成,可是使用任何測試框架驅動Appium

  • 不會要求測試人員修改或者重新編譯待測應用

  • 有活躍社區可交流

Appium的移動自動化測試路線

一般的web自動化測試路線是:

編程語音基礎 → 測試框架 → Web Driver API → 開發自動化測試項目

基於Appium移動端自動化測試的線路是:

編程語言基礎 → 測試框架 → Android/iOS開發、測試基礎→ Appium API → 開發移動自動化測試項目

Appium測試環境的搭建是比較繁瑣的,不少開始移動端自動化的初學者一般都是死在搭建環境的沙灘上了,本文從搭建環境到簡單示例,講解一個完整的Android移動端自動化的全過程。

Appium的環境搭建 — Appium + Android + Java

前置工作

Java - Java SDK 
Android - Android SDK 
Java IDE - Intellij IDEA 
Appium : Appium

環境變量配置

  1. 配置JDK環境變量,這個搜狗一下就有具體步驟,不詳細講解了

  2. 配置Android SDK路徑為ANDROID_HOME變量並在Path中添加%ANDROID_HOME%\tools和%ANDROID_HOME%\platform-tools

  3. 配置Appium安裝文件夾下的以下路徑到path中(如安裝在C:\Program Files (x86)\Appium): C:\Program Files (x86)\Appium和C:\Program Files (x86)\Appium\node_modules.bin

綜上,需要配置Java環境變量,此外需要配置ANDROID_HOME、tools、platform-tools三個變量,Appium需要配置Appium和Appium\node_modules\.bin兩個變量

驗證環境

驗證Java JDK安裝和設置,在CMD中輸入如下命令: 
Java -version 
之后展示Java版本信息就正確設置完畢了。 
驗證appium是否安裝配置完成並且環境變量配置成功,打開cmd,輸入: 
appium-doctor 
看到有幾列✔且最后展示“All Check were Successful”字樣時,代表Appium就配置安裝好了。 
Android SDK配置完畢后,可以試用adb命令,無異常情況則代表配置成功。

編寫Android自動化測試

不知道小伙伴們有沒有發現,前置工作中有個軟件還一直沒有使用,它就是Intellij IDEA,現在就是用到它的時候了。 
首先需要用Intellij創建一個maven項目,為啥創建maven項目呢,因為使用maven可以減少了工具包下載、配置、安裝等一些列過程,具體maven項目的創建可以自行搜狗一下。創建完畢后需要在pox.xml中添加以下依賴:

<dependencies>

<dependency>

<groupId>org.seleniumhq.selenium</groupId>

<artifactId>selenium-java</artifactId>

<version>2.42.1</version>

</dependency>

<dependency>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-surefire-plugin</artifactId>

<version>2.12.4</version>

</dependency>

<dependency>

<groupId>org.testng</groupId>

<artifactId>testng</artifactId>

<version>6.8.8</version>

</dependency>

<dependency>

<groupId>io.appium</groupId>

<artifactId>java-client</artifactId>

<version>3.2.0</version>

</dependency>

<dependency>

<groupId>com.google.android</groupId>

<artifactId>android</artifactId>

<version>4.1.1.4</version>

</dependency>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.12</version>

</dependency>

</dependencies>

之后保存好文件后,Intellij會自動加載進去這些依賴的jar包。 
之后就可以進行一個簡單的Android自動化腳本的編寫和測試了,下面附上對原生Android系統中計算器app的測試代碼。 
Ps. 以下代碼僅限於用在Android原生系統的機型使用,因為其中寫死了appPackage和appActivity且@Test中寫死了按鈕的id,另外需要大家根據手機版本修改platformVersion屬性值

import io.appium.java_client.AppiumDriver;

import io.appium.java_client.android.AndroidDriver;

import org.junit.After;

import org.junit.Before;

import org.junit.Test;

import org.openqa.selenium.By;

import org.openqa.selenium.remote.DesiredCapabilities;

 

import java.net.URL;

 

public class demo1 {

 

private AppiumDriver driver;

 

@Before

public void calc() throws Exception {

DesiredCapabilities capabilities = new DesiredCapabilities();

capabilities.setCapability("clearSystemFiles","True");

capabilities.setCapability("androidDeviceReadyTimeout",5);

capabilities.setCapability("deviceName","hammerhead");

capabilities.setCapability("platformVersion","5.0");

capabilities.setCapability("platformName","Android");

capabilities.setCapability("appPackage", "com.android.calculator2");

capabilities.setCapability("appActivity", ".Calculator");

driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"),capabilities);

}

 

@After

public void tearDown() throws Exception {

driver.quit();

}

 

@Test

public void add() {

driver.findElement(By.id("com.android.calculator2:id/digit_1")).click();

driver.findElement(By.id("com.android.calculator2:id/op_add")).click();

driver.findElement(By.id("com.android.calculator2:id/digit_2")).click();

driver.findElement(By.id("com.android.calculator2:id/eq")).click();

}

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM