手機自動化測試從頭學 –環境安裝篇
這篇文章主要說明手機自動化測試的工具準備與環境安裝。
這個例子中我們會逐步的完成環境的安裝與設定,並且寫一個小程式自動啟動指定的 App。
環境以 Windows/Android 為例子說明。主要使用的手機自動化測試架構為 “Appium”。
(Mac/iOS 可以參考這篇手機自動化測試 Appium 於 Mac上的環境設定)
硬體環境需求建議
CPU 建議
最好為 Intel 支援Virtual Technology。因為可以讓 android Emulator 的執行更順暢。
記憶體建議 8G:
主要是影響 Android emulator 的執行速度。記憶體越大 Android emulator執行的會越順利。
磁碟空間需求約 20 G
- C:\Users\Administrator\AppData\Local\Temp\AndroidEmulator => 2G
- Android SDK / API 21 / Android 5.0.1 => 13G
- Appium => 350 MB
- Eclipse => 450 MB
- Selenium/Appium JAR => 45 MB
測試情境
我們除了環境安裝完畢之後,最後寫一個小的測試程式 Java Junit
- 1. 自動啟動 Android Emulator 後
- 2. 安裝指定 App
- 3. 啟動該 app
- 4. 程式自動點擊開始畫面按鈕
環境設定與安裝主要分為三大部分。
一部分是安裝 Eclipse 的環境,一部分是Android Emulator,最後一部分就是 Appium。
又分為十大步驟,安裝與設定。
Step 1: 安裝 Java
筆者建議最快的方式是透過 Chocolatey,直接在 Command Console 下執行下列兩列指令
這個指令會安裝 Chocolatey
@powershell -NoProfile -ExecutionPolicy Bypass -Command “iex ((new-object net.webclient).DownloadString(‘https://chocolatey.org/install.ps1’))” && SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin |
這個指令會直接自動下載JDK並且安裝 JDK
choco install jdk8 |
Step 2: 設定環境變數
主要設定Java 與 Android SDK 的環境變數,範例如下:
JAVA_HOME = C:\Program Files\Java\jdk1.8.0_45 | ||
ANDROID_HOME= D:\AndroidSDK\sdk | ||
PATH= D:\AndroidSDK\sdk\tools; D:\AndroidSDK\sdk\platform-tools;C:\Program Files\Java\jdk1.8.0_45\bin; |
(假設AndroidSDK 存放位置為 D:\AndroidSDK\sdk )
Step 3: 下載 Eclipse IDE for Java EE Developer
http://www.eclipse.org/downloads/
該下載檔案是一個壓縮包。
下載完後解壓縮後執行 eclipse.exe 即可。
Step 3.1: 設定 Selenium Javadoc
為了讓程式撰寫時可以有即時的線上說明每一個 API的使用,我們需要設定 Selenium Javadoc。
1. 找到 Selenium-Java-2.xx.jar 後,右鍵 properties
2. Java Source Attachment
3. External location > “Selenium-Java-2.xx-srcs.jar”
如下圖所示:
Step 4. 安裝 ADT Plugin
啟動 Eclipse.exe 之後,透過下列參考步驟安裝ADT plugin
http://developer.android.com/sdk/installing/installing-adt.html
Help > Install New Software.
Name: ADT Plugin Location: https://dl-ssl.google.com/android/eclipse/
Step 4.5. 下載安裝 Android SDK
筆者下載並且安裝在 D:\AndroidSDK\
https://developer.android.com/sdk/index.html#Other
Step 4.6 安裝 TestNG
Help> Eclipse Marketplace > “TestNG” > Install
Step 5. Eclipse 設定 Android, AVD Manager
Windows > Perspective > Customize Perspective的視窗中做下列設定
Action Set Availability > Android SDK and AVD Manager
Tool Bar Visibility > Android SDK and AVD Manager
完成後應該會在 Eclipse 的TooBar 看到 AVD and Android SDK Manager
設定Android SDK 位置: Window > Preferences
例如,筆者設定將 android SDK 存放位置為 D:\AndroidSDK\sdk
Step 6: 設定 Virtual Device
在Eclipse 的 ToolBar 中啟動 “Android Virtual Device Manager”
例如筆者設定一個 Virtual Device,AVD Name = “3”
到目前為止我們大致完成 Android與 Eclipse的環境安裝與設定
接著我們要設定與安裝 Appium
Step 6.1: 安裝 Emulator 加速套件
Windows > Android SDK Manager
主要需要下載的是下列兩個
- “Intel x86 Atom System Images” (根據所需要的 API版本下載對應的 Intel x86 Atom)
- “Intel Hardware Accelerated Execution Manager”
這裡特別要強調的是,透過 android SDK Manager 下載只是下載並不會自動安裝! 下載之後還必須手動安裝才會生效。
這個安裝檔案通常會放在下列路徑。
..\extras\intel\Hardware_Accelerated_Execution_Manager\intelhaxm-android.exe
Step 7: 安裝 Dotnet framework 4.5
由於 Windows Appium需要 Dotnet framework 4.5
如果之前的步驟以將安裝好 Chocolatey的話,那麼直接執行下列步驟及可
choco install dotnet4.5 |
或是也可以到微軟網站下載安裝
https://www.microsoft.com/en-in/download/details.aspx?id=30653
Step 8: 安裝 Appium Server
http://appium.io/downloads.html
選擇相對應的平台與最新的版本安裝
以 Windows為例,筆者寫這篇文章時 2015.8,最新版本為Appium 1.4
https://bitbucket.org/appium/appium.app/downloads/AppiumForWindows_1_4_0_0.zip
下載之後,解壓縮為一個 Installer。按照畫面步驟 Install Next Next…
設定 appium 啟動之前設定好的 “3”的Virtual Device,並且啟動 Appium
Step 9: 下載相關的 JAR 檔案
Selenium JAR 檔案可以在這裡下載 http://www.seleniumhq.org/download/
Java | 2.47.1 | 2015-07-29 | Download |
另外,Appium JAR 檔案可以在這裡下載
http://mvnrepository.com/artifact/io.appium/java-client
舉例來說,筆者下載 Java-client-3.1.0的版本。因為更新速度很快,建議可以更新最新版。
http://central.maven.org/maven2/io/appium/java-client/3.1.0/java-client-3.1.0.jar
最後將所有的 Selenium JAR 與 Appium JAR 檔案加入。
Project > Right Click properties > Java Build Path > Libraries > Add External JARS
Step 9: 寫程式
New 一個 Java Project,輸入程式碼如下
[pastacode lang=”java” message=”” highlight=”” provider=”manual”]
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.remote.MobileCapabilityType;
import io.appium.java_client.remote.MobilePlatform;
import org.junit.Test;
import org.openqa.selenium.remote.DesiredCapabilities;
public class myAppiumTest {
@Test
public void test() throws MalformedURLException {
File appDir = new File("D:\\AndroidSDK\\myAppium\\src\\");
File app = new File(appDir, "bookMyShow-ucb.apk");
DesiredCapabilities cap = new DesiredCapabilities();
cap.setCapability(MobileCapabilityType.PLATFORM_NAME, MobilePlatform.ANDROID);
cap.setCapability(MobileCapabilityType.DEVICE_NAME, "3");
//cap.setCapability(MobileCapabilityType.BROWSER_NAME, "BROWSER");
cap.setCapability(MobileCapabilityType.APP, app.getAbsolutePath());
AndroidDriver driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"),cap);
Thread.sleep(5000);
//driver.get("http://www.google.com/");
driver.findElementById("com.bt.bms:id/btnNoThanks").click();
}
}
[/pastacode]
1. 這個例子中筆者準備一個 ADK在下列路徑,讀者可視情況修改
D:\\AndroidSDK\\myAppium\\src\\bookMyShow-ucb.apk
2. Device Name = “3”
我們之前創建一個 Virtual Device Name = 3。這部分讀者也可以適情況修改
cap.setCapability(MobileCapabilityType.DEVICE_NAME, “3”);
Step 10:啟動與執行
先確定 Appium 是啟動的狀態。右上角有一個”播放”的按鈕。
接著,執行 Eclipse 的程式。Run as “Junit Test”。
執行成功時,應該可以看到一個 android 虛擬器被啟動,並且自動啟動一個 App
之後的章節我們再介紹如何透過程式操作該 app的畫面操作與模擬人手勢的一些行為。
如何執行在實體手機?
程式只有一行需要修改 “Android emulator” => “Android device”
- 執行在虛擬環境: cap.setCapability(MobileCapabilityType.DEVICE_NAME,”Android emulator“);
- 執行在實體手機:cap.setCapability(MobileCapabilityType.DEVICE_NAME,”Android device“);
除錯,執行前確定手機的連接狀況,例如這個例子有連接一個實體手機與虛擬機。
$adb devices
4d00b3de5ea0a0bc device
emulator-5554 device
如果沒有顯示已連結的手機,可以執行下列指令重新啟動:
$adb kill-server
$adb start-server
另外,檢查手機是否已將開發者模式啟動。
小結
到底我們安裝了哪些工具套件呢? 安裝步驟確實有些繁瑣,這邊做一點整理。
- ANDROID SDK [Link]-
- JDK (Java Development Kit) [Link]
- TestNG [Link]
- Eclipse [Link]
- Selenium Server JAR [Link]
- Webdriver Language Binding Library [Link]
- APPIUM For Windows [Link]
- APK App Info On Google Play [Link] (optional)主要用來查看 App的 Application Package Name 與啟動的 Activity Name
- Node.js (對於Windows 版本,安裝 appium本時,Node.Js 會自動安裝好)