当前位置: 首页 > 专利查询>深圳大学专利>正文

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

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

Method and system for automatic black box testing of Android application

The invention discloses a method and a system for Android apps automated black box testing, all the information and control information to identify the target target window in the window, in the access control information only when the analysis of the ADB command control information document can obtain all the control information, a simple and direct access to information through the ADB window. Command process; automatic test case generation, the automatic generation of test cases in the process of Android application window full coverage; generate test script automatically, by encapsulating the Robotium automated testing framework, only need to add keywords and test data in the test case document, generate test script automatically, when the test data changes when you can just modify the test data in the test case document; the invention does not need in the case of program source code It improves the automation of testing, the coverage rate of the interface and the reusability of the test scripts.

【技术实现步骤摘要】
一种安卓应用程序自动化黑盒测试的方法及系统
本专利技术属于安卓应用程序测试
,尤其涉及一种安卓应用程序自动化黑盒测试的方法及系统。
技术介绍
窗口(window)为应用程序显示在设备屏幕上的整个图形界面,唯一标识当前界面。引起窗口变化的因素包括不同Activity间的相互切换、同一个Activity组件中不同布局控件的显示与隐藏等。ADB(AndroidDebugBridge)即Android调试桥,是Android系统中的一种命令行工具,可以利用ADB实现Android手机与PC的连接。APK(AndroidPackage)即Android安装包。随着移动互联网技术的快速发展,Android应用程序的开发数量也越来越多。为保证Android应用程序的质量,应用程序在正式发布到应用市场之前,需要对它进行测试。但是开发者只提供了APK应用包给应用市场,只能进行黑盒测试。同时,自动化黑盒测试也非常符合最近比较流行的移动云测试服务。开发者只需上传被测应用程序的APK文件,就可利用云服务平台的资源进行测试。因此,实现在无源码的情况下对Android应用程序进行自动化测试是非常有意义的。然而,现有的方法和技术仍然不能充分满足自动化和覆盖率方面的要求,主要存在的问题包括:其一,需要手动编写或者手动录制测试脚本,导致测试的自动化程度不高;其二,需先通过静态分析技术构建Activity转换图,不仅过程复杂,而且界面覆盖率不高。TanzirulAzim等人提出了使用目标和深度优先遍历的方式模拟用户操作与Android应用程序进行交互,从而实现对应用程序进行测试,具体的实现过程为:(1)对被测应用程序进行静态分析,构建基于Activity组件的遍历模型;(2)运用目标和深度优先遍历的方式,模拟用户操作与Android应用程序进行交互;(3)在遍历的过程中生成测试结果。该技术方案的缺点:由于采用的是基于Activity组件的遍历模型,由于一个Activity可能包含多个不同的窗口,同一个Activity中的窗口可以相互切换,基于Activity的遍历模型其实并没有真正建立显示界面之间的切换关系,使得其对GUI的遍历不够充分,从而影响界面覆盖率。
技术实现思路
本专利技术的目的在于提供一种安卓应用程序自动化黑盒测试的方法及系统,旨在解决现有技术提供的安卓应用程序的方法,需要手动编写或者手动录制测试脚本,导致测试的自动化程度不高,同时需先通过静态分析技术构建Activity转换图,过程复杂,界面覆盖率不高的问题。本专利技术是这样实现的,一种安卓应用程序自动化黑盒测试的方法,该安卓应用程序自动化黑盒测试的方法包括以下步骤:步骤一,通过基于ADB命令的安卓应用窗口控件识别方法识别目标窗口中的所有控件信息和目标窗口信息;步骤二,运用安卓应用窗口全覆盖测试用例自动生成方法自动生成测试用例;步骤三,运用RobotiumEx高重用测试脚本自动生成方法自动生成测试脚本。进一步,步骤一,通过基于ADB命令的安卓应用窗口控件识别方法识别目标窗口中的所有控件信息和目标窗口信息时,控件信息包括控件类型、控件名称和控件属性,窗口信息包括窗口所在Activity名称和窗口哈希码;通过基于ADB命令的安卓应用窗口控件识别方法识别目标窗口中的所有控件信息和目标窗口信息包括以下步骤:步骤(1),通过ADB向设备分别发送dump和adbshelldumpsyswindoww|findstrmCurrent命令;步骤(2),通过执行dump命令获得保存当前设备屏幕上的窗口控件信息的xml文件,通过执行adbshelldumpsyswindoww|findstrmCurrent命令获得当前窗口所属的Activity名和窗口哈希码;步骤(3),把获得的xml文件抓取到本地主机上,对其进行解析,并把获得的当前窗口所属的Activity名和窗口哈希码信息加入控件信息中,生成控件节点列表;步骤(4),把生成的控件节点列表重新写入一个xml文件中。进一步,步骤二,运用安卓应用窗口全覆盖测试用例自动生成方法自动生成测试用例时,需要构建一个基于安卓应用窗口的遍历模型,遍历模型为一个有向图,图节点表示一个窗口节点,而图的边表示一个模拟动作,在基于窗口的遍历模型中,窗口标识(WindowFlag)用于唯一标识一个窗口,在窗口标识中保存了Activity名称和窗口哈希码信息,可通过分别对Activity名称和窗口哈希码进行对比来判断两个窗口是否相同;任务(Task)可表示为(窗口标识,动作,控件节点)这样一个三元组,其中窗口标识表示一个动作在此窗口下执行,动作表示一个待模拟的操作,控件节点表示待模拟操作所属控件,只有当应用程序运行到此窗口且此窗口上的动作被执行后,一个任务才算被执行;窗口节点(WindowNode)中保存了与窗口相关的所有信息,其中包括对应的窗口标识、当前窗口中包含的所有待执行的任务形成的任务列表、父节点、子节点列表、从起始窗口节点到当前窗口节点的路径上执行的所有任务列表以及当前窗口中的转换列表;转换(Transition)用于表示模型中的一个转换关系,它保存了任务和窗口节点信息,其中任务表示当前窗口节点中的一个任务,而节点表示任务执行后所产生的子节点;运用安卓应用窗口全覆盖测试用例自动生成方法自动生成测试用例包括以下步骤:步骤(1),通过基于ADB命令的安卓应用窗口控件识别方法识别目标窗口中的所有控件信息和目标窗口信息,根据控件类型为每个控件生成一个任务,形成任务列表,根据窗口信息生成窗口标识,并把窗口标识加入窗口节点中;步骤(2),如果窗口节点的任务列表不为空,依次从任务列表中取出一个任务,并根据窗口标识判断当前窗口是否为执行任务所需要的窗口,如果是所需窗口,则直接执行任务,如果不是所需窗口,则先恢复到当前任务所需要的窗口,然后执行任务;步骤(3),判断执行这个任务后窗口是否发生切换;步骤(4),如果发生切换,则判断是否跳转到其他应用的窗口中,如果跳转到其它应用的窗口中,则重启应用程序,循环步骤(1)、步骤(2)、步骤(3),否则把当前任务加入到任务执行路径列表中,循环步骤(1),获取跳转后的窗口节点信息,把新窗口节点信息和当前执行的任务加入到当前转换中,把当前转换添加到当前窗口节点的转换列表中,同时把前一个窗口节点添加为新窗口节点的父窗口节点;步骤(5),如果没有发生切换,循环步骤(2)、步骤(3);步骤(6),判断当前窗口是否为结束窗口,即点击这个窗口上的任何控件都不会切换到新的窗口,如果为结束窗口则根据任务执行路径列表生成一个测试用例,同时删除任务执行路径列表中最后一个任务;步骤(7),判断是否遍历完整个应用程序,如果已经遍历完整个应用程序,则整个遍历结果,如果没有遍历完整个应用程序,则返回上一个窗口,递归执行前面六个步骤,从而实现对整个应用进行遍历。在步骤(2)中,恢复到所需窗口的过程为:先从任务中获取任务执行所需要的目标窗口标识,然后获取应用程序当前窗口标识,如果目标窗口标识和当前窗口标识相同则不做处理,如果不同则模拟返回操作返回前一个窗口,再判断返回后的窗口标识是否为目标窗口标识;重复上述过程,直到找到目标窗口为止;如果退回到应用程序的起始窗口还没本文档来自技高网
...
一种安卓应用程序自动化黑盒测试的方法及系统

