一种软件自动测试方法及其系统
文献发布时间:2023-06-19 10:24:22
技术领域
本发明涉及计算机软件技术,尤其涉及一种软件测试技术,具体的为一种自动软件测试技术。
背景技术
软件测试技术领域具有一定的操作门槛,软件测试技术人员需要掌握一定的编程技术才能自主实现测试流程,当测试的功能多而更新较为频繁时,需要技术人员频繁修改测试代码以实现对应的操作。对于没有经验的技术人员,入行门槛高,不利于应用。
发明内容
本发明针对现有技术中的缺点,提供了一种能快速掌握测试流程的系统和执行方法。
为了解决上述技术问题,本发明通过下述技术方案得以解决:
一种软件自动测试方法,包括步骤:
设置一组或多组用例组,用例组含用例组名称;
每组用例组下设置一个或多个用例,用例包括用例名称;
每一用例设置有对应的一个或多个接口;接口数据包括接口地址和参数;
用例所对应的接口生成接口列表;
执行设置好的用例或用例组。
可选的,执行设置好的用例或用例组的方法包括:
单用例执行方法:选择所需测试用例,查询所选择用例下的接口列表,顺序执行接口列表下的接口;
或,用例组执行方法:选择所需测试的用例组,查询所述用例组下的用例列表,根据单用例执行方法执行用例列表下的用例。
可选的,单用例执行方法包括:
根据所选择用例,查询mysql所述用例下的接口列表,顺序运行接口列表中的接口;
接口的运行方法包括:
在调用接口前,查询所述接口的前置处理参数,执行接口前清除数据和等待时间;
查询请求地址和请求内容,调用所述接口,获取响应值,提取响应值存储redis缓存;
查询校验单元的参数,执行校验;
查询后置处理单元的参数,清除接口运行后的数据和等待时间。
可选的,选择所需测试的用例组,查询所述用例组下的用例列表,
根据单用例执行方法顺序执行用例列表下的用例;
或,多线程执行所述用例列表下的用例。
可选的,所述用例的多线程执行方法:
设置用例并发数n,根据并发数n创建有n个线程的java线程池,把用例列表中的用例提交线程池执行,根据单用例执行方法执行每个用例。
可选的,所述请求内容参数包括body参数、响应值提取参数、循环处理参数、并发设置参数和独立用户参数;
请求地址body参数包括key-value格式和json格式;
获取响应值包括:获取接口的响应数据,包括json路径获取和正则匹配获取,获取的响应值存储redis,用于校验或下个接口传参;
循环处理:针对异步接口,执行轮询,确认接口响应未某个特定的值,再执行下个流程;用户设置实际值和期望值、循环最多次数和每次循环等待时间;
并发参数设置:对需要并发执行的接口,设置并发数量。
本发明还提供一种软件自动测试系统,包括一组或多组用例组,以及运行单元;
所述用例组包括一个或多个用例;
所述用例,包括接口单元;
所述接口单元,用于设置接口地址;
所述运行单元,用于查询用例接口单元,执行用例组下所有接口单元数据。
可选的,所述用例包括:
接口名称单元,用于设置接口id,对接相应的测试接口;
请求地址单元,用于设置接口地址,执行时获取接口地址,对接相应的测试接口;
请求内容单元,包括设置接口请求body参数、响应值提取参数、循环治理请求参数和并发数量;
前置处理单元,用于设置前置处理参数,在调用接口前执行,执行接口前清除数据和等待时间;
后置处理单元,用于设置后置处理参数,用于接口执行后的最后一个步骤,清除接口运行后的数据和等待时间;
校验单元,用于设置校验参数,用于判断接口执行情况。
可选的,所述请求内容单元包括:
请求body单元,用于设置请求body参数;
响应值提取单元,用于设置响应值提取参数;
循环处理单元,设置实际值和期望值,循环最多次数和每次循环等待时间;
并发设置单元,当接口需要并发测试,用户需要设置并发数量;
独立用户单元,用于设置对应用例接口其他可以使用的用户。
可选的,
所述校验单元包括,
响应值校验单元:用于设置校验参数,包括实际值、条件、期望值和描述;
mysql校验单元:用于设置mysql校验参数,包括sql、字段、期望值和描述;
并发校验单元:用于设置响应文本,包含字段和数量;
所述前置处理单元和所述后置处理单元均包括,
Msql添加单元:用于设置sql语句,可执行sql的增查改删;
Redis添加单元:用于设置redis的key和value,可实现redis缓存的清除和更新;
固定等待时间设置单元:执行接口前等待。
本发明的有益效果:
1、基于本发明所披露的一种软件自动测试方法以及软件自动测试方法系统实现了一种自动测试平台,技术人员在所述测试平台设置用例和用例组数据,即可实现软件应用测试;编写自动化用例效率高,门槛低,无需编写代码。用例数据,运行数据全部保存数据库,维护方便;方便集成到运维的发布平台,方便实现CI/CD。
2、本发明披露的接口自动化测试主要针对后端服务,当其中某些系统发生变更的时候用户只需要运行对应的用例组,不需要运行全部的接口自动化用例。用例组所包含的用例通常是某个服务或几个相同业务场景的服务,在一些例如广告领域,服务内容经常修改频繁,这时,本技术方案简化了传统的测试过程。
具体的,每个用例组运行都是独立的,用例组包括某个场景的多个接口自动化用例,运行某个用例组就会把这个用例组下面的用例依次运行。用例组的运行逻辑是查询数据库该用例组下的所有用例,执行的时候可以串行,也可以多线程执行(速度更快),当执行完成后可实现失败用例重试的功能。
附图说明
(无)
具体实施方式
下面结合实施例对本发明做进一步的详细说明,以下实施例是对本发明的解释而本发明并不局限于以下实施例。
一种软件自动测试系统,包括一组或多组用例组,以及运行单元,所述用例组包括一个或多个用例;所述用例,包括接口单元;所述接口单元,用于设置接口地址和参数;
所述运行单元,用于查询用例接口单元,执行用例组下所有接口单元数据;
其中每一用例设有用例id,每一用例组设有用例组id。
其中,所述用例包括:
接口名称单元,用于设置接口id,对接相应的测试接口;
请求地址单元,用于设置接口地址,执行时获取接口地址,对接相应的测试接口;
请求内容单元,包括设置接口请求body参数、响应值提取参数、循环治理请求参数和并发数量;
前置处理单元,用于设置前置处理参数,在调用接口前执行,执行接口前清除数据和等待时间;
后置处理单元,用于设置后置处理参数,用于接口执行后的最后一个步骤,清除接口运行后的数据和等待时间;
校验单元,用于设置校验参数,用于判断接口执行情况。
以上配置均对应同一个接口id,多个接口id对应一个用例id,多个用例id对应同一个用例组id。执行的时候根据用例组id,查询对应的用例id,再根据用例id查询接口id,执行接口,接口执行内容是:前置处理,请求接口,校验,后置处理。
其中,所述请求内容单元包括:
请求body单元,用于设置请求body参数,包括key-value格式和json格式,并可以参数化,具体值从上一个接口的返回值获得或者在用例设置里直接赋值,用例运行的时候自动给变量赋值;
响应值提取单元,用于设置响应值提取参数;
循环处理单元,设置实际值和期望值,循环最多次数和每次循环等待时间;
并发设置单元,当接口需要并发测试,用户需要设置并发数量;
独立用户单元,用于设置对应用例接口其他可以使用的用户。
其中,所述校验单元包括,
响应值校验单元:用于设置校验参数,包括实际值、条件、期望值和描述;
mysql校验单元:用于设置mysql校验参数,包括sql、字段、期望值和描述;
并发校验单元:用于设置响应文本,包含字段和数量;
所述前置处理单元包括:
Msql添加单元:用于填写sql语句,可执行sql的增查改删;
Redis添加单元:用于填写redis的key和value,可实现redis缓存的清除和更新;
固定等待时间设置单元:执行接口前等待。
所述后置处理单元包括:
Msql添加单元:用于填写sql语句,可执行sql的增查改删;
Redis添加单元:用于填写redis的key和value,可实现redis缓存的清除和更新;
固定等待时间设置单元:执行接口前等待。
实施例2:
一种软件自动测试方法,包括步骤:
设置一组或多组用例组,用例组含用例组名称;
每组用例组下设置一个或多个用例,用例包括用例名称;
每一用例设置有对应的一个或多个接口;
用例所对应的接口生成接口列表;
执行设置好的用例或用例组。
其中,执行设置好的用例或用例组的方法包括:
单用例执行方法:选择所需测试用例,查询所选择用例下的接口列表,顺序执行接口列表下的接口;
或,用例组执行方法:选择所需测试的用例组,查询所述用例组下的用例列表,根据单用例执行方法执行用例列表下的用例。
其中,单用例执行方法包括:
根据所选择用例,查询mysql所述用例下的接口列表,顺序运行接口列表中的接口;
详细的,这里所述单用例执行方法为每个用例并发执行或独立顺序运行,可以选择一个用例或多个用例执行。
接口的运行方法包括:
在调用接口前,查询所述接口的前置处理参数,执行接口前清除数据和等待时间;
查询请求地址和请求内容,调用所述接口,获取响应值,提取响应值存储redis缓存;
查询校验单元的参数,执行校验;
查询后置处理单元的参数,清除接口运行后的数据和等待时间。
运行完成后,如果有失败用例,且用户设置了失败重试,则再次运行失败用例,最后生成测试报告。
用例组执行方法包括:选择所需测试的用例组,查询所述用例组下的用例列表,
根据单用例执行方法顺序执行用例列表下的用例;
或,多线程执行所述用例列表下的用例。
所述用例的多线程执行方法包括:设置用例并发数n,根据并发数n创建有n个线程的java线程池,把用例列表中的用例提交线程池执行,根据单用例执行方法执行每个用例。
具体的,选择需要执行的用例组,点击用例组运行,根据用例组id查询数据库中该用例组下的用例列表,得到该用例组下的用例,放到执行list中,根据设置的并发个数n,创建一个线程数是n的线程池,然后把用例list的用例提交线程池执行,每个线程会执行一个用例。
线程池每个线程执行的逻辑是:根据该用例的id,查询该用例下的所有接口,放到list1用,对这个list1排序,然后循环遍历执行list1的每个接口。
每个接口的执行逻辑是:根据接口id查询,查询前置处理,并运行对应的操作,然后查询接口地址和参数,调用接口,根据接口id查询校验配置,执行校验,最后根据接口id查询后置处理配置,执行后置处理。
实施例3:
本实施例披露一种基于实施例1和实施例2所述的自动测试平台,用于对软件商品的功能测试,一个软件产品分为三级分类,软件产品为一级分类组,其包括若干二级分类组,所述二级分类组为上述的用例组,每个二级分类组包括若干三级分类组,三级分类组内设置具体用例名称和配置;每个用例组包括的是某个服务或几个相同业务场景的服务。
具体包括:运行配置单元:用于配置实施例1和实施例2所述的单元,包括设置用例名称、用例组、用例和用例组序列、运行时间、执行人、进度、编辑模块等。
编辑单元,用于编辑实施例1和实施例2所述的功能,包括删除、修改、控制运行/停止,设置并发数,失败重试的次数,定时触发事件等功能。
测试报告单元:用于运行完成后对运行过程和结果的记录,包括用例组名称、执行人、时间、用例总数、失败数和成功率。所述测试报告单元中还设置有用例的运行详情,并可点击跳转对应用例,方便调试失败用例。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。
所述单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何在本发明揭露的技术范围内的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
- 一种软件测试方法及软件测试自动化管理系统
- 一种自动化测试辅助系统及相应的软件自动测试方法