安卓系统稳定性的自动化测试方法及装置与流程

文档序号:11154855阅读:713来源:国知局
安卓系统稳定性的自动化测试方法及装置与制造工艺

本发明涉及安卓测试领域,具体是涉及一种安卓系统稳定性的自动化测试方法及装置。



背景技术:

稳定性测试是移动端产品专线测试中的重要一项测试,是指移动端产品在一段较长的时间(通常不少于8个小时)进行反复、长期的操作,并在这种压力测试下系统资源是否占用异常,是移动端产品发版上线的一个重要质量标准。

在Android(安卓)自动化测试中,有时候需要对一个软件进行压力测试,检查该软件的性能。如果是人工进行测试的话,效率会低很多,而且会比较枯燥。这时,Android系统中的一个命令行工具Monkey,可以减轻很多重复而又繁琐的工作。Monkey是安卓系统自带的一款稳定性和压力测试工具。Monkey工具像一只调皮的猴子,在APP(APPlication,应用)中乱按、乱摸、乱滚、乱跳。Monkey测试是Android平台下自动化测试的一种快速有效的手段,通过Monkey工具可以模拟用户触摸屏幕、滑动轨迹球、按键等操作来对模拟器或者手机设备上的软件进行压力测试,检测该软件的稳定性、健壮性。它的原理是向系统发送伪随机的用户事件流(如按键输入、触摸输入、手势输入等),实现对正在开发的应用程序进行压力测试。

Monkey工具可以随机产生事件,不带任何主观性,并且使用方便。但是,也由于这种随机性,使得传统的Monkey测试只能作为稳定性测试工具。在Monkey测试中,由于事件的随机性,导致难以分析出性能隐患。



技术实现要素:

本发明的目的是为了克服上述背景技术的不足,提供一种安卓系统稳定性的自动化测试方法及装置,能够分析出性能隐患。

本发明提供一种安卓系统稳定性的自动化测试方法,包括以下步骤:

S1、建立安卓测试项目工程;

S2、导入静态库;

S3、修改安卓测试项目工程的配置文件;

S4、在安卓测试项目工程的测试代码目录中,新建JUnit测试用例,植入性能数据打点的脚本,获取当前移动终端内存和CPU信息,将获取的内存和CPU信息作为动态广播文件,通过广播消息发出动态广播文件,记录在移动终端的本地文件中;

S5、添加支持检查清单的配置项;

S6、执行:搜集测试过程中的动态广播文件,将动态广播文件处理成便于展示的静态文件,存放到本地,测试完成后生成报告上传至WEB服务器,WEB服务器生成基础性能报告及崩溃信息;

S7、显示基础性能报告的信息。

在上述技术方案的基础上,步骤S1中,使用Java语言建立安卓测试项目工程。

在上述技术方案的基础上,步骤S2中还包括以下步骤:当检测到当前界面为关注的活动时,通过与移动终端上的视图服务通信,获取该活动的控件信息,得到指定的控件的坐标信息;点击该坐标,即回到指定的界面。

在上述技术方案的基础上,步骤S5中的配置项包括:指定触摸事件的百分比;滑动事件;轨迹球事件;导航事件;系统按键事件;活动之间的切换;指定产生随机事件的种子值;指定打印信息的详细级别;忽略崩溃;忽略超时;忽略安全异常;发生错误后直接杀掉进程。

在上述技术方案的基础上,所述基础性能报告中的图表用结点记录执行的事件。

本发明还提供一种安卓系统稳定性的自动化测试装置,该装置包括工程建立单元、静态库导入单元、配置文件修改单元、测试用例新建单元、配置单元、执行单元、显示单元;

工程建立单元用于:建立安卓测试项目工程;

静态库导入单元用于:导入静态库;

配置文件修改单元用于:修改安卓测试项目工程的配置文件;

测试用例新建单元用于:在安卓测试项目工程的测试代码目录中,新建JUnit测试用例,植入性能数据打点的脚本,获取当前移动终端内存和CPU信息,将获取的内存和CPU信息作为动态广播文件,通过广播消息发出动态广播文件,记录在移动终端的本地文件中;

