一种软件测试方法和装置制造方法

文档序号:6502067阅读:204来源:国知局
一种软件测试方法和装置制造方法
【专利摘要】本发明实施例公开了一种软件测试方法和装置,以方法的实现为例,包括:向待测网络程序中的指定待测部分发送测试报文,使所述指定待测部分处理所述测试报文并发送给目标设备;所述待测网络程序中的指定待测部分采用逆向分析确定;接收所述来自所述目标设备返回的执行结果,并据所述执行结果确定测试结果。采用逆向分析确定待测网络程序中包含的待测部分,测试报文则是发送给指定待测部分,因此可以灵活的使用多线程或者进程集发送待测报文,从而实现高并发,实现大规模网络软件在线测试,提高测试效率。由于测试报文发送给指定的待测部分,为避开数据检查提供了条件,因此为深度测试的彻底执行提供条件。
【专利说明】一种软件测试方法和装置

【技术领域】
[0001]本发明涉及通信【技术领域】,特别涉及一种软件测试方法和装置。

【背景技术】
[0002]目前软件的测试方案是采用hook(钩子)挂接网络软件发包模块的方式来进行测试,如图1所示:
[0003]测试者通过在被测试网络软件中增加注入模块,来进行报文构造和发送,并观察报文发送后的结果以及对其他对等实体或服务端的影响。具体流程如下:
[0004]注入模块构造明文的报文并发送给检查模块;
[0005]检查模块执行数据检查,并按照预定规则丢弃其中的某些报文,然后发送给加密模块;
[0006]加密模块对明文的报文进行加密,得到密文的报文并发送给发包模块;
[0007]发包模块将接收到的密文发送给报文的目标设备,例如服务端或者其他客户端;
[0008]目标设备对报文内容进行处理返回密文的报文给收包模块;
[0009]收包模块接收密文的报文后,转发给解密模块;
[0010]解密模块对接收的密文的报文进行解密,并得到明文的报文,发送给检查模块;
[0011]检查模块执行数据检查,并按照预定规则丢弃其中的某些报文,然后发送给注入模块;
[0012]注入模块将接收到的明文发送给功能模块。
[0013]现有技术方案通过注入模块可以任意构造通信报文进行报文测试,并观察对服务端或其他客户端的影响,可以达到网络软件测试的目的。
[0014]采用以上方案,存在如下技术问题:由于受测试设备的硬件条件限制,一台测试设备能同时运行的被测网络软件个数是有限的,无法模拟大规模(超大规模、海量)网络软件在线测试,致使测试效率低。特别是在网络游戏领域,此问题更为明显,由于网络游戏都是一机一号,通过hook游戏进程注入模块发包的方式不能模拟大规模玩家在线。另外,通过图2所示流程可以看出,网络软件在对报文进行加密之前或者解密之后,会对报文进行检查,如果检查不通过,则数据包被丢弃,这样必然存在一些报文无法到达目标设备,目标设备的结果也无法到达功能模块,导致达不到深度测试的效果,不能测试目标设备对异常数据的反应,并使测试工作无法彻底执行。


【发明内容】

[0015]本发明实施例提供了一种软件测试方法和装置,用于实现大规模网络软件在线测试,提高测试效率,并为深度测试的彻底执行提供条件。
[0016]一种软件测试方法,特征在于,包括:
[0017]向待测网络程序中的指定待测部分发送测试报文,使所述指定待测部分处理所述测试报文并发送给目标设备;所述待测网络程序中的指定待测部分采用逆向分析确定;
[0018]接收所述来自所述目标设备返回的执行结果,并据所述执行结果确定测试结果。
[0019]一种软件测装置,包括:
[0020]存储单元,用于存储待测网络程序;
[0021]发送单元,用于向所述存储单元存储的待测网络程序中的指定待测部分发送测试报文,使所述指定待测部分处理所述测试报文并发送给目标设备;所述待测网络程序中的指定待测部分采用逆向分析确定;
[0022]接收单元,用于接收所述来自所述目标设备返回的执行结果,并据所述执行结果确定测试结果。
[0023]从以上技术方案可以看出,本发明实施例具有以下优点:采用逆向分析确定待测网络程序中包含的待测部分,测试报文则是发送给指定待测部分,因此可以灵活的使用多线程或者进程集发送待测报文,从而实现高并发,实现大规模网络软件在线测试,提高测试效率。由于测试报文发送给指定的待测部分,为避开数据检查提供了条件,因此为深度测试的彻底执行提供条件。

