一种基于调用链的软件测试范围评估方法和系统技术方案

技术编号:37047895 阅读:19 留言:0更新日期:2023-03-29 19:26
本发明专利技术公开了一种基于调用链的软件测试范围评估方法和系统,所述方法包括:获取被测应用的代码,将代码编译后对class文件进行预处理,分别得到类和方法对应关系、子类和父类对应关系、接口和实现类的对应关系,并获取类中方法调用关系;对调用关系进行降噪并桥接,生成全局方法调用链,并根据所述全局方法调用链存储调用关系;动态实时获取调用链数据,并根据实时获取的调用链数据存储对应方法调用关系;判断新旧代码的差异,根据代码差异查找变更的代码,根据所述变更代码和调用链分析影响代码,得到测试范围评估结果。得到测试范围评估结果。得到测试范围评估结果。

【技术实现步骤摘要】
一种基于调用链的软件测试范围评估方法和系统


[0001]本专利技术涉及软件测试
,特别涉及一种基于调用链的软件测试范围评估方法和系统。

技术介绍

[0002]传统的测试范围评估主要依赖于研发提测邮件中明确的功能点,对于关联功能的影响更多依赖测试人员的个人经验来确定,随着分布式、微服务架构、大数据技术的出现,软件越来越复杂,迭代越来越快,测试的挑战性越来越大。由于测试范围评估主观性较强,漏测和过度测试的情况时有发生。那么通过代码变更来评估测试范围成为了更客观、科学地分析方法。目前大多数测试通过版本控制工具查看代码变更。然而现有的版本控制工具存在如下技术问题:1、需要找到每个变更文件进行对比查看。2、仅是了解了变更代码,对于变更的影响范围仍然依赖于开发输入,这种测试范围的分析方式仍然比较主观。

技术实现思路

[0003]本专利技术其中一个专利技术目的在于提供一种基于调用链的软件测试范围评估方法和系统,所述方法和系统通过对代码执行动态分析和静态分析得到调用链,通过差异指令比较算法得出新老版本的变更方法,基于变更方法找到调用链上被影响的方法,从而可以在代码层面科学准确地判断软件测试范围。
[0004]本专利技术另一个专利技术目的在于提供一种基于调用链的软件测试范围评估方法和系统,所述方法和系统通过对代码执行动态分析,可以实现对全局方法调用链的存储,从而可以实现跨应用代码影响分析,提高检测范围评估的准确性。
[0005]本专利技术另一个专利技术目的在于提供一种基于调用链的软件测试范围评估方法和系统,所述方法和系统利用差异代码分析得到包括代码的删除、修改和新增等操作,并结合调用链影响分析得到完整的测试范围评估结果。
[0006]为了实现至少一个上述专利技术目的,本专利技术进一步提供一种基于调用链的软件测试范围评估方法,所述方法包括:
[0007]获取被测应用的代码,将代码编译后对class文件进行预处理,分别得到类和方法对应关系、子类和父类对应关系、接口和实现类的对应关系,并获取类中方法调用关系;
[0008]对调用关系进行降噪并桥接,生成全局方法调用链,并根据所述全局方法调用链存储调用关系;
[0009]动态实时获取调用链数据,并根据实时获取的调用链数据存储对应方法调用关系;
[0010]判断新旧代码的差异,根据代码差异查找变更的代码,根据所述变更代码和调用链分析影响代码,得到测试范围评估结果。
[0011]根据本专利技术其中一个较佳实施例,所述对class文件进行预处理的方法包括:设置JavaAgent,通过所述JavaAgent获取代码编译后jar包的路径,并在所述class文件被加载
前进行拦截,通过BCEL字节码框架获取类和方法对应关系、子类和父类对应关系、接口和实现类的对应关系。
[0012]根据本专利技术另一个较佳实施例,对调用关系进行降噪并桥接的方法包括:获取所述调用关系后去除jvm方法调用,并将接口中的抽象方法添加到抽象父类中,添加父类调用子类方法,添加子类调用父类方法,添加接口调用实现类方法,记录方法注解信息以实现调用关系桥接,并将分析获取到的方法调用关系、类继承关系和接口实现关系存储在图数据库中。
[0013]根据本专利技术另一个较佳实施例,所述调用链路的动态实时获取方法包括:在请求头中包含Trace命令,在请求头中包含Trace命令,利用JavaAgent对包括Tomcat、Weblogic容器和包括Spring Web MVC、Spring

