一种安卓应用程序自动化黑盒测试的方法及系统.pdf

上传人:r7 文档编号:1307714 上传时间:2018-04-14 格式:PDF 页数:18 大小:1.14MB
返回 下载 相关 举报
摘要
申请专利号:

CN201611056866.X

申请日:

2016.11.25

公开号:

CN106649103A

公开日:

2017.05.10

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):G06F 11/36申请日:20161125|||公开

IPC分类号:

G06F11/36

主分类号:

G06F11/36

申请人:

深圳大学

发明人:

蔡树彬; 明仲; 周小婷; 卢亚辉

地址:

518061 广东省深圳市南山区深圳大学南校区计软大楼724

优先权:

专利代理机构:

北京华仲龙腾专利代理事务所(普通合伙) 11548

代理人:

李静

PDF下载: PDF下载
内容摘要

本发明公开了一种安卓应用程序自动化黑盒测试的方法及系统,识别目标窗口中的所有控件信息和目标窗口信息时,在获取控件信息时只需解析通过ADB命令获得的控件信息文档即可得到所有控件信息,并且通过ADB命令可直接获取窗口信息,过程简单;自动生成测试用例时,可在自动生成测试用例过程中,对安卓应用窗口全覆盖;自动生成测试脚本时,通过对Robotium自动化测试框架封装,只需在测试用例文档中添加关键字和测试数据,即可实现自动生成测试脚本,当测试数据发生变化时,只需修改测试用例文档中的测试数据即可;本发明在不需要程序源码的情况下,提高了测试的自动化程度、界面的覆盖率及测试脚本的可重用性。

权利要求书