【技术保护点】
一种安卓应用程序自动化黑盒测试的方法,其特征在于,该安卓应用程序自动化黑盒测试的方法包括以下步骤:步骤一,通过基于ADB命令的安卓应用窗口控件识别方法识别目标窗口中的所有控件信息和目标窗口信息;步骤二,运用安卓应用窗口全覆盖测试用例自动生成方法自动生成测试用例;步骤三,运用RobotiumEx高重用测试脚本自动生成方法自动生成测试脚本。

【技术特征摘要】
1.一种安卓应用程序自动化黑盒测试的方法,其特征在于,该安卓应用程序自动化黑盒测试的方法包括以下步骤:步骤一,通过基于ADB命令的安卓应用窗口控件识别方法识别目标窗口中的所有控件信息和目标窗口信息;步骤二,运用安卓应用窗口全覆盖测试用例自动生成方法自动生成测试用例;步骤三,运用RobotiumEx高重用测试脚本自动生成方法自动生成测试脚本。2.如权利要求1所述的安卓应用程序自动化黑盒测试的方法,其特征在于,步骤一,通过基于ADB命令的安卓应用窗口控件识别方法识别目标窗口中的所有控件信息和目标窗口信息时,控件信息包括控件类型、控件名称和控件属性,窗口信息包括窗口所在Activity名称和窗口哈希码;通过基于ADB命令的安卓应用窗口控件识别方法识别目标窗口中的所有控件信息和目标窗口信息包括以下步骤:步骤(1),通过ADB向设备分别发送dump和adbshelldumpsyswindoww|findstrmCurrent命令;步骤(2),通过执行dump命令获得保存当前设备屏幕上的窗口控件信息的xml文件,通过执行adbshelldumpsyswindoww|findstrmCurrent命令获得当前窗口所属的Activity名和窗口哈希码;步骤(3),把获得的xml文件抓取到本地主机上,对其进行解析,并把获得的当前窗口所属的Activity名和窗口哈希码信息加入控件信息中,生成控件节点列表;步骤(4),把生成的控件节点列表重新写入一个xml文件中。3.如权利要求1所述的安卓应用程序自动化黑盒测试的方法,其特征在于,步骤二,运用安卓应用窗口全覆盖测试用例自动生成方法自动生成测试用例时,需要构建一个基于安卓应用窗口的遍历模型,遍历模型为一个有向图,图节点表示一个窗口节点,而图的边表示一个模拟动作,在基于窗口的遍历模型中,窗口标识(WindowFlag)用于唯一标识一个窗口,在窗口标识中保存了Activity名称和窗口哈希码信息,可通过分别对Activity名称和窗口哈希码进行对比来判断两个窗口是否相同;任务(Task)可表示为(窗口标识,动作,控件节点)这样一个三元组,其中窗口标识表示一个动作在此窗口下执行,动作表示一个待模拟的操作,控件节点表示待模拟操作所属控件,只有当应用程序运行到此窗口且此窗口上的动作被执行后,一个任务才算被执行;窗口节点(WindowNode)中保存了与窗口相关的所有信息,其中包括对应的窗口标识、当前窗口中包含的所有待执行的任务形成的任务列表、父节点、子节点列表、从起始窗口节点到当前窗口节点的路径上执行的所有任务列表以及当前窗口中的转换列表;转换(Transition)用于表示模型中的一个转换关系,它保存了任务和窗口节点信息,其中任务表示当前窗口节点中的一个任务,而节点表示任务执行后所产生的子节点;运用安卓应用窗口全覆盖测试用例自动生成方法自动生成测试用例包括以下步骤:步骤(1),通过基于ADB命令的安卓应用窗口控件识别方法识别目标窗口中的所有控件信息和目标窗口信息,根据控件类型为每个控件生成一个任务,形成任务列表,根据窗口信息生成窗口标识,并把窗口标识加入窗口节点中;步骤(2),如果窗口节点的任务列表不为空,依次从任务列表中取出一个任务,并根据窗口标识判断当前窗口是否为执行任务所需要的窗口,如果是所需窗口,则直接执行任务,如果不是所需窗口,则先恢复到当前任务所需要的窗口,然后执行任务;步骤(3),判断执行这个任务后窗口是否发生切换;步骤(4),如果发生切换,则判断是否跳转到其他应用的窗口中,如果跳转到其它应用的窗口中,则重启应用程序,循环步骤(1)、步骤(2)、步骤(3),否则把当前任务加入到任务执行路径列表中,循环步骤(1),获取跳转后的窗口节点信息,把新窗口节点信息和当前执行的任务加...

【专利技术属性】
技术研发人员:蔡树彬明仲周小婷卢亚辉
申请(专利权)人:深圳大学
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1