一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于字节码增强技术的测试定位方法与流程

2021-11-24 22:09:00 来源:中国专利 TAG:


1.本发明涉及软件开发测试技术领域,尤其是涉及一种基于字节码增强技术的测试定位方法。


背景技术:

2.目前软件测试中常见的黑盒测试包括系统集成测试、用户验收测试等手段均由测试部门发起,编写相关测试案例,执行自动化测试或手工测试。由于测试人员无法知道程序内部运行的结构和情况,从而导致测试人员以及开发人员都无法知道自己的黑例是否充分。因此,在编写测试案例时,测试人员需与开发人员进行相当长时间沟通,以确定该次测试所涉及的测试范围和边界。
3.现有测试方案不分析源码及代码执行记录的相关关系,同样也不分析源码间的类、方法之间的调用关系,因此源码对于测试人员并无多大意义,因此,代码执行记录及其覆盖率信息对于测试人员也是一个数据孤岛,因此测试人员在编写测试用例时没有正确的标竿,只能通过与开发人员不断的沟通来确定测试内容。


技术实现要素:

4.本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种基于字节码增强技术的测试定位方法。
5.本发明的目的可以通过以下技术方案来实现:
6.一种基于字节码增强技术的测试定位方法,该方法包括:
7.配置字节码增强模块;
8.基于字节码增强技术加载分析并修改源码对应的字节码文件,获取字节码静态数据;
9.基于字节码增强技术在源码逻辑之上增加事件埋点,采用测试用例进行测试时中获取测试信息和代码执行动态数据;
10.基于字节码静态数据、测试信息和代码执行动态数据进行测试定位。
11.优选地,所述的配置字节码增强模块的具体方式为:初始化字节码增强模块,通过agent模块连接其jvm虚拟机,使用jvm提供的attach api,在各测试系统启动完成后,向各测试系统的jvm附着代理工具程序,加载增强扩展并读取增强配置。
12.优选地,所述的字节码静态数据包括源代码各类别所涉及到的成员、方法、注解信息以及相应类别对应的方法调用、成员初始化及调用、异常区间、代码行记录。
13.优选地,获取字节码静态数据的方式包括:
14.加载现有程序中对应的jar包信息,通过字节码增强技术分析class类文件,将class类文件的内容从头到尾扫描一遍,每次扫描到类文件相应的内容时,调用agentclassvisitor获取class类文件所对应的类别涉及到的成员、方法、注解信息,调用agentmethodvisitor获取相应类别所涉及到的方法调用、成员初始化及调用、异常区间、代
码行记录。
15.优选地,所述的事件埋点设置位置包括源码的开始和结束位置以及每一行代码之后。
16.优选地,测试用例进行测试时,当执行某一条代码时,则该代码后对应的事件埋点被触发,产生对应的代码执行动态数据。
17.优选地,所述的测试信息包括系统名称、应用名称、服务名称、请求分布式架构组件中的服务信息、测试标识、案例标识、用户标识、请求标识。
18.优选地,所述的代码执行动态数据为日志数据,所述的日志数据记录当前代码对应的执行情况或覆盖与否。
19.优选地,所述的字节码静态数据、测试信息和代码执行动态数据由kafka日志模块收集并发送至测试平台进行统一处理进行测试定位。
20.优选地,所述的进行测试定位具体包括定位源码所涉及的代码执行记录、测试用例的覆盖率。
21.与现有技术相比,本发明具有如下优点:
22.(1)更简单:测试人员可以通过开发的代码变更直接获取当前测试的测试范围;
23.(2)更高效:测试人员一定程度上参与到代码级别的开发工作上来,有很多难以沟通的问题可以从代码变更上得到体现;
24.(3)更智能:测试平台可以根据代码变更进行测试用例的推荐以获取代码的最大覆盖,比盲目的全量测试更为精准。
附图说明
25.图1为本发明一种基于字节码增强技术的测试定位方法的实现流程图。
具体实施方式
26.下面结合附图和具体实施例对本发明进行详细说明。注意,以下的实施方式的说明只是实质上的例示,本发明并不意在对其适用物或其用途进行限定,且本发明并不限定于以下的实施方式。
27.实施例
28.一种基于字节码增强技术的测试定位方法,该方法包括:
29.1、配置字节码增强模块,具体方式为:初始化字节码增强模块,通过agent模块连接其jvm虚拟机,使用jvm提供的attach api,在各测试系统启动完成后,向各测试系统的jvm附着代理工具程序,加载增强扩展并读取增强配置。
30.2、基于字节码增强技术加载分析并修改源码对应的字节码文件,获取字节码静态数据,字节码静态数据包括源代码各类别所涉及到的成员、方法、注解信息以及相应类别对应的方法调用、成员初始化及调用、异常区间、代码行记录。
31.获取字节码静态数据的方式包括:
32.加载现有程序中对应的jar包信息,通过字节码增强技术分析class类文件,将class类文件的内容从头到尾扫描一遍,每次扫描到类文件相应的内容时,调用agentclassvisitor获取class类文件所对应的类别涉及到的成员、方法、注解信息,调用
agentmethodvisitor获取相应类别所涉及到的方法调用、成员初始化及调用、异常区间、代码行记录。
33.3、基于字节码增强技术在源码逻辑之上增加事件埋点,采用测试用例进行测试时中获取测试信息和代码执行动态数据。
34.事件埋点设置位置包括源码的开始和结束位置以及每一行代码之后。测试用例进行测试时,当执行某一条代码时,则该代码后对应的事件埋点被触发,产生对应的代码执行动态数据。
35.测试信息包括系统名称、应用名称、服务名称、请求分布式架构组件中的服务信息、测试标识、案例标识、用户标识、请求标识。
36.代码执行动态数据为日志数据,日志数据记录当前代码对应的执行情况或覆盖与否。
37.4、基于字节码静态数据、测试信息和代码执行动态数据进行测试定位。字节码静态数据、测试信息和代码执行动态数据由kafka日志模块收集并发送至测试平台进行统一处理进行测试定位。进行测试定位具体包括定位源码所涉及的代码执行记录、测试用例的覆盖率,具体地:
38.测试平台在获取以上内容后,可以结合源码程序分析得到以下内容:
39.(1)查看全局代码覆盖率;
40.(2)对应源码显示当前类代码全局覆盖情况;
41.(3)从class文件静态分析类依赖关系;
42.(4)对应源码显示当前类依赖了哪些类;
43.(5)推荐显示当前类被那些类引用;
44.(6)基于用例查看某次用例执行涉及的代码覆盖情况;
45.(7)显示某次用例方法调用路径;
46.(8)对应源码显示当前分支涉及代码覆盖情况;
47.(9)对应源码显示当前变更涉及代码覆盖情况;
48.(10)执行用例查看当前变更在某次用例对应代码覆盖情况;
49.(11)对应源码显示用例执行记录;
50.(12)对应源码推荐使用某用例执行来获得最大覆盖。
51.本专利是通过在各测试系统启动完成后,通过agent模块连接其jvm虚拟机,并加载分析并修改其现有业务对应的字节码文件,获取现有字节码静态数据,并在原有业务逻辑之上增加事件埋点信息,以在业务执行过程中获取当前上下文中的测试信息和代码执行情况。因此本发明所涉及的关键点主要包括字节码静态数据和代码执行动态数据两种数据的获取方法。当获取字节码静态数据和代码执行动态数据后便可结合测试信息和源码解决定位源码所涉及的代码执行记录和其覆盖率等数据的相互关系。进而,测试人员可以通过开发的代码变更直接获取当前测试的测试范围,测试人员一定程度上参与到代码级别的开发工作上来,有很多难以沟通的问题可以从代码变更上得到体现,测试平台可以根据代码变更进行测试用例的推荐以获取代码的最大覆盖,比盲目的全量测试更为精准。
52.上述实施方式仅为例举,不表示对本发明范围的限定。这些实施方式还能以其它各种方式来实施,且能在不脱离本发明技术思想的范围内作各种省略、置换、变更。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献