一种应用程序的测试方法、装置及测试设备的制造方法

文档序号:9750726阅读:347来源:国知局
一种应用程序的测试方法、装置及测试设备的制造方法
【技术领域】
[0001]本发明涉及软件测试技术领域,尤其涉及一种应用程序的测试方法、装置及测试设备。
【背景技术】
[0002]当前测试设备在对应用程序进行漏洞测试的过程中,通过与FUZZING测试技术相关的测试工具构建一些非常规的,或无效的,或随机的外部输入数据,并通过该应用程序提供的输入控件将所构建的外部输入数据提供给该应用程序,并观察该应用程序的运行情况以判定是否存在代码缺陷。若存在代码缺陷,即应用程序存在与外部输入数据相关的漏洞,会导致应用程序内存被破坏或拒绝服务或应用程序进程崩溃、不响应等后果。通过FUZZING测试工具构建的外部输入数据的方法以及构建结果的覆盖度及准确度会影响测试结果的覆盖度及准确度,然而,当前FUZZING测试工具构建的外部输入数据不够准确,且覆盖度不高,导致基于上述外部数据所产生的测试结果也不够准确,不能完全挖掘出应用程序与外部输入数据相关的漏洞。

【发明内容】

[0003]本发明实施例提供了一种应用程序的测试方法、装置及测试设备。能够为待测试的应用程序构建更加精准的外部输入数据,从而能够更加深度的挖掘出该应用程序存在的与外部输入数据相关的漏洞。
[0004]—方面,本发明的实施例提供了一种应用程序的测试方法,该方法可包括:
[0005]在虚拟机系统中运行待测试应用程序时,捕获其他应用程序向所述待测试应用程序的Acti vi ty组件传递的Intent;
[0006]当捕获到所述Intent后,根据所述Intent的Extra属性中的数据类型生成至少一个模拟Intent;
[0007]将所述至少一个模拟Intent传递至所述待测试应用程序的Activity组件中;
[0008]在预设时间范围内检测所述待测试应用程序的运行状况。
[0009]作为可选的实施例,所述捕获其他应用程序向所述待测试应用程序的Activity组件传递的Intent之前还包括:
[0010]模拟触发操作,以触发所述待测试应用程序调用Intent。
[0011]作为可选的实施例,所述当捕获到所述Intent后,根据所述Intent的Extra属性中的数据类型生成至少一个模拟Intent,包括:
[0012]当捕获到所述Intent后,解析出所述Intent的Extra属性中携带的输入数据的数据类型;
[0013]从预设的模拟输入数据库中调用与所述数据类型对应的模拟输入数据;
[0014]将所述调用的模拟输入数据封装为至少一个模拟Intent。
[0015]作为可选的实施例,所述从预设的模拟输入数据库中调用与所述数据类型对应的模拟输入数据之前还包括:
[0016]生成用于指示数据区间范围的调用脚本;
[0017]其中,所述从预设的模拟输入数据库中调用与所述数据类型对应的模拟输入数据包括:
[0018]从预设的模拟输入数据库中查找到与所述数据类型对应的模拟输入数据集;
[0019]按照所述调用脚本确定所述模拟输入数据集中的模拟输入数据区间;
[0020]调用所述模拟输入数据区间中的模拟输入数据。
[0021]作为可选的实施例,所述在预设时间范围内检测所述待测试应用程序的运行状况之后还包括:
[0022]统计引起所述待测试应用程序的运行状况异常的模拟Intent;
[0023]将所述统计的模拟Intent中的模拟输入数据添加至异常输入数据库中。
[0024]另一方面,本发明的实施例提供了一种应用程序的测试装置,该装置可包括:
[0025]捕获模块,用于在虚拟机系统中运行待测试应用程序时,捕获其他应用程序向所述待测试应用程序的Activity组件传递的Intent;
[0026]生成模块,用于当所述捕获模块捕获到所述Intent后,根据所述Intent的Extra属性中的数据类型生成至少一个模拟Intent ;
?0027] 传递模块,用于将所述生成模块生成的至少一个模拟Intent传递至所述待测试应用程序的Activity组件中;
[0028]检测模块,用于在预设时间范围内检测所述待测试应用程序的运行状况。
[0029]作为可选的实施例,还包括:
[0030]模拟模块,用于模拟触发操作,以触发所述待测试应用程序调用Intent。
[0031]作为可选的实施例,所述生成模块包括:
[0032]解析单元,用于当所述捕获模块捕获到所述Intent后,解析出所述Intent的Extra属性中携带的输入数据的数据类型;
[0033]调用单元,用于从预设的模拟输入数据库中调用与所述数据类型对应的模拟输入数据;
[0034]封装单元,用于将所述调用的模拟输入数据封装为至少一个模拟Intent。
[0035]作为可选的实施例,所述生成模块还包括:
[0036]生成单元,用于生成用于指示数据区间范围的调用脚本;
[0037]其中,所述调用单元包括:
[0038]查找子单元,用于从预设的模拟输入数据库中查找到与所述数据类型对应的模拟输入数据集;
[0039]确定子单元,用于按照所述生成单元生成的调用脚本确定所述模拟输入数据集中的模拟输入数据区间;
[0040]调用子单元,用于调用所述模拟输入数据区间中的模拟输入数据。
[0041]作为可选的实施例,还包括:
[0042]统计模块,用于在所述检测模块在预设时间范围内检测所述待测试应用程序的运行状况之后,统计引起所述待测试应用程序的运行状况异常的模拟Intent;
[0043]添加模块,用于将所述统计的模拟Intent中的模拟输入数据添加至异常输入数据库中。
[0044]又一方面,本发明的实施例提供了一种测试设备,包括存储器及处理器,其中,所述存储器中存储一组程序代码,且所述处理器调用所述存储器中存储的程序代码,用于执行以下操作:
[0045]在虚拟机系统中运行待测试应用程序时,触发所述待测试应用程序从其他应用程序中调用Intent;
[0046]当调用到所述Intent后,根据所述Intent中的数据类型生成至少一个模拟Intent;
[0047]将所述至少一个模拟Intent传递至所述待测试应用程序中的目标组件;
[0048]在预设时间范围内检测所述待测试应用程序的运行状况。
[0049]本发明实施例中,在虚拟机系统中运行待测试应用程序时,通过捕获其他应用程序向所述待测试应用程序的Acti vity组件传递的intent,可获取到运行过程中真实的Intent,基于该真实的Intent的Extra属性中所对应的数据类型,可生成至少一个模拟Intent。可将生成的模拟Intent传递至待测试应用程序中的Activity组件中,并可在预设时间范围内检测该待测试应用程序的运行状况,以检测通过Intent构造的外部输入数据是否会引起待测试应用程序的异常运行。通过上述方式,生成的模拟Intent相对于FUZZING测试工具生成的外部输入数据精准性更高。从而能够为待测试的应用程序构建更加精准的外部输入数据,并能够更加深度的挖掘出该应用程序存在的与外部输入数据相关的漏洞。
【附图说明】
[0050]为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0051]图1是本发明中的一种应用程序的测试方法的一实施例的流程图;
[0052]图2是本发明中的一种应用程序的测试方法的另一实施例的流程图;
[0053]图3是本发明中的一种应用程序的测试装置的一实施例的结构示意图;
[0054]图4是本发明中的一种应用程序的测试装置的另一实施例的结构示意图;
[0055]图5是本发明中的一种测试设备的一实施例的结构示意图。
【具体实施方式】
[0056]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0057]下面参考附图对本发明的实施例进行描述。其中,本发明实施例所述装置或设备包括能够安装虚拟机系统,并能够对应用程序通过安装的虚拟机系统进行测试的终端或设备。
[0058]参见图1,图1为本发明中的一种应用程序的测试方法的一实施例的流程图。该方法可包括以下步骤。
[0059]步骤SlOl,在虚拟机系统中运行待测试应用程序时,捕获其他应用程序向所述待测试应用程序的Acti vity组件传递的Intent。
[0060]在一个实施例中,通过在虚拟机系统中运行待测试应用程序,可捕获其他应用程序向该待测试应用程序的Activity组件传递的Intent。具体的,Activity组件(中文:活动组件)作为应用程序组件中的其中之一,主要负责用户交互。其中,Activity组件之间的通信通过Intent (中文:意图)传递。Intent中封装两个组件需要通信的信息或数据等。Intent存在以下几个属性:Component ,Act1n ,Category,Data,Type ,Extra,Flag七个属性,其中Component属性用来指定需要启动的目标组件,Extra属性用于携带需要交换的数据。本发明实施例中,所捕获的Intent的目标组件即为待测试应用程序的Activity组件。可选的,可通过模拟触发操作,触发待
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1