1.一种安卓应用程序自动化黑盒测试的方法,其特征在于,该安卓应用程序自动化黑
盒测试的方法包括以下步骤:
步骤一,通过基于ADB命令的安卓应用窗口控件识别方法识别目标窗口中的所有控件
信息和目标窗口信息;
步骤二,运用安卓应用窗口全覆盖测试用例自动生成方法自动生成测试用例;
步骤三,运用RobotiumEx高重用测试脚本自动生成方法自动生成测试脚本。
2.如权利要求1所述的安卓应用程序自动化黑盒测试的方法,其特征在于,步骤一,通
过基于ADB命令的安卓应用窗口控件识别方法识别目标窗口中的所有控件信息和目标窗口
信息时,控件信息包括控件类型、控件名称和控件属性,窗口信息包括窗口所在Activity名
称和窗口哈希码;
通过基于ADB命令的安卓应用窗口控件识别方法识别目标窗口中的所有控件信息和目
标窗口信息包括以下步骤:
步骤(1),通过ADB向设备分别发送dump和adb shell dumpsys window w|findstr
mCurrent命令;
步骤(2),通过执行dump命令获得保存当前设备屏幕上的窗口控件信息的xml文件,通
过执行adb shell dumpsys window w|findstr mCurrent命令获得当前窗口所属的
Activity名和窗口哈希码;
步骤(3),把获得的xml文件抓取到本地主机上,对其进行解析,并把获得的当前窗口所
属的Activity名和窗口哈希码信息加入控件信息中,生成控件节点列表;
步骤(4),把生成的控件节点列表重新写入一个xml文件中。
3.如权利要求1所述的安卓应用程序自动化黑盒测试的方法,其特征在于,步骤二,运
用安卓应用窗口全覆盖测试用例自动生成方法自动生成测试用例时,需要构建一个基于安
卓应用窗口的遍历模型,遍历模型为一个有向图,图节点表示一个窗口节点,而图的边表示
一个模拟动作,在基于窗口的遍历模型中,窗口标识(Window Flag)用于唯一标识一个窗
口,在窗口标识中保存了Activity名称和窗口哈希码信息,可通过分别对Activity名称和
窗口哈希码进行对比来判断两个窗口是否相同;任务(Task)可表示为(窗口标识,动作,控
件节点)这样一个三元组,其中窗口标识表示一个动作在此窗口下执行,动作表示一个待模
拟的操作,控件节点表示待模拟操作所属控件,只有当应用程序运行到此窗口且此窗口上
的动作被执行后,一个任务才算被执行;窗口节点(Window Node)中保存了与窗口相关的所
有信息,其中包括对应的窗口标识、当前窗口中包含的所有待执行的任务形成的任务列表、
父节点、子节点列表、从起始窗口节点到当前窗口节点的路径上执行的所有任务列表以及
当前窗口中的转换列表;转换(Transition)用于表示模型中的一个转换关系,它保存了任
务和窗口节点信息,其中任务表示当前窗口节点中的一个任务,而节点表示任务执行后所
产生的子节点;
运用安卓应用窗口全覆盖测试用例自动生成方法自动生成测试用例包括以下步骤:
步骤(1),通过基于ADB命令的安卓应用窗口控件识别方法识别目标窗口中的所有控件
信息和目标窗口信息,根据控件类型为每个控件生成一个任务,形成任务列表,根据窗口信
息生成窗口标识,并把窗口标识加入窗口节点中;
步骤(2),如果窗口节点的任务列表不为空,依次从任务列表中取出一个任务,并根据
窗口标识判断当前窗口是否为执行任务所需要的窗口,如果是所需窗口,则直接执行任务,
如果不是所需窗口,则先恢复到当前任务所需要的窗口,然后执行任务;
步骤(3),判断执行这个任务后窗口是否发生切换;
步骤(4),如果发生切换,则判断是否跳转到其他应用的窗口中,如果跳转到其它应用
的窗口中,则重启应用程序,循环步骤(1)、步骤(2)、步骤(3),否则把当前任务加入到任务
执行路径列表中,循环步骤(1),获取跳转后的窗口节点信息,把新窗口节点信息和当前执
行的任务加入到当前转换中,把当前转换添加到当前窗口节点的转换列表中,同时把前一
个窗口节点添加为新窗口节点的父窗口节点;
步骤(5),如果没有发生切换,循环步骤(2)、步骤(3);
步骤(6),判断当前窗口是否为结束窗口,即点击这个窗口上的任何控件都不会切换到
新的窗口,如果为结束窗口则根据任务执行路径列表生成一个测试用例,同时删除任务执
行路径列表中最后一个任务;
步骤(7),判断是否遍历完整个应用程序,如果已经遍历完整个应用程序,则整个遍历
结果,如果没有遍历完整个应用程序,则返回上一个窗口,递归执行前面六个步骤,从而实
现对整个应用进行遍历。
4.如权利要求3所述的安卓应用程序自动化黑盒测试的方法,其特征在于,在步骤(2)
中,恢复到所需窗口的过程为:
先从任务中获取任务执行所需要的目标窗口标识,然后获取应用程序当前窗口标识,
如果目标窗口标识和当前窗口标识相同则不做处理,如果不同则模拟返回操作返回前一个
窗口,再判断返回后的窗口标识是否为目标窗口标识;重复上述过程,直到找到目标窗口为
止;如果退回到应用程序的起始窗口还没有找到目标窗口,则从目标窗口节点中获取保存
的已经执行的任务列表,从起始窗口开始,依次执行任务列表中的任务,直到运行到目标窗
口。
5.如权利要求3所述的安卓应用程序自动化黑盒测试的方法,其特征在于,在步骤(6)
中,生成的测试用例保存在Excel文档中,测试用例的内容包括测试用例名称、操作步骤、当
前Activity名称、目标Activity名称、被测控件的相关信息、操作关键字、结果检查关键字、
输入数据和预期输出数据字段。
6.如权利要求1所述的安卓应用程序自动化黑盒测试的方法,其特征在于,在步骤二
中,运用安卓应用窗口全覆盖测试用例自动生成方法自动生成测试用例时,可使用<
Activity名称、当前窗口截图>替代<Activity名称、窗口哈希码>来唯一标识一个安卓应用
窗口。
7.如权利要求1所述的安卓应用程序自动化黑盒测试的方法,其特征在于,在步骤三
中,运用RobotiumEx高重用测试脚本自动生成方法自动生成测试脚本时,首先对Robotium
框架中Solo类包含的常用方法进行封装,然后通过在Excel文档中输入相应的关键字调用
封装好的测试脚本生成方法,自动生成测试脚本;
运用RobotiumEx高重用测试脚本自动生成方法自动生成测试脚本包括以下步骤:
步骤(1),对Robotium框架中Solo类包含的常用方法进行封装,得到常用的测试脚本生
成方法;
步骤(2),给封装好的测试脚本生成方法绑定相应的关键字,形成RobotiumEx自动化测
试框架;
步骤(3),运用安卓应用窗口全覆盖测试用例自动生成方法生成Excel测试用例文档;
步骤(4),在生成的测试用例文档中添加相应的测试数据和关键字;
步骤(5),读取添加关键字和测试数据后的测试用例,获取测试用例对应的所有关键
字,依次通过关键字调用相应的测试脚本生成方法,为测试用例自动生成测试脚本。
8.一种安卓应用程序自动化黑盒测试的系统,其特征在于,该安卓应用程序自动化黑
盒测试的系统包括:
基于ADB命令的安卓应用窗口控件识别模块,用于获取当前窗口的控件信息和窗口信
息,控件信息包括控件类型、控件名称和控件属性,窗口信息包括窗口所在Activity名称和
窗口哈希码;
安卓应用窗口全覆盖测试用例自动生成模块,与所述基于ADB命令的安卓应用窗口控
件识别模块相连接,用于根据深度优先遍历方式,在自动生成测试用例的过程中对安卓应
用窗口进行全覆盖;
RobotiumEx高重用测试脚本自动生成模块,与所述安卓应用窗口全覆盖测试用例自动
生成模块相连接,用于对Robotium框架中Solo类包含的常用方法进行封装,并通过在Excel
文档中输入相应的关键字调用封装好的测试脚本生成方法,自动生成测试脚本。

说明书

一种安卓应用程序自动化黑盒测试的方法及系统

技术领域

本发明属于安卓应用程序测试技术领域,尤其涉及一种安卓应用程序自动化黑盒
测试的方法及系统。

背景技术

