利用测试用例进行的测试方法及测试装置与流程

文档序号:23711130发布日期:2021-01-23 20:09阅读:119来源:国知局
利用测试用例进行的测试方法及测试装置与流程

[0001]
本发明涉及软件测试技术领域,具体来说,涉及一种利用测试用例进行的测试方法及测试装置。


背景技术:

[0002]
现有技术方案在获取测试用例执行的代码时,多采用执行一条用例然后由测试人员去统计覆盖到的代码并记录,这样需要耗费测试人员大量精力去统计映射关系,而且代码的修改很难得到实时的更新。


技术实现要素:

[0003]
针对相关技术中的上述问题,本发明提出一种利用测试用例进行的测试方法及测试装置,能够自动筛选相关测试用例集,在保证质量的前提下有效地提高ci流水线的效率。
[0004]
本发明的技术方案是这样实现的:
[0005]
根据本发明的一个方面,提供了一种利用测试用例进行的测试方法,包括:
[0006]
在代码所执行方法的方法体前注入调用代码;
[0007]
当执行方法时,将方法的相关信息和测试用例信息匹配和记录,方法的相关信息包括方法名称和位置信息;
[0008]
在代码提交入口处设置监听,当监听到一个分支提交代码时获取分支的变更代码和变更代码的行号;
[0009]
在分支进行发布前编译时,获取分支的变更代码的行号区间;
[0010]
根据获取的变更代码的行号区间进行比对得到变更所对应的方法集合;
[0011]
根据变更所对应的方法集合,利用多线程得到与方法集合相匹配的测试用例集合,并将测试用例集合推送给测试用例执行方。
[0012]
根据本发明的实施例,还利用多线程获取测试用例和代码的对应关系。
[0013]
根据本发明的实施例,获取分支的变更代码的行号区间包括:通过api获取每个文件变更代码的行号信息,并将行号信息记录到数据库中;在分支进行发布前编译时,对加载的类进行预处理;其中,位置信息为类文件所在位置,并且利用位置信息获取变更类中方法的行号区间。
[0014]
根据本发明的实施例,将方法的相关信息和测试用例信息匹配和记录包括:当方法的相关信息和匹配的测试用例信息到达预定数量时,启动一个线程以将相关信息和匹配的测试用例信息记录到数据库中。
[0015]
根据本发明的另一方面,提供了一种利用测试用例进行的测试装置,包括:
[0016]
注入模块,用于在代码所执行方法的方法体前注入调用代码;
[0017]
记录模块,用于当执行方法时,将方法的相关信息和测试用例信息匹配和记录,方法的相关信息包括方法名称和位置信息;
[0018]
监听模块,用于在代码提交入口处设置监听,当监听到一个分支提交代码时获取
分支的变更代码和变更代码的行号;
[0019]
行号获取模块,在分支进行发布前编译时,获取分支的变更代码的行号区间,根据获取的变更代码的行号区间进行比对得到变更所对应的方法集合;
[0020]
推送模块,用于根据变更所对应的方法集合得到与方法集合相匹配的测试用例集合,并将测试用例集合推送给测试用例执行方。
[0021]
根据本发明的实施例,还利用多线程获取测试用例和代码的对应关系。
[0022]
根据本发明的实施例,行号获取模块用于:通过api获取每个文件变更代码的行号信息,并将行号信息记录到数据库中;在分支进行发布前编译时,对加载的类进行预处理;其中,位置信息为类文件所在位置,并且利用位置信息获取变更类中方法的行号区间。
[0023]
根据本发明的实施例,记录模块还用于:当方法的相关信息和匹配的测试用例信息到达预定数量时,启动一个线程以将相关信息和匹配的测试用例信息记录到数据库中。
附图说明
[0024]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0025]
图1是根据本发明实施例的利用测试用例进行的测试方法的流程图;
[0026]
图2是根据本发明具体实施例的利用测试用例进行的测试方法的流程图。
具体实施方式
[0027]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
[0028]
图1是根据本发明实施例的利用测试用例进行的测试方法的流程图。如图1所示,本发明的测试方法可以包括以下步骤s102-s112。
[0029]
步骤s102,在代码所执行方法的方法体前注入调用代码。
[0030]
步骤s104,当执行方法时,将方法的相关信息和测试用例信息匹配和记录,方法的相关信息包括方法名称和位置信息。
[0031]
在一些实施例中,在步骤s104处将方法的相关信息和测试用例信息匹配和记录包括:当方法的相关信息和匹配的测试用例信息到达预定数量时,启动一个线程以将相关信息和匹配的测试用例信息记录到数据库中。
[0032]
步骤s106,在代码提交入口处设置监听,当监听到一个分支提交代码时获取分支的变更代码和变更代码的行号。
[0033]
步骤s108,在分支进行发布前编译时,获取分支的变更代码的行号区间。
[0034]
在一些实施例中,在步骤s108处获取分支的变更代码的行号区间可以包括:通过api获取每个文件变更代码的行号信息,并将行号信息记录到数据库中;在分支进行发布前编译时,对加载的类进行预处理。其中,位置信息为类文件所在位置,并且利用位置信息获
取变更类中方法的行号区间。
[0035]
步骤s110,根据获取的变更代码的行号区间进行比对得到变更所对应的方法集合。
[0036]
步骤s112,根据变更所对应的方法集合得到与方法集合相匹配的测试用例集合,并将测试用例集合推送给测试用例执行方。
[0037]
在一些实施例中,利用多线程来获取测试用例和代码的对应关系。在一些实施例中,利用多线程来匹配方法集合与测试用例集合。
[0038]
图2是根据本发明具体实施例的利用测试用例进行的测试方法的流程图。以下结合图2所示的非限制性示例对本发明的测试方法及可使用的相关技术进行说明。在以下描述中本发明的测试方法可以称为精准测试。在字节码注入过程中使用了字节码技术生成用例和方法的对应关系。
[0039]
测试用例执行时自动将用例信息以tcp的方式向服务器同步;然后,使用javassist库,对方法进行代码注入,在每个方法体前注入一行调用代码,当方法被执行到时,将方法的相关信息(包括方法名称和类文件所在位置)和用例信息匹配,并记录到内存里。在一些实施例中,当测试用例和方法的关联信息数量达到预定数量(例如,1000条)时启动一个线程将这个信息记录入库。
[0040]
在编译部署过程中使用了java-agent技术获取精准测试用例集。
[0041]
在代码提交入口处设置监听,当git仓库某个分支提交代码,精准测试会去获取该分支的变更代码,并通过git的api获取到每个文件变更代码的行号,并将这些变更行号信息记录到数据库里,如以下表1所示。
[0042]
表1
[0043][0044]
某个分支进行发布前编译时,使用java-agent技术对加载的类进行预处理,调用javassist库的methodinfo获取本次代码变更类中所有方法的行号区间,如以下表2所示。再根据已获取的变更行号进行交叉比对,得到本次变更所对应的方法集合。
[0045]
表2
[0046][0047]
获得变更的方法集合后,与已经采集的对应关系,匹配得到测试用例集合,并推送给用例执行方。
[0048]
表3
[0049][0050]
字节码技术和java-agent技术通常都是搭配起来使用,一般用于代码的插桩,常见的是使用在做代码覆盖率分析上。本发明使用该技术获取到精准测试用例集。
[0051]
在获取测试用例和代码对应关系还有匹配精准测试用例过程中,本发明还使用了多线程技术。
[0052]
根据系统的复杂程度不同,由于测试用例和方法的对应关系的数据量会达到百万级至千万级,在正反向追溯时都需要使用多线程技术来进行处理,保证了精准测试工具能在用例执行完成时同步完成对应关系的采集,保持系统稳定的同时加快运算效率
[0053]
多线程技术一般会用于短时间内大批量数据的处理上,本发明采用该技术解决了正反向追溯时产生的大批量匹配数据,从而在很短时间内完成精准测试的想要追求的效果。
[0054]
精准测试是一套计算机测试辅助分析系统,其核心组件包含用例和代码的双向追溯、智能回归测试用例选取、覆盖率分析等,这些功能完整的构成了精准测试技术体系。
[0055]
精准测试主要服务于测试人员,精准测试的应用场景包括但不限于:
[0056]
1)代码差异对比
[0057]
查看系统整体代码行数,代码各版本间的差异情况,包含增删改代码行数,详细到代码行的结果报告可以避免夹带移交并帮助测试人员快速定位关键测试点。
[0058]
2)相关测试用例推荐
[0059]
通过方法链路和代码比对推荐相关的测试用例,可以帮助测试人员有效的定位回归测试的范围,并帮助开发理解和查找变更代码涉及的影响点,减少bug的产生。
[0060]
3)覆盖率分析
[0061]
通过覆盖率结果和方法链路的关系,得到每条用例在代码中的运行痕迹,当测试用例执行失败时,协助测试和开发快速定位缺陷。
[0062]
精准测试在的软件测试过程中,可以做到自动的获取用例和代码的双向追溯,同时精准测试可以完美的嵌入到已有的ci流水线内,很好的提高了ci流水线的执行效率。
[0063]
综上,本发明通过全自动采集数据及时更新测试用例和代码执行信息的关联关系、自动筛选相关测试用例集,并且通过解析分支差异代码,生成本次迭代对应的变更方法集,然后推送单个测试用例对应的代码信息,能够在保证质量的前提下有效地提高ci流水线的效率。
[0064]
根据本发明的另一个方面,还提供了一种利用测试用例进行的测试装置。本发明的测试装置可以包括:
[0065]
注入模块,用于在代码所执行方法的方法体前注入调用代码;
[0066]
记录模块,用于当执行方法时,将方法的相关信息和测试用例信息匹配和记录,方法的相关信息包括方法名称和位置信息;
[0067]
监听模块,用于在代码提交入口处设置监听,当监听到一个分支提交代码时获取分支的变更代码和变更代码的行号;
[0068]
行号获取模块,在分支进行发布前编译时,获取分支的变更代码的行号区间,根据获取的变更代码的行号区间进行比对得到变更所对应的方法集合;
[0069]
推送模块,用于根据变更所对应的方法集合得到与方法集合相匹配的测试用例集合,并将测试用例集合推送给测试用例执行方。
[0070]
在一些实施例中,利用多线程来获取测试用例和代码的对应关系。在一些实施例中,利用多线程来匹配方法集合与测试用例集合。
[0071]
在一些实施例中,行号获取模块用于:通过api获取每个文件变更代码的行号信息,并将行号信息记录到数据库中;在分支进行发布前编译时,对加载的类进行预处理。其中,位置信息为类文件所在位置,并且利用位置信息获取变更类中方法的行号区间。
[0072]
在一些实施例中,记录模块还用于:当方法的相关信息和匹配的测试用例信息到达预定数量时,启动一个线程以将相关信息和匹配的测试用例信息记录到数据库中。
[0073]
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1