本说明书涉及数据库领域,尤其涉及一种数据库测试方法、装置、存储介质及电子设备。
背景技术:
1、随着计算机技术的发展,现如今的计算机设备已经可以满足用户的各种不同需求,例如,计算机设备通过机器学习对业务模型进行训练,训练完成后的业务模型执行用户的业务。为了让计算机设备能够正确响应用户并实现用户的各类需求,需要在后台数据库中存储大量与用户需求相关的数据,如用户的个人信息,以供查询和处理。
2、在实际使用数据库之前,需要对先数据库进行测试,以避免在实际使用数据库时,出现数据库崩溃等问题。对数据库进行测试时,可利用sql语句生成器生成测试语句,但sql语句生成器生成的测试语句的语义正确性及语法正确性较低,而测试语句的语义正确性及语法正确性会影响测试覆盖率,这是因为语义不正确和/或及语法不正确的测试语句可能无法对数据库中的某些代码进行测试,其中,测试覆盖率是在对数据库进行测试时,数据库中的代码被执行的比例。当测试覆盖率较低时,数据库中的代码被执行的比例较低,数据库中存在的某些问题可能无法被发现,从而影响数据库的实际使用。因此,如何获取语义正确及语法正确的测试语句,提高数据库的测试覆盖率是亟待解决的问题。
3、基于此,本说明书提供一种数据库测试方法。
技术实现思路
1、本说明书提供一种数据库测试方法、装置、存储介质及电子设备,以至少部分的解决现有技术存在的上述问题。
2、本说明书采用下述技术方案:
3、本说明书提供一种数据库测试方法,包括:
4、获取sql语句生成器生成的sql语句;
5、对所述sql语句进行语句处理,得到测试语句,其中,所述语句处理包括将所述sql语句中的操作对象替换为预设参数;
6、将所述测试语句输入预先训练的语句修复模型,以使所述语句修复模型根据所述预设参数,确定所述测试语句的语句修复位置,并对所述测试语句进行语句修复,输出语句修复后的所述测试语句,其中,所述语句修复模型是通过对sql样本语句进行语句处理后,得到的sql样本测试语句作为训练样本,所述sql样本语句作为标签训练得到的;
7、将语句修复后的所述测试语句发送至待测试数据库,以使所述待测试数据库执行语句修复后的所述测试语句,对所述待测试数据库进行测试。
8、可选地,将语句修复后的所述测试语句发送至待测试数据库,以使所述待测试数据库执行语句修复后的所述测试语句,对所述待测试数据库进行测试;
9、将待测试数据库中的源代码插入若干标记代码;
10、将语句修复后的所述测试语句发送至待测试数据库,以使所述待测试数据库执行语句修复后的所述测试语句;
11、接收所述待测试数据库返回的执行语句修复后的所述测试语句的测试结果;
12、根据所述测试结果,判断是否对所述待测试数据库进行修复。
13、可选地,根据所述测试结果,判断是否对所述待测试数据库进行修复,具体包括:
14、当所述测试结果正常时,不修复所述待测试数据库;
15、当未接收到所述测试结果,或所述测试结果异常时,修复所述待测试数据库。
16、可选地,所述方法还包括:
17、根据所述若干个标记代码中被执行的数量与未被执行的数量,确定所述待测试数据库的测试覆盖率。
18、可选地,所述方法还包括:
19、当所述测试覆盖率达到预设覆盖率时,停止向所述待测试数据库发送语句修复后的所述测试语句。
20、可选地,训练语句修复模型,具体包括:
21、获取sql样本测试用例,所述sql样本测试包括sql样本语句;
22、将所述sql样本测试用例输入语句修复模型,以使所述语句修复模型解析所述sql样本测试用例中操作对象的关系及所述sql样本测试用例中不同sql语句之间的逻辑关系,并输出所述sql样本测试用例的解析结果,其中,所述解析结果包括所述sql样本测试用例中操作对象的关系及所述sql样本测试用例中不同sql语句之间的逻辑关系;
23、对所述sql样本语句进行语句处理,得到sql样本测试语句,将所述sql样本语句作为所述sql样本测试语句的标签;
24、根据所述标签及所述sql样本测试语句,对所述语句修复模型进行调整训练。
25、可选地,根据所述标签及所述sql样本测试语句,对所述语句修复模型进行调整训练,具体包括:
26、将所述sql样本测试语句输入所述语句修复模型,获得所述语句修复模型输出的所述sql样本测试语句的样本修复语句;
27、确定所述样本修复语句与所述标签的差异;
28、以最小化所述差异为调整目标,对所述语句修复模型进行调整训练。
29、本说明书提供了一种数据库测试装置,所述装置包括:
30、sql语句获取模块,用于获取sql语句生成器生成的sql语句;
31、语句处理模块,用于对所述sql语句进行语句处理,得到测试语句,其中,所述语句处理包括将所述sql语句中的操作对象替换为预设参数;
32、语句修复模块,用于将所述测试语句输入预先训练的语句修复模型,以使所述语句修复模型根据所述预设参数,确定所述测试语句的语句修复位置,并对所述测试语句进行语句修复,输出语句修复后的所述测试语句,其中,所述语句修复模型是将sql样本语句作为标签,语句处理后所述sql样本语句作为训练样本训练得到的;
33、测试模块,用于将语句修复后的所述测试语句发送至待测试数据库,以使所述待测试数据库执行语句修复后的所述测试语句,对所述待测试数据库进行测试。
34、可选地,所述测试模块,具体用于将待测试数据库中的源代码插入若干标记代码;将语句修复后的所述测试语句发送至待测试数据库,以使所述待测试数据库执行语句修复后的所述测试语句;接收所述待测试数据库返回的执行语句修复后的所述测试语句的测试结果;根据所述测试结果,判断是否对所述待测试数据库进行修复。
35、可选地,所述测试模块,具体用于当所述测试结果正常时,不修复所述待测试数据库;当未接收到所述测试结果,或所述测试结果异常时,修复所述待测试数据库。
36、可选地,所述装置还包括:
37、测试覆盖率确定模块,用于根据所述若干个标记代码中被执行的数量与未被执行的数量,确定所述待测试数据库的测试覆盖率。
38、可选地,所述测试覆盖率确定模块,具体用于当所述测试覆盖率达到预设覆盖率时,停止向所述待测试数据库发送语句修复后的所述测试语句。
39、可选地,所述装置还包括:
40、训练模块,用于获取sql样本测试用例,所述sql样本测试包括sql样本语句;将所述sql样本测试用例输入语句修复模型,以使所述语句修复模型解析所述sql样本测试用例中操作对象的关系及所述sql样本测试用例中不同sql语句之间的逻辑关系,并输出所述sql样本测试用例的解析结果,其中,所述解析结果包括所述sql样本测试用例中操作对象的关系及所述sql样本测试用例中不同sql语句之间的逻辑关系;对所述sql样本语句进行语句处理,得到sql样本测试语句,将所述sql样本语句作为所述sql样本测试语句的标签;根据所述标签及所述sql样本测试语句,对所述语句修复模型进行调整训练。
41、可选地,所述训练模块,具体用于将所述sql样本测试语句输入所述语句修复模型,获得所述语句修复模型输出的所述sql样本测试语句的样本修复语句;确定所述样本修复语句与所述标签的差异;以最小化所述差异为调整目标,对所述语句修复模型进行调整训练。
42、本说明书提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述数据库测试方法。
43、本说明书提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述数据库测试方法。
44、本说明书采用的上述至少一个技术方案能够达到以下有益效果:
45、在本说明书提供的数据库测试方法中可以看出,本方法利用预先训练完成的语句修复模型,对测试语句进行语句修复,以获得语句修复后的测试语句,对数据库进行测试,提高了数据库测试的测试覆盖率。