窗口(window)为应用程序显示在设备屏幕上的整个图形界面,唯一标识当前界
面。引起窗口变化的因素包括不同Activity间的相互切换、同一个Activity组件中不同布
局控件的显示与隐藏等。

ADB(Android Debug Bridge)即Android调试桥,是Android系统中的一种命令行
工具,可以利用ADB实现Android手机与PC的连接。

APK(Android Package)即Android安装包。

随着移动互联网技术的快速发展,Android应用程序的开发数量也越来越多。为保
证Android应用程序的质量,应用程序在正式发布到应用市场之前,需要对它进行测试。但
是开发者只提供了APK应用包给应用市场,只能进行黑盒测试。同时,自动化黑盒测试也非
常符合最近比较流行的移动云测试服务。开发者只需上传被测应用程序的APK文件,就可利
用云服务平台的资源进行测试。因此,实现在无源码的情况下对Android应用程序进行自动
化测试是非常有意义的。然而,现有的方法和技术仍然不能充分满足自动化和覆盖率方面
的要求,主要存在的问题包括:其一,需要手动编写或者手动录制测试脚本,导致测试的自
动化程度不高;其二,需先通过静态分析技术构建Activity转换图,不仅过程复杂,而且界
面覆盖率不高。

Tanzirul Azim等人提出了使用目标和深度优先遍历的方式模拟用户操作与
Android应用程序进行交互,从而实现对应用程序进行测试,具体的实现过程为:

(1)对被测应用程序进行静态分析,构建基于Activity组件的遍历模型;

(2)运用目标和深度优先遍历的方式,模拟用户操作与Android应用程序进行交
互;

(3)在遍历的过程中生成测试结果。

该技术方案的缺点:由于采用的是基于Activity组件的遍历模型,由于一个
Activity可能包含多个不同的窗口,同一个Activity中的窗口可以相互切换,基于
Activity的遍历模型其实并没有真正建立显示界面之间的切换关系,使得其对GUI的遍历
不够充分,从而影响界面覆盖率。

发明内容

本发明的目的在于提供一种安卓应用程序自动化黑盒测试的方法及系统,旨在解
决现有技术提供的安卓应用程序的方法,需要手动编写或者手动录制测试脚本,导致测试
的自动化程度不高,同时需先通过静态分析技术构建Activity转换图,过程复杂,界面覆盖
率不高的问题。

本发明是这样实现的,一种安卓应用程序自动化黑盒测试的方法,该安卓应用程
序自动化黑盒测试的方法包括以下步骤:

步骤一,通过基于ADB命令的安卓应用窗口控件识别方法识别目标窗口中的所有
控件信息和目标窗口信息;

步骤二,运用安卓应用窗口全覆盖测试用例自动生成方法自动生成测试用例;

步骤三,运用RobotiumEx高重用测试脚本自动生成方法自动生成测试脚本。

进一步,步骤一,通过基于ADB命令的安卓应用窗口控件识别方法识别目标窗口中
的所有控件信息和目标窗口信息时,控件信息包括控件类型、控件名称和控件属性,窗口信
息包括窗口所在Activity名称和窗口哈希码;

通过基于ADB命令的安卓应用窗口控件识别方法识别目标窗口中的所有控件信息
和目标窗口信息包括以下步骤:

步骤(1),通过ADB向设备分别发送dump和adb shell dumpsys window w|findstr
mCurrent命令;

步骤(2),通过执行dump命令获得保存当前设备屏幕上的窗口控件信息的xml文
件,通过执行adb shell dumpsys window w|findstr mCurrent命令获得当前窗口所属的
Activity名和窗口哈希码;

步骤(3),把获得的xml文件抓取到本地主机上,对其进行解析,并把获得的当前窗
口所属的Activity名和窗口哈希码信息加入控件信息中,生成控件节点列表;

步骤(4),把生成的控件节点列表重新写入一个xml文件中。

进一步,步骤二,运用安卓应用窗口全覆盖测试用例自动生成方法自动生成测试
用例时,需要构建一个基于安卓应用窗口的遍历模型,遍历模型为一个有向图,图节点表示
一个窗口节点,而图的边表示一个模拟动作,在基于窗口的遍历模型中,窗口标识(Window
Flag)用于唯一标识一个窗口,在窗口标识中保存了Activity名称和窗口哈希码信息,可通
过分别对Activity名称和窗口哈希码进行对比来判断两个窗口是否相同;任务(Task)可表
示为(窗口标识,动作,控件节点)这样一个三元组,其中窗口标识表示一个动作在此窗口下
执行,动作表示一个待模拟的操作,控件节点表示待模拟操作所属控件,只有当应用程序运
行到此窗口且此窗口上的动作被执行后,一个任务才算被执行;窗口节点(Window Node)中
保存了与窗口相关的所有信息,其中包括对应的窗口标识、当前窗口中包含的所有待执行
的任务形成的任务列表、父节点、子节点列表、从起始窗口节点到当前窗口节点的路径上执
行的所有任务列表以及当前窗口中的转换列表;转换(Transition)用于表示模型中的一个
转换关系,它保存了任务和窗口节点信息,其中任务表示当前窗口节点中的一个任务,而节
点表示任务执行后所产生的子节点;

