一、AWS Device Farm 一些特点
1、支持网络场景选择,可以模拟各种网络环境。2、支持任意地理位置设置。在使用到一些定位相关的功能时,有极大的帮助。
3、测试报告包含性能指标,不过指标数据比较少,只有三项,CPU,Memroy,Threads
二、支持依赖应用版本:
这里我们使用Appium Java TestNG,支持的版本信息:
目前,Device Farm 在 Device Farm 控制台中支持 Java 8 和 Appium 版本 1.7.2、1.7.1 和 1.6.5。
三、本地编写脚本
按官方文档说明开发脚本
https://docs.aws.amazon.com/zh_cn/devicefarm/latest/developerguide/test-types-android-appium-java-testng.html
注意:必须用maven构建项目,因为后续打包只支持maven。
这里使用的Appium Java TestNG 开发android的自动化脚本。
import io.appium.java_client.android.AndroidDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.Test;
import java.net.URL;
public class AndroidUITest {
public AndroidDriver driver;
@Test
public void appiumDemo() throws Exception {
String app_dir = System.getProperty("user.dir")+"/apps/my.appname-1.2.2.0.apk";
System.out.println("app_dir:"+app_dir);
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("platformVersion", "9");
capabilities.setCapability("deviceName", "Nexus_6_API_28");
capabilities.setCapability("app", app_dir);
capabilities.setCapability("appPackage", "com.my.appname");
capabilities.setCapability("appActivity", "your.page.main.Activity");
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
driver.findElementById("com.my.appname:id/id1").click();
Thread.sleep(3000);
driver.findElementById("com.my.appname:id/id2").sendKeys("username");
driver.findElementById("com.my.appname:id/id3").sendKeys("password");
driver.findElementById("com.my.appname:id/id4").click();
Thread.sleep(2000);
driver.closeApp();
}
}
本地执行通过后,需要做一些适应AWS Device Farm的修改
1、修改被测包的地址,必须写死路径:/tmp/包名,例如:
app_dir="/tmp/my.appname-1.2.2.0.apk";
2、注释掉所有capabilities关于测试手机的设置
修改后得到脚本如下,
public void appiumDemo() throws Exception {
String app_dir="/tmp/my.appname-1.2.2.0.apk";
System.out.println("app_dir:"+app_dir);
DesiredCapabilities capabilities = new DesiredCapabilities();
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
driver.findElementById("com.my.appname:id/id1").click();
Thread.sleep(3000);
driver.findElementById("com.my.appname:id/id2").sendKeys("username");
driver.findElementById("com.my.appname:id/id3").sendKeys("password");
driver.findElementById("com.my.appname:id/id4").click();
Thread.sleep(2000);
driver.closeApp();
}
最后根据官方文档,执行命令打包,
mvn clean package -DskipTests=true
我们会得到一个名为 zip-with-dependencies.zip 的包
四、AWS Device Farm操作
通过 https://console.aws.amazon.com/devicefarm 登录 Device Farm 控制台,创建测试,
1、上传被测试app包
2、上传代码包
3、选择被测试的机型,这里可以自由选择要测试的机型
4、配置设备的一些网络环境、地理位置
5、执行测试
查看报告
执行成功后,我们可以看的测试结果
报告详情
可以看到每台测试机的测试报告,还有录像回放功能
性能情况