配置单元用于:添加支持检查清单的配置项;

执行单元用于:搜集测试过程中的动态广播文件,将动态广播文件处理成便于展示的静态文件,存放到本地,测试完成后生成报告上传至WEB服务器,WEB服务器生成基础性能报告及崩溃信息;

显示单元用于:显示基础性能报告的信息。

在上述技术方案的基础上,所述工程建立单元使用Java语言建立安卓测试项目工程。

在上述技术方案的基础上,所述静态库导入单元还用于:当检测到当前界面为关注的活动时,通过与移动终端上的视图服务通信,获取该活动的控件信息,得到指定的控件的坐标信息;点击该坐标,即回到指定的界面。

在上述技术方案的基础上,所述配置项包括:指定触摸事件的百分比;滑动事件;轨迹球事件;导航事件;系统按键事件;活动之间的切换;指定产生随机事件的种子值;指定打印信息的详细级别;忽略崩溃;忽略超时;忽略安全异常;发生错误后直接杀掉进程。

在上述技术方案的基础上,所述基础性能报告中的图表用结点记录执行的事件。

与现有技术相比,本发明的优点如下:

(1)本发明结合性能专项工具,进一步挖掘性能隐患。本发明使用Java语言建立Android Test Project(安卓测试项目)工程,随机测试Advanced Monkey(聪明的猴子测试工具)原理上结合JUnit测试,JUnit是Java语言的一个单元测试框架;在运行测试过程中,记录被测APP的crash(崩溃)栈信息,以及native crash(底层崩溃)信息,同时,根据配置项,Advanced Monkey会输出性能报告。测试人员使用本发明中的Advanced Monkey做稳定性测试,可以根据报告中的crash信息,找出导致crash的操作步骤,同步搜集性能数据,根据性能数据,分析出性能隐患,从而弥补手工测试涵盖不到的地方。

(2)本发明基于Robotium自动测试框架,开发了大型的Robotium test case(基于Robotium的测试用例),来对App进行activity(活动)深度遍历和节点操作,并开发了Advanced Monkey App(聪明的猴子测试应用)工具。Robotium是一款国外的Android自动化测试框架,主要针对Android平台的应用进行黑盒自动化测试,它提供了模拟各种手势操作(点击、长按、滑动等)、查找和断言机制的API(Application Programming Interface,应用编程接口),能够对各种控件进行操作。Robotium结合Android官方提供的测试框架达到对应用程序进行自动化的测试。本发明能够准确识别页面上的操作,避免无效点击。

(3)本发明支持Checklist(检查清单)配置,能够提供简单的功能验证。

附图说明

图1是本发明实施例中安卓系统稳定性的自动化测试方法的流程图。

具体实施方式

下面结合附图及具体实施例对本发明作进一步的详细描述。

参见图1所示,本发明实施例提供一种安卓系统稳定性的自动化测试方法,包括以下步骤:

S1、使用Java语言建立一个Android Test Project(安卓测试项目)工程;

S2、导入Advanced Monkey所需的lib(静态库),robotium-solo.jar和douyu-common.jar,douyu-common.jar包所实现的功能是准确识别页面上的操作,避免无效点击;

一般进入一个模块会有一个固定的入口,退出这个模块,也会退回到这个固定入口界面。增加一个判断,即在每次操作之后都去检查当前的界面是否为该界面,如果是,则去点击这个入口控件,就回到了这个模块,继续测试;这样即可保证稳定性测试一直在这个模块中进行。

具体实现方式是:当检测到当前界面为关注的activity(活动)时,通过与手机上的View Server(视图服务)通信,获取该activity的控件信息,得到指定的控件的坐标信息;点击这个坐标,即回到了指定的界面。

S3、修改Android Manifest.xml文件(安卓测试项目工程的一个配置文件),具体修改内容:修改instrumentation TAG中的name和targetPackage(对应字段名)字段,字段内容填充分别为引入jar(将已经写好的类进行封装)包的包名com.douyu.TestRunner和待测应用包名air.tv.douyu.android(APP应用包名)。

