一种基于测试例自动测试的方法、装置、设备及存储介质
文献发布时间:2023-06-19 16:06:26
技术领域
本发明涉及自动化测试技术领域,尤其涉及一种基于测试例自动测试的方法、装置、设备及存储介质。
背景技术
在新的功能模块编写完成后,为了了解新的功能模块是否能够满足预期要求,需要对新的功能模块进行测试。
一般情况下测试都由测试工程师进行,当测试工程师接收一个新的功能模块时,需要进行如下测试流程:1、参加需求评审;2、获得需求分析书;3、编写测试用例;4、进行接收测试;5、问题回归测试;6、进行二轮测试;7、合入主线后进行功能稳定性验证;8、输出功能验证报告。
测试工程师对于新功能测试流程较为复杂,在接收测试完成后,需要对发现的问题进行回归验证和举一反三测试,回归验证后,还要再进行二次确认测试,确认无误后合入到主线分支,再进行稳定性测试,以上操作存在大量重复性功能测试工作,占用大量测试与研发人员的时间,且容易出现漏测的情况。
发明内容
有鉴于此,有必要提供一种基于测试例自动测试的方法、装置、设备及存储介质,用以解决现有技术中人工测试过程复杂,测试时间长,易漏测的问题。
为达到上述技术目的,本发明采取了以下技术方案:
第一方面,本发明提供了一种基于测试例自动测试的方法,包括:
获取待测试功能需求,根据待测试功能需求编写预设格式的测试用例;
将测试用例上传至测试工具,并输入待测试设备信息;
测试工具读取解析测试用例,确定测试路径、测试步骤以及预期结果;
根据测试路径以及测试步骤,生成自动化测试脚本;
根据自动化测试脚本,对待测试功能需求进行测试并与预期结果进行对比,得到目标测试结果;
根据目标测试结果,生成测试报告,并发送测试报告给相关部门。
优选的,测试工具读取解析测试用例,确定测试路径、测试步骤以及预期结果,包括:
读取解析测试用例,根据测试用例的内容,整理出测试表;其中,测试表包括待测试项、测试步骤以及预期结果;
根据待测试项,按照优先级顺序确定测试路径。
优选的,根据测试路径以及测试步骤,生成自动化测试脚本,包括:
获取待测试设备的页面信息;
根据待测试设备的页面信息以及测试路径,查找当前测试项;
根据当前测试项以及测试步骤,生成自动化测试语句。
优选的,根据当前测试页面以及测试步骤,生成自动化测试语句,包括:
将每一测试步骤中预设位置的测试语句进行拆分,得到拆分语句,拆分语句包含预设动词和预设名词;
将预设名词和待测试语句进行与运算,获取不在运算结果内的语句,根据不在运算结果内的语句建立对应操作语句。
优选的,对待测试功能需求进行测试包括正向测试和反向测试;根据自动化测试脚本,对待测试功能需求进行测试并与预期结果进行对比,得到目标测试结果,包括:
将每一测试步骤中非预设位置的测试语句进行拆分,确定测试内容;
对测试内容进行正向测试和反向测试,得到正向测试结果和反向测试结果;
将正向测试结果和反向测试结果与预期结果进行对比,得到目标测试结果。
优选的,将正向测试结果和反向测试结果与预期结果进行对比,得到目标测试结果,包括:
若进行正向测试,正向测试结果通过,且预期结果也为通过时,则此项测试通过;
若进行反向测试,反向测试结果通过,但是预期结果为失败时,则此项测试失败;
将所有测试失败项单独存储,将所有目标测试结果存储在预设结果存储位置。
优选的,根据目标测试结果,生成测试报告,并发送测试报告给相关部门,包括:
根据目标测试结果中的测试失败项,对与测试失败项相似的测试项进行重复测试,记录测试过程;
根据目标测试结果,对测试过程进行分析总结,生成测试报告,并将测试报告发送给相关部门。
第二方面,本发明还提供了一种基于测试例自动测试的装置,包括:
编写模块,用于获取待测试功能需求,根据待测试功能需求编写预设格式的测试用例;
上传模块,用于将测试用例上传至测试工具,并输入待测试设备信息;
读取模块,用于测试工具读取解析测试用例,确定测试路径、测试步骤以及预期结果;
生成模块,用于根据测试路径以及测试步骤,生成自动化测试脚本;
测试模块,用于根据自动化测试脚本,对待测试功能需求进行测试并与预期结果进行对比,得到目标测试结果;
分析模块,用于根据目标测试结果,生成测试报告,并发送测试报告给相关部门。
第三方面,本发明还提供了一种电子设备,包括存储器和处理器,其中,
存储器,用于存储程序;
处理器,与存储器耦合,用于执行存储器中存储的程序,以实现上述任一种实现方式中的基于测试例自动测试方法中的步骤。
第四方面,本发明还提供了一种计算机可读存储介质,用于存储计算机可读取的程序或指令,程序或指令被处理器执行时,能够实现上述任一种实现方式中的基于测试例自动测试方法中的步骤。
采用上述实施例的有益效果是:本发明提供的一种基于测试例自动测试的方法、装置、设备及存储介质,根据待测试功能需求编写相应的测试用例,根据测试用例确定待测试功能需求的测试路径、测试步骤以及预期结果,通过测试路径确定当前测试位置,从而避免了漏测的出现,且可以在测试的过程中随时实现自动化测试,然后再基于测试步骤,生成自动化测试脚本,通过自动化测试脚本实现对待测试功能需求的自动化测试,将重复性的测试内容进行整合,设计合理的测试步骤,实现自动化测试,减少了测试人员的重复性工作,节约了测试时间,降低了人为漏测的概率。
附图说明
图1为本发明提供的基于测试例自动测试方法的一实施例的流程示意图;
图2为本发明提供的步骤S104的一实施例的流程示意图;
图3为本发明提供的步骤S105的一实施例的流程示意图;
图4为本发明提供的基于测试例自动测试装置的一实施例的结构示意图;
图5为本发明实施例提供的电子设备的结构示意图。
具体实施方式
下面结合附图来具体描述本发明的优选实施例,其中,附图构成本申请一部分,并与本发明的实施例一起用于阐释本发明的原理,并非用于限定本发明的范围。
在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
本发明提供了一种基于测试例自动测试的方法、装置、设备及存储介质,以下分别进行说明。
请参阅图1,图1为本发明提供的基于测试例自动测试方法的一实施例的流程示意图,本发明的一个具体实施例,公开了一种基于测试例自动测试的方法,包括:
S101、获取待测试功能需求,根据待测试功能需求编写预设格式的测试用例;
S102、将测试用例上传至测试工具,并输入待测试设备信息;
S103、测试工具读取解析测试用例,确定测试路径、测试步骤以及预期结果;
S104、根据测试路径以及测试步骤,生成自动化测试脚本;
S105、根据自动化测试脚本,对待测试功能需求进行测试并与预期结果进行对比,得到目标测试结果;
S106、根据目标测试结果,生成测试报告,并发送测试报告给相关部门。
在本发明具体的实施例中,步骤S101根据实际的功能模块确定其待测试功能需求,按照待测试功能需求编写对应的测试用例,预设格式为csv格式或者excel格式,本发明的实施例以csv格式进行说明,本发明基于该测试用例实现自动化测试,在一个具体的实施例中,测试用例包括如下内容:
其中包含内容有:测试模块、一级测试项、二级测试项、三级测试项、测试标题、测试步骤、预期结果。
在本发明具体的实施例中,步骤S102编写完测试用例之后,将测试用例上传至测试工具,在测试工具中输入正确的待测试设备IP地址和用户名密码,测试工具根据用户配置的设备IP地址,使用webdriver自动打开浏览器,访问待测试设备,填写用户配置的用户名/密码进行登录,可以正确登录进入待测试设备。测试路径是根据待测试的功能需求确定的,对测试路径进行确定时,在完成所有测试内容的情况下以降低重复的测试步骤为主要目标,测试路径设计的好坏与测试的总时间有着重大关联。
在本发明具体的实施例中,步骤S103测试工具读取csv文件中内容,将csv每行、每列信息均读取出来,整理到一个列表中;测试用例中包含了测试项、测试步骤以及预期结果,根据测试项进一步确定测试路径。
读取测试信息后,将测试信息存储在PATH路径对象中;
将测试模块路径存储在PATCH=[策略配置,对象管理,文件类型对象];
将测试标题存储在test_list对象中:test_list=[文件类型对象操作];
将测试步骤存储在test_step对象中:test_list=[(新建),对象名称,文件类描述,文件类型];
将测试步骤中测试数据存储在test_data对象中:test_data=[名称:1-31,描述:0-127,类型:1-15];
将测试预期结果存储在test_result对象中:test_result=[成功,失败,成功,失败,成功,失败]。
在本发明具体的实施例中,步骤S104通过测试路径判断出当前测试位置,通过当前测试位置以及测试步骤确定当前待测试的内容,再根据当前待测试的内容,生成对应的测试脚本,该测试脚本能够执行对应的测试任务,实现自动化测试。测试步骤对应测试的具体测试内容,测试步骤是实现测试自动化的关键,包含了全部的需测试的内容。
在本发明具体的实施例中,步骤S105测试脚本实现对待测试功能需求的自动化测试,测试的实际结果需要与设置的预测结果进行对比,判断实际结果与预测结果是否一致,记录测试的过程,得到最终测试结果也即目标测试结果。
在本发明具体的实施例中,步骤S106对目标测试结果进行分析总结,对测试失败项的相似项进行重复测试,确定测试失败原因,并记录测试过程,生成测试报告,将测试报告发送给相关部门,以便相关部门人员进行修改和调整。
与现有技术相比,本实施例提供的一种基于测试例自动测试的方法,根据待测试功能需求编写相应的测试用例,根据测试用例确定待测试功能需求的测试路径、测试步骤以及预期结果,通过测试路径确定当前测试位置,从而避免了漏测的出现,且可以在测试的过程中随时实现自动化测试,然后再基于测试步骤,生成自动化测试脚本,通过自动化测试脚本实现对待测试功能需求的自动化测试,将重复性的测试内容进行整合,设计合理的测试步骤,实现自动化测试,减少了测试人员的重复性工作,节约了测试时间,降低了人为漏测的概率。
在本发明的一些实施例中,测试工具读取解析测试用例,确定测试路径、测试步骤以及预期结果,包括:
读取解析测试用例,根据测试用例的内容,整理出测试表;其中,测试表包括待测试项、测试步骤以及预期结果;
根据待测试项,按照优先级顺序确定测试路径。
在上述实施例中,以步骤S101中测试用例内容举例,待测试项包括了一级测试项、二级测试项和三级测试项,一级测试项:策略配置;二级测试项:对象管理;三级测试项:文件类型对象;解析出来测试路径为:策略配置---对象管理---文件类型对象。
请参阅图2,图2为本发明提供的步骤S104的一实施例的流程示意图,在本发明的一些实施例中,根据测试路径以及测试步骤,生成自动化测试脚本,包括:
S201、获取待测试设备的页面信息;
S202、根据待测试设备的页面信息以及测试路径,查找当前测试项;
S203、根据当前测试项以及测试步骤,生成自动化测试语句。
在本发明具体的实施例中,步骤S201直接获取待测试设备的页面信息,待测试设备的页面信息反映了待测试设备目前的测试情况。
在本发明具体的实施例中,步骤S202使用测试路径存储内容可以根据被测试设备页面信息进行点击跳转,根据测试用例填写的内容依次进行点击页面测试路径,找到被测试功能位置。测试路径涵盖了所有的测试项,根据待测试设备的页面信息对测试项进行逐一排查,确定出当前测试项所处的位置。
在本发明具体的实施例中,步骤S203找到被测试模块所在位置后,根据测试用例中测试步骤,确定该测试位置的具体测试内容,并将具体的测试内容自动的转化成计算机自动化测试语句,通过转化后的自动化测试语句,可以对该测试位置的测试项进行完全的、自动的测试。
在上述实施例中,获取能反应待测试设备测试情况的页面信息,再根据测试路径确定当前测试项,然后根据当前测试项以及测试步骤,生成未测试项的自动化测试语句,无需人为操作即可自动实现,降低了测试人员的负担。
在本发明的一些实施例中,根据当前测试页面以及测试步骤,生成自动化测试语句,包括:
将每一测试步骤中预设位置的测试语句进行拆分,得到拆分语句,拆分语句包含预设动词和预设名词;
将预设名词和待测试语句进行与运算,获取不在运算结果内的语句,根据不在运算结果内的语句建立对应操作语句。
在上述实施例中,以步骤S101中测试用例为例,预设位置为测试步骤中第一行的内容,将测试步骤内容中第一行“新建文件类型对象”语句进行分析拆分,检查拆分语句中是否包对应的预设动词,如新建、增加、添加、删除、编辑、修改、查询、查找、去掉等关键动作动词;检查拆分语句中是否包含对应的预设名词,如文件类型对象。“文件类型对象”和测试内容“新建文件类型对象”进行与运算后获取不在结果内的数据为“新建”,符合预设动词,将该数据存储在test_operate=[‘新建’]列表中,得到当前测试例的操作为新建动作,遍历当前测试页面中是否有新建、添加、新增等关键性按钮,如果遍历到有按钮信息为新建,则将该按钮位置存储在,test_opertae_path对象中,则建立出来一个点击新建操作,其他测试项例如删除、查询均可以通过相同方法进行建立,本发明在此不做赘述。
请参阅图3,图3为本发明提供的步骤S105的一实施例的流程示意图,在本发明的一些实施例中,对待测试功能需求进行测试包括正向测试和反向测试;根据自动化测试脚本,对待测试功能需求进行测试并与预期结果进行对比,得到目标测试结果,包括:
S301、将每一测试步骤中非预设位置的测试语句进行拆分,确定测试内容;
S302、对测试内容进行正向测试和反向测试,得到正向测试结果和反向测试结果;
S303、将正向测试结果和反向测试结果与预期结果进行对比,得到目标测试结果。
在本发明具体的实施例中,步骤S301将测试步骤内容除第一行以外的内容进行分析拆分,以步骤S101中的测试用例为例,拆分后得到:
---名称(长度1-31字符);
---描述(长度0-127);
---类型(长度:1-15|类型最多:64个|大小写);
分析拆分结果为:
关键词A:“---”区分此项为测试步骤内容;
关键词B:名称、描述、类型则是代表要测试模块名称;
关键词C:(xxxx)代表该对象要测试的内容范围,包括正向和反向测试;
即确定了测试内容。
在本发明具体的实施例中,步骤S302根据分析结果,在新建页面对名称输入框进行正向测试和反向测试。定位名称输入框位置:查找当前页面所有tr的text描述信息字段为“名称”。
例如:browser.driver.find_element_by_xpath("…xxx…").text==名称;
找到名称所在行,获取该行的input框位置,则是名称对象输入框的位置;
在根据关键词C中的测试范围的数据进行填写提交,则为正向配置测试,使用不在测试范围内的数据进行填写提交,则为反向配置测试。
在本发明具体的实施例中,步骤S303提取步骤S103中预期结果,将预期结果与正向配置测试和反向配置测试进行对比,并确定最终测试结果是否通过,即目标测试结果。
在本发明的一些实施例中,将正向测试结果和反向测试结果与预期结果进行对比,得到目标测试结果,包括:
若进行正向测试,正向测试结果通过,且预期结果也为通过时,则此项测试通过;
若进行反向测试,反向测试结果通过,但是预期结果为失败时,则此项测试失败;
将所有测试失败项单独存储,将所有目标测试结果存储在预设结果存储位置。
在上述实施例中,将预期结果与正向配置测试和反向配置测试进行对比,正向配置提交,页面实际配置成功,与预期结果进行比对也是成功,则此项测试PASS;反向配置提交,页面实际配置成功,与预期结果进行对比不相同,则此项测试BUG。将所有BUG测试项单独存储在BUG_LIST中,在问题进行修复后,直接用于验证BUG是否正常。整体的测试例也会存储在设置的功能模块中,可以在后面进行二轮测试使用,可以直接进行覆盖性测试,全程无需测试人员人工干预,每一次测试完成后均会将当前测试结果整理,根据测试步骤的标题,输出此项测试是否BUG或PASS。
需要说明的是,当测试不通过(BUG)时,需要进行及时定位与分析问题原因,例如:当配置某一个模块无法提交时。通过页面返回结果判断是否返回200ok,如果返回其他内容(403/500/404)则代表前端语法编写错误,如果配置提交下去后页面显示信息不对,例如:名称显示到描述上。通过命令行后台定位命令:debug xml file对比前端下发内容和实际内容判断是否一致,如果不一致则是前端下发内容错误,如果一致则是后端存储配置文件内容错误。
在测试过程中检测命令行后台是否会打印关键敏感词(Failed、not alive、error、NMI、通信超时等等),根据不同的敏感词进行问题定位,例如:打印dplane notalive,则代表当前测试模块进程出现异常,查看堆栈信息(gdb/usr/local/sbin/dplanexxx),根据堆栈异常信息,提供给开发进行代码整改;针对测试过程中遇到的问题,该专利工具会进行自动初步定位,从而减少后续重新进行问题复现的时间和资源。
在本发明的一些实施例中,根据目标测试结果,生成测试报告,并发送测试报告给相关部门,包括:
根据目标测试结果中的测试失败项,对与测试失败项相似的测试项进行重复测试,记录测试过程;
根据目标测试结果,对测试过程进行分析总结,生成测试报告,并将测试报告发送给相关部门。
在上述实施例中,根据目标测试结果中的测试失败项,对与测试失败项相似的测试项进行重复测试,也即举一反三测试。
根据问题现象,进行相似类型测试例举一反三范围覆盖测试,排查是否还会有相同类型问题存在,例如配置对象名称后在对象列表显示名称为空,则针对所有包含名称关键字的测试项进行相同方法的测试,排查是否会有类似问题,再排查所有引用到该模块名称的地方,显示名称是否正确,排查在其他模块的引用中,名称显示是否正确;
通过举一反三可以得知当前问题是单点问题还是共性问题,如果是共性问题,则跳过当前包含名称的测试项,如果是单点问题则进行问题定位溯源问题根因分析。
测试报告内容以列表形式展现,测试用例对应测试结果(通过(PASS)/不通过(BUG)),记录测试过程,对测试不通过项,有输出测试问题分析原因,对测试不通过项,该专利工具进行了哪些举一反三测试,举一反三中是否也有相同问题;
针对整体测试用例执行结果有总结分析:当前测试模块,问题最多的点是哪个地方,出现问题最多的原因是什么原因,请开发人员针对原因进行整改,并在后续开发功能时注意出现问题的原因,修改开发模式。
需要说明的是,本发明还包括问题验证,具体如下:
为解决当前流程复杂耗时较多的情况,本发明优点在于记录问题BUG_LIST,在后面问题回归测试、二轮测试和稳定性测试时,测试例可以复用,根据测试结果对BUG_LIST中数据进行多次测试,确保问题修改无误;并且本发明会记录当前测试模块不通过的问题和原因,在回归测试当前模块和其他模块时会智能划分测试优先级,出现问题次数越多,则证明优先级越高,根据测试项的优先级确定重点测试项,测试步骤会参考之前测试不通过项的步骤进行测试;
例如当前测试项配置模块,配置名称时,配置要求不允许超过5个字符,但却可以配置6个字符,那么如果多个测试项均出现规格要求不正确的问题,则证明规格要求测试优先级最高,当接收到另外一个新模块测试时会优先遍历优先级高的测试步骤,先进行规格测试,再进行其他功能测试,在任何一个测试阶段都不会少,从而保障产品功能稳定可用。
为了更好实施本发明实施例中的基于测试例自动测试方法,在基于测试例自动测试方法基础之上,对应的,请参阅图4,图4为本发明提供的基于测试例自动测试装置的一实施例的结构示意图,本发明实施例提供了一种基于测试例自动测试装置400,包括:
编写模块401,用于获取待测试功能需求,根据待测试功能需求编写预设格式的测试用例;
上传模块402,用于将测试用例上传至测试工具,并输入待测试设备信息;
读取模块403,用于测试工具读取解析测试用例,确定测试路径、测试步骤以及预期结果;
生成模块404,用于根据测试路径以及测试步骤,生成自动化测试脚本;
测试模块405,用于根据自动化测试脚本,对待测试功能需求进行测试并与预期结果进行对比,得到目标测试结果;
分析模块406,用于根据目标测试结果,生成测试报告,并发送测试报告给相关部门。
这里需要说明的是:上述实施例提供的装置400可实现上述各方法实施例中描述的技术方案,上述各模块或单元具体实现的原理可参见上述方法实施例中的相应内容,此处不再赘述。
请参阅图5,图5为本发明实施例提供的电子设备的结构示意图。基于上述基于测试例自动测试方法,本发明还相应提供了一种基于测试例自动测试设备,基于测试例自动测试设备可以是移动终端、桌上型计算机、笔记本、掌上电脑及服务器等计算设备。该基于测试例自动测试设备包括处理器510、存储器520及显示器530。图5仅示出了电子设备的部分组件,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
存储器520在一些实施例中可以是基于测试例自动测试设备的内部存储单元,例如基于测试例自动测试设备的硬盘或内存。存储器520在另一些实施例中也可以是基于测试例自动测试设备的外部存储设备,例如基于测试例自动测试设备上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(FlashCard)等。进一步地,存储器520还可以既包括基于测试例自动测试设备的内部存储单元也包括外部存储设备。存储器520用于存储安装于基于测试例自动测试设备的应用软件及各类数据,例如安装基于测试例自动测试设备的程序代码等。存储器520还可以用于暂时地存储已经输出或者将要输出的数据。在一实施例中,存储器520上存储有基于测试例自动测试程序540,该基于测试例自动测试程序540可被处理器510所执行,从而实现本申请各实施例的基于测试例自动测试方法。
处理器510在一些实施例中可以是一中央处理器(Central Processing Unit,CPU),微处理器或其他数据处理芯片,用于运行存储器520中存储的程序代码或处理数据,例如执行基于测试例自动测试方法等。
显示器530在一些实施例中可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。显示器530用于显示在基于测试例自动测试设备的信息以及用于显示可视化的用户界面。基于测试例自动测试设备的部件510-530通过系统总线相互通信。
在一实施例中,当处理器510存储器520中基于测试例自动测试程序540时实现如上的基于测试例自动测试方法中的步骤。
本实施例还提供了一种计算机可读存储介质,其上存储有基于测试例自动测试程序,该基于测试例自动测试程序被处理器执行时实现以下步骤:
获取待测试功能需求,根据待测试功能需求编写预设格式的测试用例;
将测试用例上传至测试工具,并输入待测试设备信息;
测试工具读取解析测试用例,确定测试路径、测试步骤以及预期结果;
根据测试路径以及测试步骤,生成自动化测试脚本;
根据自动化测试脚本,对待测试功能需求进行测试并与预期结果进行对比,得到目标测试结果;
根据目标测试结果,生成测试报告,并发送测试报告给相关部门。
综上,本实施例提供的一种基于测试例自动测试的方法、装置、设备及存储介质,根据待测试功能需求编写相应的测试用例,根据测试用例确定待测试功能需求的测试路径、测试步骤以及预期结果,通过测试路径确定当前测试位置,从而避免了漏测的出现,且可以在测试的过程中随时实现自动化测试,然后再基于测试步骤,生成自动化测试脚本,通过自动化测试脚本实现对待测试功能需求的自动化测试,将重复性的测试内容进行整合,设计合理的测试步骤,实现自动化测试,减少了测试人员的重复性工作,节约了测试时间,降低了人为漏测的概率。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
- 一种基于测试例自动测试的方法、装置、设备及存储介质
- 一种基于Netperf的网络自动测试方法、装置、终端及存储介质