一种分布式测试方法及系统与流程

文档序号:13742920阅读:154来源:国知局
技术领域本发明属于分布式系统技术领域,特别是涉及一种分布式测试系统及方法。

背景技术:
在软件产品的生命周期中,测试是产品质量的保证,随着智能终端项目越来越多,自动化测试成为业界的一种趋势。但现有的测试方案中,通常采用一台计算机执行串行的测试。但随着测试模块增多,测试用例数量也不断增加,自动化测试运行耗时较长。该问题会导致自动化测试无法跟上项目进度,影响软件产品质量。因而现有技术有待提高和改进。

技术实现要素:
本发明要解决的技术问题在于,针对现有技术的不足,提供一种基于位置信息的文档特征提取方法及系统,以解决现有的分布式测试方法的测试运行耗时较长,无法跟上项目进度,影响软件产品质量的问题。为了解决上述技术问题,本发明所采用的技术方案如下:一种分布式测试方法,其包括:S1、主控设备获取需要测试模块信息及可用终端设备信息;S2、根据所述可用终端设备信息将需要测试模块分组,并按组分配至各可用终端设备中运行;S3、根据各可用终端设备的测试结果生成测试报告。所述分布式测试方法,其中,所述步骤S1具体包括:S11、主控设备创建用于测试的主任务;S12、所述主任务获取需要测试模块信息及可用终端设备信息,其中,所述可用终端设备信息通过查询资源状态信息表获得。所述分布测试方法,其中,所述步骤S2具体包括:S21、主控设备根据所述可用终端设备信息将需要测试模块分为若干子测试模块,并创建用于测试各子测试模块的子任务,以及将所述各子任务分配至各可用终端设备;S22、所述各可用终端设备运行其对应的子任务,对所述可用终端设备对应的测试模块的测试用例进行测试。所述分布测试方法,其中,所述步骤S22具体包括:S221、所述各子任务运行所述可用设备对应的测试模块的测试用例,并检查所述测试用例的测试结果;S222、若所述测试结果为成功,则拷贝所述测试结果并创建子任务测试成功的结果标志;S223、若所述测试结果为失败,则创建子任务测试失败的结果标志。所述分布测试方法,其中,所述步骤S3具体为:S31、所述主控设备检查各可用终端设备的测试结果;S32、若所有可用终端设备的测试结构均为成功,则主控设备整合可用终端设备的测试结果并发布测试报告。所述分布测试方法,其中,所述步骤S3还包括:S33、若存在可用终端设备的测试结果为失败,则主控设备重新将所述终端设备对应的测试模块分配至终端设备进行测试。所述分布测试方法,其中,所述主控设备整合可用终端设备的测试结果并发布测试报告之后还包括:主控设备重置资源信息状态表置,主任务测试成功。一种分布式测试系统,其包括:主控设备及若干可用终端设备;所述主控设备用于获取需要测试模块信息及可用终端设备信息,并根据所述可用终端设备信息将需要测试模块分组,并按组分配至各可用终端设备;以及根据各可用终端设备的测试结果生成测试报告。所述可用终端设备用于对主控设备分配的测试模块进行测试。所述分布式测试系统,其特征在于,所述主控设备包括:分组模块,用于获取需要测试模块信息及可用终端设备信息,根据所述可用终端设备信息将需要测试模块分组,并按组分配至各可用终端设备;检测模块,用于检测各终端设备反馈的测试结果,并根据所述测试结果更新资源状态信息表;生成模块,用于根据资源状态信息表生成并发布测试报告。所述分布式测试系统,其中,所述终端设备包括:运行模块,用于运行主控设备分配的测试模块;反馈模块,用于将所述测试模块的测试结果反馈至主控设备。有益效果:本发明提供了一种分布式测试方法及系统,首选获取需要测试模块信息及可用终端设备信息;然后根据所述可用终端设备信息将需要测试模块分组,并按组分配至各可用终端设备中运行;最后根据各可用终端设备的测试结果生成测试报告。本发明实现了分布式并行用例运行技术,运行出错时能够容错,智能且效率高。一台测试服务器可以支持多台测试终端机器并行运行,资源利用率高,可扩展性强。同时对分布式测试服务器无性能要求。附图说明图1为本发明提供分布式测试方法较佳实施例的流程图。图2为本发明提供分布式测试方法提供主任务的流程图。图3为本发明提供分布式测试方法提供子任务的流程图。图4为本发明提供分布式测试方法具体实施例的流程图。图5为本发明提供分布式测试系统的结构原理图。具体实施方式为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本申请保护的范围。请参照图1,图1为本发明提供分布式测试方法较佳实施例流程图。所述分布式测试方法,其包括:S100、主控设备获取需要测试模块信息及可用终端设备信息。具体地,所述主控设备首先获取需要测试模块信息,在获取到需要测试模块信息后,查找资源状态信息表获取可以用于测试需要测试模块的终端设备信息。其中,所述资源状态信息表为预先存储于主控设备内的用于存储于可以与主控设备相通信进行测试的终端设备,以及所述终端设备的状态。也就是说,通过所述资源状态信息表可以查询到所有可以用来测试的终端设备标识以及终端设备的状态,例如,使用状态、空闲状态等。在本实施例中,获取可用终端设备信息指的是获取可与主控设备通信并处于空闲的终端设备信息。所述终端设备信息为存储于资源状态信息表中的终端设备标识。也就是说通过所述终端设备信息可以唯一的确定所述终端设备,并与所述终端设备建立连接。进一步,所述主控设备中可用设置有各终端设备的基本信息,包括终端设备IP地址、测试用例存放位置等等,其可以存放于资源状态信息表内,用于统一分配测试用例及管理终端设备,终端设备用于按照主控设备分配的测试用例执行测试。在本实施例中,所述主控设备获取需要测试模块信息及可用终端设备信息具体包括:S101、主控设备创建一用于测试的主任务。具体地,主控设备在接收到测试指令时,首先创建一个用于测试的主任务,通过该主任务执行测试指令。S102、主控设备通过主任务获取需要测试模块信息以及可用设备信息。具体地,主控设备通过主任务获取需要测试模块的信息,并根据需要测试模块信息采用可以用于测试所述需要测试模块的终端设备。其可以通过查询资源状态信息表获取可用终端设备信息。这样就可以将一个测试任务在多个测试终端设备上运行,提高测试效率。S200、主控设备根据所述可用终端设备信息将需要测试模块分组,并按组分配至各可用终端设备中运行。具体地,根据所述可以终端设备信息将需要测试模块分组其是指根据所述可用终端设备的个数以及其测试能力将所述需要测试模块分为若干子测试模块。其中,可用终端设备测试能力指的是终端设备执行测试用例速度。在本实施例中,所述主任务在分组过程采用贪婪算法,避免了组间用例数量差异过大,造成各终端设备执行速度不一致,而产生的资源浪费及测试时间长的问题。其中,贪婪算法为本领域现有技术,在这里就不做详细说明。进一步,当将需要测试模块分组后,将各子测试模块分配至其对应的可用终端设备。各可用终端设备运行其分配到的子测试模块对应的测试用例。进一步,所述测试用例可以由若干测试脚本组成,用于实现指定的测试功能,是构成整个测试方案的基元。测试人员在设计测试方案时,无需再调整测试脚本,而是针对测试用例进行编排,可以减少测试人员的操作、提高效率。在本实用例中,所述测试用例是存储于主控设备中,当其将各测试模块分配给终端设备时,将测试用例发送至终端设备,这样可以减少终端设备查找测试用例的时间,提供测试效率。在其他实施例中,所述测试用例可以存储于终端设备或云服务器等,当主控设备分布测试模块时将其对应测试用例的存储位置信息发送至终端设备,终端设备根据接收到测试用例的存储位置信息获取相应的测试用例,进行测试。进一步,所述主控设备根据所述可用终端设备信息将需要测试模块分组,并按组分配至各可用终端设备中运行可以通过如下步骤实现:S201、主控设备根据所述可用终端设备信息将需要测试模块分为若干子测试模块,并创建用于测试各子测试模块的子任务.具体地,主控设备将测试模块分割为若干各子测试模块,并为每各子测试模块创建相应的子任务,子任务是用于分配各终端设备,控制终端设备对子任务对应的测试模块的测试用例进行测试。S202、主控设备将各子任务分配至其对应的可用终端设备,可用终端设备通过所述子任务对所述可用终端设备对应的测试模块的测试用例进行测试。具体地,主控设备将各子任务以及其对应的测试模块分别至终端设备,终端设备根据子任务对其对应的测试模块的测试用例进行测试。终端设备还检测测试用例的测试结果,如果测试完成并成功,则将测试结构拷贝至主控设备,并在主控设备内创造子任务测试成功的结果标志。如果测试完成并失败,则在主控设备内创造子任务测试失败的结果标志。如果测试未完成,则继续执行子任务。各子任务是并行运行的,彼此之间互不干扰实现了分布并行自动化测试,提高了测试的效率。值得注意的,主控设备预先创建一个存储单元,用于存储各子任务测试结果标志以及测试结果报告。S300、主控设备根据各可用终端设备的测试结果生成测试报告。具体地,当各可用终端设备的的测试结果为成功时,主控设备根据所述用终端的测试结果汇总并发布测试报告。在本实施例中,所述主控设备通过主任务汇总并发布测试报告。并且在汇总并发布测试报告之前所述主任务还检查各子任务的结果标志,根据所述各子任务的结果标志判断各子任务的测试结果;若所述有子任务的测试结果为成功,则整合测试结果并发布测试结果;若存在子任务的测试结果为失败,则重新存在所述失败子任务,并运行其对应的子测试模块的测试用例,直至测试结果为成功;执行重新检查检查各子任务的结果标志步骤;直至所述子任务的结果标志为成功,汇总并发布测试报告。并且在所述整合测试结果并发布测试结果之后将资源信息状态表置为空,主任务测试成功。在实际应用中,所述主任务可以循环检查子任务结果标志,若标志为成功,则修改资源状态信息表中对应设备资源status为‘free’,修改result为‘successful’,并清除标志。若标志为失败,修改status为‘free’,修改result为‘failure’,并清除标志。直到主任务监测到所有子任务status为free,表示各子任务皆运行完毕。主任务接着检查各子任务的result,若全部为successful,则整合测试结果及发布报告,并重置资源状态信息表result为空,表示整个主任务成功。若所有子任务result中存在failure,则只需重新创建失败的子任务,保证了其他成功子任务的结果可用。本发明提供的分布测试方法,其实现分布式并行运行自动化测试,相比单个机器运行所有测试模块的方式,能有效地缩短自动化测试的运行时间。目前该方法已在项目中实施,系统稳定且效果明显。例如:此前项目自动化测试耗时为7小时24分钟,采用分布式并行运行方式,由三台终端机器并行运行,耗时可以缩短为2小时50分钟。且运行终端机器数量越多,耗时越短。另外,该方法同时实现了一台测试服务器支持多台终端设备并行运行,节省服务器资源,资源利用率高。为了进一步理解本发明提供的分布测试方法,下面将本发明分类两个执行过程加以说明,其分布为主任务执行过程以及子任务的执行过程。请参照图2,其为本发明分布测试方法中主任务的执行流程图。所述主任务的执行过程包括:H1、主任务获取需要测试模块用例信息及可用终端设备信息并根据所述终端设备信息将需要测试的模块用例进行分组;将各子测试模块用例分配至其对应的终端设备;H2、主任务循环检测子任务的结果标志并更新资源信息表,并清除子任务结果标志,其中结果标志为完成且成功则更新状态表为status=free,result=successful;结果标志为完成且失败时,则更新状态表为status=free,result=failure;结果标志为为未完成则资源状态信息表不更新;H3、根据资源信息表判断各子任务终端设备是否测试完成;若测试完成则执行步骤H4;若测试未完成则执行步骤H2;H4、判断各子任务是否测试成功,若所有子任务终端设备运行测试结果为成功则执行步骤H5,若存在子任务终端测试结果为失败则执行H6;H5、整合测试结果并发布以及重置资源信息表;H6、重新创建所述子任务,执行步骤H2;请参照图3,其为本发明分布测试方法中子任务的执行流程图。所述子任务的执行过程包括:M1、子任务运行主任务分配的测试用例;M2、检测测试用例的测试结果,若运行成功则执行步骤M3;若运行失败则执行步骤M4;M3、拷贝测试结果并创建子任务成功结果标志,子任务成功;M4、创建子任务失败结果标志,子任务失败。为了进一步理解本发明提供的分布测试方法,下面结合一个具体实施例对本发明做进一步说明。如图4所述,所述分布式测试方法,其包括:S10、主控设备在持续集成工具中创建一个自动化测试子任务;S20、所述主任务获取需要测试模块的信息并查询资源状态信息表获取可用终端设备信息;S30、根据所述需要测试模块信息及可用终端设备信息对测试模块进行分组;S40、所述各终端设备根据其对应的测试模块创建自动化测试子任务并并行运行测试模块对应的测试用例,反馈测试结果;S50、主任务根据子任务反馈测试结果更新资源状态信息表;S60、主任务查询资源状态信息表获取所有子任务测试结果,若所有子任务测试成功,则执行步骤S70;若存在测试失败子任务,则执行S80;S70、整合测试结果并发布测试报告,以及重置资源状态信息表结果为空;S80、重新创建测试失败的子任务,执行步骤S40。在实际应用中,其可以采用如下代码实现:DefStatePollingServer(self,resource_dic)://取得正在运行的资源设备信息resorceskeys//whileTrue循环://调用检查与更新资源状态信息表方法,并返回资源状态信息表status信息//if(所有子任务终端资源status信息都为free)://表示所有子任务运行完毕,//根据资源设备信息resorceskeys获得资源状态信息表result信息//if(资源状态信息表result信息都为successful)://表示所有子任务运行成功//跳出while循环//else://有失败的子任务,只需重新创建失败的子任务,保证其他成功子任务结果可用。//else://sleep延时2分钟,回到循环起点,重新检查//整合结果//发布报告//重置资源状态信息表result为空//检查与更新资源状态信息表方法defUpdateAndCheck(self,reskeys)://读取资源状态信息表status信息//检查子任务结果标志//if(存在子任务结果标志)://把表中对应资源的status修改为free//if(子任务结果标志为successful)://把表中对应资源的result修改为successful//else(子任务结果标志为failure)://把表中对应资源的result修改为failure//删除子任务结果标志//返回资源状态信息表status信息。本发明还提供了一种分布式测试系统,其包括:主控设备100及若干可用终端设备200;所述主控设备100用于获取需要测试模块信息及可用终端设备信息,并根据所述可用终端设备信息将需要测试模块分组,并按组分配至各可用终端设备;以及根据各可用终端设备的测试结果生成测试报告。所述可用终端设备200用于对主控设备分配的测试模块进行测试。所述分布式测试系统,其中,所述主控设备包括:分组模块110,用于获取需要测试模块信息及可用终端设备信息,根据所述可用终端设备信息将需要测试模块分组,并按组分配至各可用终端设备;检测模块120,用于检测各终端设备反馈的测试结果,并根据所述测试结果更新资源状态信息表;生成模块130,用于根据资源状态信息表生成并发布测试报告。所述分布式测试系统,其中,所述终端设备包括:运行模块210,用于运行主控设备分配的测试模块;反馈模块220,用于将所述测试模块的测试结果反馈至主控设备。在本发明所提供的几个实施例中,应该理解到,所揭露的系统方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(RandomAccessMemory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1