一种接口程序的通用测试实例的生成方法和装置与流程
未命名
09-29
阅读:77
评论:0
1.本发明涉及大数据技术领域,尤其涉及一种接口程序的通用测试实例的生成方法和装置。
背景技术:
2.平台接口的运行需要对其包括的各个模块进行开发、测试、修复、上线等流程,目前常用的测试框架包括自动化测试框架和单元测试框架,自动化测试框架用于对整体逻辑进行测试、单元测试框架用于对单个模块的逻辑进行测试。
3.现有的自动化测试过程中,需要研发人员在自动化测试框架下编写脚本、设置网络交互协议和请求参数等,测试人员执行整体测试后,根据接口返回的状态码判定接口是否可以正常调用;现有的单元测试过程中,需要研发人员在单元测试框架下编写脚本,测试人员执行最小的模块的单元测试后,根据测试结果确定模块是否可以正常运行。
4.在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
5.自动化测试一方面无法发现模块单元的微小隐性故障,为平台运行带来隐患;另一方面一旦发现异常故障,不但阻塞测试进度,而且测试人员与研发人员沟通故障详情和复现方法、再重新测试,皆会导致测试成本增加,测试期修复成本又远高于开发期,同时影响开发和测试效率。单元测试一方面外调时需要单独开发,使得开发成本较高;另一方面需要反复调整测试参数对模块的功能进行验证,由于模块数量繁多,覆盖全部模块的调参成本过高,使得测试的自动化性能低下。
技术实现要素:
6.有鉴于此,本发明实施例提供一种接口程序的通用测试实例的生成方法和装置,能够对开发代码进行梳理,根据各条调用链路拆分后的子链路以及各条调用链路的最小方法单元生成集成测试模板和单元测试模板的模板代码,并根据预设的标签库匹配模板代码中的关键词,利用关键词对应的特殊处理策略修订模板代码,得到通用测试用例,与输入数据组合生成通用测试实例,满足任意场景下开发代码的全功能测试需求,从而可以将异常故障的定位前置暴露,提升接口程序的自动化测试性能,降低测试和开发成本,提升测试和开发效率,提升平台运行的安全性。
7.为实现上述目的,根据本发明实施例的一个方面,提供了一种接口程序的通用测试实例的生成方法,包括:
8.获取各个所述接口程序的开发代码包;
9.对所述开发代码包进行扫描,检测预设接口入口;
10.梳理所述预设接口入口下的调用链路,确定所述调用链路下包括的各个方法的属性信息,生成集成测试模板和单元测试模板;
11.根据预设的标签库,提取所述集成测试模板、和/或所述单元测试模板中的待测关键词,构建通用测试模板;
12.为所述通用测试模板的模板代码中的各个方法分配与所述方法的入参的参数类型相符的输入参数,得到所述接口程序的通用测试用例。
13.可选地,所述根据预设的标签库,提取所述集成测试模板、和/或所述单元测试模板中的待测关键词,构建通用测试模板,包括:
14.根据所述标签库,检测所述集成测试模板、和/或所述单元测试模板的模板代码中是否存在与所述标签库的关键词相同的待测关键词;
15.在所述模板代码中存在所述待测关键词的情况下,根据所述标签库中与所述待测关键词对应的特殊处理策略,对所述集成测试模板、和/或所述单元测试模板的模板代码进行修订,生成所述通用测试模板的模板代码。
16.可选地,所述待测关键词包括远程调用标识;所述根据所述标签库中与所述待测关键词对应的特殊处理策略,对所述集成测试模板、和/或所述单元测试模板的模板代码进行修订,包括:
17.在所述模板代码中的所述主方法或者所述子方法的入参为远程调用方法的出参情况下,将所述主方法或者所述子方法的入参修改为与所述远程调用方法的出参的参数类型相同的模拟参数,生成所述通用测试模板的测试代码。
18.可选地,所述待测关键词还包括事务注解标识和分布式锁标识;所述根据所述标签库中与所述待测关键词对应的特殊处理策略,对所述集成测试模板、和/或所述单元测试模板的模板代码进行修订,包括:
19.在所述待测关键词为事务注解标识的情况下,在所述模板代码中增加多个与所述事务注解标识对应的正向事务和反向事务的代码;或者,
20.在所述待测关键词为分布式锁标识的情况下,在所述模板代码中增加与所述分布式锁标识对应的并发测试注解。
21.可选地,在所述集成测试模板、和/或所述单元测试模板的模板代码中不存在任何待测关键词的情况下,根据所述集成测试模板、和/或所述单元测试模板的模板代码中主方法、和/或子方法的入参的参数类型,添加边界值检查策略的代码,得到所述通用测试模板的测试代码。
22.可选地,所述生成集成测试模板,包括:
23.根据所述预设接口入口下的调用链路的上下文依赖关系,对所述调用链路进行拆分;
24.提取拆分后的各条子调用链路包括的主方法和子方法的方法名、方法路径、入参、和/或出参对应的字节码,分别生成每一条所述子调用链路的所述集成测试模板的模板代码。
25.可选地,所述生成单元测试模板,包括:
26.分析所述预设接口入口下的调用链路的上下文依赖关系,定位所述调用链路的一个或多个最小单元方法;
27.根据所述最小单元方法的方法名、方法路径、入参、和/或出参对应的字节码,生成所述调用链路的各个所述单元测试模板的模板代码。
28.根据本发明实施例的再一个方面,提供了一种接口程序的通用测试实例的生成装置,包括:
29.获取模块,用于获取各个所述接口程序的开发代码包;
30.检测模块,用于对所述开发代码包进行扫描,检测预设接口入口;
31.生成模块,用于梳理所述预设接口入口下的调用链路,确定所述调用链路下包括的各个方法的属性信息,生成集成测试模板和单元测试模板;
32.生成模块,还用于根据预设的标签库,提取所述集成测试模板、和/或所述单元测试模板中的待测关键词,构建通用测试模板;
33.组合模块,用于为所述通用测试模板的模板代码中的各个方法分配与所述方法的入参的参数类型相符的输入参数,得到所述接口程序的通用测试用例。
34.根据本发明实施例的另一个方面,提供了一种接口程序的通用测试实例的生成的电子设备,包括:
35.一个或多个处理器;
36.存储装置,用于存储一个或多个程序,
37.当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明提供的接口程序的通用测试实例的生成方法。
38.根据本发明实施例的还一个方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明提供的接口程序的通用测试实例的生成方法。
39.上述发明中的一个实施例具有如下优点或有益效果:因为采用扫描开发代码包,检测其中的预设接口入口,对预设接口入口下的调用链路进行梳理,将调用链路拆分为多个子调用链路,利用对应的字节码文件生成集成测试模板;通过调用链路的最小方法单元对应的字节码文件,生成单元测试模板;根据预构建的标签库,查找集成测试模板或者单元测试模板中的待测关键词,通过待测关键词对应的特殊处理策略,修订集成测试模板或者单元测试模板的模板代码,得到通用测试模板;为通用测试模板分配与各个方法的入参的参数类型相同的输入参数,得到接口程序的通用测试用例的技术手段,所以克服了自动化测试存在微小隐性故障,为平台运行带来隐患;测试成本高,开发和测试效率低;单元测试开发成本较高、覆盖全部模块的调参成本过高,测试的自动化性能低下的技术问题,进而达到能够满足任意场景下开发代码的全功能测试需求,从而可以将异常故障的定位前置暴露,提升接口程序的自动化测试性能,降低测试和开发成本,提升测试和开发效率,提升平台运行的安全性的技术效果。
40.上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
41.附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
42.图1是根据本发明实施例的接口程序的通用测试实例的生成方法的主要流程的示意图;
43.图2是根据本发明实施例的集成测试模板的生成方法的主要流程的示意图;
44.图3是根据本发明实施例的单元测试模板的生成方法的主要流程的示意图;
45.图4是根据本发明实施例的通用测试模板的生成方法的主要流程的示意图;
46.图5是根据本发明实施例的接口程序的通用测试实例的生成装置的主要模块的示意图;
47.图6示出了适于应用于本发明实施例的接口程序的通用测试实例的生成方法或接口程序的通用测试实例的生成装置的示例性系统架构图;
48.图7是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
49.以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
50.需要说明的是,本公开的技术方案中,所涉及的用户个人信息的采集、收集、更新、分析、处理、使用、传输、存储等方面,均符合相关法律法规的规定,被用于合法的用途,且不违背公序良俗。对用户个人信息采取必要措施,防止对用户个人信息数据的非法访问,维护用户个人信息安全、网络安全和国家安全。
51.spring框架:java ee编程领域的一个轻量级开源框架,通过核心的bean factory实现底层的类的实例化和生命周期的管理。在整个框架中,各类型的功能被抽象成一个个的bean,包括动态加载和切面编程。spring是全面的和模块化的,具有分层的体系结构,可以选用任意孤立部分仍可保持架构稳定,从而有助于编写易于测试的代码。
52.jdk:java development kit,一款java语言的软件开发工具包。
53.mock参数:测试过程中人为模拟的动态变量,以保证测试逻辑的正常实现。
54.jdk:java development kit,一款java语言的软件开发工具包。
55.proxy:代理软件或代理服务器,也可以认为是一种网络访问方式。
56.rpc:remote procedure call,远程过程调用。
57.web service:是一种跨编程语言和跨操作系统平台的远程调用技术。
58.事务一致性:一个功能模块包括多个操作,全部操作一起成功或者一起失败。
59.边界性:程序逻辑的边界值,比如,整数型的最大值、最小值。
60.处于开发阶段时,开发人员发现异常故障时可以立即修复,由于现有的自动化测试通常在程序开发完成后执行,无法像开发阶段一样及时修复,使得修复和测试成本增加、修复和测试效率低下,无法提升开发期的开发效能,而且,自动化测试框架(比如,jmeter)注重整体逻辑,无法发现部分测试过程中未执行的细微逻辑,容易产生隐性异常故障,为上线后的正常运行带来隐患。单元测试一方面外调时需要单独开发,比如,a方法调用b方法时,如果b方法是一个外部rpc(remote procedure call protocol,即远程调用)方法,并且本地无法调通,需要利用单元测试框架(比如,junit)对rpc方法进行额外的mock修饰,才能实现a、b方法链路的调用,自动化程度低,使得开发成本较高;另一方面单元测试的测试用例需要反复调整不同的测试数据,以验证模块的功能,单元测试通常对模块的测试覆盖率要求较高,重复的调参工作使得单元测试自动化性能低下。
61.通过本发明的接口程序的通用测试实例的生成方法,将接口程序的异常故障定位
前置至开发阶段,由于研发人员可以直接对故障进行修复,尤其对接口程序的功能缺陷进行弥补,使得接口程序的完整性和准确性提升较高,缩短了接口程序的测试和上线时间,提升测试效率和平台运行的稳定性。
62.图1是根据本发明实施例的接口程序的通用测试实例的生成方法的主要流程的示意图,如图1所示,本发明的接口程序的通用测试实例的生成方法包括如下步骤:
63.在本发明实施例中,本发明的接口程序的通用测试实例的生成方法可以通过spring框架执行,以生成接口程序的通用测试模板,后续使用过程中,可以将接口程序的异常故障前置暴露,降低测试成本、提高测试效率。
64.步骤s101,获取各个所述接口程序的开发代码包。
65.在本发明实施例中,获取不同场景下的接口程序的开发代码包,场景可以根据实际需要进行选择性设置,比如,下单场景、秒杀场景、支付场景、加购场景等。开发代码可以采用任何编程语言,比如,c语言、c++、c#、java、php等。其中,开发代码包为压缩包格式,比如,rar、zip等。
66.步骤s102,对所述开发代码包进行扫描,检测预设接口入口。
67.在本发明实施例中,spring框架可以利用javac命令对开发代码包进行编译,将开发代码包转换为编译代码包,以便于计算机的识别、读取和使用。
68.进一步地,启动接口程序,由spring框架使用拦截器,对编译代码包进行扫描,检测其中的预设接口入口。其中,预设接口入口可以根据需要进行选择性设置,比如,预设接口入口为杰夫接口,预先约定编译代码包中以“class”开头的字节码文件为杰夫接口,故而spring框架可以通过包扫描的方式,利用拦截器,检测到注册在杰夫接口的class字节码文件,作为预设接口入口。
69.在本发明实施例中,拦截器可以是jdk自带的proxy、invocation-handler方式,利用拦截器对编译代码包中的class类进行方法增强,得到对应的class字节码文件。
70.进一步地,可将预设接口入口对应的字节码文件存储至预先设置的内存或者缓存,以便于后期进行读取和利用,比如,将class字节码文件存储至内存或者缓存中,以便于后期的读取和使用。
71.步骤s103,对所述预设接口入口下的调用链路进行梳理,确定所述调用链路下包括的各个方法的属性信息,生成集成测试模板和单元测试模板。
72.在本发明实施例中,检测到预设接口入口后,spring框架利用jdk提供的getstacktrace()方法对预设接口入口对应的字节码文件中的调用链路进行梳理,提取调用链路包括的主方法(或称,入口方法或者类)、子方法等各个方法的方法信息,包括方法名、方法路径、入参、和/或出参等,用于生成集成测试模板和单元测试模板,如图2所示,本发明的集成测试模板的生成方法包括如下步骤:
73.步骤s201,根据所述预设接口入口下的调用链路的上下文依赖关系,对所述调用链路进行拆分。
74.在本发明实施例中,上下文依赖关系是指代码段落中各个主方法、子方法之间的依赖关系,通过分析预设接口入口下的调用链路的上下文依赖关系,对调用链路进行拆分,拆分为多条子调用链路,比如,接口程序的调用链路为a-》b-》c-》d,拆分后的子调用链路包括a-》b-》c-》d、b-》c-》d、c-》d。
75.步骤s202,提取拆分后的各条子调用链路包括的主方法和子方法的方法名、方法路径、入参、和/或出参对应的字节码,分别生成每一条所述子调用链路的所述集成测试模板的模板代码。
76.在本发明实施例中,根据拆分后的各条子调用链路包括的各个方法的属性信息,从编译代码包中提取对应的字节码,生成每一条子调用链路的集成测试模板的模板代码。其中,模板代码是spring框架基于提取出的字节码生成的。
77.进一步地,在调用链路仅包括一个主方法和一个子方法的情况下,拆分后的子调用链路与调用链路等同。
78.在本发明实施例中,如图3所示,本发明的单元测试模板的生成方法包括如下步骤:
79.步骤s301,分析所述预设接口入口下的调用链路的上下文依赖关系,定位所述调用链路的一个或多个最小单元方法。
80.在本发明实施例中,通过预设接口入口下的调用链路的上下文依赖关系,对调用链路包括的各个方法进行分析,确定每一条调用链路包括的一个或多个最小单元方法,比如,接口程序的调用链路为a-》b-》c-》d,最小单元方法为d。
81.步骤s302,根据所述最小单元方法的方法名、方法路径、入参、和/或出参对应的字节码,生成所述调用链路的各个所述单元测试模板的模板代码。
82.在本发明实施例中,根据每一条调用链路的各个最小单元方法的属性信息,从编译代码包中提取对应的字节码,生成调用链路包括的各个最小单元方法的单元测试模板的模板代码。
83.在本发明实施例中,通过本发明的集成测试模板和单元测试模板的生成方法,扫描开发代码包,定位其中的预设接口入口,梳理预设接口入口下的各个调用链路的主方法和子方法的属性信息,从而通过将调用链路拆分为子调用链路,利用子调用链路的方法的属性信息,可以生成接口程序的集成测试模板,并且,通过定位调用链路的最小单元方法,利用最小单元方法的属性信息,可以生成接口程序的单元测试模板,也即,直接对开发代码包进行解析,即可生成对应的测试模板,无需研发人员逐个编写,降低了测试的人力和时间成本,提高了测试效率。
84.需要说明的是,接口程序的整体逻辑包括多个模块,可以理解为一个主方法下包括一个或多个子方法,不同接口程序之间,同一子方法可以被不同的主方法调用,但是主方法之间通常不存在调用关系。比如,下单接口和加购接口皆包括物品数量计算模块,即表示物品数量计算方法即可以被下单接口使用、也可以被加购接口使用。
85.进一步地,主方法、子方法仅是示例,在实际开发阶段,可以根据实际开发代码的内容对梳理调用链路后进行选择性设置。
86.步骤s104,根据预设的标签库,提取所述集成测试模板、和/或所述单元测试模板中的待测关键词,构建通用测试模板。
87.在本发明实施例中,标签库中存储了需要特殊处理的关键词和对应的特殊处理策略,关键词包括远程调用标识(比如,rpc方法、web service方法等标识)、事务注解标识(比如,@transactional注解)、分布式锁标识(比如,lock_name)等,对应的特殊处理策略包括mock调参策略、事务一致性策略、并发测试策略、边界值检查策略等,如图4所示,本发明的
通用测试模板的生成方法包括如下步骤:
88.步骤s401,根据所述标签库,检测所述集成测试模板的模板代码和所述单元测试模板的模板代码。
89.步骤s402,确定所述模板代码中是否存在与所述标签库的关键词相同的待测关键词,如果是,转至步骤s403;如果否,转至步骤s404。
90.在本发明实施例中,spring框架分别检测集成测试模板的模板代码和单元测试模板的模板代码,确定模板代码对应的调用链路中是否存在与标签库中的关键词相同的待测关键词。
91.步骤s403,根据所述待测关键词对应的特殊处理策略,对所述集成测试模板的模板代码和所述单元测试模板的模板代码进行修订,生成所述通用测试模板的模板代码。
92.在本发明实施例中,在集成测试模板的模板代码和单元测试模板的模板代码中存在待测关键词的情况下,根据标签库中与待测关键词对应的特殊处理策略,对集成测试模板、和/或单元测试模板的模板代码进行修订,生成通用测试模板的模板代码。
93.步骤s4031,在检测到所述集成测试模板、和/或所述单元测试模板的模板代码中的待测关键词为远程调用标识的情况下,利用mock调参策略对集成测试模板、和/或单元测试模板的模板代码进行修订,生成通用测试模板。
94.在本发明实施例中,mock调参策略用于实现环境隔离,屏蔽外部调用。所述利用mock调参策略对集成测试模板、和/或单元测试模板的模板代码进行修订,包括:
95.在所述模板代码中的所述主方法或者所述子方法的入参为远程调用方法的出参情况下,将所述主方法或者所述子方法的入参修改为与所述远程调用方法的出参的参数类型相同的模拟参数,生成所述通用测试模板的测试代码。比如,spring框架检测到集成测试模板、和/或单元测试模板的模板代码的调用链路中包含rpc方法时,会屏蔽外部调用,并根据rpc方法的返回对象的参数类型进行mock模拟,生成模拟参数作为调用链路中调用rpc方法的主方法或者子方法的入参,从而屏蔽外部调用,保证集成测试或者单元测试不存在环境隔离导致的卡点。
96.步骤s4032,在检测到所述集成测试模板、和/或所述单元测试模板的模板代码中的待测关键词为事务注解标识的情况下,利用事务一致性策略对集成测试模板、和/或单元测试模板的模板代码进行修订,生成通用测试模板。
97.在本发明实施例中,事务一致性策略用于保证多个事务节点相同节点位置的节点值的一致。所述利用事务一致性策略对集成测试模板、和/或单元测试模板的模板代码进行修订,包括:
98.在所述模板代码中增加多个与所述事务注解标识对应的正向事务和反向事务的代码,得到所述通用测试模板的测试代码。比如,spring框架检测到集成测试模板、和/或单元测试模板的模板代码的调用链路中出现事务注解标识时,在模板代码中增加多个正向事务和反向事务,后续测试用例执行过程中,根据正向事务和反向事务的执行结果(比如,反向事务的执行结果应为抛出异常),判断多个事务节点相同节点位置的节点值是否具备事务一致性。
99.步骤s4033,在检测到所述集成测试模板、和/或所述单元测试模板的模板代码中的待测关键词为分布式锁标识的情况下,利用并发测试策略对集成测试模板、和/或单元测
试模板的模板代码进行修订,生成通用测试模板。
100.在本发明实施例中,并发测试策略用于分布式任务的并发测试,表示对应的主方法、和/或子方法是否满足多用户并发使用的需求。所述利用并发测试策略对集成测试模板、和/或单元测试模板的模板代码进行修订,包括:
101.在所述模板代码中增加与所述分布式锁标识对应的并发测试注解,得到所述通用测试模板的测试代码。比如,spring框架检测到集成测试模板、和/或单元测试模板的模板代码的调用链路中出现分布式锁标识时,表示对应的主方法、和/或子方法存在并发的可能性,对相应的主方法、和/或子方法进行并发测试注解,使得在测试过程中,接口程序对相应的主方法、和/或子方法并发测试。
102.步骤s404,根据所述集成测试模板、和/或所述单元测试模板的模板代码中主方法、和/或子方法的入参的参数类型,添加边界值检查策略的代码,生成所述特殊测试模板的模板代码。
103.在本发明实施例中,在模板代码中不存在任何待测关键词的情况下,为集成测试模板、和/或单元测试模板的模板代码中各个方法添加与方法的入参或者出参的参数类型相同的边界值检查策略,得到所述通用测试模板的测试代码。比如,spring框架检测到集成测试模板、和/或单元测试模板的模板代码的调用链路中不存在待测关键词时,根据调用链路中的主方法、和/或子方法的入参的参数类型为整型(integer),生成对应的入参边界值,入参边界值可以是最大值(max_value)、最小值(min_value)。
104.在本发明实施例中,通过本发明的通用测试模板的生成方法,对集成测试模板和单元测试模板中存在特殊处理策略的模板代码进行修订,对外调、事务一致性、并发测试等特殊情况进行单独修订,得到完善的通用测试模板,可以满足任意场景下的接口程序的开发代码的测试需求,解放研发人员,提升测试效率、降低测试成本。
105.步骤s105,为所述通用测试模板的模板代码中的各个方法分配与所述方法的入参的参数类型相符的输入参数,得到所述接口程序的通用测试用例。
106.在本发明实施例中,根据通用测试模板的模板代码中的各个主方法、和/或子方法的入参的参数类型,为各个主方法、和/或子方法分配对应的输入参数,组合输入参数和通用测试模板的模板代码,得到接口程序的通用测试用例。
107.在本发明实施例中,通过获取各个所述接口程序的开发代码包;对所述开发代码包进行扫描,检测预设接口入口;梳理所述预设接口入口下的调用链路,确定所述调用链路下包括的各个方法的属性信息,生成集成测试模板和单元测试模板;根据预设的标签库,提取所述集成测试模板、和/或所述单元测试模板中的待测关键词,构建通用测试模板;为所述通用测试模板的模板代码中的各个方法分配与所述方法的入参的参数类型相符的输入参数,得到所述接口程序的通用测试用例等步骤,能够对开发代码进行梳理,根据各条调用链路拆分后的子链路以及各条调用链路的最小方法单元生成集成测试模板和单元测试模板的模板代码,并根据预设的标签库匹配模板代码中的关键词,利用关键词对应的特殊处理策略修订模板代码,得到通用测试用例,与输入数据组合生成通用测试实例,满足任意场景下开发代码的全功能测试需求,从而可以将异常故障的定位前置暴露,提升接口程序的自动化测试性能,降低测试和开发成本,提升测试和开发效率,提升平台运行的安全性。
108.图5是根据本发明实施例的接口程序的通用测试实例的生成装置的主要模块的示
意图,如图5所示,本发明的接口程序的通用测试实例的生成装置500包括:
109.获取模块501,用于获取各个所述接口程序的开发代码包。
110.检测模块502,用于对所述开发代码包进行扫描,检测预设接口入口。
111.生成模块503,用于梳理所述预设接口入口下的调用链路,确定所述调用链路下包括的各个方法的属性信息,生成集成测试模板和单元测试模板。
112.生成模块503,还用于根据预设的标签库,提取所述集成测试模板、和/或所述单元测试模板中的待测关键词,构建通用测试模板。
113.组合模块504,用于为所述通用测试模板的模板代码中的各个方法分配与所述方法的入参的参数类型相符的输入参数,得到所述接口程序的通用测试用例。
114.在本发明实施例中,通过获取模块、检测模块、生成模块和组合模块等模块,能够满足任意场景下开发代码的全功能测试需求,从而可以将异常故障的定位前置暴露,提升接口程序的自动化测试性能,降低测试和开发成本,提升测试和开发效率,提升平台运行的安全性。
115.图6示出了适于应用于本发明实施例的接口程序的通用测试实例的生成方法或接口程序的通用测试实例的生成装置的示例性系统架构图,如图6所示,本发明实施例的接口程序的通用测试实例的生成方法或接口程序的通用测试实例的生成装置的示例性系统架构包括:
116.如图6所示,系统架构600可以包括终端设备601、602、603,网络604和服务器605。网络604用以在终端设备601、602、603和服务器605之间提供通信链路的介质。网络604可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
117.用户可以使用终端设备601、602、603通过网络604与服务器605交互,以接收或发送消息等。终端设备601、602、603上可以安装有各种通讯客户端应用,例如测试用例类应用、购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
118.终端设备601、602、603可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
119.服务器605可以是提供各种服务的服务器,例如对用户利用终端设备601、602、603所浏览的测试用例类网站提供支持的后台管理服务器。后台管理服务器可以对接收到的接口程序的开发代码等数据进行分析等处理,并将处理结果(接口程序的通用测试用例)反馈给终端设备601、602、603。
120.需要说明的是,本发明实施例所提供的接口程序的通用测试实例的生成方法一般由服务器605执行,相应地,接口程序的通用测试实例的生成装置一般设置于服务器605中。
121.应该理解,图6中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
122.图7是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图,如图7所示,本发明实施例的终端设备或服务器的计算机系统700包括:
123.中央处理单元(cpu)701,其可以根据存储在只读存储器(rom)702中的程序或者从存储部分708加载到随机访问存储器(ram)703中的程序而执行各种适当的动作和处理。在ram703中,还存储有系统700操作所需的各种程序和数据。cpu701、rom702以及ram703通过
总线704彼此相连。输入/输出(i/o)接口705也连接至总线704。
124.以下部件连接至i/o接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至i/o接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
125.特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被中央处理单元(cpu)701执行时,执行本发明的系统中限定的上述功能。
126.需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。
127.附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
128.描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包
括获取模块、检测模块、生成模块和组合模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,组合模块还可以被描述为“为所述通用测试模板的模板代码中的各个方法分配与所述方法的入参的参数类型相符的输入参数,得到所述接口程序的通用测试用例的模块”。
129.作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:获取各个所述接口程序的开发代码包;对所述开发代码包进行扫描,检测预设接口入口;梳理所述预设接口入口下的调用链路,确定所述调用链路下包括的各个方法的属性信息,生成集成测试模板和单元测试模板;根据预设的标签库,提取所述集成测试模板、和/或所述单元测试模板中的待测关键词,构建通用测试模板;为所述通用测试模板的模板代码中的各个方法分配与所述方法的入参的参数类型相符的输入参数,得到所述接口程序的通用测试用例。
130.根据本发明实施例的技术方案,结合自动化测试框架与单元测试框架的特性,通过分析开发代码,将调用链路下的方法进行归类,拆分调用链路构建集成测试模板、定位最小方法单元构建单元测试模板,并根据模板代码中的关键词,利用特殊处理策略修订后生成接口程序的通用测试模板,可以将异常故障提前暴露在开发期,同时保证测试的自动化效率,缩短接口上线流程、降低接口开发对平台的影响,保障平台安全运行。
131.进一步地,在开发阶段,执行本发明的接口程序的通用测试实例的生成方法,直接生成各个待上线的接口程序的通用测试实例并执行,从而将接口程序的异常故障暴露前置至开发阶段,研发人员可以立即修订,无需后续的沟通、复现、再测试等复杂流程,大大降低了测试成本和测试用例的开发成本,无需重复开发各个单元模块的测试用例,直接实现集成测试和单元测试全覆盖,自动化执行能力强的同时定位任意微小异常故障,保证接口程序的稳定性和安全性。
132.或者,本发明的接口程序的通用测试实例的生成方法还可以应用于测试阶段等其它阶段,根据需要进行选用即可。
133.上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
技术特征:
1.一种接口程序的通用测试实例的生成方法,其特征在于,包括:获取各个所述接口程序的开发代码包;对所述开发代码包进行扫描,检测预设接口入口;梳理所述预设接口入口下的调用链路,确定所述调用链路下包括的各个方法的属性信息,生成集成测试模板和单元测试模板;根据预设的标签库,提取所述集成测试模板、和/或所述单元测试模板中的待测关键词,构建通用测试模板;为所述通用测试模板的模板代码中的各个方法分配与所述方法的入参的参数类型相符的输入参数,得到所述接口程序的通用测试用例。2.根据权利要求1所述的方法,其特征在于,所述根据预设的标签库,提取所述集成测试模板、和/或所述单元测试模板中的待测关键词,构建通用测试模板,包括:根据所述标签库,检测所述集成测试模板、和/或所述单元测试模板的模板代码中是否存在与所述标签库的关键词相同的待测关键词;在所述模板代码中存在所述待测关键词的情况下,根据所述标签库中与所述待测关键词对应的特殊处理策略,对所述集成测试模板、和/或所述单元测试模板的模板代码进行修订,生成所述通用测试模板的模板代码。3.根据权利要求2所述的方法,其特征在于,所述待测关键词包括远程调用标识;所述根据所述标签库中与所述待测关键词对应的特殊处理策略,对所述集成测试模板、和/或所述单元测试模板的模板代码进行修订,包括:在所述模板代码中的所述主方法或者所述子方法的入参为远程调用方法的出参情况下,将所述主方法或者所述子方法的入参修改为与所述远程调用方法的出参的参数类型相同的模拟参数,生成所述通用测试模板的测试代码。4.根据权利要求2所述的方法,其特征在于,所述待测关键词还包括事务注解标识和分布式锁标识;所述根据所述标签库中与所述待测关键词对应的特殊处理策略,对所述集成测试模板、和/或所述单元测试模板的模板代码进行修订,包括:在所述待测关键词为事务注解标识的情况下,在所述模板代码中增加多个与所述事务注解标识对应的正向事务和反向事务的代码;或者,在所述待测关键词为分布式锁标识的情况下,在所述模板代码中增加与所述分布式锁标识对应的并发测试注解。5.根据权利要求2所述的方法,其特征在于,在所述集成测试模板、和/或所述单元测试模板的模板代码中不存在任何待测关键词的情况下,根据所述集成测试模板、和/或所述单元测试模板的模板代码中主方法、和/或子方法的入参的参数类型,添加边界值检查策略的代码,得到所述通用测试模板的测试代码。6.根据权利要求1所述的方法,其特征在于,所述生成集成测试模板,包括:根据所述预设接口入口下的调用链路的上下文依赖关系,对所述调用链路进行拆分;提取拆分后的各条子调用链路包括的主方法和子方法的方法名、方法路径、入参、和/或出参对应的字节码,分别生成每一条所述子调用链路的所述集成测试模板的模板代码。7.根据权利要求6所述的方法,其特征在于,所述生成单元测试模板,包括:分析所述预设接口入口下的调用链路的上下文依赖关系,定位所述调用链路的一个或
多个最小单元方法;根据所述最小单元方法的方法名、方法路径、入参、和/或出参对应的字节码,生成所述调用链路的各个所述单元测试模板的模板代码。8.一种接口程序的通用测试实例的生成装置,其特征在于,包括:获取模块,用于获取各个所述接口程序的开发代码包;检测模块,用于对所述开发代码包进行扫描,检测预设接口入口;生成模块,用于梳理所述预设接口入口下的调用链路,确定所述调用链路下包括的各个方法的属性信息,生成集成测试模板和单元测试模板;生成模块,还用于根据预设的标签库,提取所述集成测试模板、和/或所述单元测试模板中的待测关键词,构建通用测试模板;组合模块,用于为所述通用测试模板的模板代码中的各个方法分配与所述方法的入参的参数类型相符的输入参数,得到所述接口程序的通用测试用例。9.一种接口程序的通用测试实例的生成的电子设备,其特征在于,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的方法。10.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-7中任一所述的方法。
技术总结
本发明公开了一种接口程序的通用测试实例的生成方法和装置,涉及大数据技术领域。该方法的具体实施方式包括:获取接口程序的开发代码包;对开发代码包进行扫描,检测预设接口入口;梳理预设接口入口下的调用链路,确定调用链路包括的各个方法的属性信息,生成集成测试模板和单元测试模板;根据预设的标签库,提取待测关键词,构建通用测试模板;为通用测试模板的模板代码中的各个方法分配与入参的参数类型相符的输入参数,得到通用测试用例。该实施方式能够满足任意场景下开发代码的全功能测试需求,从而可以将异常故障的定位前置暴露,提升接口程序的自动化测试性能,降低测试和开发成本,提升测试和开发效率,提升平台运行的安全性。行的安全性。行的安全性。
技术研发人员:楚朝伟 胡晓东 郭银利 王志强
受保护的技术使用者:京东科技信息技术有限公司
技术研发日:2023.06.21
技术公布日:2023/9/23
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/