运用安卓应用窗口全覆盖测试用例自动生成方法自动生成测试用例包括以下步
骤:

步骤(1),通过基于ADB命令的安卓应用窗口控件识别方法识别目标窗口中的所有
控件信息和目标窗口信息,根据控件类型为每个控件生成一个任务,形成任务列表,根据窗
口信息生成窗口标识,并把窗口标识加入窗口节点中;

步骤(2),如果窗口节点的任务列表不为空,依次从任务列表中取出一个任务,并
根据窗口标识判断当前窗口是否为执行任务所需要的窗口,如果是所需窗口,则直接执行
任务,如果不是所需窗口,则先恢复到当前任务所需要的窗口,然后执行任务;

步骤(3),判断执行这个任务后窗口是否发生切换;

步骤(4),如果发生切换,则判断是否跳转到其他应用的窗口中,如果跳转到其它
应用的窗口中,则重启应用程序,循环步骤(1)、步骤(2)、步骤(3),否则把当前任务加入到
任务执行路径列表中,循环步骤(1),获取跳转后的窗口节点信息,把新窗口节点信息和当
前执行的任务加入到当前转换中,把当前转换添加到当前窗口节点的转换列表中,同时把
前一个窗口节点添加为新窗口节点的父窗口节点;

步骤(5),如果没有发生切换,循环步骤(2)、步骤(3);

步骤(6),判断当前窗口是否为结束窗口,即点击这个窗口上的任何控件都不会切
换到新的窗口,如果为结束窗口则根据任务执行路径列表生成一个测试用例,同时删除任
务执行路径列表中最后一个任务;

步骤(7),判断是否遍历完整个应用程序,如果已经遍历完整个应用程序,则整个
遍历结果,如果没有遍历完整个应用程序,则返回上一个窗口,递归执行前面六个步骤,从
而实现对整个应用进行遍历。

在步骤(2)中,恢复到所需窗口的过程为:

先从任务中获取任务执行所需要的目标窗口标识,然后获取应用程序当前窗口标
识,如果目标窗口标识和当前窗口标识相同则不做处理,如果不同则模拟返回操作返回前
一个窗口,再判断返回后的窗口标识是否为目标窗口标识;重复上述过程,直到找到目标窗
口为止;如果退回到应用程序的起始窗口还没有找到目标窗口,则从目标窗口节点中获取
保存的已经执行的任务列表,从起始窗口开始,依次执行任务列表中的任务,直到运行到目
标窗口。

在步骤(6)中,生成的测试用例保存在Excel文档中,测试用例的内容包括测试用
例名称、操作步骤、当前Activity名称、目标Activity名称、被测控件的相关信息、操作关键
字、结果检查关键字、输入数据和预期输出数据字段。

进一步,在步骤二中,运用安卓应用窗口全覆盖测试用例自动生成方法自动生成
测试用例时,可使用<Activity名称、当前窗口截图>替代<Activity名称、窗口哈希码>来唯
一标识一个安卓应用窗口。

进一步,在步骤三中,运用RobotiumEx高重用测试脚本自动生成方法自动生成测
试脚本时,首先对Robotium框架中Solo类包含的常用方法进行封装,然后通过在Excel文档
中输入相应的关键字调用封装好的测试脚本生成方法,自动生成测试脚本;

运用RobotiumEx高重用测试脚本自动生成方法自动生成测试脚本包括以下步骤:

步骤(1),对Robotium框架中Solo类包含的常用方法进行封装,得到常用的测试脚
本生成方法;

步骤(2),给封装好的测试脚本生成方法绑定相应的关键字,形成RobotiumEx自动
化测试框架;

步骤(3),运用安卓应用窗口全覆盖测试用例自动生成方法生成Excel测试用例文
档;

步骤(4),在生成的测试用例文档中添加相应的测试数据和关键字;

步骤(5),读取添加关键字和测试数据后的测试用例,获取测试用例对应的所有关
键字,依次通过关键字调用相应的测试脚本生成方法,为测试用例自动生成测试脚本。

本发明的另一目的在于提供一种安卓应用程序自动化黑盒测试的系统,该安卓应
用程序自动化黑盒测试的系统包括:

基于ADB命令的安卓应用窗口控件识别模块,用于获取当前窗口的控件信息和窗
口信息,控件信息包括控件类型、控件名称和控件属性,窗口信息包括窗口所在Activity名
称和窗口哈希码;

安卓应用窗口全覆盖测试用例自动生成模块,与所述基于ADB命令的安卓应用窗
口控件识别模块相连接,用于根据深度优先遍历方式,在自动生成测试用例的过程中对安
卓应用窗口进行全覆盖;

RobotiumEx高重用测试脚本自动生成模块,与所述安卓应用窗口全覆盖测试用例
自动生成模块相连接,用于对Robotium框架中Solo类包含的常用方法进行封装,并通过在
Excel文档中输入相应的关键字调用封装好的测试脚本生成方法,自动生成测试脚本。

