一种持续集成失败用例的定位方法及系统技术方案

技术编号:8655885 阅读:216 留言:0更新日期:2013-05-01 23:33
本发明专利技术提供了一种持续集成失败用例的定位方法及系统,以解决目前手动定位效率低的问题。所述方法包括:加载工程代码时,在工程代码中注入日志输出字节码;当运行包含所述工程代码的测试脚本时,进入测试脚本的每个方法前通过所述日志输出字节码记录方法调用日志,并根据方法调用日志形成方法调用层次的日志文件;根据所述日志文件中的方法调用层次分析运行失败的测试脚本,定位运行失败的原因。本发明专利技术无需人工调试代码,因此可以方便、快速地自动定位到问题原因,解决问题,而且方便维护,节省大量时间与精力,提高了工作效率。

【技术实现步骤摘要】

本申请涉及测试技术,特别是涉及一种持续集成失败用例的定位方法,以及,一种持续集成失败用例的定位系统。
技术介绍
持续集成是一种软件开发的实践方式,利用自动化的方式对团队开发人员提交的新增与修改的代码进行持续构建(包括编译、发布、自动化测试),至少每天一次,尽早地发现代码问题,从而保证产品质量。一个典型的持续集成周期包括以下几个步骤I)持续集成服务器不断从版本控制服务器上检查代码状态,看代码是否有更新;2)如果发现代码有最新的提交,那么就从版本控制服务器下载最新的代码;3)等代码完全更新以后,调用自动化编译脚本,进行代码编译;4)运行所有的自动化测试;5)进行代码分析;6)产生可执行的软件,并提供给测试人员进行测试。如果其中任何一个步骤失败,就表示该构建失败,持续集成服务器会给予相应的反馈。在对项目工程进行持续集成时,如果开发人员修改工程中的部分代码或者修改配置文件,都将导致测试脚本失败,从而导致持续集成不能正常进行,严重影响持续集成对产品开发的效率与质量。此时,就必须快速定位问题原因,并解决问题使持续集成正常运转。目前定位问题原因的手段比较繁琐低效,主要是人为地通过Eclipse工具(Eclipse是著名的跨平台的自由集成开发环境(IDE)) —步一步调试代码来分析出程序代码问题,或者人为地通过SVN(Subversion,一种版本管理工具,通过对源代码进行版本控制,从而达到保证文件同步的目的)的客户端工具Show log查看最近代码更新,以及对比出程序代码的变更情况。目前的这两种方案都是由人为手工来分析定位问题,此时会涉及到技术经验、维护成本等问题,当技术经验不足时很有可能发现不到问题所在,而且当脚本成百上千时维护起来非常困难,所以人为来定位需要消耗大量的时间与精力,影响工作效率。
技术实现思路
本申请的目的在于,提供一种持续集成失败用例的定位方法及系统,以解决目前手动定位效率低的问题。为了解决上述问题,本申请公开了一种持续集成失败用例的定位方法,包括加载工程代码时,在工程代码中注入日志输出字节码;当运行包含所述工程代码的测试脚本时,进入测试脚本的每个方法前通过所述日志输出字节码记录方法调用日志,并根据方法调用日志形成方法调用层次的日志文件;根据所述日志文件中的方法调用层次分析运行失败的测试脚本,定位运行失败的原因。优选的,所述根据所述日志文件中的方法调用层次分析运行失败的测试脚本,定位运行失败的原因,包括根据所述日志文件中的方法调用层次,对比方法的当前版本与最近一次运行成功版本的代码;将对比发现的变化点进行标记,并将标记的变化点定位为运行失败的原因。优选的,若对比发现无变化,还包括提示运行失败的可能原因,所述可能原因包括数据库变更和/或配置变更。优选的,当点击某个运行失败的测试脚本的链接时,根据所述日志文件中的方法调用层次分析该被点击的运行失败的测试脚本,定位运行失败的原因。优选的,根据所述日志文件中的方法调用层次分析所有运行失败的测试脚本,定位所有运行失败的原因之后,还包括当点击某个运行失败的测试脚本的链接时,从中获取对应的运行失败的原因。本申请还提供了一种持续集成失败用例的定位系统,包括字节码注入单元,用于加载工程代码时,在工程代码中注入日志输出字节码;方法调用层次分析单元,用于当运行包含所述工程代码的测试脚本时,进入测试脚本的每个方法前通过所述日志输出字节码记录方法调用日志,并根据方法调用日志形成方法调用层次的日志文件;失败定位单元,用于根据所述日志文件中的方法调用层次分析运行失败的测试脚本,定位运行失败的原因。优选的,所述失败定位单元包括对比子单元,用于根据所述日志文件中的方法调用层次,对比方法的当前版本与最近一次运行成功版本的代码;标记子单元,用于将对比发现的变化点进行标记,并将标记的变化点定位为运行失败的原因。优选的,若对比发现无变化,所述失败定位单元还包括提示子单元,用于提示运行失败的可能原因,所述可能原因包括数据库变更和/或配置变更。优选的,所述系统还包括第一点击查看单元,用于当点击某个运行失败的测试脚本的链接时触发所述失败定位单元,所述失败定位单元根据所述日志文件中的方法调用层次分析该被点击的运行失败的测试脚本,定位运行失败的原因。优选的,所述失败定位单元根据所述日志文件中的方法调用层次分析所有运行失败的测试脚本,定位所有运行失败的原因;所述系统还包括第二点击查看单元,用于当点击某个运行失败的测试脚本的链接时,从所述失败定位单元中获取对应的运行失败的原因。与现有技术相比,本申请包括以下优点首先,本申请在持续集成过程中,通过加载工程代码时在工程代码中注入日志输出字节码,利用所述日志输出字节码分析出测试脚本中的方法调用层次,然后根据方法调用层次分析运行失败的测试脚本,最终自动定位出运行失败的代码点。这种自动定位失败用例的方法无需人工调试代码,因此可以方便、快速地自动定位到问题原因,解决问题,而且方便维护,节省大量时间与精力,提高了工作效率。其次,本申请使用SVN Kit客户端库自动对比当前版本与最近一次成功调用版本的方法,找出其中的代码变更或者配置变更,无需手动比对变化点,从而更方便、更快速地自动定位到问题原因。再次,本申请还可以自动监控脚本运行状况,如果运行失败,则系统会自动以邮件、即时通讯等方式通知到相关人员进行跟踪。而且,相关人员点击失败脚本链接,系统根据标记的方法变化点展现出类方法的变化情况,帮助其快速定位问题原因。当然,实施本申请的任一产品不一定需要同时达到以上所述的所有优点。附图说明图1是本申请实施例所述一种持续集成失败用例的定位方法流程图;图2是本申请实施例所述一种持续集成失败用例的定位系统结构图;图3是本申请另一实施例所述一种持续集成失败用例的定位系统结构图;图4是本申请另一实施例所述一种持续集成失败用例的定位系统结构图;图5是本申请另一实施例所述的系统结构图;图6是图5所示实施例中ASM注入日志输出字节码的流程图;图7是图5所示实施例中SVN Kit对比代码变化的流程图。具体实施例方式为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。在对项目工程进行持续集成时,为了快速定位到问题原因,本申请首先自动分析出测试脚本中方法调用的层次关系,然后根据方法调用层次分析运行失败的测试脚本,最终自动定位出运行失败的代码点。下面通过实施例对本申请进行详细说明。参照图1,其为本申请实施例所述一种持续集成失败用例的定位方法流程图。步骤101,加载工程代码时,在工程代码中注入日志输出字节码;字节码(Byte-code)是一种包含执行程序、由一序列op代码/数据对组成的二进制文件。字节码是一种中间码,它比机器码更抽象。它经常被看作是包含一个执行程序的二进制文件,更像一个对象模型。字节码被这样叫是因为通常每个opcode是一字节长,但是指令码的长度是变化的。每个指令有从O到255 (或十六进制的00到FF)的一字节操作码,被参数例如寄存器或内存地址跟随。每次测试时,在加载当前测试所需的工程代码时,将日志输出字节码注入到工程代码中,因此不会对工程代码的源代码造成修改。所述日志输出字节码的作用是分析出测试脚本中方法调用的层次关系,本文档来自技高网
...

