一种测试脚本的生成方法、装置及系统与流程

未命名 10-21 阅读:64 评论:0


1.本技术涉及软件测试技术领域,尤其涉及一种测试脚本的生成方法、装置、电子设备及计算机可读存储介质。


背景技术:

2.对于云端接口而言,对云端的应用程序接口(application programming interface,api)进行性能测试可以有助于检查系统性能、发现问题、优化系统、监控性能变化等方面,进而可以帮助保障产品在上线后可以提供稳定高效的服务。
3.对api进行性能测试需要使用相应的工具,比如jmeter、locust等,对于大多数大规模的企业测试,选择jmeter更适合,能够应对更为复杂的场景。在使用jmeter进行性能测试的过程中,对于很多测试团队来说,因为不同接口需要不同的性能要求,每个接口需要配置不同的性能测试参数,所以在制定测试计划的时候,需要人工在客户端的gui界面中手动分别创建一个个的测试接口,或者,根据jmeter的规范,人工分别针对每个接口编写对应的性能测试脚本,并一个一个性能测试脚本进行手动添加。
4.上述创建性能测试脚本的方法,在需要对少数几个接口做性能测试的时候,需要花费不了大量人工时间;对于一个大型复杂的系统来说,由于涉及到很多项目,每个项目又存在多个接口,有的项目甚至有上百个接口,对于这种项目来说,如果还是人工手动编写性能测试脚本就显得捉襟见肘,需要花费大量的时间来编写性能测试脚本,并且人工编写脚本过程中容易出现错误,这对于项目进度来说是个不可忽视以及亟待解决的问题。因此,亟需一种能够自动生成性能测试脚本的方法。


技术实现要素:

5.有鉴于此,本技术实施例提供了一种测试脚本的生成方法、装置、电子设备及计算机可读存储介质,以解决现有技术中人工、手动编写性能测试脚本需要花费大量的时间,并且人工编写脚本过程中容易出现错误,导致接口测试的效率低下的问题。
6.本技术实施例的第一方面,提供了一种测试脚本的生成方法,包括:
7.获取测试用例对应的测试服务信息;其中,所述测试服务信息包括测试接口信息、接口性能参数、测试工具类型;
8.根据所述测试接口信息,确定目标测试接口,以及,将所述目标测试接口的配置参数设置为所述接口性能参数;
9.根据所述测试工具类型和所述目标测试接口,生成所述测试工具类型对应的数据格式的测试数据;
10.根据所述测试数据,生成所述测试工具类型对应的测试脚本。
11.本技术实施例的第二方面,提供了一种测试脚本的生成装置,包括:
12.信息获取模块,被配置为获取测试用例对应的测试服务信息;其中,所述测试服务信息包括测试接口信息、接口性能参数、测试工具类型;
13.接口配置模块,被配置为根据所述测试接口信息,确定目标测试接口,以及,将所述目标测试接口的配置参数设置为所述接口性能参数;
14.数据生成模块,被配置为根据所述测试工具类型和所述目标测试接口,生成所述测试工具类型对应的数据格式的测试数据;
15.脚本生成模块,被配置为根据所述测试数据,生成所述测试工具类型对应的测试脚本。
16.本技术实施例的第三方面,提供了一种测试脚本的生成系统,包括:api配置管理模块、微服务管理模块、测试计划管理模块和脚本生成器;
17.所述微服务管理模块,用于获取测试用例对应的测试服务信息;其中,所述测试服务信息包括测试接口信息、接口性能参数、测试工具类型;
18.所述api配置管理模块,用于根据所述测试接口信息,确定目标测试接口,以及,将所述目标测试接口的配置参数设置为所述接口性能参数;
19.所述测试计划管理模块,用于根据所述测试工具类型和所述目标测试接口,生成所述测试工具类型对应的数据格式的测试数据;
20.所述脚本生成器,用于根据所述测试数据,生成所述测试工具类型对应的测试脚本。
21.本技术实施例的第四方面,提供了一种电子设备,包括存储器、处理器以及存储在存储器中并且可在处理器上运行的计算机程序,该处理器执行计算机程序时实现上述方法的步骤。
22.本技术实施例的第五方面,提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述方法的步骤。
23.本技术实施例与现有技术相比存在的有益效果是:本技术实施例在获取测试用例对应的测试服务信息后,其中,所述测试服务信息包括测试接口信息、接口性能参数、测试工具类型;可以先根据所述测试接口信息,确定目标测试接口,以及,将所述目标测试接口的配置参数设置为所述接口性能参数;然后,可以根据所述测试工具类型和所述目标测试接口,生成所述测试工具类型对应的数据格式的测试数据;接着,可以根据所述测试数据,生成所述测试工具类型对应的测试脚本。可见,本实施例可以通过获取测试用例对应的测试服务信息,利用测试服务信息中的测试接口信息、接口性能参数、测试工具类型,生成测试工具类型对应的数据格式的测试数据,并且可以根据该测试数据,生成该测试工具类型对应的测试脚本。这样,本实施例便可以实现将测试用例对应的测试服务信息自动转换为该测试用例对应的测试脚本,而不需要人工花费大量时间手动编写测试脚本,并且可以避免人工编写脚本过程中由于人工操作错误所导致的人工所编写的测试脚本出现错误的问题,因此,本实施例所提供的方法可以大大降低人力物力成本和时间成本,提高了接口性能测试的测试脚本的生成效率以及准确性,进而提高了接口性能测试的测试效率和准确率。
附图说明
24.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附
图获得其它的附图。
25.图1是本技术实施例的应用场景的场景示意图;
26.图2是本技术实施例提供的一种测试方法的流程示意图;
27.图3是本技术实施例提供的一种测试方法的系统示意图;
28.图4是本技术实施例提供的一种测试装置的结构示意图;
29.图5是本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
30.以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本技术实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本技术。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本技术的描述。
31.下面将结合附图详细说明根据本技术实施例的一种测试方法和装置。
32.图1是本技术实施例的应用场景的场景示意图。该应用场景可以包括终端设备1、2和3、服务器4以及网络5。
33.终端设备1、2和3可以是硬件,也可以是软件。当终端设备1、2和3为硬件时,其可以是具有显示屏且支持与服务器4通信的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等;当终端设备1、2和3为软件时,其可以安装在如上该的电子设备中。终端设备1、2和3可以实现为多个软件或软件模块,也可以实现为单个软件或软件模块,本技术实施例对此不作限制。进一步地,终端设备1、2和3上可以安装有各种应用,例如数据处理应用、即时通信工具、社交平台软件、搜索类应用、购物类应用等。
34.服务器4可以是提供各种服务的服务器,例如,对与其建立通信连接的终端设备发送的请求进行接收的后台服务器,该后台服务器可以对终端设备发送的请求进行接收和分析等处理,并生成处理结果。服务器4可以是一台服务器,也可以是由若干台服务器组成的服务器集群,或者还可以是一个云计算服务中心,本技术实施例对此不作限制。
35.需要说明的是,服务器4可以是硬件,也可以是软件。当服务器4为硬件时,其可以是为终端设备1、2和3提供各种服务的各种电子设备。当服务器4为软件时,其可以是为终端设备1、2和3提供各种服务的多个软件或软件模块,也可以是为终端设备1、2和3提供各种服务的单个软件或软件模块,本技术实施例对此不作限制。
36.网络5可以是采用同轴电缆、双绞线和光纤连接的有线网络,也可以是无需布线就能实现各种通信设备互联的无线网络,例如,蓝牙(bluetooth)、近场通信(near field communication,nfc)、红外(infrared)等,本技术实施例对此不作限制。
37.用户可以通过终端设备1、2和3经由网络5与服务器4建立通信连接,以接收或发送信息等。具体地,当用户需要生成测试用例对应测试脚本时,可以向终端设备1、2和3输出脚本生成指令,其中,脚本生成指令可以包括测试用例,终端设备1、2和3可以将脚本生成指令向服务器4发送。服务器4获取脚本生成指令后,服务器4可以先获取测试用例对应的测试服务信息;其中,所述测试服务信息包括测试接口信息、接口性能参数、测试工具类型。然后,服务器4可以根据所述测试接口信息,确定目标测试接口,以及,将所述目标测试接口的配置参数设置为所述接口性能参数。接着,服务器4可以根据所述测试工具类型和所述目标测
试接口,生成所述测试工具类型对应的数据格式的测试数据。最后,服务器4可以根据所述测试数据,生成所述测试工具类型对应的测试脚本。这样,本实施例可以通过获取测试用例对应的测试服务信息,利用测试服务信息中的测试接口信息、接口性能参数、测试工具类型,生成测试工具类型对应的数据格式的测试数据,并且可以根据该测试数据,生成该测试工具类型对应的测试脚本。这样,本实施例便可以实现将测试用例对应的测试服务信息自动转换为该测试用例对应的测试脚本,而不需要人工花费大量时间手动编写测试脚本,并且可以避免人工编写脚本过程中由于人工操作错误所导致的人工所编写的测试脚本出现错误的问题,因此,本实施例所提供的方法可以大大降低人力物力成本和时间成本,提高了接口性能测试的测试脚本的生成效率以及准确性,进而提高了接口性能测试的测试效率和准确率。
38.需要说明的是,终端设备1、2和3、服务器4以及网络5的具体类型、数量和组合可以根据应用场景的实际需求进行调整,本技术实施例对此不作限制。
39.图2是本技术实施例提供的一种测试脚本的生成方法的流程示意图。图2的测试脚本的生成方法可以由图1的服务器执行。如图2所示,该测试脚本的生成方法可以包括:
40.s201,获取测试用例对应的测试服务信息。
41.在本实施例中,测试用例可以理解为对接口的性能进行测试的案例。在获取到测试用例后,可以先提取测试用例对应的测试服务信息,其中,测试服务信息可以理解为测试用例中需要进行测试的相关信息,例如,在一种实现方式中,测试服务信息可以包括测试接口信息、接口性能参数、测试工具类型;在一种实现方式中,测试服务信息还可以包括测试用例的名称等信息。
42.在本实施例中,测试工具类型可以理解为用于测试接口的性能参数的工具,即需要用于执行测试用例的工具类型。可以理解的是,测试工具类型即为测试工具,在一些实施例中,测试工具类型可以为性能测试需要使用相应的工具,比如jmeter、locust等,对于大多数大规模的企业测试,选择jmeter更适合,能够应对更为复杂的场景。具体地,在使用jmeter做性能测试的过程中,因为不同接口需要不同的性能要求,因此,每个接口需要配置不同的性能测试参数。
43.测试接口信息可以理解为需要进行测试的接口的相关信息,具体地,测试接口信息可以理解为能够确定到待测试的接口的信息;在一种实现方式中,测试接口信息可以为服务访问地址,服务访问地址可以理解为用于确定待测试服务的接口的位置信息、接口的名称等信息,举例来说,假设测试接口信息为包含api信息的服务访问地址“http://{your-api-domain}/v2/api-docs”,这样,便可以通过直接访问该服务访问地址从而直接获取到api信息(即待测试服务的接口)。
44.接口性能参数可以理解为对接口进行测试时,需要对接口所配置的性能参数。在一种实现方式中,接口性能参数可以包括以下至少一种:线程参数、变量配置参数、断言参数和超文本传输协议请求参数。其中,线程参数可以包括接口对应的线程组、并发用户数、循环次数、延迟时间等参数;变量配置参数可以理解为在接口测试过程中所需要使用到的接口的变量参数,在一种实现方式中,可以利用变量配置器定义测试中需要使用的变量(即变量配置参数);断言参数可以理解为测试所期望得到的接口响应接口,即断言参数可以用于检查响应结果是否符合预期;超文本传输协议请求参数可以包括http请求信息,http请
求信息可以用于发送http请求并获取响应结果,超文本传输协议请求参数中可以设置http的请求方法、参数、头部信息等。
45.在一种实现方式中,可以为用户提供一个平台页面,以便用户可以通过该平台页面输入测试用例对应的测试服务信息。例如,如图3所示,本实施例提供一个测试平台管理模块系统,该系统包括微服务管理模块、api配置管理模块、测试计划管理模块、脚本生成器服务;用户进入系统,可以查看所有内部所有服务,以及每个服务包含的api信息,用户可以选择目标api(即测试接口信息),配置上性能测试参数(接口性能参数),生成测试计划(即测试数据),并一键生成接口性能的测试脚本。具体地,操作人员(例如测试、开发的业务人员)可以通过微服务管理模块的平台手动录入测试用例对应的测试服务信息,例如,可以手动录入测试接口信息、接口性能参数、测试工具类型。具体地,如图3中所示,操作人员可以先通过平台页面设置包括了性能测试的策略、线程等的api的性能参数配置(即接口性能参数)。
46.在另一种实现方式中,本实施例也可以提供信息导入工具,以便用户可以利用信息导入工具直接导入测试用例对应的测试服务信息。如图3所示,微服务管理模块也支持一键导入,例如微服务管理模块可以支持用户通过devops中kubernetes的api,一键导入至少包括测试接口信息、接口性能参数、测试工具类型的测试用例对应的测试服务信息。
47.需要说明的是,图3中微服务管理模块中可以用java实现这个平台后端,可以用mysql做数据存储库,使用vue技术渲染前端页面。微服务管理模块的一键导入方式具体可以为:页面提供一键导入功能,提供配置输入项:一个kubernetes集群的api访问地址,点击导入按钮,可以直接拉取kubernetes集群部署的微服务信息,用户可以通过抽取服务的名称、环境变量等必要的信息,并存储在mysql数据库中,即将测试用例对应的测试服务信息存储在mysql数据库中。微服务管理模块的手动录入方式具体可以为:页面提供手动录入功能,手动录入微服务信息(即测试用例对应的测试服务信息),点击保存,便可以实现将测试用例对应的测试服务信息存储在mysql数据库中。
48.s202,根据所述测试接口信息,确定目标测试接口,以及,将所述目标测试接口的配置参数设置为所述接口性能参数。
49.在本实施例中在获取到测试接口信息后,可以先确定目标测试接口,即,可以根据测试接口信息确定需要进行测试的目标测试接口。例如,若所述测试接口信息包括服务访问地址;则可以对所述服务访问地址进行访问,获取所述服务访问地址对应的服务中的接口;以及,将所述服务访问地址对应的服务中的接口作为目标测试接口。假设测试接口信息包括服务访问地址“http://{your-api-domain}/v2/api-docs”,则可以对该服务访问地址进行访问,读取到该服务访问地址的服务中所设置的接口,从而可以将该服务访问地址对应的服务中的接口作为目标测试接口。或者,若测试接口信息包括直接设置了接口的名称和接口的位置信息,则也可以直接根据接口的名称和接口的位置信息,获取到需要进行测试的接口,并将这些接口作为目标测试接口。然后,可以将目标测试接口的配置参数设置为测试服务信息中的接口性能参数,以便不同的目标测试接口可以达到测试用例对于不同接口所要求的不同的性能要求。
50.作为一种示例,如图3所示,测试平台管理模块系统中的api配置管理模块在获取到操作人员设置的或者微服务管理模块中存储的api的性能参数配置后,可以根据api的性
能参数配置进行api配置管理模块,可以读取所有的api信息,根据服务管理模块中的服务信息,访问swagger的json路径,获取所有api信息,并且提供性能参数配置,从而实现了根据所述测试接口信息,确定目标测试接口,以及,将所述目标测试接口的配置参数设置为所述接口性能参数的操作。需要说明的是,api配置管理模块可以提供一个主页面,该主页面是一个微服务列表,每一行微服务数据最后一列,有api配置操作按钮,点击api配置操作按钮,进入api配置页面,该api配置页面可以用于将目标测试接口的配置参数设置为接口性能参数。在一种实现方式中,api配置页面有“一键导入”和“手动录入”两个功能,可以通过这两个功能上传接口性能参数,以便可以将目标测试接口的配置参数设置为接口性能参数。具体地,一键导入的功能的具体实现方式可以为:支持一键导入实现了openapi规范的服务,点击一键导入,需要选择openapi规范类型(如:swagger),选择之后,点击导入,后端服务会基于服务地址、openapi规范类型拼接访问api的地址,获取api信息,并返回,前端页面进行预览,预览无误,点击保存,接口性能参数便可以存储在mysql数据库当中。而手动录入的实现方式可以为:用户手动录入api信息,比如接口性能参数,点击保存,接口性能参数便可以存储在mysql数据库中,以便可以将目标测试接口的配置参数设置为接口性能参数。导入或者手动录入api信息(比如,包括接口性能参数)后,api配置页面有api列表提供查询。api列表每一行数据最后一列,配置有“性能测试指标”操作按钮,点击该“性能测试指标”操作按钮,可以配置性能测试参数(即接口性能参数),例如可以包括:线程组、变量配置器、断言、http请求。
51.s203,根据所述测试工具类型和所述目标测试接口,生成所述测试工具类型对应的数据格式的测试数据。
52.在确定目标测试接口,以及,将所述目标测试接口的配置参数设置为所述接口性能参数后,可以先根据测试工具类型确定测试工具类型对应的数据格式,然后,可以将测试工具类型和所述目标测试接口,生成所述测试工具类型对应的数据格式的测试数据。即,作为一种示例,本实施例可以先根据所述测试工具类型,确定所述测试工具类型对应的数据格式;将所述测试工具类型对应的测试工具信息和所述目标测试接口对应的配置参数,转换为所述数据格式的测试数据。
53.其中,测试工具类型对应的数据格式的测试数据可以理解为测试用例对应的测试计划,测试数据可以反映测试用例对应的测试步骤以及对应的测试内容。在一种实现方式中,测试工具类型对应的数据格式的测试数据可以反映(或包括)具体需要使用的测试工具类型、需要进行测试的目标测试接口以及接口测试内容(例如具体的测试步骤内容)。需要说明的是,在一种实现方式中,测试工具类型为jmeter时,测试工具类型对应的数据格式可以为json数据格式。
54.作为一种示例,如图3所示,测试平台管理模块系统中的测试计划管理模块可以用于创建性能测试计划,具体为:录入测试计划名称,选择测试计划包含的api信息,以及性能测试工具类型(如:jmeter),生成一个json数据格式的测试计划。示例性地,测试计划管理模块可以提供一个主页面,主页面中可以设置有“性能测试计划列表”、“新增性能测试计划”、“生成性能测试脚本”等功能。点击“新增性能测试计划”按钮,进入新增性能测试计划页面,页面提供api列表查询,可根据微服务进行查询,查询出来后,可以选择多条api数据,生成性能测试计划,即实现了根据所述测试工具类型和所述目标测试接口,生成所述测试
工具类型对应的数据格式的测试数据,并且,可以在服务器后台以json文档作为存储。上个步骤新增完成后,在性能测试计划列表就可以看到性能测试计划,即测试工具类型对应的数据格式的测试数据。若需要选择某个性能测试计划(即测试数据),可点击“生成性能测试脚本”按钮,此时弹出性能测试工具下拉选择框,选择某个性能测试工具,比如选择jmeter,点击“确定”按钮,请求到服务端,会将请求这个性能测试计划(即测试工具类型对应的数据格式的测试数据)保存在数据库中,在性能测试计划列表每一行数据最后一列,可点击查看性能测试脚本,并提供下载功能。
55.s204,根据所述测试数据,生成所述测试工具类型对应的测试脚本。
56.在本实施例中,在获取到测试数据后,可以根据所述测试数据,生成所述测试工具类型对应的测试脚本。也就是说,在获取到测试数据后,将测试数据按照编程代码的要求转换成测试工具能够运行的测试脚本。
57.作为一种示例,可以先根据所述测试数据,确定所述测试数据对应的若干测试元素、各测试元素之间的关系。也就是说,在获取到测试数据后,可以从测试数据中提取测试数据中涉及到的测试元素以及各个测试元素之间的关系。其中,所述测试元素至少包括所述目标测试接口。可以理解的是,测试元素可以理解为一个元素对象,例如,可以为网页中的一个按键、一个组件,或者,一个接口。各测试元素之间的关系可以理解为各个元素之间的测试关系,例如,元素测试的先后顺序关系、元素测试的关联关系(如是否需要同时测试)等。具体地,可以先根据所述测试数据,确定该测试数据对应的目标测试接口以及目标测试接口对应的待测试组件,其中,目标测试接口对应的待测试组件可以理解为测试目标测试接口时会涉及到的测试组件,例如测试目标测试接口时会需要调用到的测试组件。然后,可以将所述目标测试接口以及所述目标测试接口对应的待测试组件作为所述测试数据对应的若干测试元素,也就是说,测试元素可以包括目标测试接口以及目标测试接口对应的待测试组件。接着,可以从测试数据中提取目标测试接口、所述目标测试接口对应的待测试组件之间的关系,例如,目标测试接口之间的测试的先后顺序关系、关联关系,目标测试接口与待测试组件之间的测试的先后顺序关系、关联关系。紧接着,可以将所述目标测试接口、所述目标测试接口对应的待测试组件之间的关系,作为所述测试数据对应的各测试元素之间的关系。
58.在确定所述测试数据对应的若干测试元素、各测试元素之间的关系后,可以确定所述若干测试元素、所述各测试元素之间的关系各自分别对应的编程代码对象。其中,编程代码对象可以理解为所述测试工具类型所支持的编程代码对应的编程代码对象,即编程代码对象可以为测试工具能够识别、运行的对象。作为一种示例,可以先分析各个测试工具类型对应的测试脚本,提取各个测试工具类型对应的关键元素,举例来说,关键元素可以为使用频率高于预设阈值的元素,例如常用到的组件、接口等;接着,可以将关键元素、以及各个关键元素之间的关系抽象成对应的编程代码对象(例如java对象),并将元素、各元素对象之间的关系与其对应的编程代码对象建立对应关系,以及存储到预设数据库中;这样,在获取到测试元素或者各测试元素之间的关系后,可以从上述预设的对应关系中,查询到测试元素、各测试元素之间的关系各自分别对应的编程代码对象。
59.接着,可以根据所述若干测试元素、所述各测试元素之间的关系各自分别对应的编程代码对象,生成所述测试工具类型对应的测试脚本。也就是说,将所述若干测试元素、
所述各测试元素之间的关系各自分别对应的编程代码对象,按照测试工具所使用的编程代码的编程语言进行编程处理,得到所述测试工具类型对应的测试脚本。具体地,可以利用测试工具所使用的编程代码的编程语言,对每个测试元素、测试元素之间的关系对应的测试步骤内容进行编程处理,得到每个测试步骤对应的测试脚本,接着,可以将每个测试步骤对应的测试脚本进行连接、拼接,便可以得到测试用例对应的测试脚本,并且该测试脚本是可以被测试工具类型对应的测试工具所运行且能得到的运行结果的。
60.在一种实现方式中,若测试工具类型为jmeter、测试工具类型对应的数据格式为json数据格式,则测试工具类型所支持的编程代码可以为java。
61.作为一种示例,如图3所示,测试平台管理模块系统中的测试计划管理模块生成测试工具类型对应的数据格式的测试数据后,可以向测试平台管理模块系统中的脚本生成器发送,以便脚本生成器可以根据所述测试数据,生成所述测试工具类型对应的测试脚本。具体地,测试平台管理模块系统中的测试计划管理模块可以将创建的测试计划(即测试数据)输入脚本生成器中,以便脚本生成器生成性能测试脚本(即测试脚本)。例如,测试计划管理模块可以将json格式的测试数据输入到脚本生成器当中,脚本生成器可以输出对应的测试脚本;其中,脚本生成器的处理逻辑为:分析多个性能测试工具(即测试工具)的脚本,提取关键组件,将性能测试工具各组件抽象成java对象,然后根据测试计划(即测试数据)的输入,匹配上各个组件,然后将各个组件对象聚合起来,生成各个性能测试工具支持的测试脚本。以测试工具为jmeter为例:整个程序由四部分组成:api接口层、应用层、领域层、持久化层;api接口层用于定义api接口,输入测试计划(即测试数据),生成性能测试脚本(即测试脚本);应用层用于负责领域层之间的编排,比如编排脚本生成领域、测试计划领域层等,举例:调用测试计划领域层查询测试计划,然后调用脚本生成领域实现脚本生成;领域层用于实现具体脚本生成业务;持久化层用于保存测试脚本。下面介绍脚本领域层的具体实现方式:分析jmeter官方文档,梳理jmeter支持的各个组件,分析jmeter的脚本,梳理脚本中各元素,以及各元素之间的关系,将所有元素和元素之间的关系,都抽象成java的对象;用于定义一个抽象类,定义一个方法,将定义的抽象类和方法与工具类型相匹配;用于定义一个组装脚本的方法,输入测试数据,输出可执行的脚本;用于定义jmeter的测试脚本(即测试工具的测试脚本)生成实现类;用于实现工具类型匹配,定义工具枚举类型,比如本实施案例为:jmeter;用于实现组装脚本的方法里面,主要是实现将测试数据中的各元素,匹配根据jmeter抽象出的各java对象,然后将这些存在值的对象根据关联关系,生成jmeter对应的测试脚本,最后将生成的测试脚本存储到数据库。
62.本技术实施例与现有技术相比存在的有益效果是:本技术实施例在获取测试用例对应的测试服务信息后,其中,所述测试服务信息包括测试接口信息、接口性能参数、测试工具类型;可以先根据所述测试接口信息,确定目标测试接口,以及,将所述目标测试接口的配置参数设置为所述接口性能参数;然后,可以根据所述测试工具类型和所述目标测试接口,生成所述测试工具类型对应的数据格式的测试数据;接着,可以根据所述测试数据,生成所述测试工具类型对应的测试脚本。可见,本实施例可以通过获取测试用例对应的测试服务信息,利用测试服务信息中的测试接口信息、接口性能参数、测试工具类型,生成测试工具类型对应的数据格式的测试数据,并且可以根据该测试数据,生成该测试工具类型对应的测试脚本。这样,本实施例便可以实现将测试用例对应的测试服务信息自动转换为
该测试用例对应的测试脚本,而不需要人工花费大量时间手动编写测试脚本,并且可以避免人工编写脚本过程中由于人工操作错误所导致的人工所编写的测试脚本出现错误的问题,因此,本实施例所提供的方法可以大大降低人力物力成本和时间成本,提高了接口性能测试的测试脚本的生成效率以及准确性,进而提高了接口性能测试的测试效率和准确率。
63.上述所有可选技术方案,可以采用任意结合形成本技术的可选实施例,在此不再一一赘述。
64.下述为本技术系统实施例,可以用于执行本技术方法实施例。对于本技术系统实施例中未披露的细节,请参照本技术方法实施例。
65.图3是本技术实施例提供的一种测试脚本的生成系统的示意图。如图3所示,该测试脚本的生成系统包括:api配置管理模块、微服务管理模块、测试计划管理模块和脚本生成器。
66.所述微服务管理模块,用于获取测试用例对应的测试服务信息;其中,所述测试服务信息包括测试接口信息、接口性能参数、测试工具类型。
67.需要说明的是,图3中微服务管理模块中可以用java实现这个平台后端,可以用mysql做数据存储库,使用vue技术渲染前端页面。微服务管理模块的一键导入方式具体可以为:页面提供一键导入功能,提供配置输入项:一个kubernetes集群的api访问地址,点击导入按钮,可以直接拉取kubernetes集群部署的微服务信息,用户可以通过抽取服务的名称、环境变量等必要的信息,并存储在mysql数据库中,即将测试用例对应的测试服务信息存储在mysql数据库中。微服务管理模块的手动录入方式具体可以为:页面提供手动录入功能,手动录入微服务信息(即测试用例对应的测试服务信息),点击保存,便可以实现将测试用例对应的测试服务信息存储在mysql数据库中。
68.所述api配置管理模块,用于根据所述测试接口信息,确定目标测试接口,以及,将所述目标测试接口的配置参数设置为所述接口性能参数。
69.作为一种示例,如图3所示,测试平台管理模块系统中的api配置管理模块在获取到操作人员设置的或者微服务管理模块中存储的api的性能参数配置后,可以根据api的性能参数配置进行api配置管理模块,可以读取所有的api信息,根据服务管理模块中的服务信息,访问swagger的json路径,获取所有api信息,并且提供性能参数配置,从而实现了根据所述测试接口信息,确定目标测试接口,以及,将所述目标测试接口的配置参数设置为所述接口性能参数的操作。需要说明的是,api配置管理模块可以提供一个主页面,该主页面是一个微服务列表,每一行微服务数据最后一列,有api配置操作按钮,点击api配置操作按钮,进入api配置页面,该api配置页面可以用于将目标测试接口的配置参数设置为接口性能参数。在一种实现方式中,api配置页面有“一键导入”和“手动录入”两个功能,可以通过这两个功能上传接口性能参数,以便可以将目标测试接口的配置参数设置为接口性能参数。具体地,一键导入的功能的具体实现方式可以为:支持一键导入实现了openapi规范的服务,点击一键导入,需要选择openapi规范类型(如:swagger),选择之后,点击导入,后端服务会基于服务地址、openapi规范类型拼接访问api的地址,获取api信息,并返回,前端页面进行预览,预览无误,点击保存,接口性能参数便可以存储在mysql数据库当中。而手动录入的实现方式可以为:用户手动录入api信息,比如接口性能参数,点击保存,接口性能参数便可以存储在mysql数据库中,以便可以将目标测试接口的配置参数设置为接口性能参数。
导入或者手动录入api信息(比如,包括接口性能参数)后,api配置页面有api列表提供查询。api列表每一行数据最后一列,配置有“性能测试指标”操作按钮,点击该“性能测试指标”操作按钮,可以配置性能测试参数(即接口性能参数),例如可以包括:线程组、变量配置器、断言、http请求。
70.所述测试计划管理模块,用于根据所述测试工具类型和所述目标测试接口,生成所述测试工具类型对应的数据格式的测试数据。作为一种示例,如图3所示,测试平台管理模块系统中的测试计划管理模块可以用于创建性能测试计划,具体为:录入测试计划名称,选择测试计划包含的api信息,以及性能测试工具类型(如:jmeter),生成一个json数据格式的测试计划。示例性地,测试计划管理模块可以提供一个主页面,主页面中可以设置有“性能测试计划列表”、“新增性能测试计划”、“生成性能测试脚本”等功能。点击“新增性能测试计划”按钮,进入新增性能测试计划页面,页面提供api列表查询,可根据微服务进行查询,查询出来后,可以选择多条api数据,生成性能测试计划,即实现了根据所述测试工具类型和所述目标测试接口,生成所述测试工具类型对应的数据格式的测试数据,并且,可以在服务器后台以json文档作为存储。上个步骤新增完成后,在性能测试计划列表就可以看到性能测试计划,即测试工具类型对应的数据格式的测试数据。若需要选择某个性能测试计划(即测试数据),可点击“生成性能测试脚本”按钮,此时弹出性能测试工具下拉选择框,选择某个性能测试工具,比如选择jmeter,点击“确定”按钮,请求到服务端,会将请求这个性能测试计划(即测试工具类型对应的数据格式的测试数据)保存在数据库中,在性能测试计划列表每一行数据最后一列,可点击查看性能测试脚本,并提供下载功能。
71.所述脚本生成器,用于根据所述测试数据,生成所述测试工具类型对应的测试脚本。作为一种示例,如图3所示,测试平台管理模块系统中的测试计划管理模块生成测试工具类型对应的数据格式的测试数据后,可以向测试平台管理模块系统中的脚本生成器发送,以便脚本生成器可以根据所述测试数据,生成所述测试工具类型对应的测试脚本。具体地,测试平台管理模块系统中的测试计划管理模块可以将创建的测试计划(即测试数据)输入脚本生成器中,以便脚本生成器生成性能测试脚本(即测试脚本)。例如,测试计划管理模块可以将json格式的测试数据输入到脚本生成器当中,脚本生成器可以输出对应的测试脚本;其中,脚本生成器的处理逻辑为:分析多个性能测试工具(即测试工具)的脚本,提取关键组件,将性能测试工具各组件抽象成java对象,然后根据测试计划(即测试数据)的输入,匹配上各个组件,然后将各个组件对象聚合起来,生成各个性能测试工具支持的测试脚本。以测试工具为jmeter为例:整个程序由四部分组成:api接口层、应用层、领域层、持久化层;api接口层用于定义api接口,输入测试计划(即测试数据),生成性能测试脚本(即测试脚本);应用层用于负责领域层之间的编排,比如编排脚本生成领域、测试计划领域层等,举例:调用测试计划领域层查询测试计划,然后调用脚本生成领域实现脚本生成;领域层用于实现具体脚本生成业务;持久化层用于保存测试脚本。下面介绍脚本领域层的具体实现方式:分析jmeter官方文档,梳理jmeter支持的各个组件,分析jmeter的脚本,梳理脚本中各元素,以及各元素之间的关系,将所有元素和元素之间的关系,都抽象成java的对象;用于定义一个抽象类,定义一个方法,将定义的抽象类和方法与工具类型相匹配;用于定义一个组装脚本的方法,输入测试数据,输出可执行的脚本;用于定义jmeter的测试脚本(即测试工具的测试脚本)生成实现类;用于实现工具类型匹配,定义工具枚举类型,比如本实施案
例为:jmeter;用于实现组装脚本的方法里面,主要是实现将测试数据中的各元素,匹配根据jmeter抽象出的各java对象,然后将这些存在值的对象根据关联关系,生成jmeter对应的测试脚本,最后将生成的测试脚本存储到数据库。
72.本技术实施例与现有技术相比存在的有益效果是:本技术实施例在获取测试用例对应的测试服务信息后,其中,所述测试服务信息包括测试接口信息、接口性能参数、测试工具类型;可以先根据所述测试接口信息,确定目标测试接口,以及,将所述目标测试接口的配置参数设置为所述接口性能参数;然后,可以根据所述测试工具类型和所述目标测试接口,生成所述测试工具类型对应的数据格式的测试数据;接着,可以根据所述测试数据,生成所述测试工具类型对应的测试脚本。可见,本实施例可以通过获取测试用例对应的测试服务信息,利用测试服务信息中的测试接口信息、接口性能参数、测试工具类型,生成测试工具类型对应的数据格式的测试数据,并且可以根据该测试数据,生成该测试工具类型对应的测试脚本。这样,本实施例便可以实现将测试用例对应的测试服务信息自动转换为该测试用例对应的测试脚本,而不需要人工花费大量时间手动编写测试脚本,并且可以避免人工编写脚本过程中由于人工操作错误所导致的人工所编写的测试脚本出现错误的问题,因此,本实施例所提供的方法可以大大降低人力物力成本和时间成本,提高了接口性能测试的测试脚本的生成效率以及准确性,进而提高了接口性能测试的测试效率和准确率。
73.下述为本技术装置实施例,可以用于执行本技术方法实施例。对于本技术装置实施例中未披露的细节,请参照本技术方法实施例。
74.图4是本技术实施例提供的一种测试脚本的生成装置的示意图。如图4所示,该测试脚本的生成装置包括:
75.信息获取模块401,被配置为获取测试用例对应的测试服务信息;其中,所述测试服务信息包括测试接口信息、接口性能参数、测试工具类型;
76.接口配置模块402,被配置为根据所述测试接口信息,确定目标测试接口,以及,将所述目标测试接口的配置参数设置为所述接口性能参数;
77.数据生成模块403,被配置为根据所述测试工具类型和所述目标测试接口,生成所述测试工具类型对应的数据格式的测试数据;
78.脚本生成模块404,被配置为根据所述测试数据,生成所述测试工具类型对应的测试脚本。
79.可选的,若所述测试接口信息包括服务访问地址;所述接口配置模块402,被配置为:
80.对所述服务访问地址进行访问,获取所述服务访问地址对应的服务中的接口;
81.将所述服务访问地址对应的服务中的接口作为目标测试接口。
82.可选的,所述接口性能参数包括以下至少一种参数:线程参数、变量配置参数、断言参数和超文本传输协议请求参数。
83.可选的,所述数据生成模块403,被配置为:
84.根据所述测试工具类型,确定所述测试工具类型对应的数据格式;
85.将所述测试工具类型对应的测试工具信息和所述目标测试接口对应的配置参数,转换为所述数据格式的测试数据。
86.可选的,所述脚本生成模块404,被配置为:
87.根据所述测试数据,确定所述测试数据对应的若干测试元素、各测试元素之间的关系;其中,所述测试元素至少包括所述目标测试接口;
88.确定所述若干测试元素、所述各测试元素之间的关系各自分别对应的编程代码对象;其中,所述编程代码对象为所述测试工具类型所支持的编程代码对应的编程代码对象;
89.根据所述若干测试元素、所述各测试元素之间的关系各自分别对应的编程代码对象,生成所述测试工具类型对应的测试脚本。
90.可选的,所述脚本生成模块404,被配置为:
91.根据所述测试数据,确定所述目标测试接口以及所述目标测试接口对应的待测试组件;
92.将所述目标测试接口以及所述目标测试接口对应的待测试组件作为所述测试数据对应的若干测试元素;
93.将所述目标测试接口、所述目标测试接口对应的待测试组件之间的关系,作为所述测试数据对应的各测试元素之间的关系。
94.可选的,所述测试工具类型为jmeter、所述测试工具类型对应的数据格式为json数据格式、所述测试工具类型所支持的编程代码为java。
95.根据本技术实施例提供的技术方案,由于本实施例可以通过获取测试用例对应的测试服务信息,利用测试服务信息中的测试接口信息、接口性能参数、测试工具类型,生成测试工具类型对应的数据格式的测试数据,并且可以根据该测试数据,生成该测试工具类型对应的测试脚本。这样,本实施例便可以实现将测试用例对应的测试服务信息自动转换为该测试用例对应的测试脚本,而不需要人工花费大量时间手动编写测试脚本,并且可以避免人工编写脚本过程中由于人工操作错误所导致的人工所编写的测试脚本出现错误的问题,因此,本实施例所提供的方法可以大大降低人力物力成本和时间成本,提高了接口性能测试的测试脚本的生成效率以及准确性,进而提高了接口性能测试的测试效率和准确率。
96.图5是本技术实施例提供的电子设备5的示意图。如图5所示,该实施例的电子设备5包括:处理器501、存储器502以及存储在该存储器502中并且可在处理器501上运行的计算机程序503。处理器501执行计算机程序503时实现上述各个方法实施例中的步骤。或者,处理器501执行计算机程序503时实现上述各装置实施例中各模块/单元的功能。
97.电子设备5可以是桌上型计算机、笔记本、掌上电脑及云端服务器等电子设备。电子设备5可以包括但不仅限于处理器501和存储器502。本领域技术人员可以理解,图5仅仅是电子设备5的示例,并不构成对电子设备5的限定,可以包括比图示更多或更少的部件,或者不同的部件。
98.处理器501可以是中央处理单元(central processing unit,cpu),也可以是其它通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。
99.存储器502可以是电子设备5的内部存储单元,例如,电子设备5的硬盘或内存。存储器502也可以是电子设备5的外部存储设备,例如,电子设备5上配备的插接式硬盘,智能
存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。存储器502还可以既包括电子设备5的内部存储单元也包括外部存储设备。存储器502用于存储计算机程序以及电子设备所需的其它程序和数据。
100.所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
101.集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本技术实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可以存储在计算机可读存储介质中,该计算机程序在被处理器执行时,可以实现上述各个方法实施例的步骤。计算机程序可以包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如,在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
102.以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围,均应包含在本技术的保护范围之内。