本发明提供的安卓应用程序自动化黑盒测试的方法及系统,首先通过基于ADB命
令的安卓应用窗口控件识别方法,识别目标窗口中的所有控件信息和目标窗口信息;然后
运用安卓应用窗口全覆盖测试用例自动生成方法,自动生成测试用例;最后运用
RobotiumEx高重用测试脚本自动生成方法,自动生成测试脚本;在通过基于ADB命令的安卓
应用窗口控件识别方法,识别目标窗口中的所有控件信息和目标窗口信息时,在获取控件
信息时只需解析通过ADB命令获得的控件信息文档即可得到所有控件信息,并且通过ADB命
令可以直接获取窗口信息,过程简单并且节约时间;在运用安卓应用窗口全覆盖测试用例
自动生成方法自动生成测试用例时,可在自动生成测试用例的过程中,对安卓应用窗口进
行全覆盖;在运用RobotiumEx高重用测试脚本自动生成方法,自动生成测试脚本时,通过对
Robotium自动化测试框架进行封装,只需在测试用例文档中添加关键字和测试数据,即可
实现自动生成测试脚本,并且当测试数据发生变化时,只需修改测试用例文档中的测试数
据即可,而不需修改测试脚本,从而提高了测试脚本的可重用性;本发明达到了在不需要程
序源码的情况下,提高测试的自动化程度、界面覆盖率和提高测试脚本的可重用性的目的。

附图说明

图1是本发明实施例提供的安卓应用程序自动化黑盒测试的方法的实现流程图;

图2是本发明实施例提供的基于ADB命令的安卓应用窗口控件识别的实现流程图;

图3是本发明实施例提供的安卓应用窗口全覆盖测试用例自动生成的实现流程
图;

图4是本发明实施例提供的SCLICK关键字封装的实现流程图;

图5是本发明实施例提供的安卓应用程序自动化黑盒测试的系统的结构框图。

图中:51、基于ADB命令的安卓应用窗口控件识别模块;52、安卓应用窗口全覆盖测
试用例自动生成模块;53、RobotiumEx高重用测试脚本自动生成模块。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明
进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于
限定本发明。

如图1所示,本发明是这样实现的,一种安卓应用程序自动化黑盒测试的方法,该
安卓应用程序自动化黑盒测试的方法包括以下步骤:

步骤S101,通过基于ADB命令的安卓应用窗口控件识别方法识别目标窗口中的所
有控件信息和目标窗口信息;

步骤S102,运用安卓应用窗口全覆盖测试用例自动生成方法自动生成测试用例;

步骤S103,运用RobotiumEx高重用测试脚本自动生成方法自动生成测试脚本。

在本发明实施例中,步骤S101,通过基于ADB命令的安卓应用窗口控件识别方法识
别目标窗口中的所有控件信息和目标窗口信息时,控件信息包括控件类型、控件名称和控
件属性,窗口信息包括窗口所在Activity名称和窗口哈希码;

如图2所示,通过基于ADB命令的安卓应用窗口控件识别方法识别目标窗口中的所
有控件信息和目标窗口信息包括以下步骤:

步骤(1),通过ADB向设备分别发送dump和adb shell dumpsys window w|findstr
mCurrent命令;

步骤(2),通过执行dump命令获得保存当前设备屏幕上的窗口控件信息的xml文
件,通过执行adb shell dumpsys window w|findstr mCurrent命令获得当前窗口所属的
Activity名和窗口哈希码;

步骤(3),把获得的xml文件抓取到本地主机上,对其进行解析,并把获得的当前窗
口所属的Activity名和窗口哈希码信息加入控件信息中,生成控件节点列表;

步骤(4),把生成的控件节点列表重新写入一个xml文件中。

在本发明实施例中,步骤S102,运用安卓应用窗口全覆盖测试用例自动生成方法
自动生成测试用例时,需要构建一个基于安卓应用窗口的遍历模型,遍历模型为一个有向
图,图节点表示一个窗口节点,而图的边表示一个模拟动作,在基于窗口的遍历模型中,窗
口标识(Window Flag)用于唯一标识一个窗口,在窗口标识中保存了Activity名称和窗口
哈希码信息,可通过分别对Activity名称和窗口哈希码进行对比来判断两个窗口是否相
同;任务(Task)可表示为(窗口标识,动作,控件节点)这样一个三元组,其中窗口标识表示
一个动作在此窗口下执行,动作表示一个待模拟的操作,控件节点表示待模拟操作所属控
件,只有当应用程序运行到此窗口且此窗口上的动作被执行后,一个任务才算被执行;窗口
节点(Window Node)中保存了与窗口相关的所有信息,其中包括对应的窗口标识、当前窗口
中包含的所有待执行的任务形成的任务列表、父节点、子节点列表、从起始窗口节点到当前
窗口节点的路径上执行的所有任务列表以及当前窗口中的转换列表;转换(Transition)用
于表示模型中的一个转换关系,它保存了任务和窗口节点信息,其中任务表示当前窗口节
点中的一个任务,而节点表示任务执行后所产生的子节点;

如图3所示,运用安卓应用窗口全覆盖测试用例自动生成方法自动生成测试用例
包括以下步骤:

步骤(1),通过基于ADB命令的安卓应用窗口控件识别方法识别目标窗口中的所有
控件信息和目标窗口信息,根据控件类型为每个控件生成一个任务,形成任务列表,根据窗
口信息生成窗口标识,并把窗口标识加入窗口节点中;

步骤(2),如果窗口节点的任务列表不为空,依次从任务列表中取出一个任务,并
根据窗口标识判断当前窗口是否为执行任务所需要的窗口,如果是所需窗口,则直接执行
任务,如果不是所需窗口,则先恢复到当前任务所需要的窗口,然后执行任务;

步骤(3),判断执行这个任务后窗口是否发生切换;

步骤(4),如果发生切换,则判断是否跳转到其他应用的窗口中,如果跳转到其它
应用的窗口中,则重启应用程序,循环步骤(1)、步骤(2)、步骤(3),否则把当前任务加入到
任务执行路径列表中,循环步骤(1),获取跳转后的窗口节点信息,把新窗口节点信息和当
前执行的任务加入到当前转换中,把当前转换添加到当前窗口节点的转换列表中,同时把
前一个窗口节点添加为新窗口节点的父窗口节点;

步骤(5),如果没有发生切换,循环步骤(2)、步骤(3);

步骤(6),判断当前窗口是否为结束窗口,即点击这个窗口上的任何控件都不会切
换到新的窗口,如果为结束窗口则根据任务执行路径列表生成一个测试用例,同时删除任
务执行路径列表中最后一个任务;

步骤(7),判断是否遍历完整个应用程序,如果已经遍历完整个应用程序,则整个
遍历结果,如果没有遍历完整个应用程序,则返回上一个窗口,递归执行前面六个步骤,从
而实现对整个应用进行遍历。

在步骤(2)中,恢复到所需窗口的过程为:

先从任务中获取任务执行所需要的目标窗口标识,然后获取应用程序当前窗口标
识,如果目标窗口标识和当前窗口标识相同则不做处理,如果不同则模拟返回操作返回前
一个窗口,再判断返回后的窗口标识是否为目标窗口标识;重复上述过程,直到找到目标窗
口为止;如果退回到应用程序的起始窗口还没有找到目标窗口,则从目标窗口节点中获取
保存的已经执行的任务列表,从起始窗口开始,依次执行任务列表中的任务,直到运行到目
标窗口。

在步骤(6)中,生成的测试用例保存在Excel文档中,测试用例的内容包括测试用
例名称、操作步骤、当前Activity名称、目标Activity名称、被测控件的相关信息、操作关键
字、结果检查关键字、输入数据和预期输出数据字段。

在本发明实施例中,在步骤S102中,运用安卓应用窗口全覆盖测试用例自动生成
方法自动生成测试用例时,可使用<Activity名称、当前窗口截图>替代<Activity名称、窗
口哈希码>来唯一标识一个安卓应用窗口。

在本发明实施例中,在步骤S103中,运用RobotiumEx高重用测试脚本自动生成方
法自动生成测试脚本时,首先对Robotium框架中Solo类包含的常用方法进行封装,然后通
过在Excel文档中输入相应的关键字调用封装好的测试脚本生成方法,自动生成测试脚本;

运用RobotiumEx高重用测试脚本自动生成方法自动生成测试脚本包括以下步骤:

步骤(1),对Robotium框架中Solo类包含的常用方法进行封装,得到常用的测试脚
本生成方法;

步骤(2),给封装好的测试脚本生成方法绑定相应的关键字,形成RobotiumEx自动
化测试框架;

步骤(3),运用安卓应用窗口全覆盖测试用例自动生成方法生成Excel测试用例文
档;

步骤(4),在生成的测试用例文档中添加相应的测试数据和关键字;

步骤(5),读取添加关键字和测试数据后的测试用例,获取测试用例对应的所有关
键字,依次通过关键字调用相应的测试脚本生成方法,为测试用例自动生成测试脚本。

如图5所示,本发明的另一目的在于提供一种安卓应用程序自动化黑盒测试的系
统,该安卓应用程序自动化黑盒测试的系统包括:

基于ADB命令的安卓应用窗口控件识别模块51,用于获取当前窗口的控件信息和
窗口信息,控件信息包括控件类型、控件名称和控件属性,窗口信息包括窗口所在Activity
名称和窗口哈希码;

安卓应用窗口全覆盖测试用例自动生成模块52,与基于ADB命令的安卓应用窗口
控件识别模块51相连接,用于根据深度优先遍历方式,在自动生成测试用例的过程中对安
卓应用窗口进行全覆盖;

RobotiumEx高重用测试脚本自动生成模块53,与安卓应用窗口全覆盖测试用例自
动生成模块52相连接,用于对Robotium框架中Solo类包含的常用方法进行封装,并通过在
Excel文档中输入相应的关键字调用封装好的测试脚本生成方法,自动生成测试脚本。

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

本发明实施例提供的安卓应用程序自动化黑盒测试的方法包含:基于ADB命令的
安卓应用窗口控件识别方法、安卓应用窗口全覆盖测试用例自动生成方法和RobotiumEx高
重用测试脚本自动生成方法三大部分,首先通过基于ADB命令的安卓应用窗口控件识别方
法识别目标窗口中的所有控件信息和目标窗口信息;然后运用安卓应用窗口全覆盖测试用
例自动生成方法自动生成测试用例;最后运用RobotiumEx高重用测试脚本自动生成方法自
动生成测试脚本。从而达到在不需要程序源码的情况下提高测试的自动化程度、界面覆盖
率和提高测试脚本的可重用性的目的。