S4、在安卓测试项目工程的src文件(测试代码目录)中,新建JUnit Test Case,该类需继承com.douyu.BaseCase类(继上面douyu-common.jar中的类引用),并在新建的Case中添加初始化操作,同时,结合性能专项工具,进一步挖掘性能隐患,植入性能数据打点的Python脚本,Python是一种面向对象、解释型计算机程序设计语言,是将整个自动化过程程序化的脚本语言。Python脚本实现的功能是在每个操作完成后执行adb shell dumpsys meminfo和adb shell dumpsys cpuinfo命令,即获取当前手机内存和CPU信息,将获取的内存和CPU信息作为动态广播文件,通过广播消息发出动态广播文件,记录在手机本地文件中,详情报告可以见步骤S7。

S5、添加支持检查清单的配置项

支持Checklist配置,提供简单的功能验证:执行Monkey命令时需要配置各个事件的比例,本发明优化的思路就是将业务操作写成自动化脚本,然后将该脚本抽象成一个Monkey事件,并且可以配置执行比例。

由于原生monkey测试技术的改进需要扩展monkey命令参数,为了实现这点,需要对安卓官方自带的monkey.jar包进行源码修改,然后重新编译生成一个新的monkey.jar包。下面的介绍是针对新monkey.jar生成以后用户的配置步骤。

(1)根据安卓不同平台版本,将对应平台的monkey.jar push到/data/local/tmp/monkey.jar

(2)生成以下可执行文件/data/local/tmp/monkey(手机中的目录文件地址)

(3)对data/local/tmp/monkey(手机中的目录文件地址)增加执行权限

(4)使用该扩展功能的monkey运行命令详细做法如下:

在项目中新建assets文件夹,添加config.properties(配置文件)文件。在config.properties文件中添加支持检查清单的配置项,设置输出报告的位置,默认为/mnt/sdcard/report/(路径地址)目录,并设置自动登录开关,分别设置初始自动登录时输入的用户名和密码。然后在自动化测试App上编辑下面编辑框所需内容,即Advanced Config.properties中对应的内容。

在Advanced Config.properties文件中添加支持检查清单的配置项,均可选,若不填,则默认值,默认值即为上面Monkey参数框里面的值,对于通常的App默认值即为多次测试实验提取较佳值。

配置项包括:

--pct-touch:指定触摸事件的百分比,例如:--pct-touch 5%;

相关的还有以下option(选项):

--pct-motion<percent>(滑动事件);

--pct-trackball<percent>(轨迹球事件);

--pct-nav<percent>(导航事件up/down/left/right);

--pct-majornav<percent>(主要导航事件back key、menu key);

--pct-syskeys<percent>(系统按键事件Home、Back、startCall、endCall、volumeControl);

--pct-appswitch<percent>(activity之间的切换);

--pct-anyevent<percent>(任意事件);

-s:指定产生随机事件的种子值,相同的种子值产生相同的事件序列,例如:-s 200;

-v:指定打印信息的详细级别,一个-v增加一个级别,默认级别为0;

-p:指定有效的package(如不指定,则对系统中所有package有效),一个-p对应一个有效package,如:-p com.ckt-p com.ckt.asura;

-c:activity必须至少包含一个指定的category,才能被启动,否则启动不了;

--throttle:每个事件结束后的间隔时间——降低系统的压力(如不指定,系统会尽快的发送事件序列),例如:--throttle 100;

--dbg-no-events:初始化启动的activity,但是不产生任何事件。

--hprof:指定该项后在事件序列发送前后会立即生成分析报告——一般建议指定该项。

--ignore-crashes:忽略崩溃;

--ignore-timeouts:忽略超时;

--ignore-security-exceptions:忽略安全异常;

--kill-process-after-error:发生错误后直接杀掉进程;

--monitor-native-crashes:跟踪本地方法的崩溃问题;

--wait-dbg:知道连接了调试器才执行monkey测试。

S6、执行

搜集测试过程中的动态广播文件,将动态广播文件处理成便于展示的静态文件,存放到本地,测试完成后生成报告上传至WEB服务器,WEB服务器生成基础性能报告及crash信息。

