一种分布式系统中自动化测试覆盖率的测试方法及系统技术方案

技术编号:11100054 阅读:126 留言:0更新日期:2015-03-04 11:51
本发明专利技术公开一种分布式系统中自动化测试覆盖率的测试方法及系统,测试方法包括:响应于测试启动命令,从源代码路径中获取编译每个应用所使用的源文件;对所述源文件进行编译得到每个应用;根据预设应用配置文件,在与每个应用对应的设备上部署每个应用;触发自动化测试启动命令,以运行关于应用的自动化测试;从每个设备中获取与每个应用相关的单体覆盖率报告,生成整体覆盖率报告。本发明专利技术通过从源代码路径获取源文件,从而自动编译应用,将应用部署于对应的设备中,并在执行自动化测试后,从每个设备获取每个应用的覆盖率报告,实现获取分布式系统应用的覆盖率。同时,也与自动化测试很好地整合,使得在自动化测试过程中能实现获取覆盖率报告。

【技术实现步骤摘要】
一种分布式系统中自动化测试覆盖率的测试方法及系统
本专利技术涉及自动化测试相关
,特别是一种分布式系统中自动化测试覆盖率的测试方法及系统。
技术介绍
自动化测试覆盖率是指在执行自动化测试过程中,每个应用被使用的比例。覆盖率是度量测试完整性的一个手段,是测试有效性的一个度量。现有用于获取覆盖率主要采用Jenkins、EMMA等工具。Jenkins,之前叫做Hudson,是基于Java开发的一种持续集成工具,用于监控秩序重复的工作,包括:1、持续的软件版本发布/测试项目。2、监控外部调用执行的工作。Jenkins是一个持续集成工具。它可以根据设定持续定期编译,运行相应代码;运行单元测试和集成测试;将运行结果发送至邮件,或展示成报。Jenkins提供了自动编译,打包功能,通过第三方的静态扫描插件扫描代码规则和质量,然后运行单元测试,邮件发送或展示单元测试和各个阶段的报告。通过配置定时时间,或者在SVN中配置钩子自动触发任务的运行(编译,静态扫描,打包,单元测试,报告)。EMMA是一个用于检测和报告JAVA代码覆盖率的开源工具。它不但能很好的用于小型项目,很方便地得出覆盖率报告,而且适用于大型企业级别的项目。EMMA是一个开源、面向Java程序测试覆盖率收集和报告工具。它通过对编译后的Java字节码文件进行插装,在测试执行过程中收集覆盖率信息,并通过支持多种报表格式对覆盖率结果进行展示。EMMA所使用的字节码插装不仅保证EMMA不会给源代码带来“脏代码”,还确保EMMA摆脱了源代码的束缚,这一特点使EMMA应用于功能测试成为了可能。EMMA有许多优点,它支持许多种级别的覆盖率指标:包,类,方法,语句块(basicblock)和行,特别是它能测出某一行是否只是被部分覆盖,如条件语句短路的情况。它能生成text,xml,html等形式的报告,以满足不同的需求,其html报告提供下钻功能,能够从package开始一步步链接到用户所关注的某个方法。EMMA能和Makefile和Ant集成,便于应用于大型项目。特别还需指出的一点是,EMMA的效率很高,这对于大型项目来说很重要。Emma它通过对编译后的Java字节码文件进行插装,在测试执行过程中收集覆盖率信息,获得测试覆盖率过程中,类、方法等覆盖的百分比报告,可以方便测试人员更好的评估测试。测试人员通过对照覆盖率报告与测试用例设计文档,需求文档可以迅速找到测试的不足。通过与开发人员进行讨论,可以更好的评估测试力度,并指导进一步的测试。因此在功能测试中引入覆盖率信息,能够完善测试结果报告,确保测试质量和力度,保证测试按质、按量地完成。EMMA是通过向.class文件中插入字节码的方式来跟踪记录被运行代码信息的。EMMA支持两种模式:Onthefly和Offline模式。Onthefly模式往加载的类中加入字节码,相当于用EMMA实现的applicationclassloader替代原来的applicationclassloader。Offline模式在类被加载前,加入字节码。Onthefly模式比较方便,缺点也比较明显,如它不能为被bootclassloader加载的类生成覆盖率报告,也不能为像J2EE容器那种自己有独特classloader的类生成覆盖率报告。EMMA也支持两种运行方式:Commandline和Ant。命令行一般和Onthefly模式一起适用,对于简单的项目能够快速产生覆盖率报告。使用Emma进行覆盖率统计的时候存在以下几个缺点:然而,现有技术并不能很好地获取分布式应用的覆盖率。对于大型的项目,分布式部署在不同机器上的,不能很方便的收集到该项目下所有应用的覆盖率信息。同时,每次部署程序到不同的路径,每次都需要手工的修改插桩的命令。收集完一次报告之后,若想再一次统计某个时间段的覆盖率信息,第二次统计的信息里面会包含第一次的结果,造成结果不准确。对于企业级多个项目集中式统一迭代部署,统一收集报告的时候中间有很多手工繁琐的操作,不够灵活。特别是,对于自动化测试,现有技术不能方便的和自动化测试,自动部署集成。
技术实现思路
基于此,有必要针对现有技术不能很好地获取分布式应用的覆盖率的技术问题,提供一种分布式系统中自动化测试覆盖率的测试方法及系统。一种分布式系统中自动化测试覆盖率的测试方法,包括:源文件获取步骤,响应于测试启动命令,从预设的与每个应用关联的源代码路径中获取编译每个应用所使用的源文件,多个所述应用部署在不同的设备上;应用编译步骤,对所述源文件进行编译得到每个应用;应用部署步骤,根据预设应用配置文件,在与每个应用对应的设备上部署每个应用,所述应用配置文件包括应用与设备的对应关系,以及每个设备的访问标识;自动化测试启动步骤,触发自动化测试启动命令,以运行关于应用的自动化测试;报告生成步骤,响应于自动化测试结束命令,根据从所述应用配置文件中所获取的每个设备的访问标识,从每个设备中获取与每个应用相关的单体覆盖率报告,合并所述单体覆盖率报告生成整体覆盖率报告。一种分布式系统中自动化测试覆盖率的测试系统,包括:源文件获取模块,用于响应于测试启动命令,从预设的与每个应用关联的源代码路径中获取编译每个应用所使用的源文件,多个所述应用部署在不同的设备上;应用编译模块,用于对所述源文件进行编译得到每个应用;应用部署模块,用于根据预设应用配置文件,在与每个应用对应的设备上部署每个应用,所述应用配置文件包括应用与设备的对应关系,以及每个设备的访问标识;自动化测试启动模块,用于触发自动化测试启动命令,以运行关于应用的自动化测试;报告生成模块,用于响应于自动化测试结束命令,根据从所述应用配置文件中所获取的每个设备的访问标识,从每个设备中获取与每个应用相关的单体覆盖率报告,合并所述单体覆盖率报告生成整体覆盖率报告。本专利技术通过从源代码路径获取源文件,从而自动编译应用,然后将应用部署于对应的设备中,并在执行自动化测试后,从每个设备获取每个应用的覆盖率报告,实现获取分布式系统应用的覆盖率。同时,也与自动化测试很好地整合,使得在自动化测试过程中能实现获取覆盖率报告。附图说明图1为本专利技术一种分布式系统中自动化测试覆盖率的测试方法的工作流程图;图2为本专利技术采用插桩方式的一个最佳实施例的工作流程图;图3为本专利技术采用监控方式的一个最佳实施例的工作流程图;图4为本专利技术一种分布式系统中自动化测试覆盖率的测试系统的结构模块图。具体实施方式下面结合附图和具体实施例对本专利技术做进一步详细的说明。如图1所示为本专利技术一种分布式系统中自动化测试覆盖率的测试方法的工作流程图,包括:步骤S101,响应于测试启动命令,从预设的与每个应用关联的源代码路径中获取编译每个应用所使用的源文件,多个所述应用部署在不同的设备上;步骤S102,对所述源文件进行编译得到每个应用;步骤S103,根据预设应用配置文件,在与每个应用对应的设备上部署每个应用,所述应用配置文件包括应用与设备的对应关系,以及每个设备的访问标识;步骤S104,触发自动化测试启动命令,以运行关于应用的自动化测试;步骤S105,响应于自动化测试结束命令,根据从所述应用配置文件中所获取的每个设备的访问标识,从每个设备中获取与每个应用相关的单体覆盖率报告,合并本文档来自技高网
...
一种分布式系统中自动化测试覆盖率的测试方法及系统

