一种基于录制回放的集成测试方法技术

技术编号:36757254 阅读:19 留言:0更新日期:2023-03-04 10:49
本发明专利技术公开了基于录制回放的集成测试方法,可以在开发人员本地调试或者联调测试以及系统运行过程中进行多种形式的测试用例录制,并形成集成测试用例,实现降低成本、简单易用的效果。其技术方案为:通过拦截应用运行过程中函数的调用过程来录制并自动形成测试用例,从而可以实现测试成本的大幅度降低。详细而言,是在某个函数执行时拦截该函数的执行,如果是目标拦截范围内的函数,则根据当前处于的工作模式来进行录制、回放以及增量录制等工作。作。作。

【技术实现步骤摘要】
一种基于录制回放的集成测试方法


[0001]本专利技术涉及微服务软件架构中的集成测试,尤其涉及一种基于录制回放的集成测试方法。

技术介绍

[0002]集成测试是单元测试的逻辑扩展,是在单元测试的基础上,把软件单元按照软件需求规格,组装成模块、子系统或者系统的过程中各部分工作是否达到或实现响应技术指标要求。在实践中,集成是指多个单元的聚合,许多单元组合成模块,而这些模块又聚合成程序的更大部分。集成测试是软件开发人员进行测试的一种有效方式之一,相比单元测试和系统测试来说,其业务需求的覆盖程度、单个用例的执行时间和用例维护成本的方面的综合效益最高。
[0003]在微服务软件架构中,微服务之间的网状调用以及微服务对中间件、数据库等外部服务的调用形成复杂的调用网络。通过单元测试以Mock的方式进行打桩设置测试替身或者是通过控制整个微服务运维体系来为测试活动提供测试数据和应用上下文环境,是非常繁琐和复杂的活动,不具备经济性。
[0004]详细而言,在微服务架构系统,尤其是基于Spring MVC的应用中,应用系统主要由以下的层级组成:资源层、服务层、领域层、数据层。
[0005]此外,还会有两个辅助模块:微服务对外通信的模块、数据库访问模块。其中,服务对外通信的模块包括HTTP终端和Gateway部分,以及支付、通知等外部消息服务。数据库访问模块主要是指与外部数据库的交互模块。
[0006]在开发人员进行测试时,当使用单元测试方式进行测试时,为了隔离掉上述模块以及跨层调用,需要花费大量时间精力来编写测试桩(mock)。而集成测试可以通过访问内存数据库或者Mock Server等方式来部分降低该部分成本,并实现对权限、切面等Spring框架的功能,这是单元测试极难覆盖的范围。
[0007]已有的录制回放工具基本通过网络协议层进行录制和回放,主要以http协议为主,仅能实现服务间HTTP调用的录制回放。少部分工具支持应用程序内部类和方法的模拟,但缺乏对自动录制回放的支持,或者是主要应用于系统测试,而不是开发人员基于代码的测试活动。

技术实现思路

