本发明涉及安卓设备自动化测试操作领域,特别是一种实现安卓设备稳定性自动化测试的方法。
背景技术:
随着消费群众对安卓设备(如手机、平板电脑)质量的要求越来越高,所以安卓设备的高稳定性至关重要。安卓设备稳定性测试投入的人力、物力也越来越多。传统的手工测试方法,特别在稳定性测试方面有准确率低下、效率低下等缺点,实现安卓设备稳定性自动化测试是一种必然趋势。
目前在安卓(android)设备稳定性自动化测试中,主要采用Monkey测试工具,Monkey是SDK中自带的一种自动化测试工具,是一种随机测试工具。
其缺点在于,Monkey自动化测试只能进行随机测试,不能按照之前设计的手工测试用例,真实模拟人工操作进行稳定性测试,以及无法控制测试结果和评估实际安卓设备的稳定性能。
因此,现有的安卓设备稳定性自动化测试技术还有待改进。
技术实现要素:
本发明的目的在于提供一种实现安卓设备稳定性自动化测试的方法,以克服现有技术中存在的缺陷。
为实现上述目的,本发明的技术方案是:一种实现安卓设备稳定性自动化测试的方法,提供一待检测安卓设备以及通过micro-usb线与该待检测安卓设备相连的计算机,所述计算机搭载有一自动化测试系统,按照如下步骤实现:
步骤S1:通过所述自动化测试系统中的控制测试模块筛选进行稳定性自动化测试的项目;
步骤S2:通过所述自动化测试系统中的连接模块检测所述待检测安卓设备是否与所述计算正常连接;
步骤S3:所述控制测试模块通过uiautomatorviewer,获取所述待检测安卓设备的控件信息;
步骤S4:所述控制测试模块根据手工稳定性测试用例的操作要求,如点击、滑动、输入文本等,根据所述控件信息,进行手工模拟自动测试,获取测试结果为Pass或Fail;
步骤S5:所述控制测试模块编写批处理文件,且一个批处理文件用于启动一项自动化测试;
步骤S6:所述控制测试模块进行自动化测试,依次按自动化测试项目的顺序运行所述批处理文件;
步骤S7:测试结束,通过所述自动化测试系统中的测试结果模块保存测试结果,统计测试结果,计算成功率,并通过成功率评估,导出稳定性等级。
进一步的,在本发明一实施例中,在所述步骤S1中,所述进行稳定性自动化测试的项目包括:无线网络压力测试、有线网络压力测试、蓝牙压力测试、多媒体压力测试以及相机压力测试;通过所述控制测试模块添加或删除自动化测试的项目,并设置自动化测试的项目的测试顺序。
进一步的,在本发明一实施例中,在所述步骤S2中,还包括如下步骤:
步骤21:所述连接模块通过所述待检测安卓设备的安卓设备版本号获取开发者选项项目;
步骤22:所述连接模块调整所述开发者选项为USB调试;
步骤23:所述连接模块调用所述计算机cmd命令adb devices,检测安卓设备是否正常连接所述计算机。
进一步的,在本发明一实施例中,在所述步骤S3中,所述控制测试模块通过SDK中自带的uiautomatorviewer获取如下控件信息:text信息、resource-id信息、content-desc信息、checkable信息以及scrollable信息。
进一步的,在本发明一实施例中,在所述步骤S5中,所述批处理文件为bat文件,采用基于windows操作系统的批处理命令编制,一个bat文件启动一项自动化测试,并对应测试项目进行编名,以用于选取以及启动。
进一步的,在本发明一实施例中,在所述步骤S5中,还包括如下步骤:
步骤51:所述控制测试模块编写批处理文件,进入计算机中的Android SDK tools路径下;
步骤52:根据自动化测试的项目名称以及SDK版本号在设置的保存路径下创建测试项目;
步骤53:进入创建的测试项目路径下,调用ant编译脚本命令,生成测试项目jar包;该测试项目jar包生成在测试项目bin文件夹下,且所述自动化测试系统中的上传模块将所生成的测试项目jar包上传至所述待检测安卓设备。
进一步的,在本发明一实施例中,在所述步骤S6中,通过所述控制测试模块设置每项自动化测试项目间隔时间;自动化测试开始后,自动调用编写的批处理文件,完成一个自动化测试项目后,自动跳转至下一个测试项目,期间可暂停测试或继续测试。
进一步的,在本发明一实施例中,在所述步骤S7中,通过稳定性自动化测试结果得到成功率,以此评估稳定性等级:
成功率≥95%,稳定性很好,几乎不出现错误;
85%≤成功率<95%,稳定性较好,有微小的错误,不会影响系统的功能;
75%≤成功率<85%,稳定性一般,轻微降低了系统的性能,但系统仍能工作;
65%≤成功率<75%,稳定性较差,严重降低了系统的性能;
成功率<65%,稳定性很差,系统已经无法正常工作。
相较于现有技术,本发明具有以下有益效果:本发明其优点在于能真实地模拟手工测试,对安卓设备进行稳定性自动化测试,弥补了Monkey只能进行随机测试的弊端,解决了手动稳定性测试方面繁杂的任务量,大大的提高了测试效率。并能系统地管理自动化测试,实现一键自动化测试,测试结束,保存测试结果,最后评估并导出稳定性等级。能完美地代替手工测试,提高了自动化测试的效率。
附图说明
图1为本发明实现安卓设备稳定性自动化测试的方法的流程图。
具体实施方式
下面结合附图,对本发明的技术方案进行具体说明。
本发明提供一种实现安卓设备稳定性自动化测试的方法,提供一待检测安卓设备以及通过micro-usb线与该待检测安卓设备相连的计算机,计算机搭载有一自动化测试系统,按照如下步骤实现:
步骤S1:通过自动化测试系统中的控制测试模块筛选进行稳定性自动化测试的项目;
步骤S2:通过自动化测试系统中的连接模块检测待检测安卓设备是否与计算正常连接;
步骤S3:控制测试模块通过uiautomatorviewer,获取待检测安卓设备的控件信息;
步骤S4:控制测试模块根据手工稳定性测试用例的操作要求,如点击、滑动、输入文本等,根据控件信息,进行手工模拟自动测试,获取测试结果为Pass或Fail;
步骤S5:控制测试模块编写批处理文件,且一个批处理文件用于启动一项自动化测试;
步骤S6:控制测试模块进行自动化测试,依次按自动化测试项目的顺序运行批处理文件;
步骤S7:测试结束,通过自动化测试系统中的测试结果模块保存测试结果,统计测试结果,计算成功率,并通过成功率评估并导出稳定性等级。
进一步的,在本实施例中,在步骤S1中,进行稳定性自动化测试的项目包括:无线网络压力测试、有线网络压力测试、蓝牙压力测试、多媒体压力测试以及相机压力测试等;通过控制测试模块添加或删除自动化测试的项目,并设置自动化测试的项目的测试顺序。
进一步的,在本实施例中,控制测试模块通过自动化测试平台实现,其可以利用MFC/QT等作为界面平台,C++语言作为程序语言进行开发。
进一步的,在本实施例中,无线网络压力测试如下:
连接无线网络,wifi on/off 200次,判断是否能正常连上网络。
连接无线网络,播放在线视频,每隔5分钟截屏,判断播放画面是否无异常。
连接无线网络,连续访问新闻网页/视频网页100次,判断是否无异常。
连接无线网络,进入网页,每隔15秒刷新一次网页,判断是否无异常。
进一步的,在本实施例中,在步骤S2中,还包括如下步骤:
步骤21:连接模块通过待检测安卓设备的安卓设备版本号获取开发者选项项目,连接模块连续触发安卓设备版本号5次,出现开发者选项;
步骤22:连接模块调整开发者选项为USB调试;
步骤23:连接模块调用计算机cmd命令adb devices,检测安卓设备是否正常连接计算机。
进一步的,在本实施例中,在步骤S3中,控制测试模块通过SDK中自带的uiautomatorviewer获取如下控件信息:text信息、resource-id信息、content-desc信息、checkable信息以及scrollable信息,利用上述控件信息对自动化测试代码进行预先设计。
进一步的,在本实施例中,控制测试模块进行无线网络压力测试,测试要求为wifi 连续on/off 200次,判断网络是否能正常连接,设计代码如下:
public class demo6 extends UiaAutomatorTestCase{
public void testDemo() throws UiObjectNotFoundException, InterruptedException, RemoteException {
int m=0,n=0;
getUiDevice().wakeUp();//唤醒安卓设备
getUiDevice().pressHome();//回到主页面
UiObject menu= new UiObject(new UiSelector().descriptionContains("应用"));
menu.click();//点击应用
UiObject setting= new UiObject(new UiSelector().text("设置"));
setting.clickAndWaitForNewWindow();
UiObject wifi=new UiObject(new UiSelector().resourceId("com.
android.settings:id/switchWidget").instance(0));//wifi开关
if(!wifi.isChecked())
{wifi.click();//点击wifi开关
sleep(5000);//等待5秒
}
UiObject NetWork-id=new UiObject(new UiSelector().text(
"ASUStest"));//网络ID
NetWork-id.click;
UiObject Password=new UiObject(new UiSelector().resourceId
("com.android.settings:id/password"));//网络密码输入框
Password.setText("lwy123456")//输入密码
UiObject Link= new UiObject(new UiSelector().text("连接"));
Link.click();//连接网络
sleep(10000);
for(int i=1;i<=200;i++)
{
boolean flag;
if(wifi.isChecked())
{
wifi.click();
}
wifi.click;
sleep(1000);
flag=internetstate();//判断网络连接情况
if(!flag)
{
System.out.println("第"+i+"次测试"+": Return:Fail");
m++;
}
}
if(m==0)
{
System.out.println("Return:Pass");
}
}
public boolean internetstate()//判断网络连接情况
{
int status = 0;
Process p = null;
try {
p = Runtime.getRuntime().exec("ping -c 1 " + "www.baidu.com");
} catch (IOException e) {
e.printStackTrace(); }
try {
status = p.waitFor();
} catch (InterruptedException e) {
e.printStackTrace();
}
if (status == 0) {
return true;
}
else
{
return false;
}
}
}
进一步的,在本实施例中,在步骤S5中,批处理文件为bat文件,采用基于windows操作系统的批处理命令编制,一个bat文件启动一项自动化测试,并对应测试项目进行编名,以便选取并启动。
进一步的,在本实施例中,在步骤S5中,还包括如下步骤:
步骤51:控制测试模块编写批处理文件,进入计算机中的Android SDK tools路径下;
步骤52:根据自动化测试的项目名称以及SDK版本号在设置的保存路径下创建测试项目;
步骤53:进入创建的测试项目路径下,调用ant编译脚本命令,生成测试项目jar包;该测试项目jar包生成在测试项目bin文件夹下,且自动化测试系统中的上传模块将所生成的测试项目jar包上传至待检测安卓设备。
进一步的,按照如下方式实现:
@echo off
d:
cd D:\sdk\tools
echo "start create build file...”
cd D:\Users\LWY\workspace\ stress-test
call android create uitest-project -n stress-test -t 7 -p D:\Users\LWY\workspace\ stress-test
echo "success create uitest-project "
call ant build
进一步的,在本实施例中,在步骤S6中,通过控制测试模块设置每项自动化测试项目间隔时间;自动化测试开始后,自动调用编写的批处理文件,完成一个自动化测试项目后,自动跳转至下一个测试项目,期间可暂停测试或继续测试。
进一步的,在本实施例中,在步骤S7中,通过稳定性自动化测试结果得到成功率,以此评估稳定性等级:
成功率≥95%,稳定性很好,几乎不出现错误;
85%≤成功率<95%,稳定性较好,有微小的错误,不会影响系统的功能;
75%≤成功率<85%,稳定性一般,轻微降低了系统的性能,但系统仍能工作;
65%≤成功率<75%,稳定性较差,严重降低了系统的性能;
成功率<65%,稳定性很差,系统已经无法正常工作。
进一步的,本实施例采用的安卓设备稳定性自动化测试的方法,能真实地模拟手工测试,对安卓设备进行稳定性自动化测试,克服了现有技术的不足。并能系统地管理自动化测试,实现一键自动化测试,测试结束,保存测试结果,最后评估并导出稳定性等级。
以上是本发明的较佳实施例,凡依本发明技术方案所作的改变,所产生的功能作用未超出本发明技术方案的范围时,均属于本发明的保护范围。