【技术保护点】
一种分布式系统中自动化测试覆盖率的测试方法,其特征在于,包括:源文件获取步骤,响应于测试启动命令,从预设的与每个应用关联的源代码路径中获取编译每个应用所使用的源文件,多个所述应用部署在不同的设备上;应用编译步骤,对所述源文件进行编译得到每个应用;应用部署步骤,根据预设应用配置文件,在与每个应用对应的设备上部署每个应用,所述应用配置文件包括应用与设备的对应关系,以及每个设备的访问标识;自动化测试启动步骤,触发自动化测试启动命令,以运行关于应用的自动化测试;报告生成步骤,响应于自动化测试结束命令,根据从所述应用配置文件中所获取的每个设备的访问标识,从每个设备中获取与每个应用相关的单体覆盖率报告,合并所述单体覆盖率报告生成整体覆盖率报告。

【技术特征摘要】
1.一种分布式系统中自动化测试覆盖率的测试方法,其特征在于,包括:源文件获取步骤,响应于测试启动命令,从预设的与每个应用关联的源代码路径中获取编译每个应用所使用的源文件,多个所述应用部署在不同的设备上;应用编译步骤,对所述源文件进行编译得到每个应用,根据预设的包括至少一个待监测类的监测文件列表,对每个待监测类进行插桩;应用部署步骤,根据预设应用配置文件,在与每个应用对应的设备上部署每个应用,所述应用配置文件包括应用与设备的对应关系,以及每个设备的访问标识;自动化测试启动步骤,触发自动化测试启动命令,以运行关于应用的自动化测试;报告生成步骤,响应于自动化测试结束命令,根据从所述应用配置文件中所获取的每个设备的访问标识,从每个设备中获取与每个应用相关的单体覆盖率报告,合并所述单体覆盖率报告生成整体覆盖率报告。2.根据权利要求1所述的分布式系统中自动化测试覆盖率的测试方法,其特征在于,所述应用部署步骤,还包括:获取与每个应用关联且为获取覆盖率而设置的配置文件作为测试用配置文件,将测试用配置文件覆盖对应应用所在设备的配置文件。3.根据权利要求1所述的分布式系统中自动化测试覆盖率的测试方法,其特征在于,还包括:当所述源文件发生更新,生成所述测试启动命令。4.根据权利要求1所述的分布式系统中自动化测试覆盖率的测试方法,其特征在于,所述测试启动命令包括项目标识,所述应用配置文件还包括为预设的每个项目标识关联相关应用:所述源文件获取步骤,具体包括:响应于测试启动命令,从预设的应用配置文件中,获取所述项目标识所关联的应用,作为项目应用,从预设的与每个项目应用关联的源代码路径中获取编译每个项目应用所使用的源文件;所述应用编译步骤,具体包括:对所述源文件进行编译得到每个项目应用;所述应用部署步骤,具体包括:根据预设应用配置文件,在与每个项目应用对应的设备上部署每个项目应用;所述自动化测试启动步骤,具体包括:触发自动化测试启动命令,以运行关于项目应用的自动化测试;所述报告生成步骤,具体包括:响应于自动化测试结束命令,根据从所述应用配置文件中所获取的每个设备的访问标识,从每个设备中获取与每个项目应用相关的单体覆盖率报告,合并所述单体覆盖率报告生成整体覆盖率报告。5.一种分布式系统中自...

【专利技术属性】
技术研发人员:谭鹏飞程岩
申请(专利权)人:北京京东尚科信息技术有限公司北京京东世纪贸易有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1