技术特征:
1.一种测试脚本的生成方法,其特征在于,包括:获取测试用例对应的测试服务信息;其中,所述测试服务信息包括测试接口信息、接口性能参数、测试工具类型;根据所述测试接口信息,确定目标测试接口,以及,将所述目标测试接口的配置参数设置为所述接口性能参数;根据所述测试工具类型和所述目标测试接口,生成所述测试工具类型对应的数据格式的测试数据;根据所述测试数据,生成所述测试工具类型对应的测试脚本。2.根据权利要求1所述的方法,其特征在于,若所述测试接口信息包括服务访问地址;所述根据所述测试接口信息,确定目标测试接口,包括:对所述服务访问地址进行访问,获取所述服务访问地址对应的服务中的接口;将所述服务访问地址对应的服务中的接口作为目标测试接口。3.根据权利要求1所述的方法,其特征在于,所述接口性能参数包括以下至少一种参数:线程参数、变量配置参数、断言参数和超文本传输协议请求参数。4.根据权利要求1所述的方法,其特征在于,所述根据所述测试工具类型和所述目标测试接口,生成所述测试工具类型对应的数据格式的测试数据,包括:根据所述测试工具类型,确定所述测试工具类型对应的数据格式;将所述测试工具类型对应的测试工具信息和所述目标测试接口对应的配置参数,转换为所述数据格式的测试数据。5.根据权利要求1所述的方法,其特征在于,所述根据所述测试数据,生成所述测试工具类型对应的测试脚本,包括:根据所述测试数据,确定所述测试数据对应的若干测试元素、各测试元素之间的关系;其中,所述测试元素至少包括所述目标测试接口;确定所述若干测试元素、所述各测试元素之间的关系各自分别对应的编程代码对象;其中,所述编程代码对象为所述测试工具类型所支持的编程代码对应的编程代码对象;根据所述若干测试元素、所述各测试元素之间的关系各自分别对应的编程代码对象,生成所述测试工具类型对应的测试脚本。6.根据权利要求5所述的方法,其特征在于,所述根据所述测试数据,确定所述测试数据对应的若干测试元素、各测试元素之间的关系,包括:根据所述测试数据,确定所述目标测试接口以及所述目标测试接口对应的待测试组件;将所述目标测试接口以及所述目标测试接口对应的待测试组件作为所述测试数据对应的若干测试元素;将所述目标测试接口、所述目标测试接口对应的待测试组件之间的关系,作为所述测试数据对应的各测试元素之间的关系。7.一种测试脚本的生成装置,其特征在于,包括:信息获取模块,被配置为获取测试用例对应的测试服务信息;其中,所述测试服务信息包括测试接口信息、接口性能参数、测试工具类型;接口配置模块,被配置为根据所述测试接口信息,确定目标测试接口,以及,将所述目
标测试接口的配置参数设置为所述接口性能参数;数据生成模块,被配置为根据所述测试工具类型和所述目标测试接口,生成所述测试工具类型对应的数据格式的测试数据;脚本生成模块,被配置为根据所述测试数据,生成所述测试工具类型对应的测试脚本。8.一种测试脚本的生成系统,其特征在于,包括:api配置管理模块、微服务管理模块、测试计划管理模块和脚本生成器;所述微服务管理模块,用于获取测试用例对应的测试服务信息;其中,所述测试服务信息包括测试接口信息、接口性能参数、测试工具类型;所述api配置管理模块,用于根据所述测试接口信息,确定目标测试接口,以及,将所述目标测试接口的配置参数设置为所述接口性能参数;所述测试计划管理模块,用于根据所述测试工具类型和所述目标测试接口,生成所述测试工具类型对应的数据格式的测试数据;所述脚本生成器,用于根据所述测试数据,生成所述测试工具类型对应的测试脚本。9.一种电子设备,包括存储器、处理器以及存储在所述存储器中并且可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6中任一项所述方法的步骤。10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6中任一项所述方法的步骤。

技术总结
本申请涉及软件测试技术领域,提供了一种测试脚本的生成方法、装置、系统、电子设备及计算机可读存储介质。该方法可以实现将测试用例对应的测试服务信息自动转换为该测试用例对应的测试脚本,而不需要人工花费大量时间手动编写测试脚本,并且可以避免人工编写脚本过程中由于人工操作错误所导致的人工所编写的测试脚本出现错误的问题,因此,本实施例所提供的方法可以大大降低人力物力成本和时间成本,提高了接口性能测试的测试脚本的生成效率以及准确性,进而提高了接口性能测试的测试效率和准确率。和准确率。和准确率。


技术研发人员:吴定林 付虹升 皮峰
受保护的技术使用者:重庆赛力斯新能源汽车设计院有限公司
技术研发日:2023.07.28
技术公布日:2023/10/15
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