软件测试系统及测试方法

文档序号:6608719阅读:235来源:国知局
专利名称:软件测试系统及测试方法
技术领域
本发明涉软件测试技术,尤其涉及能够对软件进行自动化测试的软件测试系统及测试方法。
背景技术
测试是软件开发过程中的重要环节之一,充分的测试是保证软件可靠性的重要基础。近年来,随着软件的发展,软件规模不断扩大,软件部署结构也逐步分布化。
软件测试有如下特点大规模的软件每次回归测试都需要执行数目巨大的测试用例,从而,软件的测试需要更多的计算能力;测试需要在不同种类不同版本的硬件、操作系统和依赖库下进行测试,测试不仅仅需要足够多的次数,而且需要在足够广泛的环境下进行测试;现代系统的复杂性几乎导致每个环境都是唯一的,软件的实施环境,特别是配置往往与开发环境有很大差异,只有在多种真实环境下进行测试才能捕获到开发环境下无法覆盖到的配置错误和缺陷,软件测试需要更加真实的测试环境;分布式软件由多个组件共同协作才能工作,测试这样的软件需要在多个机器上进行安装和配置,另外,现代软件测试手段与工具众多,一个软件的测试往往需要将这些手段和工具组合起来,这要求软件测试能够在安装、配置和测试工具的组合上更加的自动化。
现有的软件测试技术,一般是在单台机器上或者在由数台机器构成的测试环境中进行,需要大量的人为干预。采用现有软件测试技术进行网格软件测试,测试时间长,效率低,测试环境过于单一,难以对软件进行全面测试,因此现有软件测试技术已无法满足软件的测试需要。
网格计算能够将互联网上大规模的资源有效地聚合起来,进行高性能的并行计算和协同工作。网格的高度并行性可以加速测试的执行,提高生产率。网格是高度异构的环境,资源的丰富性可以为测试提供多种多样的测试环境,降低测试环境的获取和维护成本,并且这些环境更加地接近软件真实的运行环境。网格的协同性可以让分布在世界各地的机器共同来完成一项测试任务。

