本申请公开了一种加速软件测试的方法和装置,其中所述方法包括:接收编译成功的程序;在宿主机上创建并启用多个相互隔离的容器;使每一容器分别执行测试用例以对所述程序进行测试并将执行成功或失败的结果返回给宿主机;在测试用例执行完毕后将容器销毁。应用本发明专利技术,可加快持续集成的速度,从而缩短一次持续集成的周期,而且可以减少或避免因测试环境问题而导致的测试用例执行失败的情况。
【技术实现步骤摘要】
本申请涉及电数字数据处理领域,尤其涉及一种加速软件测试的方法和装置。
技术介绍
持续集成是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译、自动化测试、发布)来验证,从而尽早地发现集成错误。软件开发生命周期有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段。基于各种开源项目框架,持续集成系统可以通过各子系统提供的功能和API等串联成一套整体的解决方案。然而,每次集成构建所花费的时间及环境的稳定性受制于构建服务器的资源和环境等因素。
技术实现思路
本申请的目标在于提供一种加速软件测试进而加速软件集成的解决方案,其减少测试所花费的时间且不受环境稳定性的影响。本申请的目标由一种加速软件测试的方法实现,该方法包括:接收编译成功的程序;在宿主机上创建并启用多个相互隔离的容器;使每一容器分别执行测试用例以对程序进行测试并将执行成功或失败的结果返回给宿主机;在测试用例执行完毕后将容器销毁。本申请的目标还由一种加速软件测试的装置实现,该装置包括:接收模块,用于接收编译成功的程序;容器创建模块,用于在宿主机上创建并启用多个相互隔离的容器;执行模块,用于使每一容器分别执行测试用例以对相应程序进行测试并将执行成功或失败的结果返回给宿主机;销毁模块,用于在测试用例执行完毕后将容器销毁。本专利技术通过在持续集成过程中引入容器如Docker容器进行并行、隔离方式的处理工作,使得持续集成的工作尽可能的并行化,加快持续集成的速度,从而缩短了一次持续集成的周期。此外,Docker容器的隔离性可以保证每个自动化测试用例执行环境的干净和可控,可以减少或避免因测试环境问题而导致的测试用例执行失败的情况。除非明确指出,在此所用的单数形式“一”、“该”均包括复数含义(即具有“至少一”的意思)。应当进一步理解,说明书中使用的术语“具有”、“包括”和/或“包含”表明存在所述的特征、步骤、操作、元件和/或部件,但不排除存在或增加一个或多个其他特征、步骤、操作、元件、部件和/或其组合。如在此所用的术语“和/或”包括一个或多个列举的相关项目的任何及所有组合。除非明确指出,在此公开的任何方法的步骤不必精确按照所公开的顺序执行。附图说明本专利技术将在下面参考附图并结合优选实施例进行更完全地说明。图1为使用本专利技术测试方法的一实施例的流程图。图2为使用本专利技术测试方法的另一实施例的流程图。图3为根据本专利技术装置的一实施例的结构示意图。为清晰起见,这些附图均为示意性及简化的图,它们只给出了对于理解本专利技术所必要的细节,而省略其他细节。具体实施方式通过下面给出的详细描述,本专利技术的适用范围将显而易见。然而,应当理解,在详细描述和具体例子表明本专利技术优选实施例的同时,它们仅为说明目的给出。图1示出了使用本专利技术测试方法的一实施例的流程图,该实施例用于实现程序的自动版本发布。在该实施例中,利用git、Gerrit、Jenkins和Docker与本专利技术方法结合实施。Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。Gerrit是一个开源的基于Git的代码审核工具,用以评审将要提交的软件代码。Gerrit上的每次提交需要满足审核通过的条件,才能通过submit命令最终提交到远程Git服务器上,这为软件质量提供一种有效保障。Gerrit还提供了丰富的命令,为自动化脚本操作提供了便利。Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins的贡献者提供了一个名为GerritTrigger的插件,该插件将Jenkins与Gerrit集成起来,可用于监听Gerrit上的patchset的提交。Docker是PaaS提供商dotCloud开源的一个基于LXC(LinuxContainer)的高级容器引擎。不同的Docker容器之间可以进行数据交互,Docker容器与宿主机之间也可以很方便的进行数据交互。Docker镜像的定制非常简单,启动一个Docker容器就如同执行一个操作系统命令一样简单。具体地,图1所示实施例的方法开始于步骤S10,当开发者完成本地代码修改、验证等工作后,使用gitpush命令将修改的代码推送到Gerrit服务器上。之后,处理进行到步骤S20,Jenkins的GerritTrigger插件,可实时监听Gerrit的提交事件,当发现Gerrit有新提交的代码时,则自动触发Jenkins上的编译操作。若编译失败,处理进行到步骤S25,给Gerrit置编译失败的状态,发送编译失败信息,并终止所有后续工作。若编译成功,处理进行到步骤S30,触发Jenkins上配置的下游自动化测试的执行。自动化测试包括下述步骤:在步骤S31,接收编译成功的程序。之后,处理进行到步骤S32,根据测试用例执行的业务逻辑关联性和状态将测试用例分类到并行列表或依赖列表,即将完全独立的测试用例整理成并行列表,依赖列表可以有多个,将有依赖关系的一组测试用例整理成一个依赖列表,不同的、彼此独立的依赖关系可导致不同依赖列表的形成。在此,术语“测试用例”指一段用于对相应程序进行测试的代码,根据测试目的和需要,一个程序可使用一个或多个测试用例进行测试。之后,处理进行到步骤S33,在资源允许的情况下,并行列表中的测试用例可以通过同时创建并启用同等数量的Docker容器并行执行,其中创建Docker容器仅利用系统内核,然后依此产生相应环境。因而各个Docker容器相互隔离且运行环境完全清晰可控。同时,同一依赖列表中有依赖关系的测试用例可以在同一个Docker容器中按依赖顺序执行。在其它实施例中,同一依赖列表中的测试用例根据依赖关系顺序启用Docker容器执行,在后启用的Docker容器获得前一Docker容器的输出;或者利用Docker容器间的交互功能获取其它Docker容器的输出供指定Docker容器使用。之后,处理进行到步骤S34,每一个Docker容器在其中的测试用例执行完毕后将执行结果回传到Docker容器的宿主机上,然后通过Docker命令将Docker容器销毁。在测试用例执行失败时,处理进行到步骤S35,终止后续的所有任务,包括已启用的Docker进程,并给Ge本文档来自技高网...
【技术保护点】
一种加速软件测试的方法,其特征在于,所述方法包括:接收编译成功的程序;在宿主机上创建并启用多个相互隔离的容器;使每一容器分别执行测试用例以对所述程序进行测试并将执行成功或失败的结果返回给宿主机;在测试用例执行完毕后将容器销毁。
【技术特征摘要】
1.一种加速软件测试的方法,其特征在于,所述方法包括:
接收编译成功的程序;
在宿主机上创建并启用多个相互隔离的容器;
使每一容器分别执行测试用例以对所述程序进行测试并将执行成功或失败
的结果返回给宿主机;
在测试用例执行完毕后将容器销毁。
2.根据权利要求1所述的方法,其特征在于,所述容器为Docker容器。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
在创建容器之前根据测试用例执行的业务逻辑关联性和状态将测试用例分
类到并行列表或依赖列表,并行列表中的测试用例彼此完全独立,每一依赖列
表中的测试用例彼此有依赖关系。
4.根据权利要求3所述的方法,其特征在于,并行列表中的测试用例通
过同时启用同等数量的容器并行执行。
5.根据权利要求3所述的方法,其特征在于,每一依赖列表中的测试用
例在同一个容器中按依赖顺序执行。
6.根据权利要求3所述的方法,其特征在于,每一依赖列表中的测试用
例根据依赖关系顺序启用容器执行。
【专利技术属性】
技术研发人员:刘凤兰,
申请(专利权)人:北京元心科技有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。