Boot、Jersey、RPC框架入口进行所述请求头拦截,并在微服务之间执行包含Trace命令请求头的透传植入。
[0014]根据本专利技术另一个较佳实施例,所述调用链路的动态实时获取方法还包括:在利用Trace命令追踪得到调用链路后,通过数据清洗和渲染的方式得到Trace链路数据。
[0015]根据本专利技术另一个较佳实施例,识别利用静态代码分析得到的全局方法调用链的缺失部分,并根据所述动态实时获取的调用链路补充静态代码分析对应的调用链缺失部分,并构建完整的应用内和应用间的代码链路知识图谱。例如,在应用启动时,通过代码静态分析将方法调用、类继承、接口实现等关系写入图数据库Neo4j,所有实体ID都是点,所有调用关系都形成边,如此关系图谱便生成了。
[0016]根据本专利技术另一个较佳实施例,根据新旧代码判断代码差异的变更类型方法包括:获取新旧代码的className,判断新旧代码是否存在相同的className,若存在,则进一步判断classID是否相同,若相同则判断无变更的类,若不同则存在类的修改;若不存在相同的className,那么判断该类为新增或删除的类。
[0017]根据本专利技术另一个较佳实施例,当新旧代码存在相同的classID,则进一步按照方法名和方法签名是否相同确定新旧代码是否存在相同的方法,若相同则判断存在相同的方法,否则方法不同;若存在相同的方法名和方法签名,则进一步判断新旧代码methodKey是否相同,若相同则为无变更的方法,否则存在方法修改;若新旧代码的方法名和方法签名不同,则判断存在方法的新增或删除。
[0018]为了实现至少一个上述专利技术目的,本专利技术进一步提供一种基于调用链的软件测试范围评估系统,所述系统执行上述一种基于调用链的软件测试范围评估方法。
[0019]本专利技术进一步提供一种计算机可读存储介质,所述算计可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现上述一种基于调用链的软件测试范围评估方法。
附图说明
[0020]图1显示的是本专利技术一种基于调用链的软件测试范围评估方法的流程示意图。
具体实施方式
[0021]以下描述用于揭露本专利技术以使本领域技术人员能够实现本专利技术。以下描述中的优选实施例只作为举例,本领域技术人员可以想到其他显而易见的变型。在以下描述中界定
的本专利技术的基本原理可以应用于其他实施方案、变形方案、改进方案、等同方案以及没有背离本专利技术的精神和范围的其他技术方案。
[0022]可以理解的是,术语“一”应理解为“至少一”或“一个或多个”,即在一个实施例中,一个元件的数量可以为一个,而在另外的实施例中,该元件的数量可以为多个,术语“一”不能理解为对数量的限制。
[0023]请结合图1,本专利技术公开了一种基于调用链的软件测试范围评估方法和系统,其中所述方法主要包括如下步骤:首选需要对应用代码进行编译,编译得到包含calss文件,根据calss文件所属的类得到编译后的jar包。通过对calss文件在加载前进行预处理,得到calss文件包含的类和方法对应关系、子类和父类对应关系、接口和实现类的对应关系。并获取类中方法调用关系。进一步对所述调用关系进行降噪和桥接后,生成全局方法调用链,并在图数据库中存储所述方法调用关系,上述方法过程为对代码的静态代码分析过程。进一步在执行测试状态下,实时采集请求中的调用链数据,并执行实时采集调用链数据的动态分析,在图数据库中存储实时采集调用链数据中的方本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于调用链的软件测试范围评估方法,其特征在于,所述方法包括:获取被测应用的代码,将代码编译后对class文件进行预处理,分别得到类和方法对应关系、子类和父类对应关系、接口和实现类的对应关系,并获取类中方法调用关系;对调用关系进行降噪并桥接,生成全局方法调用链,并根据所述全局方法调用链存储调用关系;动态实时获取调用链数据,并根据实时获取的调用链数据存储对应方法调用关系;判断新旧代码的差异,根据代码差异查找变更的代码,根据所述变更代码和调用链分析影响代码,得到测试范围评估结果。2.根据权利要求1所述的一种基于调用链的软件测试范围评估方法,其特征在于,所述对class文件进行预处理的方法包括:设置JavaAgent,通过所述JavaAgent获取代码编译后jar包的路径,并在所述class文件被加载前进行拦截,通过BCEL字节码框架获取类和方法对应关系、子类和父类对应关系、接口和实现类的对应关系。3.根据权利要求1所述的一种基于调用链的软件测试范围评估方法,其特征在于,对调用关系进行降噪并桥接的方法包括:获取所述调用关系后去除jvm方法调用,并将接口中的抽象方法添加到抽象父类中,添加父类调用子类方法,添加子类调用父类方法,添加接口调用实现类方法,记录方法注解信息以实现调用关系桥接,并将分析获取到的方法调用关系、类继承关系和接口实现关系存储在图数据库中。4.根据权利要求1所述的一种基于调用链的软件测试范围评估方法,其特征在于,所述调用链路的动态实时获取方法包括:在请求头中包含Trace命令,利用JavaAgent对包括Tomcat、Weblogic容器和包括Spring Web MVC、Spring

Boot、Jersey、RPC框架入口进行所述请求头拦截,并在微服务之间执行包含Trace命令请求头...

【专利技术属性】
技术研发人员:周正聪
申请(专利权)人:杭州笨马网络技术有限公司
类型:发明
国别省市:

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

1