本发明提出了一种安卓应用窗口全覆盖测试用例自动生成和RobotiumEx高重用
测试脚本自动生成的自动化黑盒测试方法,该方法包含基于ADB命令的安卓应用窗口控件
识别、安卓应用窗口全覆盖测试用例自动生成和RobotiumEx高重用测试脚本自动生成三部
分。

1)基于ADB命令的安卓应用窗口控件识别

该部分用于获取当前窗口的控件信息和窗口信息,控件信息包括控件类型、控件
名称和控件属性等,窗口信息包括窗口所在Activity名称和窗口哈希码。基于ADB命令的安
卓应用窗口控件识别过程如图2所示。

主要步骤如下:

(1)通过ADB向设备分别发送dump和adb shell dumpsys window w|findstr
mCurrent命令;

(2)通过执行dump命令获得保存当前设备屏幕上的窗口控件信息的xml文件,通过
执行adb shell dumpsys window w|findstr mCurrent命令获得当前窗口所属的Activity
名和窗口哈希码;

(3)把获得的xml文件抓取到本地主机上,对其进行解析,并把获得的当前窗口所
属的Activity名和窗口哈希码信息加入控件信息中,生成控件节点列表;

(4)把生成的控件节点列表重新写入一个xml文件中。

2)安卓应用窗口全覆盖测试用例自动生成

根据深度优先遍历思想,本发明提出了一种安卓应用窗口全覆盖测试用例自动生
成方法,这种方法的特征为可以在自动生成测试用例的过程中对安卓应用窗口进行全覆
盖。其中在运用这种方法自动生成测试用例的过程中需要构建一个基于安卓应用窗口的遍
历模型,这个遍历模型为一个有向图,图节点表示一个窗口节点,而图的边表示一个模拟动
作。

为了更好地描述基于窗口的遍历模型,本发明对以下概念进行了定义:

定义:窗口标识(Window Flag)用于唯一标识一个窗口,在窗口标识中保存了
Activity名称和窗口哈希码信息,可以通过分别对Activity名称和窗口哈希码进行对比来
判断两个窗口是否相同。

定义:任务(Task)可表示为(窗口标识,动作,控件节点)这样一个三元组,其中窗
口标识表示一个动作在此窗口下执行,动作表示一个待模拟的操作,控件节点表示待模拟
操作所属控件,只有当应用程序运行到此窗口且此窗口上的动作被执行后,一个任务才算
被执行。

定义:窗口节点(Window Node)中保存了与窗口相关的所有信息,其中包括对应的
窗口标识、当前窗口中包含的所有待执行的任务形成的任务列表、父节点、子节点列表、从
起始窗口节点到当前窗口节点的路径上执行的所有任务列表以及当前窗口中的转换列表。

定义:转换(Transition)用于表示模型中的一个转换关系,它保存了任务和窗口
节点信息,其中任务表示当前窗口节点中的一个任务,而节点表示任务执行后所产生的子
节点。

安卓应用窗口全覆盖测试用例自动生成过程如图3所示。

主要步骤如下:

(1)通过基于ADB命令的安卓应用窗口控件识别方法识别目标窗口中的所有控件
信息和目标窗口信息,根据控件类型为每个控件生成一个任务,形成任务列表,根据窗口信
息生成窗口标识,并把它们加入窗口节点中;

(2)如果窗口节点的任务列表不为空,依次从任务列表中取出一个任务,并根据窗
口标识判断当前窗口是否为执行任务所需要的窗口,如果是所需窗口,则直接执行任务,如
果不是所需窗口,则先恢复到当前任务所需要的窗口,然后执行任务;

恢复到所需窗口的过程为:先从任务中获取任务执行所需要的目标窗口标识,然
后获取应用程序当前窗口标识,如果目标窗口标识和当前窗口标识相同则不做处理,如果
不同则模拟返回操作返回前一个窗口,再判断返回后的窗口标识是否为目标窗口标识。重
复上述过程,直到找到目标窗口为止。如果退回到应用程序的起始窗口还没有找到目标窗
口,则从目标窗口节点中获取保存的已经执行的任务列表,从起始窗口开始,依次执行任务
列表中的任务,直到运行到目标窗口。

(3)判断执行这个任务后窗口是否发生切换;

(4)如果发生切换,则判断是否跳转到其他应用的窗口中,如果跳转到其它应用的
窗口中,则重启应用程序,循环步骤(1)、(2)、(3)。否则把当前任务加入到任务执行路径列
表中,循环步骤(1),获取跳转后的窗口节点信息,把新窗口节点信息和当前执行的任务加
入到当前转换中,把当前转换添加到当前窗口节点的转换列表中,同时把前一个窗口节点
添加为新窗口节点的父窗口节点;

(5)如果没有发生切换,循环步骤(2)(3);

