一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

测试用例处理方法、装置、电子设备以及存储介质与流程

2022-06-11 06:38:25 来源:中国专利 TAG:


1.本公开涉及计算机技术领域,尤其涉及测试技术领域。具体地,涉及一种测试用例处理方法、装置、电子设备以及存储介质。


背景技术:

2.随着软件应用数目的增长和软件行业的不断发展,高质量的代码成为业界和用户的普遍需求,而高质量的软件离不开软件测试。软件测试是在规定的条件下对代码进行操作,以发现代码异常,衡量软件质量,并对其是否满足设计要求进行评估的过程。软件测试测试可以包括单元测试、功能测试和压力测试。
3.单元测试(即模块测试)是针对代码模块(即软件设计的最小单位)来进行正确性检验的测试工作。


技术实现要素:

4.本公开提供了一种测试用例处理方法、装置、电子设备以及存储介质。
5.根据本公开的一方面,提供了一种测试用例处理方法,包括:对与被测代码对应的代码特征数据进行分析,确定与上述被测代码对应的至少一个被测对象的用例数据生成策略;利用与上述被测对象对应的用例数据生成策略,生成与上述被测对象对应的测试用例数据;根据上述代码特征数据和与上述至少一个被测对象对应的测试用例数据,确定用例代码生成策略;利用上述用例代码生成策略,生成测试用例代码;以及,根据上述测试用例代码和与上述至少一个被测对象对应的测试用例数据,生成用于测试上述被测代码的测试用例。
6.根据本公开的另一方面,提供了一种第一确定模块,用于对与被测代码对应的代码特征数据进行分析,确定与上述被测代码对应的至少一个被测对象的用例数据生成策略;第一生成模块,用于利用与上述被测对象对应的用例数据生成策略,生成与上述被测对象对应的测试用例数据;第二确定模块,用于根据上述代码特征数据和与上述至少一个被测对象对应的测试用例数据,确定用例代码生成策略;第二生成模块,用于利用上述用例代码生成策略,生成测试用例代码;以及,第三生成模块,用于根据上述测试用例代码和与上述至少一个被测对象对应的测试用例数据,生成用于测试上述被测代码的测试用例。
7.根据本公开的另一方面,提供了一种电子设备,包括:至少一个处理器;以及与上述至少一个处理器通信连接的存储器;其中,上述存储器存储有可被上述至少一个处理器执行的指令,上述指令被上述至少一个处理器执行,以使上述至少一个处理器能够执行本公开所述的方法。
8.根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,上述计算机指令用于使上述计算机执行本公开所述的方法。
9.根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,上述计算机程序在被处理器执行时实现本公开所述的方法。
10.应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
11.附图用于更好地理解本方案,不构成对本公开的限定。其中:
12.图1示意性示出了根据本公开实施例的可以应用测试用例处理方法及装置的示例性系统架构;
13.图2示意性示出了根据本公开实施例的测试用例处理方法的流程图;
14.图3a示意性示出了根据本公开实施例的测试用例处理过程的示例示意图;
15.图3b示意性示出了根据本公开实施例的测试用例数据生成过程的示例示意图;
16.图3c示意性示出了根据本公开实施例的测试用例代码生成过程的示例示意图;
17.图3d示意性示出了根据本公开实施例的确定失败原因信息过程的示例示意图;
18.图4示意性示出了根据本公开实施例的测试用例处理装置的框图;以及
19.图5示意性示出了根据本公开实施例的适于实现测试用例处理方法的电子设备的框图。
具体实施方式
20.以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
21.单元测试生成可以指在无人参与的情况下,实现针对被测代码的代码理解、测试用例数据生成和测试用例代码生成过程。单测生成技术在实际生成环境中的通用和扩展性不足。
22.为此,本公开实施例基于微服务化的思想,将单元测试生成过程的各个阶段进行了系统化拆分,以代码特征数据作为上下文抽象数据表征模型,并考虑到各个阶段的通用性和扩展性的设计,便于落地在不同编程语言和不同单元测试驱动代码中,由此,提出了一种测试用例处理方案。对与被测代码对应的代码特征数据进行分析,确定与所述被测代码对应的至少一个被测对象的用例数据生成策略。利用与所述被测对象对应的用例数据生成策略,生成与被测对象对应的测试用例数据。根据代码特征数据和与至少一个被测对象对应的测试用例数据,确定用例代码生成策略。利用用例代码生成策略,生成测试用例代码。根据测试用例代码和与至少一个被测对象对应的测试用例数据,生成用于测试被测代码的测试用例。
23.根据本公开的实施例,利用与被测对象对应的用例数据生成策略,生成与被测对象对应的测试用例数据,利用根据代码特征数据和测试用例数据确定的用例代码生成策略,生成测试用例代码,再根据测试用例代码和测试用例数据,生成测试用例,实现了自动化生成测试用例,并且不受编程语言类型和业务场景的限制,具有通用性和拓展性。
24.本技术采用了微服务化的思想,将单测生成的各个阶段进行了系统化拆分,以代码特征文件作为上下文抽象数据表示模型,并考虑到各个子系统的通用性和扩展性的设
计,便于落地在不同语言、不同单测驱动代码、不同测试目标中
25.图1示意性示出了根据本公开实施例的可以应用测试用例处理方法及装置的示例性系统架构。
26.需要注意的是,图1所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。例如,在另一实施例中,可以应用测试用例处理方法及装置的示例性系统架构可以包括终端设备,但终端设备可以无需与服务器进行交互,即可实现本公开实施例提供的测试用例处理方法及装置。
27.如图1所示,根据该实施例的系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线和/或无线通信链路等。
28.用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如知识阅读类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端和/或社交平台软件等(仅为示例)。
29.终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等。
30.服务器105可以是提供各种服务的各种类型的服务器。例如,服务器105可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与vps服务(virtual private server,虚拟专用服务器)中,存在的管理难度大,业务扩展性弱的缺陷。
31.需要说明的是,本公开实施例所提供的测试用例处理方法一般可以由终端设备101、102、或103执行。相应地,本公开实施例所提供的测试用例处理装置也可以设置于终端设备101、102、或103中。
32.或者,本公开实施例所提供的测试用例处理方法一般也可以由服务器105执行。相应地,本公开实施例所提供的测试用例处理装置一般可以设置于服务器105中。本公开实施例所提供的测试用例处理方法也可以由不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的测试用例处理装置也可以设置于不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群中。
33.应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
34.应注意,以下方法中各个操作的序号仅作为该操作的表示以便描述,而不应被看作表示该各个操作的执行顺序。除非明确指出,否则该方法不需要完全按照所示顺序来执行。
35.图2示意性示出了根据本公开实施例的测试用例处理方法的流程图。
36.如图2所示,该方法200包括操作s210~s250。
37.在操作s210,对与被测代码对应的代码特征数据进行分析,确定与被测代码对应的至少一个被测对象的用例数据生成策略。
38.在操作s220,利用与被测对象对应的用例数据生成策略,生成与被测对象对应的测试用例数据。
39.在操作s230,根据代码特征数据和与至少一个被测对象对应的测试用例数据,确定用例代码生成策略。
40.在操作s240,利用用例代码生成策略,生成测试用例代码。
41.在操作s250,根据测试用例代码和与至少一个被测对象对应的测试用例数据,生成用于测试被测代码的测试用例。
42.根据本公开的实施例,被测代码可以指需要被测试的代码。被测对象可以指需要被测试的对象。对象可以包括函数或类。被测代码可以包括至少一个被测对象。与被测代码对应的编程语言可以根据业务场景和测试环境确定。
43.根据本公开的实施例,代码特征数据可以指用于生成测试用例所依赖的数据。代码特征数据可以包括多个粒度的代码特征数据。代码特征数据可以是结构化数据。结构化特征数据可以指具有结构性和能够被划分为预定组成要素的数据。代码特征数据可以具有逻辑关系。逻辑关系包括以下至少一项:并列关系和嵌套关系。代码特征数据的存储格式可以根据实际业务需求进行配置,在此不作限定。例如,代码特征数据的存储格式可以包括xml(extensible markup language,可扩展标记语言)。xml可以指用于标记电子文件,使电子文件具有结构性的标记语言。代码特征数据可以存储于预定存储格式的代码特征数据文件。预测存储格式可以包括xml。由此,代码特征数据文件可以是xml文件。用于定义和描述xml文件的结构和内容的模式语言可以包括dtd(document type definition,文档类型定义)或xml schema(即可扩展标记语言架构)。例如,可以利用xml schema来定义和描述xml文件的结构和内容。可以根据数据类型和参数赋值方式来确定xml schema。可以通过定义标签来支持基础属性。基础属性可以包括声明类型和类型分类等。标签可以包括classinfo标签、confinfo标签或globalinfo标签。
44.根据本公开的实施例,测试用例可以指在软件测试过程中为满足预定目标而编写的用于测试输入参数、执行条件和预期结果,以便测试被测代码是否满足预定需求的用例。
45.根据本公开的实施例,用例数据生成策略可以指如何生成测试用例数据的策略。用例数据生成策略可以包括以下至少一项:基于成对算法的生成策略、基于变量剔除算法的生成策略、基于路径算法的生成策略和基于启发式算法的生成策略等。基于启发式算法可以包括以下至少一项:遗传算法(genetic algorithm,ga)、贪婪算法(greedy algorithm,ga)、模拟退火算法(simulated annealing algorithm,saa)、禁忌搜索(tabu search,ts)算法、演化算法(evolutionary algorithm,ea)和蚁群算法(ant algorithm,aa)等。不同被测对象的用例数据生成策略可以相同或不同。
46.根据本公开的实施例,在生成与被测对象对应的测试用例数据的过程中,可以利用被测代码的路径信息和分支信息来指导数据fuzz(即模糊)算法来实现覆盖更多分支。还可以利用变量扩散关联性来减少无效测试用例数据的生成概率。此外,数据fuzz算法可以作为独立的生成模块使用。可以利用数据fuzz算法还来优化用例数据生成策略。
47.根据本公开的实施例,用例代码生成策略可以指如何生成测试用例代码的策略。例如,用例代码生成策略可以包括如何确定用例代码生成器和用例代码生成算子的内容。用例代码生成器可以根据测试用例数据和与被测代码对应的代码特征数据确定用例代码
生成算子可以根据用例代码生成器确定。
48.根据本公开的实施例,可以响应于测试用例生成请求,确定被测代码。被测代码可以包括至少一个被测对象。确定与被测代码对应的代码特征数据。对与被测代码对应的代码特征数据进行分析,确定与至少一个被测对象的用例数据生成策略。例如,可以确定与至少一个被测对象各自对应的用例数据生成策略。备选地,可以确定与至少一个被测对象中的部分被测对象各自对应的用例数据生成策略。在确定与被测对象对应的用例数据生成策略之后,可以利用与至少一个被测对象对应的用例数据生成策略,生成与至少一个被测对象对应的测试用例数据。例如,可以利用与至少一个被测对象各自对应的用例数据生成策略,生成与至少一个被测对象各自对应的测试用例数据。即,可以利用与被测对象对应的用例数据生成策略,为被测对象赋值,得到测试用例数据。
49.根据本公开的实施例,可以根据代码特征数据和与至少一个被测对象对应的测试用例数据,确定用于生成测试代码的用例代码生成策略,以便利用用例代码生成策略生成测试用例代码。可以根据测试用例代码和与至少一个被测对象各自对应的测试用例数据生成测试用例。
50.根据本公开的实施例,利用与被测对象对应的用例数据生成策略,生成与被测对象对应的测试用例数据,利用根据代码特征数据和测试用例数据确定的用例代码生成策略,生成测试用例代码,再根据测试用例代码和测试用例数据,生成测试用例,实现了自动化生成测试用例,并且不受编程语言类型和业务场景的限制,具有通用性和拓展性。
51.根据本公开的实施例,上述测试用例处理方法还可以包括如下操作。
52.根据选择策略,从当前提交代码中确定被测代码。
53.根据本公开的实施例,选择策略可以指如何从当前提交代码中确定被测代码的策略。选择策略可以包括以下至少一项:基于变更代码的选择策略、基于对象属性信息的选择策略、基于风险等级信息的选择策略和基于业务白名单信息的选择策略。对象属性信息可以包括以下至少一项:对象类型和对象属性。对象可以包括以下至少一项:文件、类和函数。
54.根据本公开的实施例,通过根据选择策略从当前提交代码中确定被测代码,减少了测试数据量,提高了测试效率。
55.根据本公开的实施例,上述测试用例处理方法还可以包括如下操作。
56.对被测代码进行特征提取,得到与被测代码对应的代码特征数据。
57.根据本公开的实施例,可以对被测代码进行特征提取,得到与被测代码对应的相关数据。相关数据可以包括以下至少一项:输入参数、内部依赖参数、其它依赖参数和返回值等。利用特征选择策略处理相关数据,得到与被测代码对应的代码特征数据。特征选择策略可以包括多个粒度。例如,特征选择策略可以包括以下至少一项:基于文件粒度的特征选择策略、基于类粒度的特征选择策略、基于函数粒度的特征选择策略、基于配置粒度的特征选择策略和基于全局粒度的特征选择策略。
58.根据本公开的实施例,可以利用基于文件粒度的特征选择策略处理相关数据,得到文件粒度的代码特征数据。可以利用基于类粒度的特征选择策略处理相关数据,得到类粒度的代码特征数据。可以利用基于函数粒度的特征选择策略处理相关数据,得到函数粒度的代码特征数据。可以利用基于配置粒度的特征选择策略处理相关数据,得到配置粒度的代码特征数据。可以利用基于全局粒度的特征选择策略处理相关数据,得到全局粒度的
代码特征数据。
59.根据本公开的实施例,上述测试用例处理方法还可以包括如下操作。
60.将代码特征数据以预定存储格式存储于代码特征数据文件。
61.根据本公开的实施例,将被测代码抽象表征为以文件方式存储的代码特征数据文件。代码特征数据文件可以作为衔接上下游的抽象数据表征模型。
62.根据本公开的实施例,代码特征数据可以包括以下至少一项:文件粒度的代码特征数据、类粒度的代码特征数据、函数粒度的代码特征数据、配置粒度的代码特征数据和全局粒度的代码特征数据。
63.根据本公开的实施例,文件粒度的代码特征数据可以包括以下至少一项:头文件依赖数据、命名空间数据和包依赖数据等。类粒度的代码特征数据可以包括以下至少一项:描述数据和其他面向对象的数据。描述数据可以包括class和struct。函数粒度的代码特征数据可以包括以下至少一项:用于描述函数的返回值的数据、用于描述参数列表的数据和用于描述函数属性的数据。配置粒度的代码特征数据可以包括用于描述函数依赖的配置内容数据。全局粒度的代码特征数据可以包括用于描述代码模块在全局视角下额外依赖的数据。
64.根据本公开的实施例,上述测试用例处理方法还可以包括如下操作。
65.根据本公开的实施例,操作s420可以包括如下操作。
66.根据与被测对象对应的用例数据生成策略,确定与被测对象对应的参数值生成策略。根据与被测对象对应的参数值生成策略,从至少一个预定参数值确定目标参数值。根据目标参数值,生成与被测对象对应的测试用例数据。
67.根据本公开的实施例,参数值生成策略可以指如何生成与被测对象对应的参数值的策略。参数值生成策略可以包括以下至少一项:随机生成策略、区间随机生成策略、正则随机生成策略、变异生成策略和业务定制化生成策略。随机生成策略可以指随机从数据源中选择参数值来生成测试用例数据的的策略。区间随机策略可以指随机从数据源选择符合预定参数值区间的参数值来生成测试用例数据的策略。正则随机生成策略可以指随机从数据源中选择符合预定正则规则的参数值来生成测试用例数据的策略。变异生成策略可以指对与被测对象对应的历史参数值进行变异来生成测试用例数据的策略。业务定制化生成策略可以指根据业务需求创建的参数值来生成测试用例数据的策略。
68.根据本公开的实施例,至少一个预定参数值可以包括以下至少一项:与至少一个预定边界值对应的至少一个预定参数值、与至少一个预定区间范围对应的至少一个预定参数值、与至少一个预定正则规则对应的至少一个预定参数值和至少一个与业务需求对应的至少一个预定参数值。
69.根据本公开的实施例,具有与用例数据生成策略关联的参数值生成策略。可以根据与被测对象对应的参数值生成策略,从至少一个预定参数值中确定目标参数值,可以将目标参数值确定为与被测对象对应的测试用例数据。备选地,可以对目标参数值进行处理,得到与被测对象对应的测试用例数据。至少一个预定参数值可以存储于数据源。数据源可以包括数据库。
70.例如,被测对象的数据类型是整型且不限定与被测对象对应的目标参数值的数值范围。由此,确定与被测对象对应的参数值生成策略可以是随机生成策略。基于上述内容,
可以从与至少一个预定边界值对应的至少一个预定参数值中随机选择预定参数值作为目标参数值。可以将目标参数值确定为与被测对象对应的测试用例数据。
71.例如,被测对象的数据类型是整型。确定与被测对象对应的参数值生成策略是变异生成策略。可以从至少一个预定参数值中确定与被测对象对应的历史参数值。将历史参数值由当前数据进制转换为其他数据进制,得到转换后的历史参数值。再对转换后的历史参数值的预定位数的数值进行调整,得到调整后的历史参数值。然后将调整后的历史参数值由其他数据进制转换为当前数据进制,得到与被测对象对应的目标参数值。
72.根据本公开的实施例,操作s240可以包括如下操作。
73.确定与代码特征数据对应的类型信息。类型信息可以包括以下至少一项:编程语言类型和业务类型。根据类型信息,确定用例代码生成器和模板代码。利用用例代码生成器,根据代码特征数据和与至少一个被测对象对应的测试用例数据,确定用例代码生成算子。利用用例代码生成算子,生成目标代码。根据目标代码和模板代码,生成测试用例代码。
74.根据本公开的实施例,不同编程语言类型可以具有不同的用例代码生成器和模板代码。不同业务类型也可以具有不同的用例代码生成器和模板代码。由此,可以易于将本公开实施例提供的测试用例处理方案进行扩展。
75.根据本公开的实施例,用例代码生成器可以具有与该用例代码生成器关联的至少一个用例代码生成算子。至少一个用例代码生成算子可以包括以下至少一项:用于生成复杂类型lib的用例代码生成算子、用于生成自定义类型lib的用例代码生成算子、用于生成基本类型lib的用例代码生成算子和用于生成单元测试基础lib的用例代码生成算子。lib可以包括静态链接lib库和导入lib库。
76.根据本公开的实施例,针对被测代码包括的至少一个被测对象中的每个被测对象,可以对与该被测对象对应的代码特征数据进行分析,确定与该被测对象对应的代码特征数据的类型信息。在确定类型信息之后,可以根据类型信息确定与该被测对象对应的用例代码生成器和模板代码。
77.根据本公开的实施例,在确定与被测对象对应的用例代码生成器之后,可以根据代码特征数据和与至少一个被测对象对应的测试用例数据,确定与被测对象对应的用例代码生成算子。在确定与被测对象对应的用例代码生成算子之后,可以利用用例代码生成算子生成目标代码。
78.根据本公开的实施例,可以利用自顶向底的方式对与至少一个被测对象对应的代码特征数据进行遍历分析,得到与至少一个被测对象各自对应的类型信息。根据与至少一个被测对象各自对应的类型信息,确定与至少一个被测对象各自对应的用例代码生成器和模板代码。根据与至少一个被测对象各自对应的用例代码生成器,确定与至少一个被测对象各自对应的用例代码生成算子。可以利用自底向顶的方式利用与至少一个被测对象各自对应的用例生成算子,生成与至少一个被测对象各自对应的测试用例代码。根据与至少一个被测对象各自对应的测试用例代码,得到与被测代码对应的测试用例代码。
79.根据本公开的实施例,上述测试用例处理方法还可以包括如下操作。
80.对与被测对象对应的测试用例数据进行评估,得到至少一个评估指标值。根据至少一个评估指标值,确定测试用例数据的质量评估结果。
81.根据本公开的实施例,至少一个评估指标可以包括以下至少一项:代码行覆盖率、
代码分支率、函数覆盖率和深度覆盖率。质量评估结果可以包括通过或未通过。
82.根据本公开的实施例,可以将至少一个评估指标值与各自对应的预定评估指标阈值进行比较,得到比较结果。根据比较结果,确定测试用例数据的质量评估结果。例如,针对至少一个评估指标值中的每个评估指标值,在确定评估指标值大于或等于与评估指标值对应的预定评估指标阈值的情况下,确定针对与评估指标值对应的评估指标的质量评估结果是通过。在确定评估指标值小于与评估指标值对应的预定评估指标阈值的情况下,确定针对与评估指标值对应的评估指标的质量评估结果是未通过。由此,可以得到与至少一个评估指标各自对应的质量评估结果。预定评估指标阈值可以根据实际业务需求进行配置,在此不作限定。
83.根据本公开的实施例,根据比较结果,确定测试用例数据的质量评估结果,可以包括:在确定质量评估结果是通过的数目大于或等于预定数目阈值的情况下,确定测试用例数据的质量评估结果是通过。在确定质量评估结果是通过的数目小于预定数目阈值的情况下,确定测试用例的质量评估结果是未通过。预定数目阈值可以根据实际业务需求进行配置,在此不作限定。
84.根据本公开的实施例,上述测试用例处理方法还可以包括如下操作。
85.在确定质量评估结果是未通过的情况下,根据至少一个评估指标值,对测试用例数据进行调整,以便新的质量评估结果是通过。
86.根据本公开的实施例,如果确定质量评估结果是未通过,则可以对测试用例数据进行调整,得到新的测试用例数据。可以对与被测对象对应的新的测试用例数据进行评估,得到至少一个新的评估指标值。根据至少一个新的评估指标值,确定新的测试用例数据的质量评估结果。
87.根据本公开的实施例,上述测试用例处理方法还可以包括如下操作。
88.执行测试用例,得到用例执行结果。
89.根据本公开的实施例,用例执行结果可以包括测试用例执行成功或测试用例执行失败。
90.根据本公开的实施例,可以根据编译配置信息,生成编译指令。编译指令可以指用于对测试用例代码进行编译的指令。响应于检测到编译指令,调用通用用例执行框架和创建与被测代码对应的重写信息。根据与被测d代码对应的重写信息对通用用例执行框架进行调整,得到与被测代码对应的用例执行框架。利用与被测代码对应的用例执行框架执行测试用例,得到用例执行结果。
91.根据本公开的实施例,上述测试用例处理方法还可以包括如下操作。
92.在根据用例执行结果确定测试用例执行失败的情况下,对用例执行结果进行分析,确定出错类型信息和被测代码的核心问题代码。对核心问题代码和测试用例代码进行语法分析,得到语法分析结果。根据出错类型信息和语法分析结果,得到失败原因信息。
93.根据本公开的实施例,出错类型信息可以用于表征测试用例执行失败的类型。例如,出错类型信息可以包括由除零导致的出错。核心(即core)问题代码可以指对导致测试用例执行失败起到关键作用的代码。核心问题代码可以包括核心问题代码行标识和核心问题代码的内容。
94.根据本公开的实施例,可以确定用例执行结果是测试用例执行成功或测试用例执
行失败。在确定用例执行结果是测试用例执行成功的情况下,可以结束测试用例处理操作。在确定用例执行结果是测试用例执行失败的情况下,可以对用例执行结果进行分析,得到出错类型信息和核心问题代码。
95.根据本公开的实施例,可以利用语法分析方法对核心问题代码和测试用例代码进行分析,得到语法分析结果。语法分析方法可以包括抽象语法树(abstract syntax tree,ast)。可以根据语法分析结果和出错类型信息,确定导致测试用例执行失败的失败原因信息。
96.例如,测试用例可以以堆栈形式存储。可以从堆栈信息中确定与用例执行结果是测试用例执行失败的测试用例对应的失败堆栈信息。可以对失败堆栈信息进行解析,得到有效栈顶信息。根据有效栈顶信息,确定核心问题代码。
97.根据本公开的实施例,上述测试用例处理方法还可以包括如下操作。
98.根据失败原因信息,确定风险等级。
99.根据本公开的实施例,风险等级可以包括低风险等级或高风险等级。低风险等级可以表征核心问题代码是可忽略问题代码。高风险等级可以表征核心问题代码是不可忽略问题代码。如果核心问题代码是可忽略问题代码,则可以忽略核心问题代码的问题。如果核心问题代码是不可忽略问题代码,则不可以忽略核心问题代码的问题,需要对核心问题代码进行修改。
100.根据本公开的实施例,根据所述失败原因信息,确定风险等级,可以包括如下操作。
101.确定与核心问题代码对应的关键值。在确定至少一个低风险关键值中存在与关键值相匹配的低风险关键值的情况下,确定风险等级是低风险等级。
102.根据本公开的实施例,关键值可以用于表征核心问题代码。与低风险关键值对应的核心问题代码可以表征是可忽略问题代码。与低风险关键值对应的核心问题代码可以是由人工标注的可忽略问题代码。
103.根据本公开的实施例,可以利用消息摘要算法确定与核心问题代码对应的关键值。确定至少一个低风险关键值中是否存在与关键值相匹配的低风险关键值。在确定至少一个低风险关键值中存在与关键值相匹配的低风险关键值的情况下,可以确定风险等级是低风险等级。例如,至少一个低风险关键值可以存储于问题库。可以利用静态扫描方法扫描问题库,确定问题库中是否存在与关键值相匹配的低风险关键值。
104.根据本公开的实施例,上述测试用例处理方法还可以包括如下操作。
105.在确定至少一个低风险关键值中均不存在与关键值相匹配的低风险关键值的情况下,如果根据调用关系链确定核心问题代码为可忽略问题代码,则确定风险等级是低风险等级。
106.根据本公开的实施例,调用关系链(即变量关系树)可以表征被测对象的参数值的调用关系。在根据调用关系链确定核心问题代码是可忽略问题代码的情况下,可以确定风险等级是低风险等级。
107.例如,如果确定失败原因信息是核心问题代码出现了除零问题。即,在除法运算中,参数的分母的取值(即参数值)为零。根据该参数值的调用关系链,确定调用该参数值的上层代码中包括“在确定该参数值不为零的情况下,执行后续操作”的信息,由此,可以确定
该参数值不为零。在此情况下,根据调用关系链确定核心问题代码是可忽略问题代码。
108.根据本公开的实施例,上述测试用例处理方法还可以包括如下操作。
109.如果根据调用关系链确定核心问题代码为不可忽略问题代码,则确定与核心问题代码对应的核心问题代码向量。利用风险评估模型处理核心问题代码向量,得到风险等级是低风险等级或高风险等级的风险评估结果。
110.根据本公开的实施例,风险评估模型可以用于对核心问题代码的风险等级进行评估。风险评估模型可以是利用样本核心问题代码训练预定模型得到的。预定模型可以包括深度学习模型。
111.根据本公开的实施例,可以在根据调用关系链确定核心问题代码是不可忽略问题代码的情况下,可以将核心问题代码向量化,得到与核心问题代码对应的核心问题代码向量。可以将核心问题向量输入风险评估模型,得到风险评估结果。
112.根据本公开的实施例,上述测试用例处理方法还可以包括如下操作。
113.在确定用例执行结果是测试用例执行成功的情况下,根据用例执行结果,生成测试用例执行报告。在确定用例执行结果是测试用例执行失败的情况下,根据失败原因信息,生成测试用例执行报告。
114.根据本公开的实施例,上述测试用例处理方法还可以包括如下操作。
115.可视化展示测试用例执行报告。
116.根据本公开的实施例,可以建设统一的任务中心、问题中心和报告服务。问题中心可以用于存储与测试用例执行失败对应的测试用例相关信息。报告服务可以用于渲染任务信息和问题信息,以及向用户展示测试用例执行报告,由此形成完整的闭环链路。
117.下面参考图3a、图3b、图3c和图3d,结合具体实施例对根据本公开实施例所述的测试用例处理方法做进一步说明。
118.图3a示意性示出了根据本公开实施例的测试用例处理过程的示例示意图。
119.如图3所示,在300a中,根据选择策略,从当前提交代码301中确定被测代码302。对与被测代码302对应的代码特征数据303进行分析,确定与被测代码302对应的至少一个被测对象的用例数据生成策略304。利用与被测对象对应的用例数据生成策略304,生成与被测对象对应的测试用例数据305。根据代码特征数据303和与至少一个被测对象对应的测试用例数据305,确定用例代码生成策略306。利用用例代码生成策略306,生成测试用例代码307。根据测试用例代码307和与至少一个被测对象对应的测试用例数据305,生成用于测试被测代码的测试用例308。
120.图3b示意性示出了根据本公开实施例的测试用例数据生成过程的示例示意图。
121.如图3b所示,在300b中,根据与被测对象对应的用例数据生成策略304,确定与被测对象对应的参数值生成策略309。根据与被测对象对应的参数值生成策略309,从至少一个预定参数值确定目标参数值310。根据目标参数值310,生成与被测对象对应的测试用例数据305。
122.图3c示意性示出了根据本公开实施例的测试用例代码生成过程的示例示意图。
123.如图3c所示,在300c中,确定与代码特征数据303对应的类型信息311。根据类型信息311,确定用例代码生成器312和模板代码313。利用用例代码生成器312,根据代码特征数据303和与至少一个被测对象对应的测试用例数据305,确定用例代码生成算子314。利用用
例代码生成算子314,生成目标代码315。根据目标代码315和模板代码313,生成测试用例代码307。
124.图3d示意性示出了根据本公开实施例的确定失败原因信息过程的示例示意图。
125.如图3d所示,在300d中,执行测试用例308,得到用例执行结果316。在根据用例执行结果316确定测试用例执行失败的情况下,对用例执行结果316进行分析,确定出错类型信息317和被测代码的核心问题代码318。对核心问题代码318和测试用例代码307进行语法分析,得到语法分析结果319。根据出错类型信息317和语法分析结果319,得到失败原因信息320。
126.以上仅是示例性实施例,但不限于此,还可以包括本领域已知的其他测试用例处理方法,只要能够实现自动化生成测试用例,并且不受编程语言类型和业务场景的限制,具有通用性和拓展性即可。
127.图4示意性示出了根据本公开实施例的测试用例处理装置的框图。
128.如图4所示,测试用例处理装置400可以包括第一确定模块410、第一生成模块420、第二确定模块430、第二生成模块440和第三生成模块450。
129.第一确定模块410,用于对与被测代码对应的代码特征数据进行分析,确定与被测代码对应的至少一个被测对象的用例数据生成策略。
130.第一生成模块420,用于利用与被测对象对应的用例数据生成策略,生成与被测对象对应的测试用例数据。
131.第二确定模块430,用于根据代码特征数据和与至少一个被测对象对应的测试用例数据,确定用例代码生成策略。
132.第二生成模块440,用于利用用例代码生成策略,生成测试用例代码。
133.第三生成模块450,用于根据测试用例代码和与至少一个被测对象对应的测试用例数据,生成用于测试被测代码的测试用例。
134.根据本公开的实施例,第一生成模块420可以包括第一确定子模块、第二确定子模块和第一生成子模块。
135.第一确定子模块,用于根据与被测对象对应的用例数据生成策略,确定与被测对象对应的参数值生成策略。
136.第二确定子模块,用于根据与被测对象对应的参数值生成策略,从至少一个预定参数值确定目标参数值。
137.第一生成子模块,用于根据目标参数值,生成与被测对象对应的测试用例数据。
138.根据本公开的实施例,上述测试用例处理装置400还可以包括评估模块和第三确定模块。
139.评估模块,用于对与被测对象对应的测试用例数据进行评估,得到至少一个评估指标值。
140.第三确定模块,用于根据至少一个评估指标值,确定测试用例数据的质量评估结果。
141.根据本公开的实施例,上述测试用例处理装置400还可以包括调整模块。
142.调整模块,用于在确定质量评估结果是未通过的情况下,根据至少一个评估指标值,对测试用例数据进行调整,以便新的质量评估结果是通过。
143.根据本公开的实施例,第二生成模块440可以包括第三确定子模块、第四确定子模块、第五确定子模块、第二生成子模块和第三生成子模块。
144.第三确定子模块,用于确定与代码特征数据对应的类型信息。类型信息包括以下至少一项:编程语言类型和业务类型。
145.第四确定子模块,用于根据类型信息,确定用例代码生成器和模板代码。
146.第五确定子模块,用于利用用例代码生成器,根据代码特征数据和与至少一个被测对象对应的测试用例数据,确定用例代码生成算子。
147.第二生成子模块,用于利用用例代码生成算子,生成目标代码。
148.第三生成子模块,用于根据目标代码和模板代码,生成测试用例代码。
149.根据本公开的实施例,上述测试用例处理装置400还可以包括第一获得模块。
150.第一获得模块,用于执行测试用例,得到用例执行结果。
151.根据本公开的实施例,上述测试用例处理装置400还可以包括第四确定模块、第二获得模块和第三获得模块。
152.在根据用例执行结果确定测试用例执行失败的情况下,
153.第四确定模块,用于对用例执行结果进行分析,确定出错类型信息和被测代码的核心问题代码。
154.第二获得模块,用于对核心问题代码和测试用例代码进行语法分析,得到语法分析结果。
155.第三获得模块,用于根据出错类型信息和语法分析结果,得到失败原因信息。
156.根据本公开的实施例,上述测试用例处理装置400还可以包括第五确定模块。
157.第五确定模块,用于根据失败原因信息,确定风险等级。
158.根据本公开的实施例,第五确定模块可以包括第六确定子模块和第七确定子模块。
159.第六确定子模块,用于确定与核心问题代码对应的关键值。
160.第七确定子模块,用于在确定至少一个低风险关键值中存在与关键值相匹配的低风险关键值的情况下,确定风险等级是低风险等级。
161.根据本公开的实施例,上述测试用例处理装置400还可以包括第六确定模块。
162.第六确定模块,用于在确定至少一个低风险关键值中均不存在与关键值相匹配的低风险关键值的情况下,如果根据调用关系链确定核心问题代码为可忽略问题代码,则确定风险等级是低风险等级。
163.根据本公开的实施例,上述测试用例处理装置400还可以包括第七确定模块和第四获得模块。
164.第七确定模块,用于如果根据调用关系链确定核心问题代码为不可忽略问题代码,则确定与核心问题代码对应的核心问题代码向量。
165.第四获得模块,用于利用风险评估模型处理核心问题代码向量,得到风险等级是低风险等级或高风险等级的风险评估结果。
166.根据本公开的实施例,上述测试用例处理装置400还可以包括第八确定模块。
167.第八确定模块,用于根据选择策略,从当前提交代码中确定被测代码。
168.根据本公开的实施例,代码特征数据包括以下至少一项:文件粒度的代码特征数
据、类粒度的代码特征数据、函数粒度的代码特征数据、配置粒度的代码特征数据和全局粒度的代码特征数据。
169.根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
170.根据本公开的实施例,一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行如上所述的方法。
171.根据本公开的实施例,一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行如上所述的方法。
172.根据本公开的实施例,一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现如上所述的方法。
173.图5示意性示出了根据本公开实施例的适于实现测试用例处理方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
174.如图5所示,电子设备500包括计算单元501,其可以根据存储在只读存储器(rom)502中的计算机程序或者从存储单元508加载到随机访问存储器(ram)503中的计算机程序,来执行各种适当的动作和处理。在ram 503中,还可存储电子设备500操作所需的各种程序和数据。计算单元501、rom 502以及ram 503通过总线504彼此相连。输入/输出(i/o)接口505也连接至总线504。
175.电子设备500中的多个部件连接至i/o接口505,包括:输入单元506,例如键盘、鼠标等;输出单元507,例如各种类型的显示器、扬声器等;存储单元508,例如磁盘、光盘等;以及通信单元509,例如网卡、调制解调器、无线通信收发机等。通信单元509允许电子设备500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
176.计算单元501可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元501的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元501执行上文所描述的各个方法和处理,例如测试用例处理方法。例如,在一些实施例中,测试用例处理方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元508。在一些实施例中,计算机程序的部分或者全部可以经由rom 502和/或通信单元509而被载入和/或安装到电子设备500上。当计算机程序加载到ram 503并由计算单元501执行时,可以执行上文描述的测试用例处理方法的一个或多个步骤。备选地,在其他实施例中,计算单元501可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行测试用例处理方法。
177.本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、复杂可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实
现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
178.用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
179.在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
180.为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
181.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
182.计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以是分布式系统的服务器,或者是结合了区块链的服务器。
183.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
184.上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明
白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献