自动化测试代码生成方法、装置、设备和介质与流程

文档序号:31473233发布日期:2022-09-09 23:47阅读:119来源:国知局
自动化测试代码生成方法、装置、设备和介质与流程

1.本技术涉及规则配置技术领域,例如涉及一种自动化测试代码生成方法、装置、设备和介质。


背景技术:

2.在自动化测试过程中,为了去调用被测对象,需要封装操作被测对象的逻辑,而这部分逻辑大多都是针对同一类的被测对象,很可能具有重复性和相似性。在接口测试过程中,封装调用http接口部分的代码基本结构是一致的,只有具体参数名称不一样。通过人工方式创建大量类似的代码,比较浪费时间且没有价值。因此,需要设计一款能够自动生成代码的工具。
3.目前业界有不少的代码自动生成工具,但有各种各样的缺点,具体如下:
4.(1)仅支持对某个特定操作自动生成代码,例如:数据库操作和接口操作。
5.(2)自动生成的代码无法进行灵活的定制化。
6.(3)自动生成的代码会覆盖原先的代码,或者只能通过人工的方式将自动生成的代码与原先的代码进行合并。


技术实现要素:

7.本技术提供一种自动化测试代码生成方法、装置、设备和介质,旨在解决现有技术存在需要人工生成代码,效率较低,或者只能对某个特定操作自动生成代码的问题。
8.为解决上述问题,本技术采用以下技术方案:
9.本文提供了一种自动化测试代码生成方法,包括:
10.获取被测对象war包;使用scanner代码块扫描所述被测对象war包,提取出被测对象元数据;
11.在controller层创建后端请求接口,通过所述后端请求接口获取请求方法;根据所述请求方法通过service层解析所述被测对象元数据,得到所有条件语句判断分支;
12.根据每一个所述条件语句判断分支的判断条件,生成与所述判断条件相应的测试代码;组合所有所述测试代码,得到自动化测试代码。
13.所述在controller层创建后端请求接口,包括:
14.根据被测对象的前端请求入口和后端请求入口创建所述后端请求接口,所述后端请求接口位于所述controller层。
15.所述根据所述请求方法通过service层解析所述被测对象元数据,得到所有条件语句判断分支,包括:
16.根据所述请求方法通过service层解析所述被测对象元数据,得到被测对象类逻辑;
17.通过深度优先方法解析所述被测对象类逻辑,得到所有所述条件语句判断分支。
18.所述根据每一个所述条件语句判断分支的判断条件,生成与所述判断条件相应的
测试代码,包括:
19.根据每一个所述条件语句判断分支的判断条件,生成满足所述判断条件的第一类测试代码;
20.根据每一个所述条件语句判断分支的判断条件,生成不满足所述判断条件的第二类测试代码;
21.将所述第一类测试代码和所述第二类测试代码组成所述测试代码。
22.所述使用scanner代码块扫描所述被测对象war包,提取出被测对象元数据,包括:
23.通过scanner代码块扫描html文件,得到被测对象的前端请求入口;
24.通过scanner代码块扫描path,得到所述被测对象的后端请求入口;
25.通过scanner代码块扫描class文件,得到被测对象类;
26.通过scanner代码块扫描method,得到接口的请求方法;
27.通过scanner代码块扫描param,得到接口的请求参数;
28.通过scanner代码块扫描组件,得到接口之间的调用链路;
29.将所述前端请求入口、后端请求入口、被测对象类、请求方法、请求参数和调用链路进行组合,得到所述被测对象元数据。
30.所述得到自动化测试代码之后,还包括:
31.通过git工具中的diff方法将所述自动化测试代码解析为自动化测试语法树;
32.通过git工具中的diff方法将原始测试代码解析为原始测试语法树,所述原始测试代码为上一次得到的所述自动化测试代码;
33.通过git工具中的merge节点将所述自动化测试语法树和所述原始测试语法树进行合并,得到合并语法树;
34.根据所述合并语法树生成自定义测试代码。
35.进一步地,所述得到自动化测试代码之后,还包括:
36.通过html层接收测试用例,通过所述html层将所述测试用例传递给js层;所述js层将所述测试用例传递给所述controller层;自动化代码后端对所述controller层的所述测试用例进行运算,得到用例执行结果;将所述用例执行结果返回所述html层;
37.通过所述html层将所述用例执行结果显示在结果页面上。
38.本技术还提供了一种自动化测试代码生成装置,包括:
39.被测对象war包获取模块,用于获取被测对象war包;
40.被测对象元数据提取模块,用于使用scanner代码块扫描所述被测对象war包,提取出被测对象元数据;
41.请求方法获取模块,用于在controller层创建后端请求接口,通过所述后端请求接口获取请求方法;
42.被测对象元数据解析模块,用于根据所述请求方法通过service层解析所述被测对象元数据,得到所有条件语句判断分支;
43.测试代码生成模块,用于根据每一个所述条件语句判断分支的判断条件,生成与所述判断条件相应的测试代码;
44.测试代码组合模块,用于组合所有所述测试代码,得到自动化测试代码。
45.本技术还提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算
机程序,所述处理器执行所述计算机程序时实现上述任一项所述的一种自动化测试代码生成方法的步骤。
46.本技术还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的一种自动化测试代码生成方法的步骤。
47.本技术的自动化测试代码生成方法,获取被测对象war包,使用scanner代码块扫描被测对象war包,提取出被测对象元数据。在controller层创建后端请求接口,通过后端请求接口获取请求方法。根据请求方法通过service层解析被测对象元数据,得到所有条件语句判断分支。根据每一个条件语句判断分支的判断条件,生成与判断条件相应的测试代码。组合所有测试代码,得到自动化测试代码。用户只需要给出被测对象的war包,就能够自动生成自动化测试代码,解决了现有技术需要人工编写代码,效率较低的问题。
附图说明
48.图1为一实施例的自动化测试代码生成方法的流程示意图;
49.图2为一实施例的解析所述被测对象元数据的流程示意图;
50.图3为一实施例的将自动化测试代码和原始测试代码进行合并的流程示意图;
51.图4为一实施例的通过自动化测试代码对测试用例进行检测的结构示意框图;
52.图5为一实施例的自动化测试代码生成装置的结构示意框图;
53.图6为一实施例的计算机设备的结构示意框图。
54.本技术目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
55.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
56.本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“上述”和“该”也可包括复数形式。应该进一步理解的是,本技术的说明书中使用的措辞“包括”是指存在特征、整数、步骤、操作、元件、单元、单元和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、单元、单元、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
57.本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本技术所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
58.在一个实施例中,参照图1,是本技术方案的自动化测试代码生成方法的流程示意图,包括:
59.s1:获取被测对象war包。
60.war包与jar包是类似的,不过war包通常用于网站,它是一个可以直接运行的web模块。我们在开发web项目时一般都会使用一个webapp文件夹来进行开发,war包就是对这个webapp文件夹进行打包。
61.s2:使用scanner代码块扫描所述被测对象war包,提取出被测对象元数据。
62.通过scanner代码块扫描html文件,得到被测对象的前端请求入口;
63.通过scanner代码块扫描path,得到所述被测对象的后端请求入口;
64.通过scanner代码块扫描class文件,得到被测对象类;
65.通过scanner代码块扫描method,得到接口的请求方法;
66.通过scanner代码块扫描param,得到接口的请求参数;
67.通过scanner代码块扫描组件,得到接口之间的调用链路;
68.将所述前端请求入口、后端请求入口、被测对象类、请求方法、请求参数和调用链路进行组合,得到所述被测对象元数据。
69.被测对象元数据用于生成自动化测试代码。
70.s3:在controller层创建后端请求接口,通过所述后端请求接口获取请求方法。
71.根据被测对象的前端请求入口和后端请求入口创建所述后端请求接口,所述后端请求接口位于所述controller层。
72.生成自动化测试代码主要分为测试前端和测试后端两部分,测试后端包括controller层,controller层为测试后端的执行入口。
73.s4:根据所述请求方法通过service层解析所述被测对象元数据,得到所有条件语句判断分支。
74.根据所述请求方法通过service层解析所述被测对象元数据,得到被测对象类逻辑;
75.通过深度优先方法解析所述被测对象类逻辑,得到所有所述条件语句判断分支。
76.解析被测对象元数据,需要分情况按照顺序进行多次判断,可以得到多种条件语句判断分支。
77.示例性,解析被测对象元数据,进行第一个条件判断,当满足第一个条件判断时,进行第二个条件判断;当不满足第一个条件判断时,进行第三个条件判断。
78.s5:根据每一个所述条件语句判断分支的判断条件,生成与所述判断条件相应的测试代码。
79.根据每一个所述条件语句判断分支的判断条件,生成满足所述判断条件的第一类测试代码;
80.根据每一个所述条件语句判断分支的判断条件,生成不满足所述判断条件的第二类测试代码;
81.将所述第一类测试代码和所述第二类测试代码组成所述测试代码。
82.每一个条件判断都有满足条件和不满足条件两种情况,对于满足条件的情况生成一条测试代码,对于不满足条件的情况生成另一条测试代码。每一个判断条件生成两条测试代码。
83.s6:组合所有所述测试代码,得到自动化测试代码。
84.若有n个判断条件,每个判断条件生成2条测试代码,共生成2n条测试代码,将2n条测试代码作为自动化测试代码。
85.本技术实施例的自动化测试代码生成方法,获取被测对象war包,使用scanner代码块扫描被测对象war包,提取出被测对象元数据。在controller层创建后端请求接口,通过后端请求接口获取请求方法。根据请求方法通过service层解析被测对象元数据,得到所有条件语句判断分支。根据每一个条件语句判断分支的判断条件,生成与判断条件相应的测试代码。组合所有测试代码,得到自动化测试代码。用户只需要给出被测对象的war包,就能够自动生成自动化测试代码,解决了现有技术需要人工编写代码,效率较低的问题。
86.在一个实施例中,参照图2,是本技术方案的解析所述被测对象元数据的流程示意图,包括:
87.s41:根据所述请求方法通过service层解析所述被测对象元数据,得到被测对象类逻辑。
88.被测对象元数据包括前端请求入口、后端请求入口、被测对象类、请求方法、请求参数和调用链路。
89.解析被测对象的被测对象类,得到被测对象类逻辑。
90.s42:通过深度优先方法解析所述被测对象类逻辑,得到所有所述条件语句判断分支。
91.深度优先方法即深度优先搜索,深度优先搜索属于图算法的一种,也是对一个连通图进行遍历的算法。其思想是:从一个顶点v开始,沿着一条路线一直走到底。如果发现不能到达目标,那就返回到走不通节点的上一个节点,然后尝试从另一条路开始走到底,每个节点只可以访问一次。这种尽量往深处走的概念即是深度优先的概念。
92.深度优先搜索用堆栈来实现,包括如下步骤:
93.(1)把根节点压入栈中。
94.(2)每次从栈中弹出一个元素,该元素为当前元素,搜索所有当前元素的下一级元素,把下一级元素压入栈中,把当前元素记为下一级元素的前驱。
95.(3)遍历整个树,找到目标元素时结束程序。若遍历过程结束后没有找到目标元素,结束程序。
96.本技术实施例的解析被测对象元数据,根据请求方法通过service层解析被测对象元数据,得到被测对象类逻辑,通过深度优先方法解析被测对象类逻辑,得到所有条件语句判断分支。条件语句判断分支可以用于按照判断条件生成测试代码。
97.在一个实施例中,参照图3,是本技术方案的将自动化测试代码和原始测试代码进行合并的流程示意图,包括:
98.s7’:通过git工具中的diff方法将所述自动化测试代码解析为自动化测试语法树。
99.语法解析一个非常重要的功能就是要构建一个树形数据结构,也叫语法树,无论是解释器执行当前语句还是编译器将语句转换为低级语言,语法树都是一个承上启下的重要结构。
100.s8’:通过git工具中的diff方法将原始测试代码解析为原始测试语法树,所述原始测试代码为上一次得到的所述自动化测试代码。
101.原始测试代码可以是上一次得到的自动化测试代码,也可以是人工编写的测试代码,具体根据实际情况而定,此处不作限定。
102.当原始测试代码为上一次得到的自动化测试代码时,若测试人员对原始测试代码进行了修改,原始测试代码具有新的功能,此时不能将生成的自动化测试代码覆盖原始测试代码。为了保留原始测试代码的全部或部分功能,需要将原始测试代码解析为原始测试语法树,将原始测试语法树与自动化测试代码树进行合并。
103.s9’:通过git工具中的merge节点将所述自动化测试语法树和所述原始测试语法树进行合并,得到合并语法树。
104.通过git工具中的merge节点能够自动合并自动化测试语法树和原始测试语法树,得到合并语法树。
105.s10’:根据所述合并语法树生成自定义测试代码。
106.生成的自定义测试代码具有自动化测试代码的全部或部分功能,还具有原始测试代码的全部或部分功能。
107.本技术实施例的将自动化测试代码和原始测试代码进行合并,通过git工具中的diff方法将自动化测试代码解析为自动化测试语法树。通过git工具中的diff方法将原始测试代码解析为原始测试语法树,原始测试代码为上一次得到的自动化测试代码。通过git工具中的merge节点将自动化测试语法树和原始测试语法树进行合并,得到合并语法树。根据合并语法树生成自定义测试代码。生成的自定义测试代码具有自动化测试代码的全部或部分功能,还具有原始测试代码的全部或部分功能。通过合并语法树生成自定义测试代码还能够解决得到的自动化测试代码覆盖原始测试代码,导致自动化测试代码不具有原始测试代码的功能的问题。
108.在一个实施例中,参照图4,是本技术方案的通过自动化测试代码对测试用例进行检测的流程示意图,包括:
109.s7”:通过html层接收测试用例。
110.在输入页面上输入测试用例,由html层接收测试用例。
111.自动化测试代码前端包括html层和js层,自动化测试代码后端包括controller层、service层、dao层、entity层、xml层和caller层。
112.s8”:通过所述html层将所述测试用例传递给js层。
113.s9”:所述js层将所述测试用例传递给所述controller层。
114.通过自动化测试代码前端的js层将测试用例传递给自动化测试代码后端的controller层,controller层为自动化测试代码后端的执行入口。
115.s10”:自动化代码后端对所述controller层的所述测试用例进行运算,得到用例执行结果。
116.测试用例输入自动化测试代码后端后,根据自动化测试代码的执行顺序调用自动化测试代码后端的所有层,得到用例执行结果。
117.执行顺序与当前的自动化测试代码有关,不同的自动化测试代码有不同的执行顺序。
118.s11”:将所述用例执行结果返回所述html层。
119.将用例执行结果返回js层,js层将用例执行结果传递给html层。
120.用例执行结果包括执行成功和执行失败。
121.s12”:通过所述html层将所述用例执行结果显示在结果页面上。
122.示例性,在结果页面的右上角显示“运行用例执行成功”,在结果页面的右下角显示“查看详情”。
123.本技术实施例的通过自动化测试代码对测试用例进行测试,通过html层接收测试用例,通过所述html层将所述测试用例传递给js层。所述js层将所述测试用例传递给所述controller层,自动化代码后端对所述controller层的所述测试用例进行运算,得到用例执行结果。将所述用例执行结果返回所述html层,通过所述html层将所述用例执行结果显示在结果页面上。通过自动化测试代码前端和自动化测试代码后端能够对测试用例进行测试,将用例执行结果显示在结果页面上。
124.参照图5,是本技术方案的自动化测试代码生成装置的结构示意框图,装置包括:
125.被测对象war包获取模块10,用于获取被测对象war包。
126.war包与jar包是类似的,不过war包通常用于网站,它是一个可以直接运行的web模块。我们在开发web项目时一般都会使用一个webapp文件夹来进行开发,war包就是对这个webapp文件夹进行打包。
127.被测对象元数据提取模块20,用于使用scanner代码块扫描所述被测对象war包,提取出被测对象元数据。
128.通过scanner代码块扫描html文件,得到被测对象的前端请求入口;
129.通过scanner代码块扫描path,得到所述被测对象的后端请求入口;
130.通过scanner代码块扫描class文件,得到被测对象类;
131.通过scanner代码块扫描method,得到接口的请求方法;
132.通过scanner代码块扫描param,得到接口的请求参数;
133.通过scanner代码块扫描组件,得到接口之间的调用链路;
134.将所述前端请求入口、后端请求入口、被测对象类、请求方法、请求参数和调用链路进行组合,得到所述被测对象元数据。
135.被测对象元数据用于生成自动化测试代码。
136.请求方法获取模块30,用于在controller层创建后端请求接口,通过所述后端请求接口获取请求方法;
137.根据被测对象的前端请求入口和后端请求入口创建所述后端请求接口,所述后端请求接口位于所述controller层。
138.生成自动化测试代码主要分为测试前端和测试后端两部分,测试后端包括controller层,controller层为测试后端的执行入口。
139.被测对象元数据解析模块40,用于根据所述请求方法通过service层解析所述被测对象元数据,得到所有条件语句判断分支;
140.根据所述请求方法通过service层解析所述被测对象元数据,得到被测对象类逻辑;
141.通过深度优先方法解析所述被测对象类逻辑,得到所有所述条件语句判断分支。
142.解析被测对象元数据,需要分情况按照顺序进行多次判断,可以得到多种条件语句判断分支。
143.示例性,解析被测对象元数据,进行第一个条件判断,当满足第一个条件判断时,进行第二个条件判断;当不满足第一个条件判断时,进行第三个条件判断。
144.测试代码生成模块50,用于根据每一个所述条件语句判断分支的判断条件,生成与所述判断条件相应的测试代码;
145.根据每一个所述条件语句判断分支的判断条件,生成满足所述判断条件的第一类测试代码;
146.根据每一个所述条件语句判断分支的判断条件,生成不满足所述判断条件的第二类测试代码;
147.将所述第一类测试代码和所述第二类测试代码组成所述测试代码。
148.每一个条件判断都有满足条件和不满足条件两种情况,对于满足条件的情况生成一条测试代码,对于不满足条件的情况生成另一条测试代码。每一个判断条件生成两条测试代码。
149.测试代码组合模块60,用于组合所有所述测试代码,得到自动化测试代码。
150.若有n个判断条件,每个判断条件生成2条测试代码,共生成2n条测试代码,将2n条测试代码作为自动化测试代码。
151.本技术实施例的自动化测试代码生成装置用于实现自动化测试代码生成方法。获取被测对象war包,使用scanner代码块扫描被测对象war包,提取出被测对象元数据。在controller层创建后端请求接口,通过后端请求接口获取请求方法。根据请求方法通过service层解析被测对象元数据,得到所有条件语句判断分支。根据每一个条件语句判断分支的判断条件,生成与判断条件相应的测试代码。组合所有测试代码,得到自动化测试代码。用户只需要给出被测对象的war包,就能够自动生成自动化测试代码,解决了现有技术需要人工编写代码,效率较低的问题。
152.参照图6,本技术实施例中还提供一种计算机设备,该计算机设备可以是服务器,其内部结构可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。该计算机设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储被测对象元数据等。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种自动化测试代码生成方法。
153.具体地,上述自动化测试代码生成方法,包括:
154.获取被测对象war包;使用scanner代码块扫描所述被测对象war包,提取出被测对象元数据;
155.在controller层创建后端请求接口,通过所述后端请求接口获取请求方法;根据所述请求方法通过service层解析所述被测对象元数据,得到所有条件语句判断分支;
156.根据每一个所述条件语句判断分支的判断条件,生成与所述判断条件相应的测试代码;组合所有所述测试代码,得到自动化测试代码。
157.在一个实施例中,所述在controller层创建后端请求接口,包括:
158.根据被测对象的前端请求入口和后端请求入口创建所述后端请求接口,所述后端
请求接口位于所述controller层。
159.在一个实施例中,所述根据所述请求方法通过service层解析所述被测对象元数据,得到所有条件语句判断分支,包括:
160.根据所述请求方法通过service层解析所述被测对象元数据,得到被测对象类逻辑;
161.通过深度优先方法解析所述被测对象类逻辑,得到所有所述条件语句判断分支。
162.在一个实施例中,所述根据每一个所述条件语句判断分支的判断条件,生成与所述判断条件相应的测试代码,包括:
163.根据每一个所述条件语句判断分支的判断条件,生成满足所述判断条件的第一类测试代码;
164.根据每一个所述条件语句判断分支的判断条件,生成不满足所述判断条件的第二类测试代码;
165.将所述第一类测试代码和所述第二类测试代码组成所述测试代码。
166.在一个实施例中,所述使用scanner代码块扫描所述被测对象war包,提取出被测对象元数据,包括:
167.通过scanner代码块扫描html文件,得到被测对象的前端请求入口;
168.通过scanner代码块扫描path,得到所述被测对象的后端请求入口;
169.通过scanner代码块扫描class文件,得到被测对象类;
170.通过scanner代码块扫描method,得到接口的请求方法;
171.通过scanner代码块扫描param,得到接口的请求参数;
172.通过scanner代码块扫描组件,得到接口之间的调用链路;
173.将所述前端请求入口、后端请求入口、被测对象类、请求方法、请求参数和调用链路进行组合,得到所述被测对象元数据。
174.在一个实施例中,所述得到自动化测试代码之后,还包括:
175.通过git工具中的diff方法将所述自动化测试代码解析为自动化测试语法树;
176.通过git工具中的diff方法将原始测试代码解析为原始测试语法树,所述原始测试代码为上一次得到的所述自动化测试代码;
177.通过git工具中的merge节点将所述自动化测试语法树和所述原始测试语法树进行合并,得到合并语法树;
178.根据所述合并语法树生成自定义测试代码。
179.在一个实施例中,所述得到自动化测试代码之后,还包括:
180.通过html层接收测试用例,通过所述html层将所述测试用例传递给js层;所述js层将所述测试用例传递给所述controller层;自动化代码后端对所述controller层的所述测试用例进行运算,得到用例执行结果;将所述用例执行结果返回所述html层;
181.通过所述html层将所述用例执行结果显示在结果页面上。
182.本领域技术人员可以理解,图6中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定。
183.本技术一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现自动化测试代码生成方法。可以理解的是,本实施例中的计算
机可读存储介质可以是易失性可读存储介质,也可以为非易失性可读存储介质。
184.具体地,上述自动化测试代码生成方法,包括:
185.获取被测对象war包;使用scanner代码块扫描所述被测对象war包,提取出被测对象元数据;
186.在controller层创建后端请求接口,通过所述后端请求接口获取请求方法;根据所述请求方法通过service层解析所述被测对象元数据,得到所有条件语句判断分支;
187.根据每一个所述条件语句判断分支的判断条件,生成与所述判断条件相应的测试代码;组合所有所述测试代码,得到自动化测试代码。
188.在一个实施例中,所述在controller层创建后端请求接口,包括:
189.根据被测对象的前端请求入口和后端请求入口创建所述后端请求接口,所述后端请求接口位于所述controller层。
190.在一个实施例中,所述根据所述请求方法通过service层解析所述被测对象元数据,得到所有条件语句判断分支,包括:
191.根据所述请求方法通过service层解析所述被测对象元数据,得到被测对象类逻辑;
192.通过深度优先方法解析所述被测对象类逻辑,得到所有所述条件语句判断分支。
193.在一个实施例中,所述根据每一个所述条件语句判断分支的判断条件,生成与所述判断条件相应的测试代码,包括:
194.根据每一个所述条件语句判断分支的判断条件,生成满足所述判断条件的第一类测试代码;
195.根据每一个所述条件语句判断分支的判断条件,生成不满足所述判断条件的第二类测试代码;
196.将所述第一类测试代码和所述第二类测试代码组成所述测试代码。
197.在一个实施例中,所述使用scanner代码块扫描所述被测对象war包,提取出被测对象元数据,包括:
198.通过scanner代码块扫描html文件,得到被测对象的前端请求入口;
199.通过scanner代码块扫描path,得到所述被测对象的后端请求入口;
200.通过scanner代码块扫描class文件,得到被测对象类;
201.通过scanner代码块扫描method,得到接口的请求方法;
202.通过scanner代码块扫描param,得到接口的请求参数;
203.通过scanner代码块扫描组件,得到接口之间的调用链路;
204.将所述前端请求入口、后端请求入口、被测对象类、请求方法、请求参数和调用链路进行组合,得到所述被测对象元数据。
205.在一个实施例中,所述得到自动化测试代码之后,还包括:
206.通过git工具中的diff方法将所述自动化测试代码解析为自动化测试语法树;
207.通过git工具中的diff方法将原始测试代码解析为原始测试语法树,所述原始测试代码为上一次得到的所述自动化测试代码;
208.通过git工具中的merge节点将所述自动化测试语法树和所述原始测试语法树进行合并,得到合并语法树;
209.根据所述合并语法树生成自定义测试代码。
210.在一个实施例中,所述得到自动化测试代码之后,还包括:
211.通过html层接收测试用例,通过所述html层将所述测试用例传递给js层;所述js层将所述测试用例传递给所述controller层;自动化代码后端对所述controller层的所述测试用例进行运算,得到用例执行结果;将所述用例执行结果返回所述html层;
212.通过所述html层将所述用例执行结果显示在结果页面上。
213.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。本技术所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram通过多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双速据率sdram(ssrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
214.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
215.以上所述仅为本技术的优选实施例,并非因此限制本技术的专利范围,凡是利用本技术说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本技术的专利保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1