移動端自動化簡單說就是,寫好操作app的程序,運行起來,自動執行程序和測試用例,輸出執行結果,結果正確,測試通過。
-
自動化可以方便地完成安裝/卸載、啟動/運行、UI適配等環節,節省時間;
-
同一測試腳本可以適用於幾乎所有Android機型,可以快速完成兼容性測試;
-
可以模擬數據准備,通過一些重復的操作產生簡單的數據;
-
可以保存截圖、輸出log、輸出錯誤信息;
-
可以長時間運行並保證數據的准確性,避免人為產生的錯誤;
-
可擴展性強
-
……
常見的移動自動化測試框架有: 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
環境變量配置
-
配置JDK環境變量,這個搜狗一下就有具體步驟,不詳細講解了
-
配置Android SDK路徑為ANDROID_HOME變量並在Path中添加%ANDROID_HOME%\tools和%ANDROID_HOME%\platform-tools
-
配置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();
}
}