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

JDBC自动测试方法及系统与流程

2022-04-27 07:22:50 来源:中国专利 TAG:

jdbc自动测试方法及系统
技术领域
1.本发明涉及计算机信息处理技术领域,尤其涉及一种jdbc自动测试方法及系统。


背景技术:

2.用户在使用应用系统时,如图1所示,数据信息都是存储在数据库系统中的,应用系统通过与数据库系统的交互将数据展现给用户,或者,将用户的数据存储到数据库系统中,由此可见,数据库系统的重要性不言而喻,而数据库必须要确保提供给应用系统的接口是符合标准的。
3.现在开发语言多种多样,java属于后端开发中比较流行的开发语言,针对java语言,官方提供了一套标准的数据库操作的接口jdbc(java database connectivity,java数据库连接)。
4.关于jdbc的测试,传统的方法是对jdbc的每个api编写测试代码,然后通过一些测试框架(比如junit)来运行自己的测试用例。这种方法由于需要针对每个api编写测试代码,即使能用参数组的方式来减少测试代码的数量,仍然会不可避免地随着测试用例的不断增多,代码量越来越庞大,从而导致维护困难。而且,这种方法由于需要测试人员自己分析测试结果,耗时耗力,还容易出错。


技术实现要素:

5.本发明要解决的技术问题在于,针对现有技术存在的测试用例维护困难及人工分析测试结果耗时耗力的缺陷,提供一种jdbc自动测试方法及系统。
6.本发明构造一种jdbc自动测试方法,包括:
7.步骤s10.从配置文件中读取各个测试用例,并解析所述测试用例;
8.步骤s20.分别运行所述测试用例,并获取每个测试用例的测试结果;
9.步骤s30.根据所述测试结果进行评估,以生成测试报告。
10.优选地,所述配置文件包括分层设置的接口配置文件、方法配置文件、用例配置文件;
11.而且,所述步骤s10包括:
12.步骤s11.读取所述接口配置文件,并根据所述接口配置文件确定待测试的接口;
13.步骤s12.对于待测试的接口,读取其所对应的方法配置文件,并根据所述方法配置文件确定待测试的方法;
14.步骤s13.对于待测试的方法,读取其所对应的用例配置文件,并根据所述用例配置文件确定待测试的测试用例,并对待测试的测试用例进行解析。
15.优选地,所述用例配置文件的配置项包括每个测试用例所对应的独占标识;
16.而且,所述步骤s13还包括:
17.将独占标识有效的测试用例作为独占用例,并加入第一列表;
18.将独占标识无效的测试用例作为普通用例,并加入第二列表;
19.所述步骤s20包括:
20.步骤s21.运行所述独占用例,并获取第一测试结果;
21.步骤s22.根据当前的资源情况启动相应数量的子线程,以使每个所述子线程运行相应的普通用例,并从每个所述子线程获取相应的第二测试结果。
22.优选地,在所述步骤s10及所述步骤s20之间,还包括:
23.对测试环境和/或测试用例进行校验,并在校验通过时,执行所述步骤s20。
24.优选地,所述步骤s30包括:
25.步骤s31.根据所述测试结果对接口的质量进行评估;
26.步骤s32.根据所述测试结果对测试用例的质量进行评估;
27.步骤s33.根据评估结果生成测试报告。
28.优选地,在所述步骤s31之前,还包括:
29.将所述测试结果按方法、接口、包进行分类、统计及汇总。
30.优选地,在所述步骤s32和所述步骤s33之间,还包括:
31.步骤s34.判断测试用例是否充分,若不充分则补充测试用例;
32.而且,所述步骤s33包括:
33.根据评估结果及补充结果生成测试报告。
34.优选地,所述步骤s34包括:
35.步骤s341.判断边界用例是否充分,若否,则补充边界用例;若是,则执行步骤s342;
36.步骤s342.判断异常用例是否充分,若否,则补充异常用例;若是,则执行步骤s343;
37.步骤s343.判断常规用例是否充分,若否,则补充常规用例;若是,则执行步骤s344;
38.步骤s344.判断反向用例是否充分,若否,则补充反向用例。
39.优选地,所述子线程运行相应的普通用例,包括:
40.步骤s221.判断是否注入对象,若否,则执行步骤s222;若是,则生成所需对象并用别名存储;
41.步骤s222.配置当前测试用例所对应的多个操作步骤,并遍历所述多个操作步骤,且记录测试结果。
42.优选地,所述步骤s222包括:
43.步骤s2221.针对当前的操作步骤,判断循环次数是否配置,若是,则执行步骤s2222;若否,则执行步骤s2224;
44.步骤s2222.将循环次数记录到循环列表,并判断循环结束标识是否配置,若是,则执行步骤s2223;若否,则将下一个操作步骤作为当前操作步骤,并执行步骤s2221;
45.步骤s2223.在循环开始后,获取当前操作步骤所对应的操作对象、操作参数,并执行当前操作步骤所对应的操作函数,直至循环结束,然后,将下一个操作步骤作为当前操作步骤,并执行步骤s2221;
46.步骤s2224.获取当前操作步骤所对应的操作对象、操作参数,并执行当前操作步骤所对应的操作函数;
47.步骤s2225.判断是否校验异常,若否,则执行步骤s2226;若是,则判断异常校验是否通过,若是,则执行步骤s2226,若否,则结束当前测试用例的测试;
48.步骤s2226.判断是否校验返回值,若否,则执行步骤s2227;若是,则判断返回值校验是否通过,若是,则执行步骤s2227,若否,则结束当前测试用例的测试;
49.步骤s2227.判断是否保存返回值,若否,则执行步骤s2228;若是,则保存返回值;
50.步骤s2228.判断当前操作步骤是否为关键步骤,若否,则执行步骤s2229;若是,则记录结果;
51.步骤s2229.将下一个操作步骤作为当前操作步骤,然后执行步骤s2221。
52.本发明构造一种jdbc自动测试系统,包括处理器及存储有计算机程序的存储器,所述处理器在执行所述计算机程序时实现以上所述jdbc自动测试方法的步骤。
53.实施本发明的技术方案,由于通过配置文件的方式来实现测试用例的管理,所以,当需要对测试用例进行维护时,测试人员只需修改配置文件即可,不用再维护庞大的测试代码。在测试时,从配置文件中读取并解析测试用例,然后通过运行测试用例便可获取测试结果,最后自动对测试结果进行评估,这样,测试后的分析工作不需要再由测试人员一个一个看失败的用例来分析,因此提高了测试效率。
附图说明
54.下面将结合附图及实施例对本发明作进一步说明,附图中:
55.图1是用户使用应用系统的场景示意图;
56.图2是本发明一个实施例中jdbc自动测试方法的流程图;
57.图3是本发明测试用例的目录结构示意图;
58.图4是本发明一个实施例中读取并解析测试用例的流程图;
59.图5是本发明另一个实施例中jdbc自动测试方法的流程图;
60.图6是本发明一个实施例中补充测试用例的流程图;
61.图7是本发明一个实施例中运行测试用例的流程图。
具体实施方式
62.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
63.为了使数据库系统能高效、准确地测试自己提供的接口是否符合标准,本技术构造一种jdbc自动测试方法,该jdbc自动测试方法通过配置文件的方式来实现测试用例的管理,相比传统的用代码维护测试用例的方式,由于对测试用例的维护无需修改代码,只需修改配置文件即可,不用再维护庞大的测试代码。
64.关于该jdbc自动测试方法,首先说明的是,jdbc的大部分测试用例都遵循以下五个步骤:获取连接;准备测试数据;调用目标api;检查api返回值;验证数据。基于此,将整个测试过程分为若干步,每一步便是调用了一个方法,因此,利用java的反射机制,将测试用例通过配置的形式,告诉系统每一步是要做什么,做完这一步后期望得到的结果是什么。
65.图2是本发明一个实施例中jdbc自动测试方法的流程图,该实施例的jdbc自动测试方法包括:
66.步骤s10.从配置文件中读取各个测试用例,并解析所述测试用例;
67.在该步骤中,测试用例中包括有:测试环境、操作步骤、测试数据、预期结果等要素。而且,预先通过配置文件的方式来实现测试用例的管理,例如,测试人员可在web端对测试用例进行维护及查看。
68.步骤s20.分别运行所述测试用例,并获取每个测试用例的测试结果;
69.步骤s30.根据所述测试结果进行评估,以生成测试报告。
70.在该步骤中,测试人员可通过web端查看所生成的测试报告,大大缩短了分析时间和出报告的时间。
71.在该实施例的技术方案中,由于通过配置文件的方式来实现测试用例的管理,所以,当需要对测试用例进行维护时,测试人员只需修改配置文件即可,不用再维护庞大的测试代码。在测试时,从配置文件中读取并解析测试用例,然后通过运行测试用例便可获取测试结果,最后自动对测试结果进行评估,这样,测试后的分析工作不需要再由测试人员一个一个看失败的用例来分析,因此提高了测试效率。
72.进一步地,在一个可选实施例中,结合图3,配置文件包括分层设置的接口配置文件、方法配置文件、用例配置文件。即,整个配置文件保持和java.sql下面的接口路径一致,共分为三层,其中,第一层级为接口配置文件,在接口配置文件中可以配置测试开始前的准备工作及测试完成后的清理工作,配置某个接口的标签、类型、是否忽略等;第二层级为方法配置文件,在方法配置文件中可以配置测试该接口前的准备工作及整个接口测试完成后的清理工作,配置接口下某个方法(函数)的标签、类型、是否忽略等;第三层级为用例配置文件,在用例配置文件中除了可以配置方法的入参、出参类型,还可以配置整个方法测试前的准备工作和整个方法测试完成后的清理工作等,而且,该方法的所有测试用例配置都在该配置文件里。如图3所示,free()方法的用例配置文件中配置有free()方法的入参、出参类型,配置整个方法测试前的准备工作和测试完成后的清理工作,而且,free()方法的所有测试用例均在free()方法的用例配置文件中;getasciistream()方法的用例配置文件中配置有getasciistream()方法的入参、出参类型,配置整个方法测试前的准备工作和测试完成后的清理工作,而且,getasciistream()方法的所有测试用例均在free()方法的用例配置文件中。
73.另外,测试用例的配置项主要包括有:
74.1.注入对象:测试依赖的对象,一般来说是数据库连接对象connection。针对一些特殊用例,不使用测试系统提供的连接池中的对象,可自行获取连接;
75.2.注入对象别名:为注入的对象取的别名,后续步骤使用该别名引用注入对象;
76.3.循环次数:从此开始到循环结束标识的步骤会执行指定次数的循环,必须与循环结束标识配对使用;
77.4.循环结束标识:标识一个循环结束,必须与循环次数配对使用;
78.5.依赖对象:依赖的前面步骤所生成的对象名,是本次调用方法的主体;
79.6.调用方法:本次需要调用的方法名;
80.7.方法参数类型列表:按顺序指定调用方法的参数类型;
81.8.方法参数:本次调用方法时所需要的参数,可能是固定值、前面的对象等;
82.9.预期异常消息:调用方法预期抛出异常的消息内容;
83.10.预期返回值类型:用于验证返回值是否正确;
84.11.预期返回值:用于验证方法返回值是否正确
85.12.返回对象存储名:将返回对象按指定的别名保存下来,供后续步骤使用同样的名称来使用该对象;
86.11.java源文件路径:特殊的用例直接编译运行java源文件;
87.12.用例类型:冒烟、发版等。由于回归测试所有用例都必须执行,因此无需指定。根据不同测试类型,自动选择特定类型的用例执行;
88.13.用例标签:根据实际需要对用例进行标记,比如用lob标签表示这些用例是专门用于测试lob的,当只需要测试lob的用例时,输入对应的标签即可;
89.14.是否独占用例:有些用例执行时是不能和其他用例一起执行的,比如需要重启环境的用例,这样的用例标记为独占用例,将会在测试最开始或最后挨个执行这些用例,避免与其他用例互相干扰。未被标记为独占的用例,会在子线程或子进程中执行
90.15.是否忽略:默认为否
91.16.忽略原因:该用例可能因为一些原因暂时不用执行,此处写明原因。
92.在一个可选实施例中,步骤s10包括:
93.步骤s11.读取所述接口配置文件,并根据所述接口配置文件确定待测试的接口;
94.步骤s12.对于待测试的接口,读取其所对应的方法配置文件,并根据所述方法配置文件确定待测试的方法;
95.步骤s13.对于待测试的方法,读取其所对应的用例配置文件,并根据所述用例配置文件确定待测试的测试用例,并对待测试的测试用例进行解析。
96.进一步地,在一个可选实施例中,用例配置文件的配置项包括每个测试用例所对应的独占标识。而且,步骤s13还包括:
97.将独占标识有效的测试用例作为独占用例,并加入第一列表;
98.将独占标识无效的测试用例作为普通用例,并加入第二列表;
99.所述步骤s20包括:
100.步骤s21.运行所述独占用例,并获取第一测试结果;
101.步骤s22.根据当前的资源情况启动相应数量的子线程,以使每个所述子线程运行相应的普通用例,并从每个所述子线程获取相应的第二测试结果。
102.在该实施例中,需说明的是,有些测试用例在执行时是不能和其他测试用例一起执行的,比如,需要重启环境的测试用例,这样的测试用例标记为独占用例,将会在测试最开始或最后挨个执行这些测试用例,避免与其他测试用例互相干扰。未被标记为独占的测试用例为普通用例,这些普通用例可在子线程或子进程中执行。
103.图4是本发明一个实施例中读取并解析测试用例的流程图,在该实施例中,首先,读取接口配置文件,并遍历所有的接口文件夹,如图3所示的java.sql.array、java.sql.blob、java.sql.callablestatement、java.sql.clob、java.sql.connection等等,并根据接口配置文件中的配置项逐一判断各个接口是否测试,如果当前接口不需要测试,则继续判断下一个接口,直至所有的接口都遍历完成。
104.对于需要测试的接口,读取该接口所对应的方法配置文件,并根据该方法配置文件中的配置项逐一判断该接口下的各个方法是否测试,如果当前方法不需要测试,则继续判断下一个方法。
105.对于需要测试的方法,读取该方法所对应的用例配置文件,遍历该方法的所有测试用例,并逐一判断各个测试用例是否测试,如果当前测试用例不需要测试,则继续判断下一个测试用例。
106.对于需要测试的测试用例,判断该测试用例是否正确,如果不正确,则跳到下一个测试用例;如果正确,则对该测试用例进行解析,并判断该测试用例是否为独占用例,如果不是,则将其放入普通列表;如果是,则将其放入独占列表,然后,跳到下一个测试用例。
107.进一步地,在一个可选实施例中,在步骤s10及步骤s20之间,还包括:对测试环境和/或测试用例进行校验,并在校验通过时,执行所述步骤s20。如果校验不通过,则结束测试。
108.进一步地,在一个可选实施例中,步骤s30包括:
109.步骤s31.根据所述测试结果对接口的质量进行评估;
110.在该步骤中,可根据预先建立的接口质量评估模型进行评估,具体地,将测试结果送入接口质量评估模型,接口质量评估模型可从接口缺陷(密度、修复情况、趋势、年龄、触发因素)及测试用例的覆盖率两方面进行分析,以对接口的质量进行评估,并输出评估结果。
111.步骤s32.根据所述测试结果对测试用例的质量进行评估;
112.在该步骤中,可根据预先建立的测试用例质量评估模型进行评估,具体地,将测试结果送入测试用例质量评估模型,测试用例质量评估模型从接口覆盖率、方法覆盖率、行覆盖率、用例缺陷百分比、用例类别百分比等多方面进行分析,以对测试用例的质量进行评估,并输出评估结果。
113.步骤s33.根据评估结果生成测试报告。
114.在该步骤中,所生成的测试报告可为excel、html、word等格式,该测试报告的内容包括:测试用例的质量情况、接口的质量情况、测试用例的执行情况及缺陷情况、测试用例的执行时间及api的执行时间等等。
115.进一步地,在一个可选实施例中,在步骤s31之前,还包括:将所述测试结果按方法、接口、包进行分类、统计及汇总。
116.进一步地,在一个可选实施例中,在步骤s32和步骤s33之间,还包括:步骤s34.判断测试用例是否充分,若不充分则补充测试用例。而且,步骤s33包括:根据评估结果及补充结果生成测试报告。在该实施例中,所生成的测试报告的内容除了包括测试用例的质量情况、接口的质量情况、测试用例的执行情况及缺陷情况、测试用例的执行时间及api的执行时间外,还包括有测试用例的补充情况。
117.图5是本发明另一个实施例中jdbc自动测试方法的流程图,在该实施例中,进行以下步骤:
118.首先,读取并解析测试用例,即,从配置文件中读取测试用例,再将所读取到的测试用例存入内存并解析为用例对象,剔除配置不正确的用例。
119.接着,校验测试环境和测试用例,例如,检查测试环境是否满足(比如数据库是否
可以正常连接),检查是否有测试用例需要执行,若校验通过,则进入下一步骤开始测试;若校验不通过,则结束。
120.在测试时,先进行独占用例的测试,再根据资源情况启动适量的子线程/进程以进行普通用例的测试,例如,基于设置好的规则,根据可用连接数、cpu、内存等情况确定子线程的数量。每个子线程/进程测试完成一个测试用例后将结果反馈,主进程根据反馈的结果进行分析。
121.在分析时,可分几个维度(方法级别、接口级别以及包级别)统计、汇总测试结果。
122.在评估接口的质量时,可从缺陷总数、各级别缺陷百分比、新缺陷比例、已解决缺陷再次发生的比例等多个维度对接口的质量进行评估。
123.在评估测试用例的质量时,可从测试用例覆盖率、缺陷概率、边界用例比例、异常用例比例、正向用例比例、反向用例百分比等多个维度对测试用例的质量进行评估。
124.然后,判断测试用例是否充分,例如,可根据评估的测试用例的质量来判断测试用例是否充分,若不充分,则补充测试用例,由于jdbc的api每个方法官方都有描述,什么情况下应该返回什么或抛什么样的异常,根据这些描述可实现测试用例不充分的自动补充。
125.最后,输出测试报告,具体地,将分析的结果生成excel、html、word等文档,然后通过web输出。
126.图6是本发明一个实施例中补充测试用例的流程图,在该实施例中,若根据测试用例的质量评估结果判断测试用例不充分,则需要通过步骤s34对测试用例进行补充,具体地,步骤s34包括:
127.判断边界用例是否充分,若否,则补充边界用例;若是,则执行下一步骤;
128.判断异常用例是否充分,若否,则补充异常用例;若是,则执行下一步骤;
129.判断常规用例是否充分,若否,则补充常规用例;若是,则执行下一步骤;
130.判断反向用例是否充分,若否,则补充反向用例。
131.进一步地,关于子线程,其在启动后,开始向主线程领取测试任务,然后根据任务的配置执行任务,并向主线程返回测试结果,然后继续向主线程领取下一个测试任务,直到所有的测试任务都执行完成。
132.在一个可选实施例中,子线程通过以下步骤运行相应的普通用例:
133.步骤s221.判断是否注入对象,若否,则执行步骤s222;若是,则生成所需对象并用别名存储;
134.步骤s222.配置当前测试用例所对应的多个操作步骤,并遍历所述多个操作步骤,且记录测试结果。
135.而且,在步骤s222具体包括:
136.步骤s2221.针对当前的操作步骤,判断循环次数是否配置,若是,则执行步骤s2222;若否,则执行步骤s2224;
137.步骤s2222.将循环次数记录到循环列表,并判断循环结束标识是否配置,若是,则执行步骤s2223;若否,则将下一个操作步骤作为当前操作步骤,并执行步骤s2221;
138.步骤s2223.在循环开始后,获取当前操作步骤所对应的操作对象、操作参数,并执行当前操作步骤所对应的操作函数,直至循环结束,然后,将下一个操作步骤作为当前操作步骤,并执行步骤s2221;
139.步骤s2224.获取当前操作步骤所对应的操作对象、操作参数,并执行当前操作步骤所对应的操作函数;
140.步骤s2225.判断是否校验异常,若否,则执行步骤s2226;若是,则判断异常校验是否通过,若是,则执行步骤s2226,若否,则结束当前测试用例的测试;
141.步骤s2226.判断是否校验返回值,若否,则执行步骤s2227;若是,则判断返回值校验是否通过,若是,则执行步骤s2227,若否,则结束当前测试用例的测试;
142.步骤s2227.判断是否保存返回值,若否,则执行步骤s2228;若是,则保存返回值;
143.步骤s2228.判断当前操作步骤是否为关键步骤,若否,则执行步骤s2229;若是,则记录结果;
144.步骤s2229.将下一个操作步骤作为当前操作步骤,然后执行步骤s2221。
145.图7是本发明一个实施例中运行测试用例的流程图,首先说明的是,对于某些特殊的测试用例或者已存在的测试用例,本发明的测试方法还支持配置用例java源文件路径的方式来解析、执行java源文件。下面结合图7说明子线程运行测试用例的流程:
146.首先,判断源文件路径是否为空,若不为空,则直接编译并运行源文件,并记录结果,然后结束该测试用例的测试。
147.在源文件路径为空时,判断是否注入对象,若是,则生成所需对象并用别名存储,然后执行下面的步骤;若否,则直接执行下面的步骤。
148.由于一个测试用例可解析成多个操作步骤,所以,可根据解析结果配置操作步骤,针对当前的操作步骤,先判断循环次数是否配置。
149.对于循环次数配置的操作步骤,将循环次数记录到循环列表,并判断循环结束标识是否配置,若否,则将下一个操作步骤作为当前操作步骤,并重新配置当前的操作步骤;若是,则在循环开始后,获取或创建当前操作步骤所对应的操作对象、操作参数,并执行当前操作步骤所对应的操作函数,直至循环结束,然后,将下一个操作步骤作为当前操作步骤,并重新配置当前的操作步骤。
150.对于循环次数未配置的操作步骤,获取或创建当前操作步骤所对应的操作对象、操作参数,并执行当前操作步骤所对应的操作函数。然后,根据测试用例的各配置项逐一判断是否校验异常、异常校验是否通过、是否校验返回值、返回值校验是否通过、是否保存返回值(对象)、是否是关键步骤。当异常校验不通过或返回值校验不通过时,记录结果,并结束当前测试用例的测试;当属于关键步骤时,记录结果,将下一个操作步骤作为当前操作步骤,并重新配置当前的操作步骤,进入新的循环;当不属于关键步骤时,将下一个操作步骤作为当前操作步骤,并重新配置当前的操作步骤,进入新的循环。
151.本发明还构造一种jdbc自动测试系统,包括处理器及存储有计算机程序的存储器,该处理器在执行所述计算机程序时实现以上所述jdbc自动测试方法的步骤。
152.以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
再多了解一些

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

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

相关文献