(6)判断当前窗口是否为结束窗口,即点击这个窗口上的任何控件都不会切换到
新的窗口,如果为结束窗口则根据任务执行路径列表生成一个测试用例,同时删除任务执
行路径列表中最后一个任务;

(7)判断是否遍历完整个应用程序,如果已经遍历完整个应用程序,则整个遍历结
果。如果没有遍历完整个应用程序,则返回上一个窗口,递归执行前面六个步骤,从而实现
对整个应用进行遍历。

生成的测试用例保存在Excel文档中,测试用例的内容包括测试用例名称、操作步
骤、当前Activity名称、目标Activity名称、被测控件的相关信息、操作关键字、结果检查关
键字、输入数据和预期输出数据等字段。

(3)RobotiumEx高重用测试脚本自动生成

RobotiumEx高重用测试脚本自动生成方法首先对Robotium框架中Solo类包含的
常用方法进行封装;然后通过在Excel文档中输入相应的关键字调用封装好的测试脚本生
成方法,自动生成测试脚本。

主要步骤如下:

(1)对Robotium框架中Solo类包含的常用方法进行封装,得到常用的测试脚本生
成方法;

(2)给封装好的测试脚本生成方法绑定相应的关键字,形成RobotiumEx自动化测
试框架;

(3)运用安卓应用窗口全覆盖测试用例自动生成方法生成Excel测试用例文档;

(4)在生成的测试用例文档中添加相应的测试数据和关键字;

(5)读取添加关键字和测试数据后的测试用例,获取测试用例对应的所有关键字,
依次通过关键字调用相应的测试脚本生成方法,为测试用例自动生成测试脚本。

RobotiumEx自动化测试框架封装了操作关键字和结果检查关键字两种关键字,表
1为所封装的部分关键字表。

表1部分关键字表



下面以SCLICK关键字为例对关键字的封装过程进行详细介绍,SCLICK关键字的封
装过程如图4所示。

本发明技术方案带来的有益效果

(1)由于一个Activity可能包含多个不同的窗口,同一个Activity中的窗口可以
相互切换,基于Activity的遍历模型其实并没有真正建立显示界面之间的切换关系,因此
安卓应用窗口全覆盖测试用例自动生成方法可以提高测试的界面覆盖率。

(2)由于在使用Robotium编写测试脚本的时候,测试数据是包含在脚本中的,当测
试数据发生变化时候,就需要修改测试脚本,代码重用性不高。而RobotiumEx高重用测试脚
本自动生成方法在测试数据发生变化时候,只需修改测试用例文档中的测试数据即可,从
而提高了测试脚本的可重用性。

在运用安卓应用窗口全覆盖测试用例自动生成方法自动生成测试用例这一步骤
中,可以使用<Activity名称,当前窗口截图>替代<Activity名称,窗口哈希码>来唯一标识
一个安卓应用窗口。

本发明根据深度优先遍历思想,提出了一种安卓应用窗口全覆盖测试用例自动生
成方法,这种方法可以在自动生成测试用例的过程中对安卓应用窗口进行全覆盖;本发明
对整个技术方案的改进:首先通过基于ADB命令的安卓应用窗口控件识别方法识别目标窗
口中的所有控件信息和目标窗口信息,这种方法在获取控件信息时只需解析通过ADB命令
获得的控件信息文档即可得到所有控件信息,并且通过ADB命令可以直接获取窗口信息,过
程简单并且节约时间;然后运用安卓应用窗口全覆盖测试用例自动生成方法自动生成测试
用例,这种方法可以在自动生成测试用例的过程中对安卓应用窗口进行全覆盖;最后运用
RobotiumEx高重用测试脚本自动生成方法自动生成测试脚本,这种方法通过对Robotium自
动化测试框架进行封装,只需在测试用例文档中添加关键字和测试数据,即可实现自动生
成测试脚本,并且当测试数据发生变化时,只需修改测试用例文档中的测试数据即可,而不
需修改测试脚本,从而提高了测试脚本的可重用性。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精
神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

一种安卓应用程序自动化黑盒测试的方法及系统.pdf_第1页
第1页 / 共18页
一种安卓应用程序自动化黑盒测试的方法及系统.pdf_第2页
第2页 / 共18页
一种安卓应用程序自动化黑盒测试的方法及系统.pdf_第3页
第3页 / 共18页
点击查看更多>>
资源描述

《一种安卓应用程序自动化黑盒测试的方法及系统.pdf》由会员分享,可在线阅读,更多相关《一种安卓应用程序自动化黑盒测试的方法及系统.pdf(18页珍藏版)》请在专利查询网上搜索。

本发明公开了一种安卓应用程序自动化黑盒测试的方法及系统,识别目标窗口中的所有控件信息和目标窗口信息时,在获取控件信息时只需解析通过ADB命令获得的控件信息文档即可得到所有控件信息,并且通过ADB命令可直接获取窗口信息,过程简单;自动生成测试用例时,可在自动生成测试用例过程中,对安卓应用窗口全覆盖;自动生成测试脚本时,通过对Robotium自动化测试框架封装,只需在测试用例文档中添加关键字和测试数据。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1