【技术保护点】
一种持续集成失败用例的定位方法,其特征在于,包括:加载工程代码时,在工程代码中注入日志输出字节码;当运行包含所述工程代码的测试脚本时,进入测试脚本的每个方法前通过所述日志输出字节码记录方法调用日志,并根据方法调用日志形成方法调用层次的日志文件;根据所述日志文件中的方法调用层次分析运行失败的测试脚本,定位运行失败的原因。

【技术特征摘要】
1.一种持续集成失败用例的定位方法,其特征在于,包括: 加载工程代码时,在工程代码中注入日志输出字节码; 当运行包含所述工程代码的测试脚本时,进入测试脚本的每个方法前通过所述日志输出字节码记录方法调用日志,并根据方法调用日志形成方法调用层次的日志文件; 根据所述日志文件中的方法调用层次分析运行失败的测试脚本,定位运行失败的原因。2.根据权利要求1所述的方法,其特征在于,所述根据所述日志文件中的方法调用层次分析运行失败的测试脚本,定位运行失败的原因,包括: 根据所述日志文件中的方法调用层次,对比方法的当前版本与最近一次运行成功版本的代码; 将对比发现的变化点进行标记,并将标记的变化点定位为运行失败的原因。3.根据权利要求2所述的方法,其特征在于,若对比发现无变化,还包括: 提示运行失败的可能原因,所述可能原因包括数据库变更和/或配置变更。4.根据权利要求1至3任一所述的方法,其特征在于: 当点击某个运行失败的测试脚本的链接时,根据所述日志文件中的方法调用层次分析该被点击的运行失败的测试脚本,定位运行失败的原因。5.根据权利要求 1至3任一所述的方法,其特征在于, 根据所述日志文件中的方法调用层次分析所有运行失败的测试脚本,定位所有运行失败的原因之后,还包括: 当点击某个运行失败的测试脚本的链接时,从中获取对应的运行失败的原因。6.一种持续集成失败用例的定位系统,其特征在于,包括: 字节码注入单元,用于加载工程代码...

【专利技术属性】
技术研发人员:何晓峰
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:

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

1