本申请涉及自动化测试,具体而言,涉及一种异常自动修复方法、装置、电子设备及存储介质。
背景技术:
1、在接口自动化测试中,经常会出现一些简单的崩溃或异常问题,需要人工分析错误日志,然后进行修复。在此过程中,需要人工进行重复性劳动,不断进行修复。
技术实现思路
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、确认所述异常类为json入参解析异常,当为获取一个参数中不存在的字段发生异常时,修改字段获取方式;
34、当参数中的字段类型与接口定义不一致时,添加入参类型错误代码片段;
35、当代码中的字段类型与接口定义不一致时,定位到对应的行进行代码修改。
36、在上述实现过程中,对于json入参解析异常,可进行异常定位并进行相应处理。
37、本申请实施例提供一种异常自动修复装置,所述装置包括:
38、检测模块,用于响应于接口测试命令,对待测应用程序进行检测,以生成检测日志;
39、提取模块,用于提取所述检测日志中的异常信息;
40、建模模块,用于对所述异常信息进行建模,以生成异常模块;
41、列表生成模块,用于根据所述异常模块,生成异常模块列表;
42、修复模块,用于遍历所述异常模块列表,并对异常模块添加修复代码。
43、在上述实现过程中,通过自动修复接口修复自动化测试中出现的异常问题,实现自动化修复,可以减少人工的重复性劳动,解决现有方法需要人工重复性进行修复的问题。
44、进一步地,所述修复模块包括:
45、定位模块,用于若类名不在白名单中,则根据异常模块信息定位到异常的代码行;
46、代码修复模块,用于根据异常类的类型和变量,对所述代码行进行修复操作。
47、在上述实现过程中,通过自动修复接口修复自动化测试中出现的异常问题,实现自动化修复,可以减少人工的重复性劳动,解决现有方法需要人工重复性进行修复的问题。
48、本申请实施例还提供一种电子设备,所述电子设备包括存储器以及处理器,所述存储器用于存储计算机程序,所述处理器运行所述计算机程序以使所述电子设备执行上述的异常自动修复方法。
49、本申请实施例还提供一种可读存储介质,所述可读存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行上述的异常自动修复方法。
1.一种异常自动修复方法,其特征在于,所述方法包括:
2.根据权利要求1所述的异常自动修复方法,其特征在于,所述提取所述检测日志中的异常信息,包括:
3.根据权利要求2所述的异常自动修复方法,其特征在于,所述对所述异常信息进行建模,以得到异常模块,包括:
4.根据权利要求3所述的异常自动修复方法,其特征在于,所述异常模块信息包括异常发生的类、包名、方法、方法行号、异常类的类型和变量,所述遍历所述异常模块列表,以根据所述异常模块列表中的异常模块添加修复代码,包括:
5.根据权利要求4所述的异常自动修复方法,其特征在于,所述根据异常类的类型和变量,对所述代码行进行修复操作,包括:
6.根据权利要求4所述的异常自动修复方法,其特征在于,所述根据异常类的类型和变量,对所述代码行进行修复操作,包括:
7.根据权利要求4所述的异常自动修复方法,其特征在于,所述根据异常类的类型和变量,对所述代码行进行修复操作,包括:
8.根据权利要求4所述的异常自动修复方法,其特征在于,所述根据异常类的类型和变量,对所述代码行进行修复操作,包括:
9.一种异常自动修复装置,其特征在于,所述装置包括:
10.根据权利要求9所述的异常自动修复装置,其特征在于,所述修复模块包括:
11.一种电子设备,其特征在于,所述电子设备包括存储器以及处理器,所述存储器用于存储计算机程序,所述处理器运行所述计算机程序以使所述电子设备执行根据权利要求1至8中任一项所述的异常自动修复方法。
12.一种可读存储介质,其特征在于,所述可读存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行权利要求1至8任一项所述的异常自动修复方法。