[发明专利]一种基于调用链的软件测试范围评估方法和系统在审
| 申请号: | 202211714956.9 | 申请日: | 2022-12-28 |
| 公开(公告)号: | CN115858393A | 公开(公告)日: | 2023-03-28 |
| 发明(设计)人: | 周正聪 | 申请(专利权)人: | 杭州笨马网络技术有限公司 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36 |
| 代理公司: | 杭州裕阳联合专利代理有限公司 33289 | 代理人: | 何宇梁 |
| 地址: | 310000 浙江省杭州市余杭*** | 国省代码: | 浙江;33 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 调用 软件 测试 范围 评估 方法 系统 | ||
本发明公开了一种基于调用链的软件测试范围评估方法和系统,所述方法包括:获取被测应用的代码,将代码编译后对class文件进行预处理,分别得到类和方法对应关系、子类和父类对应关系、接口和实现类的对应关系,并获取类中方法调用关系;对调用关系进行降噪并桥接,生成全局方法调用链,并根据所述全局方法调用链存储调用关系;动态实时获取调用链数据,并根据实时获取的调用链数据存储对应方法调用关系;判断新旧代码的差异,根据代码差异查找变更的代码,根据所述变更代码和调用链分析影响代码,得到测试范围评估结果。
技术领域
本发明涉及软件测试技术领域,特别涉及一种基于调用链的软件测试范围评估方法和系统。
背景技术
传统的测试范围评估主要依赖于研发提测邮件中明确的功能点,对于关联功能的影响更多依赖测试人员的个人经验来确定,随着分布式、微服务架构、大数据技术的出现,软件越来越复杂,迭代越来越快,测试的挑战性越来越大。由于测试范围评估主观性较强,漏测和过度测试的情况时有发生。那么通过代码变更来评估测试范围成为了更客观、科学地分析方法。目前大多数测试通过版本控制工具查看代码变更。然而现有的版本控制工具存在如下技术问题:1、需要找到每个变更文件进行对比查看。2、仅是了解了变更代码,对于变更的影响范围仍然依赖于开发输入,这种测试范围的分析方式仍然比较主观。
发明内容
本发明其中一个发明目的在于提供一种基于调用链的软件测试范围评估方法和系统,所述方法和系统通过对代码执行动态分析和静态分析得到调用链,通过差异指令比较算法得出新老版本的变更方法,基于变更方法找到调用链上被影响的方法,从而可以在代码层面科学准确地判断软件测试范围。
本发明另一个发明目的在于提供一种基于调用链的软件测试范围评估方法和系统,所述方法和系统通过对代码执行动态分析,可以实现对全局方法调用链的存储,从而可以实现跨应用代码影响分析,提高检测范围评估的准确性。
本发明另一个发明目的在于提供一种基于调用链的软件测试范围评估方法和系统,所述方法和系统利用差异代码分析得到包括代码的删除、修改和新增等操作,并结合调用链影响分析得到完整的测试范围评估结果。
为了实现至少一个上述发明目的,本发明进一步提供一种基于调用链的软件测试范围评估方法,所述方法包括:
获取被测应用的代码,将代码编译后对class文件进行预处理,分别得到类和方法对应关系、子类和父类对应关系、接口和实现类的对应关系,并获取类中方法调用关系;
对调用关系进行降噪并桥接,生成全局方法调用链,并根据所述全局方法调用链存储调用关系;
动态实时获取调用链数据,并根据实时获取的调用链数据存储对应方法调用关系;
判断新旧代码的差异,根据代码差异查找变更的代码,根据所述变更代码和调用链分析影响代码,得到测试范围评估结果。
根据本发明其中一个较佳实施例,所述对class文件进行预处理的方法包括:设置JavaAgent,通过所述JavaAgent获取代码编译后jar包的路径,并在所述class文件被加载前进行拦截,通过BCEL字节码框架获取类和方法对应关系、子类和父类对应关系、接口和实现类的对应关系。
根据本发明另一个较佳实施例,对调用关系进行降噪并桥接的方法包括:获取所述调用关系后去除jvm方法调用,并将接口中的抽象方法添加到抽象父类中,添加父类调用子类方法,添加子类调用父类方法,添加接口调用实现类方法,记录方法注解信息以实现调用关系桥接,并将分析获取到的方法调用关系、类继承关系和接口实现关系存储在图数据库中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州笨马网络技术有限公司,未经杭州笨马网络技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211714956.9/2.html,转载请声明来源钻瓜专利网。