【专利附图】

【附图说明】
[0024]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0025]图1为现有技术目前软件的测试方案结构示意图;
[0026]图2为本发明实施例方法流程示意图;
[0027]图3为本发明实施例逆向工程流程示意图;
[0028]图4为本发明实施例测试数据流向示意图;
[0029]图5为本发明实施例方法流程示意图;
[0030]图6为本发明实施例装置结构示意图;
[0031]图7为本发明实施另一装置结构示意图。

【具体实施方式】
[0032]为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
[0033]一种软件测试方法,如图2所示,包括:
[0034]201:向待测网络程序中的指定待测部分发送测试报文,使上述指定待测部分处理上述测试报文并发送给目标设备;上述待测网络程序中的指定待测部分采用逆向分析确定;
[0035]由于发送测试报文是发送给待测网络程序中的指定待测部分的,待测网络程序由很多部分组成,那么待测网络程序中的指定待测部分的数量则可以有很多,那么测试报文则可以同时发送给各个待测部分,实现并发测试。
[0036]本发明实施例提供了两种向待测网络程序中的指定待测部分发送测试报文的可选方式,具体如下:
[0037]—、上述向待测网络程序中的指定待测部分发送测试报文包括:
[0038]采用与指定处理流程对应的专用脚本,向待测网络程序中的指定处理流程发送测试报文;上述待测网络程序中的指定处理流程采用逆向分析得到。
[0039]更具体地,上述处理流程包括:认证信息处理流程、认证信息认证流程、加解密算法协商流程、数据报文传递流程中的至少一项。
[0040]更具体地,上述待测网络程序中的指定处理流程包括:采用逆向分析上述待测网络程序,得到上述待测网络程序的处理流程,并由得到的处理流程编写的脱机程序,且不包含数据检查功能。
[0041]由于不包含数据检查功能,所以不会有报文被丢弃,这样可以使所有测试报文都到达目标设备,目标设备的结果也可以返回测试端,因此可以达到深度测试的效果,目标设备对异常数据的反应也可以测试到,因此可以达到彻底的测试。
[0042]以上方案,可以解决测试效率低和无法深度测试的问题。理由如下:
[0043]因为脱机程序的代码是根据原有待测网络程序的流程自写的,因此可以灵活的使用多线程或者进程集来解决高并发的问题,从而模拟大规模的网络软件客户端在线。因此可以解决测试效率低的问题,提高测试效率。
[0044]因为脱机程序的代码是根据原有待测网络程序的流程自写的,所以可以删除检测相关的代码,所以不会有报文被丢弃,这样可以使所有测试报文都到达目标设备,目标设备的结果也可以返回测试端,因此可以达到深度测试的效果,目标设备对异常数据的反应也可以测试到,因此可以达到彻底的测试。解决了深度测试不能彻底进行的问题。
[0045]二、上述向待测网络程序中的指定待测部分发送测试报文包括:
[0046]向待测网络程序中的动态链接库发送测试报文,使上述动态链接库调用上述测试报文指向的上述待测网络程序的功能函数,且不包含数据检查功能函数。
[0047]由于不包含数据检查功能,所以不会有报文被丢弃,这样可以使所有测试报文都到达目标设备,目标设备的结果也可以返回测试端,因此可以达到深度测试的效果,目标设备对异常数据的反应也可以测试到,因此可以达到彻底的测试。
[0048]更具体地,上述动态链接库采用逆向分析上述待测网络程序并确定各功能函数后,挂接到上述待测网络程序中。
[0049]更具体地,向待测网络程序中的动态链接库发送测试报文包括:
[0050]采用脱机程序模拟一个或一个以上的客户端,向待测网络程序中的动态链接库发送测试报文。
[0051]以上方案,可以解决测试效率低和无法深度测试的问题。理由如下:
[0052]因为插入了 DLL,DLL是根据原有待测网络程序的流程挂接的,可以调用待测网络程序的功能函数,因此可以灵活的使用多线程或者进程集来解决高并发的问题,从而模拟大规模的网络软件客户端在线。因此可以解决测试效率低的问题,提高测试效率。
[0053]因为插入了 DLL,DLL是根据原有待测网络程序的流程挂接的,可以调用待测网络程序的功能函数,所以不调用检测相关的功能函数,所以不会有报文被丢弃,这样可以使所有测试报文都到达目标设备,目标设备的结果也可以返回测试端,因此可以达到深度测试的效果,目标设备对异常数据的反应也可以测试到,因此可以达到彻底的测试。解决了深度测试不能彻底进行的问题。
[0054]后续实施例将就以上两种方案进行更详细的举例说明。
[0055]202:接收上述来自上述目标设备返回的执行结果,并据上述执行结果确定测试结果O
[0056]上述执行结果是目标设备对测试报文的反馈,如何从执行结果中确定测试结果,即从执行结果中确定是否出现异常以及出现了何种异常的过程,可以采用成熟的规则和算法来实现,本发明实施例不予限定。
[0057]采用逆向分析确定待测网络程序中包含的待测部分,测试报文则是发送给指定待测部分,因此可以灵活的使用多线程或者进程集发送待测报文,从而实现高并发,实现大规模网络软件在线测试,提高测试效率。由于测试报文发送给指定的待测部分,为避开数据检查提供了条件,因此为深度测试的彻底执行提供条件。
[0058]以下实施例将就前述两种向待测网络程序中的指定待测部分发送测试报文的可选方式分别举例说明。
[0059]第一种,采用逆向工程,重写脱机程序,采用脚本来发送测试报文,具体请参阅图3和图4 ;其中图4是对待测网络程序采用逆向工程的准备流程,具体包括:
[0060]首先对待测网络程序进行逆向分析,从而还原其各种功能流程,例如:认证信息处理流程、认证信息认证流程、加解密算法协商流程、数据报文传递流程等。需要说明的是:由于待测网络程序的不同包含的功能流程是可以完全不一样的,因此以上功能流程的举例不应理解为对本发明实施例的限定。
[0061]广义上的逆向工程又叫反向工程,也就是通过事物结果反推其实现过程。在软件领域,逆向工程是指通过逆向分析某软件来还原其实现过程、实现代码及分析文档的总和。
[0062]然后,在掌握其各种功能流程的情况下,编写流程文档,并使用程序设计语言编写脱机程序。
[0063]软件的脱机是指经过逆向分析后的网络软件,获取其通信过程及算法,并用程序设计语言重新实现该软件的网络通信功能,并能模拟该软件的通信过程。模拟该软件通信过程的代码生成的程序,称为软件脱机程序。
[0064]对于一个新的待测网络程序,对其实施脱机测试的,脚本引擎则是创建待测报文的脚本,是为了自动化的需要,脱机程序可以支持脚本。
[0065]以上工作全部完成以后则可以交付测试,具体的测试流程,请参阅图4,如下:
[0066]脱机程序包含了脚本,脚本由脚本引擎驱动,在图4示意了 N个脚本,那么有N个与之对应的功能流程,每个功能流程都有加密模块、发包模块、收包模块、解密模块,以脚本I的测试流程为例,具体如下:
[0067]脚本I按照脚本I的既定流程生成待测报文,并将待测报文发送给加密模块。
[0068]加密模块将收到的待测报文进行加密得到密文的待测报文,然后将密文的待测报文发送给发包模块。
[0069]发包模块将接收到的密文的待测报文转发给目标设备,这里的目标设备可以是服务器也可以是其他客户端程序,对此本发明实施例不予限定。
[0070]目标设备处理上述密文的待测报文以后,会反馈处理结果给收包模块,该处理结果一般也是密文的处理结果.
[0071]收包模块将受到的密文的处理结果发送给解密模块,解密模块对密文的处理结果进行解密,得到明文的处理结果,并发送给脚本I。
[0072]脚本I收到明文的处理结果以后,就可以据此确定测试结果。
[0073]其他脚本的工作流程与脚本I的工作流程相同,不再一一赘述。
[0074]本发明实施例方案,请参阅图4的执行流程图,其可以解决测试效率低和无法深度测试的问题。理由如下:
[0075]因为脱机程序的代码是根据原有待测网络程序的流程自写的,因此可以灵活的使用多线程或者进程集来解决高并发的问题,从而模拟大规模的网络软件客户端在线。因此可以解决测试效率低的问题,提高测试效率。
[0076]因为脱机程序的代码是根据原有待测网络程序的流程自写的,所以可以删除检测相关的代码,所以不会有报文被丢弃,这样可以使所有测试报文都到达目标设备,目标设备的结果也可以返回测试端,因此可以达到深度测试的效果,目标设备对异常数据的反应也可以测试到,因此可以达到彻底的测试。解决了深度测试不能彻底进行的问题。
[0077]第二种,采用逆向工程,但是不重写功能流程,而是在待测网络软件中挂接动态链接库(Dynamic Link Library, DLL)。
[0078]该方案可以作为第一种方案的替换方案,该方案也需要要分析待测网络软件的认证流程和报文传递流程等各种功能流程,但可以不重写其实现过程,而是在目标程序中挂接一个动态链接库(DLL)。采用脱机程序模拟N个客户端将参待测报文发送给注入在待测网络软件中的DLL,让DLL调用待测网络软件的功能函数完成待测报文的组织。组织完成后,将组好的待测报文封包并传递给脱机程序,脱机程序再将数据包发往目标设备,收包逻辑类似不再一一赘述。请参阅图5所示,具体的流程包括:
[0079]首先是待测网络软件与目标设备进行加密和解密的初始化,即同步的过程,使双方加密和解密能够正常进行。
[0080]501:脱机程序向待测网络软件的DLL发送明文的待测报文;
[0081]502:待测网络软件中的DLL调用与待测报文相关的功能函数,并将明文的待测报文加密得到密文的待测报文;
[0082]503:待测网络软件将经过上述功能函数处理的密文的待测报文发送给脱机程序;
[0083]504:脱机程序将上述密文的待测报文发送给目标设备;
[0084]上述目标设备可以是服务器也可以是其他客户端,对比本发明实施例不予限定。
[0085]505:目标设备将密文的待测报文解密,还原为明文的待测报文;
[0086]506:目标设备可以对待测报文进行处理,并对处理结果进行加密,得到密文的处理结果;
[0087]507:目标设备将密文的处理结果发送给脱机程序;
[0088]508:脱机程序将密文的处理结果发送给待测网络软件的DLL ;
[0089]509:待测网络软件中的DLL调用相关的功能函数,将上述密文的处理结果还原为明文的处理结果;
[0090]510:待测网络软件将明文的处理结果发送给脱机程序,脱机程序侧可以据此确定测试结果。
[0091]本发明实施例方案,请参阅图5的执行流程图,其可以解决测试效率低和无法深度测试的问题。理由如下:
[0092]因为插入了 DLL,DLL是根据原有待测网络程序的流程挂接的,可以调用待测网络程序的功能函数,因此可以灵活的使用多线程或者进程集来解决高并发的问题,从而模拟大规模的网络软件客户端在线。因此可以解决测试效率低的问题,提高测试效率。
[0093]因为插入了 DLL,DLL是根据原有待测网络程序的流程挂接的,可以调用待测网络程序的功能函数,所以不调用检测相关的功能函数,所以不会有报文被丢弃,这样可以使所有测试报文都到达目标设备,目标设备的结果也可以返回测试端,因此可以达到深度测试的效果,目标设备对异常数据的反应也可以测试到,因此可以达到彻底的测试。解决了深度测试不能彻底进行的问题。
[0094]本发明实施例还提供了一种软件测装置,如图6所示,包括:
[0095]存储单元601,用于存储待测网络程序;
[0096]发送单元602,用于向上述存储单元601存储的待测网络程序中的指定待测部分发送测试报文,使上述指定待测部分处理上述测试报文并发送给目标设备;上述待测网络程序中的指定待测部分采用逆向分析确定;
[0097]接收单元603,用于接收上述来自上述目标设备返回的执行结果,并据上述执行结果确定测试结果。
[0098]采用逆向分析确定待测网络程序中包含的待测部分,测试报文则是发送给指定待测部分,因此可以灵活的使用多线程或者进程集发送待测报文,从而实现高并发,实现大规模网络软件在线测试,提高测试效率。由于测试报文发送给指定的待测部分,为避开数据检查提供了条件,因此为深度测试的彻底执行提供条件。
[0099]由于发送测试报文是发送给待测网络程序中的指定待测部分的,待测网络程序由很多部分组成,那么待测网络程序中的指定待测部分的数量则可以有很多,那么测试报文则可以同时发送给各个待测部分,实现并发测试。
[0100]本发明实施例提供了两种向待测网络程序中的指定待测部分发送测试报文的可选方式,具体如下:
[0101]可选地,上述发送单元602,具体用于采用与指定处理流程对应的专用脚本,向待测网络程序中的指定处理流程发送测试报文;上述待测网络程序中的指定处理流程采用逆向分析得到。
[0102]可选地,上述发送单元602,具体发送的处理流程包括:认证信息处理流程、认证信息认证流程、加解密算法协商流程、数据报文传递流程中的至少一项。
[0103]可选地,上述发送单元602,具体发送的上述待测网络程序中的指定处理流程包括:采用逆向分析上述待测网络程序,得到上述待测网络程序的处理流程,并由得到的处理流程编写的脱机程序,且不包含数据检查功能。
[0104]由于不包含数据检查功能,所以不会有报文被丢弃,这样可以使所有测试报文都到达目标设备,目标设备的结果也可以返回测试端,因此可以达到深度测试的效果,目标设备对异常数据的反应也可以测试到,因此可以达到彻底的测试。
[0105]以上方案,可以解决测试效率低和无法深度测试的问题。理由如下:
[0106]因为脱机程序的代码是根据原有待测网络程序的流程自写的,因此可以灵活的使用多线程或者进程集来解决高并发的问题,从而模拟大规模的网络软件客户端在线。因此可以解决测试效率低的问题,提高测试效率。
[0107]因为脱机程序的代码是根据原有待测网络程序的流程自写的,所以可以删除检测相关的代码,所以不会有报文被丢弃,这样可以使所有测试报文都到达目标设备,目标设备的结果也可以返回测试端,因此可以达到深度测试的效果,目标设备对异常数据的反应也可以测试到,因此可以达到彻底的测试。解决了深度测试不能彻底进行的问题。
[0108]可选地,上述发送单元602,具体用于向待测网络程序中的动态链接库发送测试报文,使上述动态链接库调用上述测试报文指向的上述待测网络程序的功能函数,且不包含数据检查功能函数。
[0109]由于不包含数据检查的功能函数,所以不会有报文被丢弃,这样可以使所有测试报文都到达目标设备,目标设备的结果也可以返回测试端,因此可以达到深度测试的效果,目标设备对异常数据的反应也可以测试到,因此可以达到彻底的测试。
[0110]可选地,上述发送单元602,具体发送的上述动态链接库采用逆向分析上述待测网络程序并确定各功能函数后,挂接到上述待测网络程序中。
[0111]可选地,上述发送单元602,具体用于向待测网络程序中的动态链接库发送测试报文包括:采用脱机程序模拟一个或一个以上的客户端,向待测网络程序中的动态链接库发送测试报文。
[0112]以上方案,可以解决测试效率低和无法深度测试的问题。理由如下:
[0113]因为插入了 DLL,DLL是根据原有待测网络程序的流程挂接的,可以调用待测网络程序的功能函数,因此可以灵活的使用多线程或者进程集来解决高并发的问题,从而模拟大规模的网络软件客户端在线。因此可以解决测试效率低的问题,提高测试效率。
[0114]因为插入了 DLL,DLL是根据原有待测网络程序的流程挂接的,可以调用待测网络程序的功能函数,所以不调用检测相关的功能函数,所以不会有报文被丢弃,这样可以使所有测试报文都到达目标设备,目标设备的结果也可以返回测试端,因此可以达到深度测试的效果,目标设备对异常数据的反应也可以测试到,因此可以达到彻底的测试。解决了深度测试不能彻底进行的问题。
[0115]本发明实施例还提供了另一种测试装置,如图7所示,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。测试装置可以是终端也可以是服务器或者其他任意存在待测试网络软件的设备,以终端为例,该终端可以为包括手机、平板电脑、PDA (Personal Digital Assistant,个人数字助理)、POS(Point of Sales,销售终端)、车载电脑等任意终端设备,以终端为手机为例:
[0116]图7示出的是与本发明实施例提供的终端相关的手机的部分结构的框图。参考图7,手机包括:射频(Rad1 Frequency,RF)电路710、存储器720、输入单元730、显示单元740、传感器750、音频电路760、无线保真(wireless fidelity,WiFi)模块770、处理器780、以及电源790等部件。本领域技术人员可以理解,图7中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0117]下面结合图7对手机的各个构成部件进行具体的介绍:
[0118]RF电路710可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器780处理;另外,将设计上行的数据发送给基站。通常,RF电路包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(Low NoiseAmplifier, LNA)、双工器等。此外,RF电路70还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(Global System of Mobile communicat1n, GSM)、通用分组无线服务(General PacketRad1 Service, GPRS)、码分多址(Code Divis1n Multiple Access, CDMA)、宽带码分多址(Wideband Code Divis1n Multiple Access, WCDMA)、长期演进(Long Term Evolut1n,LTE)、电子邮件、短消息服务(Short Messaging Service, SMS)等。
[0119]存储器720可用于存储软件程序以及模块,处理器780通过运行存储在存储器720的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器720可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器720可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
[0120]输入单元730可用于接收输入的数字或字符信息,以及产生与手机700的用户设置以及功能控制有关的键信号输入。具体地,输入单元730可包括触控面板731以及其他输入设备732。触控面板731,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板731上或在触控面板731附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板731可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器780,并能接收处理器780发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板731。除了触控面板731,输入单元730还可以包括其他输入设备732。具体地,其他输入设备732可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
[0121]显示单元740可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元740可包括显示面板741,可选的,可以采用液晶显示器(Liquid CrystalDisplay, IXD)、有机发光二极管(Organic Light-Emitting D1de, 0LED)等形式来配置显示面板741。进一步的,触控面板731可覆盖显示面板741,当触控面板731检测到在其上或附近的触摸操作后,传送给处理器780以确定触摸事件的类型,随后处理器780根据触摸事件的类型在显示面板741上提供相应的视觉输出。虽然在图7中,触控面板731与显示面板741是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板731与显示面板741集成而实现手机的输入和输出功能。
[0122]手机700还可包括至少一种传感器750,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板741的亮度,接近传感器可在手机移动到耳边时,关闭显示面板741和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
[0123]音频电路760、扬声器761,传声器762可提供用户与手机之间的音频接口。音频电路760可将接收到的音频数据转换后的电信号,传输到扬声器761,由扬声器761转换为声音信号输出;另一方面,传声器762将收集的声音信号转换为电信号,由音频电路760接收后转换为音频数据,再将音频数据输出处理器780处理后,经RF电路710以发送给比如另一手机,或者将音频数据输出至存储器720以便进一步处理。
[0124]WiFi属于短距离无线传输技术,手机通过WiFi模块770可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图7示出了WiFi模块770,但是可以理解的是,其并不属于手机700的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
[0125]处理器780是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器720内的软件程序和/或模块,以及调用存储在存储器720内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器780可包括一个或多个处理单元;优选的,处理器780可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器780中。
[0126]手机700还包括给各个部件供电的电源790 (比如电池),优选的,电源可以通过电源管理系统与处理器780逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
[0127]尽管未示出,手机700还可以包括摄像头、蓝牙模块等,在此不再赘述。
[0128]在本发明实施例中,该终端所包括的处理器780还具有以下功能:
[0129]向待测网络程序中的指定待测部分发送测试报文,使上述指定待测部分处理上述测试报文并发送给目标设备;上述待测网络程序中的指定待测部分采用逆向分析确定;
[0130]接收上述来自上述目标设备返回的执行结果,并据上述执行结果确定测试结果。
[0131]采用逆向分析确定待测网络程序中包含的待测部分,测试报文则是发送给指定待测部分,因此可以灵活的使用多线程或者进程集发送待测报文,从而实现高并发,实现大规模网络软件在线测试,提高测试效率。由于测试报文发送给指定的待测部分,为避开数据检查提供了条件,因此为深度测试的彻底执行提供条件。
[0132]由于发送测试报文是发送给待测网络程序中的指定待测部分的,待测网络程序由很多部分组成,那么待测网络程序中的指定待测部分的数量则可以有很多,那么测试报文则可以同时发送给各个待测部分,实现并发测试。
[0133]本发明实施例提供了两种向待测网络程序中的指定待测部分发送测试报文的可选方式,具体如下:
[0134]可选地,上述向待测网络程序中的指定待测部分发送测试报文包括:
[0135]采用与指定处理流程对应的专用脚本,向待测网络程序中的指定处理流程发送测试报文;上述待测网络程序中的指定处理流程采用逆向分析得到。
[0136]可选地,上述处理流程包括:
[0137]认证信息处理流程、认证信息认证流程、加解密算法协商流程、数据报文传递流程中的至少一项。
[0138]可选地,上述待测网络程序中的指定处理流程包括:采用逆向分析上述待测网络程序,得到上述待测网络程序的处理流程,并由得到的处理流程编写的脱机程序,且不包含数据检查功能。
[0139]由于不包含数据检查功能,所以不会有报文被丢弃,这样可以使所有测试报文都到达目标设备,目标设备的结果也可以返回测试端,因此可以达到深度测试的效果,目标设备对异常数据的反应也可以测试到,因此可以达到彻底的测试。
[0140]以上方案,可以解决测试效率低和无法深度测试的问题。理由如下:
[0141]因为脱机程序的代码是根据原有待测网络程序的流程自写的,因此可以灵活的使用多线程或者进程集来解决高并发的问题,从而模拟大规模的网络软件客户端在线。因此可以解决测试效率低的问题,提高测试效率。
[0142]因为脱机程序的代码是根据原有待测网络程序的流程自写的,所以可以删除检测相关的代码,所以不会有报文被丢弃,这样可以使所有测试报文都到达目标设备,目标设备的结果也可以返回测试端,因此可以达到深度测试的效果,目标设备对异常数据的反应也可以测试到,因此可以达到彻底的测试。解决了深度测试不能彻底进行的问题。
[0143]可选地,上述向待测网络程序中的指定待测部分发送测试报文包括:
[0144]向待测网络程序中的动态链接库发送测试报文,使上述动态链接库调用上述测试报文指向的上述待测网络程序的功能函数,且不包含数据检查功能函数。
[0145]由于不包含数据检查的功能函数,所以不会有报文被丢弃,这样可以使所有测试报文都到达目标设备,目标设备的结果也可以返回测试端,因此可以达到深度测试的效果,目标设备对异常数据的反应也可以测试到,因此可以达到彻底的测试。
[0146]可选地,上述动态链接库采用逆向分析上述待测网络程序并确定各功能函数后,挂接到上述待测网络程序中。
[0147]可选地,向待测网络程序中的动态链接库发送测试报文包括:
[0148]采用脱机程序模拟一个或一个以上的客户端,向待测网络程序中的动态链接库发送测试报文。
[0149]以上方案,可以解决测试效率低和无法深度测试的问题。理由如下:
[0150]因为插入了 DLL,DLL是根据原有待测网络程序的流程挂接的,可以调用待测网络程序的功能函数,因此可以灵活的使用多线程或者进程集来解决高并发的问题,从而模拟大规模的网络软件客户端在线。因此可以解决测试效率低的问题,提高测试效率。
[0151]因为插入了 DLL,DLL是根据原有待测网络程序的流程挂接的,可以调用待测网络程序的功能函数,所以不调用检测相关的功能函数,所以不会有报文被丢弃,这样可以使所有测试报文都到达目标设备,目标设备的结果也可以返回测试端,因此可以达到深度测试的效果,目标设备对异常数据的反应也可以测试到,因此可以达到彻底的测试。解决了深度测试不能彻底进行的问题。
[0152]值得注意的是,上述装置实施例中,所包括的各个单元只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
[0153]另外,本领域普通技术人员可以理解实现上述各方法实施例中的全部或部分步骤是可以通过程序来指令相关的硬件完成,相应的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0154]以上仅为本发明较佳的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本【技术领域】的技术人员在本发明实施例揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
【权利要求】
1.一种软件测试方法,其特征在于,包括: 向待测网络程序中的指定待测部分发送测试报文,使所述指定待测部分处理所述测试报文并发送给目标设备;所述待测网络程序中的指定待测部分采用逆向分析确定; 接收所述来自所述目标设备返回的执行结果,并据所述执行结果确定测试结果。
2.根据权利要求1所述方法,其特征在于,所述向待测网络程序中的指定待测部分发送测试报文包括: 采用与指定处理流程对应的专用脚本,向待测网络程序中的指定处理流程发送测试报文;所述待测网络程序中的指定处理流程采用逆向分析得到。
3.根据权利要求1所述方法,其特征在于,所述处理流程包括: 认证信息处理流程、认证信息认证流程、加解密算法协商流程、数据报文传递流程中的至少一项。
4.根据权利要求2或3所述方法,其特征在于,所述待测网络程序中的指定处理流程包括:采用逆向分析所述待测网络程序,得到所述待测网络程序的处理流程,并由得到的处理流程编写的脱机程序,且不包含数据检查功能。
5.根据权利要求1所述方法,其特征在于,所述向待测网络程序中的指定待测部分发送测试报文包括: 向待测网络程序中的动态链接库发送测试报文,使所述动态链接库调用所述测试报文指向的所述待测网络程序的功能函数,且不包含数据检查功能函数。
6.根据权利要求1所述方法,其特征在于, 所述动态链接库采用逆向分析所述待测网络程序并确定各功能函数后,挂接到所述待测网络程序中。
7.根据权利要求5或6所述方法,其特征在于,向待测网络程序中的动态链接库发送测试报文包括: 采用脱机程序模拟一个或一个以上的客户端,向待测网络程序中的动态链接库发送测试报文。
8.一种软件测装置,其特征在于,包括: 存储单元,用于存储待测网络程序; 发送单元,用于向所述存储单元存储的待测网络程序中的指定待测部分发送测试报文,使所述指定待测部分处理所述测试报文并发送给目标设备;所述待测网络程序中的指定待测部分采用逆向分析确定; 接收单元,用于接收所述来自所述目标设备返回的执行结果,并据所述执行结果确定测试结果。
9.根据权利要求8所述装置,其特征在于, 所述发送单元,具体用于采用与指定处理流程对应的专用脚本,向待测网络程序中的指定处理流程发送测试报文;所述待测网络程序中的指定处理流程采用逆向分析得到。
10.根据权利要求8所述装置,其特征在于, 所述发送单元,具体发送的处理流程包括:认证信息处理流程、认证信息认证流程、加解密算法协商流程、数据报文传递流程中的至少一项。
11.根据权利要求9或10所述装置,其特征在于,所述发送单元,具体发送的所述待测网络程序中的指定处理流程包括:采用逆向分析所述待测网络程序,得到所述待测网络程序的处理流程,并由得到的处理流程编写的脱机程序,且不包含数据检查功能。
12.根据权利要求8所述装置,其特征在于, 所述发送单元,具体用于向待测网络程序中的动态链接库发送测试报文,使所述动态链接库调用所述测试报文指向的所述待测网络程序的功能函数,且不包含数据检查功能函数。
13.根据权利要求8所述装置,其特征在于, 所述发送单元,具体发送的所述动态链接库采用逆向分析所述待测网络程序并确定各功能函数后,挂接到所述待测网络程序中。
14.根据权利要求12或13所述装置,其特征在于, 所述发送单元,具体用于向待测网络程序中的动态链接库发送测试报文包括:采用脱机程序模拟一个或一个 以上的客户端,向待测网络程序中的动态链接库发送测试报文。
【文档编号】G06F11/36GK104077219SQ201310142592
【公开日】2014年10月1日 申请日期:2013年4月23日 优先权日:2013年4月23日
【发明者】朱贵远 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1