[0008]以下给出一个或多个方面的简要概述以提供对这些方面的基本理解。此概述不是所有构想到的方面的详尽综览,并且既非旨在指认出所有方面的关键性或决定性要素亦非试图界定任何或所有方面的范围。其唯一的目的是要以简化形式给出一个或多个方面的一些概念以为稍后给出的更加详细的描述之序。
[0009]本专利技术的目的在于解决上述问题,提供了一种基于录制回放的集成测试方法,可以在开发人员本地调试或者联调测试以及系统运行过程中进行多种形式的用例录制,并形
成集成测试用例,实现降低成本、简单易用的效果。
[0010]本专利技术的技术方案为:本专利技术揭示了一种基于录制回放的集成测试方法,方法包括:
[0011]步骤1:执行拦截,检查集成测试工具是否开启,若开启则继续执行步骤2;
[0012]步骤2:检查当前正在执行的函数是否为拦截范围内的函数,若是则继续执行步骤3,否则正常执行当前函数并返回;
[0013]步骤3:检查集成测试工具的工作模式,根据工作模式是回放模式还是录制模式进行不同的处理,如果是录制模式则执行步骤4,如果是回放模式则执行步骤5;
[0014]步骤4:在录制模式下,根据目标函数的类型,调用对应的录制方法来记录目标函数的本次执行的过程,形成MockRecord记录的实例,保存进List<MockRecord>记录集中,并在用例执行的最后序列化到文件,然后执行步骤10;
[0015]步骤5:在回放模式下,判断是否是有状态的回放,如果是有状态的回放则执行步骤7,如果是无状态的回放则执行步骤6;
[0016]步骤6:当前该集成测试工具在无状态的回放模式,根据本次函数的MockRecord,在Mock数据集中查找并返回匹配的记录,作为本次函数执行的Mock结果,并根据函数类型转换成为目标函数的执行结果,从而实现对本次函数执行的回放,接着执行步骤8;
[0017]步骤7:当前该集成测试工具在有状态的回放模式,当前该集成测试工具将为每个函数的建立一个队列,并将Mock数据集中该函数的记录入栈,从目标函数的Mock队列进行数据匹配,并将匹配到的第一条结果作为本次函数的Mock结果,并将该记录从队列中删除,根据函数类型将Mock结果转换成为目标函数的执行结果,从而实现对本次函数执行的回放,接着继续执行步骤8;
[0018]步骤8:在步骤6和步骤7均未找到当前记录的情况下,再次判断当前是否是增量录制,如果开启增量录制则执行步骤9,如果未开启增量录制则返回Null并执行步骤10;
[0019]步骤9:进入录制逻辑,在完成录制后,将生成的MockRecord追加进当前的List<MockRecord>中,并在测试用例执行结束后序列化并持久化到记录文件中,接着执行步骤10;
[0020]步骤10:返回结果,集成测试方法结束。
[0021]根据本专利技术的基于录制回放的集成测试方法的一实施例,在步骤1中设置双重开关,其中一个开关实现对集成测试工具的启动的加载与否,另一开关实现对录制/回放功能的开启与否,且实现单个测试用例级别的开关。
[0022]根据本专利技术的基于录制回放的集成测试方法的一实施例,在步骤2中,通过AspectContext对象来匹配集成测试工具的拦截范围设置,其中AspectContext对象包括包名、全限定类名、类名、方法名和返回类型,在函数执行时,通过抓取到AspectContext对象中对应的数据与用户配置的目标切面表达式进行匹配,以确定是否是目标范围内需要拦截执行以进行录制或者回放的操作。
[0023]根据本专利技术的基于录制回放的集成测试方法的一实施例,在步骤4中,MockRecord记录是拦截函数的一次执行过程中所形成的录制记录,其中一条MockRecord记录包括以下属性:类名、函数名、函数入参、函数返回值、函数返回类型、函数执行后入参、函数执行过程中的异常以及会话数据。
[0024]根据本专利技术的基于录制回放的集成测试方法的一实施例,步骤4进一步包括:
[0025]步骤4

1:异常录制器的录制;
[0026]步骤4

2:Null录制器的录制;
[0027]步骤4

3:迭代器录制器的录制;
[0028]步骤4

4:泛型录制器的录制;
[0029]步骤4

5:List<T>录制器的录制;
[0030]步骤4

6:PageList录制器的录制;
[0031]步骤4

7:流录制器的录制;
[0032]步骤4

8:默认录制器的录制。
[0033]根据本专利技术的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于录制回放的集成测试方法,其特征在于,方法包括:步骤1:执行拦截,检查集成测试工具是否开启,若开启则继续执行步骤2;步骤2:检查当前正在执行的函数是否为拦截范围内的函数,若是则继续执行步骤3,否则正常执行当前函数并返回;步骤3:检查集成测试工具的工作模式,根据工作模式是回放模式还是录制模式进行不同的处理,如果是录制模式则执行步骤4,如果是回放模式则执行步骤5;步骤4:在录制模式下,根据目标函数的类型,调用对应的录制方法来记录目标函数的本次执行的过程,形成MockRecord记录的实例,保存进List<MockRecord>记录集中,并在用例执行的最后序列化到文件,然后执行步骤10;步骤5:在回放模式下,判断是否是有状态的回放,如果是有状态的回放则执行步骤7,如果是无状态的回放则执行步骤6;步骤6:当前该集成测试工具在无状态的回放模式,根据本次函数的MockRecord,在Mock数据集中查找并返回匹配的记录,作为本次函数执行的Mock结果,并根据函数类型转换成为目标函数的执行结果,从而实现对本次函数执行的回放,接着执行步骤8;步骤7:当前该集成测试工具在有状态的回放模式,当前该集成测试工具将为每个函数的建立一个队列,并将Mock数据集中该函数的记录入栈,从目标函数的Mock队列进行数据匹配,并将匹配到的第一条结果作为本次函数的Mock结果,并将该记录从队列中删除,根据函数类型将Mock结果转换成为目标函数的执行结果,从而实现对本次函数执行的回放,接着继续执行步骤8;步骤8:在步骤6和步骤7均未找到当前记录的情况下,再次判断当前是否是增量录制,如果开启增量录制则执行步骤9,如果未开启增量录制则返回Null并执行步骤10;步骤9:进入录制逻辑,在完成录制后,将生成的MockRecord追加进当前的List<MockRecord>中,并在测试用例执行结束后序列化并持久化到记录文件中,接着执行步骤10;步骤10:返回结果,集成测试方法结束。2.根据权利要求1所述的基于录制回放的集成测试方法,其特征在于,在步骤1中设置双重开关,其中一个开关实现对集成测试工具的启动的加载与否,另一开关实现对录制/回放功能的开启与否,且实现单个测...

【专利技术属性】
技术研发人员:陈冬严
申请(专利权)人:上海金融期货信息技术有限公司
类型:发明
国别省市:

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

1