发明内容
本发明的目的在于提供一种软件测试方法及系统,提高软件测试效率。
为了实现上述目的,本发明提供了一种软件测试方法,包括以下步骤解析测试脚本,建立测试实例;所述测试脚本中记录有测试数据描述,测试机配置描述以及测试场景;根据测试数据描述获取测试数据;根据测试机配置描述进行测试机匹配;根据匹配结果传输测试数据,安装测试环境;执行测试场景,收集测试记录,卸载测试环境。
若匹配失败,可等待预定时间后再次进行匹配,从而可以提高匹配成功率。
所述执行测试场景的步骤可具体为获取测试场景列表中的一个未执行场景,执行运行目标,根据执行运行目标的结果执行运行结果目标。
所述执行测试场景,收集测试记录,卸载测试环境的步骤具体包括控制机获取测试场景列表中的一个未执行场景,向测试机发送执行运行目标的指令,并根据测试机返回的运行结果向测试机发送执行运行结果目标的指令;当各场景执行完毕,控制机向测试机发送完成指令;测试机根据接收到的指令,执行相应的操作并返回执行结果;若所述指令为完成指令,则向控制机发送测试记录,卸载测试环境;若所述指令为终止指令,则卸载测试环境;若所述指令为执行运行目标的指令或执行运行结果目标的指令,则在执行后向控制机发送执行结果;若执行中出现异常,则向控制机报告异常。
测试机还可向网格服务信息设备注册属性信息,发布功能信息及本地软件列表,使其他设备可以方便的获知注册机的属性信息,提供的功能服务以及已有软件。
为了实现上述目的,本发明还提供了一种软件测试系统,所述系统包括控制机,用于解析测试脚本,建立测试实例,调用匹配机选择测试机,将测试数据传输至测试机并在测试机上安装测试环境,根据测试场景向测试机发送指令,记录测试结果,收集各测试机上的测试记录;匹配机,用于匹配测试需要的测试机;测试机,用于安装测试环境,并根据控制机发送的指令执行相应的操作。
所述控制机可具体包括解析模块,用于解析测试脚本,建立测试实例模块;数据传输模块,用于通过网格的数据服务设备传输测试数据;匹配服务客户端,用于与匹配机通信,调用匹配机选择测试机;测试机服务客户端,用于与测试机通信,将测试数据及指令传输至测试机并接收测试机返回的执行结果、测试结果及测试记录;存储库,用于存储测试结果和测试记录。
所述匹配机可具体包括信息收集模块,用于从网格的信息服务设备获取测试机的属性信息;解释模块,用于判断测试机是否满足测试需求;匹配服务模块,用于与控制机通信,接收控制机发送的匹配请求,向控制机返回匹配结果。
所述测试机可具体包括数据传输模块,用于传输测试数据;测试服务模块,用于与控制机通信,接收指令返回执行结果;测试执行模块,用于根据指令执行相应的操作;信息注册模块,用于将属性信息注册到网格的信息服务设备。
所述测试机可进一步包括依赖库管理模块,用于维护测试机本地的软件并将软件列表发布到网格的信息服务设备;从而,对于测试过程经常需要的软件,不必在每次测试时传输和安装,从而可减少网络传输,并可进一步提高测试效率。所述测试机还可进一步包括测试功能管理模块,用于管理测试机提供的测试功能,并将测试功能信息发布到网格的信息服务设备,从而可使其他设备获知测试机提供的测试服务功能,便于测试机的匹配选择以及测试的有效进行。
所述测试机还可进一步包括安全模块,用于保障测试过程中测试机的安全性,避免威胁测试机安全性的事情发生。
本发明的技术方案利用网格对软件进行测试,网格的高度并行性可以加速测试的执行,提高测试效率;网格是高度异构的环境,其资源的丰富性可以为测试提供多种多样的测试环境,降低测试环境的获取和维护成本,并且这些环境更加接近软件真实的运行环境;网格的协同性可以让分布在各地的机器共同完成一项测试任务,提高资源利用率。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。