通过Run as Android Junit Test(运行方式)方式执行,执行完成后会自动执行上传操作,就会把手机里的文件上传到自动化平台WEB服务器,并通过WEB服务器查看Advanced Monkey的输出报告。

S7、显示基础性能报告的信息

(1)基础性能报告

根据配置项,Advanced Monkey会输出性能报告到输出报告目录中。性能报告是以performance(性能)开头的html或xml文件。

Html格式的性能报告中,首先会列出被测app的相关信息,包括包名、Uid(用户唯一标识)和同Uid下的每一个进程的Pid(进程唯一标识)和进程名等。

随后列出CPU(Central Processing Unit,中央处理器)、内存、流量的图表。CPU图表中记录了每一个进程的CPU占用率,内存图表中记录了每个进程PSS(Proportional Set Size,实际使用的物理内存,包含共享库占用的内存)和USS(Unique Set Size,进程独自占用的物理内存,不包含共享库占用的内存)的占用情况,流量图表中记录了流量总使用情况和两个采集点之间的流量差值。

基础性能报告中的图表用node(结点)记录Advanced Monkey执行的事件,可以用来辅助定位造成曲线波动的操作。

Xml格式的性能报告中,每个operation(操作)为一个采集点,其中记录了时间戳、测试手机总CPU占用率、流量差值、流量总和、节点上的事件,以及每个进程的Pid、CPU占用率、PSS、USS等,点击该node可以查看到详情,通常,我们会设定一个CPU和内存的阈值,以通常的测试标准设定CPU为50%和内存占用200MB,如果在执行该操作的时候,性能值超过阈值,那么会在曲线上标注出红色,需要测试者人工二次确认是否是问题,如果是问题,那么提交给开发去解决,通常情况下超过阈值的事件都需要关注。

(2)crash信息

Advanced Monkey会自动记录被测APP的crash栈信息,以及native crash信息。

Crash信息会输出在你配置的目录中,以stack(堆栈信息)为开头的txt文件。每个crash单独输出一个文件。Native crash信息记录在以dmp开头的文件中,可以通过google-breakpad(谷歌跨平台的崩溃转储和分析模块工具)进行查看。

本发明实施例还提供一种安卓系统稳定性的自动化测试装置,该装置包括工程建立单元、静态库导入单元、配置文件修改单元、测试用例新建单元、配置单元、执行单元、显示单元;

工程建立单元用于:使用Java语言建立安卓测试项目工程;

静态库导入单元用于:导入静态库;当检测到当前界面为关注的活动时,通过与移动终端上的视图服务通信,获取该活动的控件信息,得到指定的控件的坐标信息;点击该坐标,即回到指定的界面;

配置文件修改单元用于:修改安卓测试项目工程的配置文件;

测试用例新建单元用于:在安卓测试项目工程的测试代码目录中,新建JUnit测试用例,植入性能数据打点的脚本,获取当前移动终端内存和CPU信息,将获取的内存和CPU信息作为动态广播文件,通过广播消息发出动态广播文件,记录在移动终端的本地文件中;

配置单元用于:添加支持检查清单的配置项;配置项包括:指定触摸事件的百分比;滑动事件;轨迹球事件;导航事件;系统按键事件;活动之间的切换;指定产生随机事件的种子值;指定打印信息的详细级别;忽略崩溃;忽略超时;忽略安全异常;发生错误后直接杀掉进程;

执行单元用于:搜集测试过程中的动态广播文件,将动态广播文件处理成便于展示的静态文件,存放到本地,测试完成后生成报告上传至WEB服务器,WEB服务器生成基础性能报告及崩溃信息;

显示单元用于:显示基础性能报告的信息,基础性能报告中的图表用结点记录执行的事件。

本领域的技术人员可以对本发明实施例进行各种修改和变型,倘若这些修改和变型在本发明权利要求及其等同技术的范围之内,则这些修改和变型也在本发明的保护范围之内。

说明书中未详细描述的内容为本领域技术人员公知的现有技术。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1