图1为本发明的软件测试系统实施例一结构示意图;图2为本发明的软件测试系统实施例二结构示意图;图3为本发明的软件测试系统实施例三结构示意图;图4为本发明的软件测试系统实施例四结构示意图;图5为本发明的软件测试方法实施例一流程图;图6为本发明的软件测试方法实施例二的控制机执行流程图;图7为本发明的软件测试方法实施例二的测试机执行流程图。
具体实施例方式
如图1所示,为本发明的软件测试系统实施例一结构示意图。控制机控制多个测试机来协同完成测试,解析测试脚本,建立测试实例,调用匹配机选择测试机,将测试数据传输至测试机并在测试机上安装测试环境,根据测试场景向测试机发送指令,记录测试结果,收集测试数据。测试往往需要在某一指定平台、操作系统或者配置下进行,匹配机的功能就是从网格环境中为测试检索出合适的测试机。测试机被选择后,接收控制机发送的测试数据,安装测试环境,并根据控制机发送的指令执行相应的操作。控制机和测试机都是动态地从网格环境中选择出来的。本实施例由控制机控制多个测试机协同完成测试,可有效提高测试效率;由于测试机是动态选择的,因此,可实现在多种测试环境中对软件进行测试。
本系统中的测试脚本包括一系列的目标,每个目标又包括一些列的任务,这些任务组合起来以完成该目标。在本系统中测试脚本分为主脚本和从脚本两种类型主脚本由控制机来执行,其中包含了测试数据的描述,测试机配置的描述和一组测试场景。测试数据的描述用于指定测试过程中测试机需要的测试数据,测试数据包括软件的源代码,配置文件,软件的可执行文件等等与测试相关的数据。测试机配置的描述用于指定需要什么样配置的机器作为测试机。通常一个测试需要指定其所要运行的平台、操作系统、CPU大小、内存大小、存储容量、存储速率和网格带宽等等这样的配置信息。在脚本的执行过程中,本系统会根据这些信息从网格环境中动态的选择出合适的测试机。测试场景是对一项测试任务的描述它包括一组特定的步骤,会有一个预期的结果。一个测试场景包括“运行”目标、“成功”目标、“失败”目标和“错误”目标。“运行”目标包含了完成一个测试场景所需要的步骤。后三个目标由“运行”目标的执行结果来决定哪个会执行。如果结果为通过,“成功”目标将会执行,如果结果为未通过则“失败”会执行。如果“运行”目标的执行过程中发生了一个异常,那么“错误”目标将会执行。“成功”目标中会包括一些断言,如果这些断言都为真则表示通过,有一个为假则表示未通过。
从脚本由控制机控制测试机加载并执行。从脚本中的目标会由主脚本中的相关任务通过控制机向测试机发出相应指令而被执行,测试机在执行后会向控制机返回执行结果。
控制机解释执行主测试脚本,为测试过程中的大脑。对每一个主测试脚本,它会调用匹配机从网格环境中选出一组测试机。由它来协调各个测试机之间的协同和同步。测试代码并不在该机上执行。在测试过程的执行中,它负责获取测试数据并将其传输到各测试机上,收集测试状态及结果,以及测试机之间信息的中转。
匹配机负责从网格环境中匹配测试需要的测试机。在本系统中,每个测试机都由一个组属性来描述。这些属性包括CPU速率、内存大小、硬盘大小、硬盘速率、操作系统类型等等和测试有关的配置。这些信息都注册在网格的信息服务设备中,匹配机在接到一个匹配请求时,会从信息服务设备中获取测试机的属性,并做缓存。可以通过一个表达式来描述测试机是否符合需求,测试机的属性是匹配请求中的表达式的变量,如果这个表达式的运算结果为真则表示这个测试机是符合要求的。
测试机由控制机初始化和控制,主要负责接受控制机发送来的命令,并执行相应的操作。这些命令包括数据的传输,从脚本的加载,执行从脚本中的目标,批处理,测试的终止和结束等等。
如图2所示,为本发明的软件测试系统实施例二结构示意图。
控制机具体包括解析模块、测试实例模块、数据传输模块、匹配服务客户端、测试机服务客户端及存储库。解析模块用于解析主脚本,建立测试实例模块。测试实例模块用于执行测试过程,调用匹配机选择测试机,将测试数据传输至测试机并在测试机上安装测试环境,根据测试场景向测试机发送指令,记录测试结果,收集测试数据。数据传输模块用于通过网格数据服务设备传输测试数据。匹配服务客户端用于与匹配机通信,调用匹配机选择测试机。测试机服务客户端用于与测试机通信,将测试数据及指令传输至测试机并接收测试机返回的执行结果、测试结果及测试记录。存储库用于存储测试结果。
匹配机具体包括信息收集模块、解释模块及匹配服务模块。信息收集模块用于从网格的信息服务设备获取测试机的属性信息;解释模块用于判断测试机是否满足测试需求;匹配服务模块用于与控制机通信,接收控制机发送的匹配请求,向控制机返回匹配结果。当使用表达式描述测试机是否满足测试需求时,解释模块要验证表达式的语法是否正确,并通过表达式的运算结果判断测试机是否满足测试需求。
测试机具体包括测试服务模块、数据传输模块、测试执行模块及信息注册模块。测试服务模块,用于与控制机通信,接收指令返回执行结果;数据传输模块用于通过网格的数据服务设备传输测试数据;测试执行模块用于根据指令执行相应的操作;信息注册模块用于将属性信息注册到网格的信息服务设备,从而使匹配机可以获取测试机的信息。测试机属性信息的注册可采用定时注册的方式,测试机定时向网格的信息服务设备注册自己的属性信息,也可以采用其他方式,例如,测试机在每次自身属性信息有变化时向信息服务设备注册。
本实施例利用网格对软件进行测试,利用网格的数据服务设备进行数据传输,利用网格的信息服务设备获取测试机的属性信息、功能信息;网格的高度并行性可以加速测试的执行,提高测试效率;网格是高度异构的环境,其资源的丰富性可以为测试提供多种多样的测试环境,降低测试环境的获取和维护成本,并且这些环境更加接近软件真实的运行环境;网格的协同性可以让分布在各地的机器共同完成一项测试任务,提高资源利用率。
被测试软件的运行可能需要依赖于别的软件,典型的是往往需要一个数据库。测试的时候,没有必要在每次测试时均将一个数据库系统传输到测试机上安装。测试机可以维护一些常用的软件,例如不同的数据库,如果某项测试需要这些软件就从本地取得并安装就可以了。为了使其他设备可以获知测试机本地有哪些软件,测试机可以把自己的软件列表发布到网格的信息服务设备上供其他设备查询。
每台测试机可以对外提供不同的测试服务,例如有些可以提供性能测试,有些可以进行压力测试,测试机对这样服务进行管理,并对外发布自己所具有的功能,这些信息可以发布到网格的信息服务设备上。
如图3所示,为本发明的软件测试系统实施例三结构示意图。本实施例与实施例二的区别在于,测试机进一步加入了依赖库管理模块以及测试功能管理模块。依赖库管理模块就是用于维护测试机本地的软件并将软件列表发布到网格的信息服务设备供其他设备查询。测试功能管理模块用于对这样服务进行管理并将功能信息发布到网格的信息服务设备。从而对于测试中常用的软件,不用在每次使用时重新传输和安装,从而可以加少网络传输并加快测试进程,网格中的其他设备也可以知道该测试机提供什么样的测试服务,有针对性的选择测试机,更有效的进行测试。
由于被测试的软件很可能存在缺陷,在测试过程中,这些缺陷可能会危险测试机的安全,例如,删除测试机系统文件,大量写数据到硬盘等,因此,需要保证测试过程中测试机的安全性。
如图4所示,为本发明的软件测试系统实施例四结构示意图。本实施例与实施例三的区别在于,测试机进一步加入了安全模块。该模块用于保障测试过程中测试机的安全性,避免威胁测试机安全性的事情发生。
如图5所示,为本发明的软件测试方法实施例一流程图,包括如下步骤步骤101、解析主脚本,建立测试实例;所述测试脚本中记录有测试数据描述,测试机配置描述以及测试场景;步骤102、根据测试数据描述获取测试数据;步骤103、根据测试机配置描述进行测试机匹配;步骤104、根据匹配结果传输测试数据,安装测试环境,加载从脚本;步骤105、执行测试场景,收集测试记录,卸载测试环境。
本实施例实现了软件测试的自动化,由多个测试机协同完成测试,可有效提高测试效率;由于测试机是动态选择的,因此,可实现在多种测试环境中对软件进行测试。
在匹配失败的时候,可以加入重试机制。同时,可以设置一个重试次数的最大值,如果重试次数达到该最大值仍无法找到合适的测试机,则终止测试过程。每次重试之间可设置一定的时间间隔。由于网格资源是动态的,因此重试机制会有效提高匹配成功率。
控制机执行测试场景时,从测试场景列表中获取一个未执行场景,向测试机发送执行运行目标的指令;根据测试机返回的执行结果向测试机发送执行运行结果目标的指令。
如图6所示,为本发明的软件测试方法实施例二的控制机执行流程图,包括如下步骤步骤201、接收用户提交的主脚本,解析主脚本,并在内存中建立一个测试实例;步骤202、从各种数据源(例如CVS、FTP)获取测试数据到本地,并根据测试需求分类打包;不同的测试机需要的测试数据常常是有一样的,也有自己特有的,因此,可以将测试数据分类并打包,以减少数据传数量;步骤203、根据测试需要向匹配机发送匹配请求;步骤204、接收匹配结果,判断匹配是否成功,若成功,执行步骤207,否则,执行步骤205;步骤205、判断匹配次数是否达到最大值,若是,结束;否则,执行步骤206;步骤206、等待预定时间,执行步骤204;步骤207、将打包后的测试数据通过网格的数据服务设备提供的数据服务传输给测试机,并在测试机上安装一个测试环境(包括一些预先设定好的环境变量,目录和测试所需的依赖软件等等的配置和安装);步骤208、执行主脚本中第一个未执行测试场景的“运行”目标,向测试机发送执行“运行”目标的指令;步骤209、接收执行结果,判断是否通过,若通过,则执行步骤210,否则,执行步骤211;步骤210、执行“成功”目标,向测试机发送执行“成功”目标的指令;步骤211、判断“运行”目标的执行结果是否为失败,若是,执行步骤212,否则,说明执行结果为异常,执行步骤213;步骤212、执行“失败”目标,向测试机发送执行“失败”目标的指令;步骤213、执行“错误”目标,向测试机发送执行“错误”目标的指令;步骤214、接收测试机返回的执行结果并登记测试结果;步骤215、判断是否所有测试场景均执行完,若是,执行步骤216,否则,执行步骤208;步骤216、向所有的测试机发送完成指令,以收集测试机的测试记录并卸载测试机侧测试环境;步骤217、接收各测试机发送的测试过程产生的测试记录,测试记录主要包括被测试的软件在运行时产生的输出数据,日志等等,这些记录的具体内容可以在主脚本中指定。
如图7所示,为本发明的软件测试方法实施例二的测试机执行流程图,包括如下步骤步骤301、接收测试数据,并将测试数据解包并放置到合适的目录;步骤302、安装测试环境;步骤303、等待接收控制机发送的指令;步骤304、判断指令是否为完成指令,若是,执行步骤310,否则,执行步骤305;步骤305、判断指令是否为终止指令,若是,执行步骤311,否则,执行步骤306;步骤306、执行指令;步骤307、是否发生异常,若是,执行步骤308,否则,执行步骤309;步骤308、向控制机报告异常,执行步骤303;
步骤309、向控制机发送指令执行结果,执行步骤303;步骤310、向控制机发送测试记录;步骤311、卸载测试环境,清理测试所使用的环境变量,目录和依赖的软件等等。
本发明的技术方案利用网格对软件进行测试,网格的高度并行性可以加速测试的执行,提高测试效率;网格是高度异构的环境,其资源的丰富性可以为测试提供多种多样的测试环境,降低测试环境的获取和维护成本,并且这些环境更加接近软件真实的运行环境;网格的协同性可以让分布在各地的机器共同完成一项测试任务,提高资源利用率。另外,网格应用程序和网格中间件本身也可以利用网格本身来提高自己的质量,降低测试成本和时间,实现利用网格来测试网格。
最后应当说明的是以上实施例仅用以说明本发明的技术方案而非对其限制;尽管参照较佳实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解,依然可以对本发明的具体实施方式
进行修改或者对部分技术特征进行等同替换;而不脱离本发明技术方案的精神,其均应涵盖在本发明请求保护的技术方案范围当中。
权利要求
1.一种软件测试方法,其特征在于,所述方法包括以下步骤解析测试脚本,建立测试实例;所述测试脚本中记录有测试数据描述,测试机配置描述以及测试场景;根据测试数据描述获取测试数据;根据测试机配置描述进行测试机匹配;根据匹配结果传输测试数据,安装测试环境;执行测试场景,收集测试记录,卸载测试环境。
2.根据权利要求1所述的软件测试方法,其特征在于,若匹配失败,则等待预定时间后再次进行匹配。
3.根据权利要求1所述的软件测试方法,其特征在于,所述执行测试场景的步骤具体为获取测试场景列表中的一个未执行场景,执行运行目标,根据执行运行目标的结果执行运行结果目标。
4.根据权利要求1所述的软件测试方法,其特征在于,所述执行测试场景,收集测试记录,卸载测试环境的步骤具体包括控制机获取测试场景列表中的一个未执行场景,向测试机发送执行运行目标的指令,并根据测试机返回的运行结果向测试机发送执行运行结果目标的指令;当各场景执行完毕,控制机向测试机发送完成指令;测试机根据接收到的指令,执行相应的操作并返回执行结果;若所述指令为完成指令,则向控制机发送测试记录,卸载测试环境;若所述指令为终止指令,则卸载测试环境;若所述指令为执行运行目标的指令或执行运行结果目标的指令,则在执行后向控制机发送执行结果;若执行中出现异常,则向控制机报告异常。
5.根据权利要求1所述的软件测试方法,其特征在于,所述方法还包括测试机向网格服务信息设备注册属性信息,发布功能信息及本地软件列表。
6.一种软件测试系统,其特征在于,所述系统包括控制机,用于解析测试脚本,建立测试实例,调用匹配机选择测试机,将测试数据传输至测试机并在测试机上安装测试环境,根据测试场景向测试机发送指令,记录测试结果,收集各测试机上的测试记录;匹配机,用于匹配测试需要的测试机;测试机,用于安装测试环境,并根据控制机发送的指令执行相应的操作。
7.根据权利要求6所述的软件测试系统,其特征在于,所述控制机包括解析模块,用于解析测试脚本,建立测试实例模块;数据传输模块,用于通过网格数据服务设备传输测试数据;匹配服务客户端,用于与匹配机通信,调用匹配机选择测试机;测试机服务客户端,用于与测试机通信,将测试数据及指令传输至测试机并接收测试机返回的执行结果、测试结果及测试记录;存储库,用于存储测试结果和测试记录。
8.根据权利要求6所述的软件测试系统,其特征在于,所述匹配机包括信息收集模块,用于从网格的信息服务设备获取测试机的属性信息;解释模块,用于判断测试机是否满足测试需求;匹配服务模块,用于与控制机通信,接收控制机发送的匹配请求,向控制机返回匹配结果。
9.根据权利要求6所述的软件测试系统,其特征在于,所述测试机包括数据传输模块,用于通过网格的数据服务设备传输测试数据;测试服务模块,用于与控制机通信,接收指令返回执行结果;测试执行模块,用于根据指令执行相应的操作;信息注册模块,用于将属性信息注册到网格的信息服务设备。
10.根据权利要求9所述的软件测试系统,其特征在于,所述测试机进一步包括依赖库管理模块,用于维护测试机本地的软件并将软件列表发布到网格的信息服务设备;测试功能管理模块,用于管理测试机提供的测试功能,并将测试功能信息发布到网格的信息服务设备。
11.根据权利要求9所述的软件测试系统,其特征在于,所述测试机进一步包括安全模块,用于保障测试过程中测试机的安全性。
全文摘要
一种软件测试方法,解析测试脚本,建立测试实例;根据测试数据描述获取测试数据;根据测试机配置描述进行测试机匹配;根据匹配结果传输测试数据,安装测试环境;执行测试场景,收集测试记录,卸载测试环境。一种软件测试系统,包括控制机,用于解析测试脚本,建立测试实例,调用匹配机选择测试机,将测试数据传输至测试机并在测试机上安装测试环境,根据测试场景向测试机发送指令,记录测试结果,收集测试数据;匹配机,用于匹配测试需要的测试机;测试机,用于安装测试环境并根据控制机发送的指令执行相应的目标。本发明利用网格对软件进行测试,提高了测试效率,可以为测试提供多种多样的测试环境,降低测试环境的获取和维护成本。
文档编号G06F11/36GK101042673SQ20071009858
公开日2007年9月26日 申请日期2007年4月20日 优先权日2007年4月20日
发明者胡春明, 刘哲, 李翔 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1