教程丨使用MeterSphere进行场景化的接口测试

发布于 2020年09月03日

以场景驱动设计接口测试用例的方法,想必大家已经非常熟悉了。场景的完成,不单单是一个个独立API的串联,还涉及到参数提取、断言、调用等一些列操作。今天我们将通过一个实际的测试场景,分享如何在MeterSphere中进行场景化的接口测试。

测试目标

人们常说“Eating your own dog food”(吃自己的狗粮),也就是自己做出的产品,要自己首先来使用,这样才能真真正正地从一个用户的角度来发现问题。今天,我们就采取用MeterSphere测试MeterSphere的方式,使用MeterSphere的接口测试功能,来测试MeterSphere项目管理相关接口是否正常。

测试场景

■ 通过查询项目列表接口,获取现有的项目列表,并判断当前项目列表中没有要创建的接口测试项目;

■ 通过创建项目接口,创建一个名称和描述都为“接口测试项目”的项目,并从返回结果中获取该项目的ID;

■ 通过查询指定项目接口,传入上一步中获取的“接口测试项目”的 ID,并且判断返回中的项目ID、名称及描述是否符合预期;

■ 通过删除项目接口,传入“接口测试项目”的ID删除该项目,并通过返回信息判断是否删除成功;

■ 通过查询指定项目接口,传入“接口测试项目”的ID再次查询该项目,通过返回信息再次确认该项目是否删除成功。

接口分析

MeterSphere的接口文档位于所部署环境中的/swagger-ui 路径中,在该文档中的project-controller分组中可以找到我们所需的各个接口。

对应上述测试场景,在这里我们需要用到以下接口:

  • GET /project/listAll
  • POST /project/add
  • GET /project/get/{id}
  • GET /project/delete/{projectId}

依次查看每个接口的定义,可以发现各个接口的返回都是类似如下形式。因此我们可以通过JSONPath(www.jsonpath.com)的方式来获取特定的返回值,判断其是否符合预期,或者提取为变量供后续请求使用。

{
"success": true,
"message": "Message",
"data": {
"key1": "value1",
"key2": "value2"
}
}

创建接口测试

接下来我们就可以在MeterSphere创建一个接口测试,来模拟测试上述测试场景。在本次测试中,我们通过调用登录接口并共享Cookie的方式来处理接口的认证问题。详细的步骤如下:

1. 创建测试并配置场景

在新创建的接口测试场景配置中,新建一个环境配置并填入被测系统的基本信息,同时在场景配置中选择新建的环境,并勾选“共享Cookie”选项。

2. 添加“登录MeterSphere”的HTTP请求

使用“POST /signin”接口,根据接口定义选择POST方法,并通过JSON的格式传入用户名密码。同时添加断言,判断登录请求是否成功。

3. 添加“获取项目列表”的HTTP请求

使用“GET /project/listAll”接口,在这个接口请求里,依次添加两个断言:①响应内容中的success字段值为true;②响应内容中不包含我们要新建的项目名称“接口测试项目”。断言编辑完成后,点击“Add”按钮进行添加。

4. 添加“创建项目”的HTTP请求

使用“POST /project/create”接口,根据接口定义通过JSON格式传入项目名称及描述信息,在这个请求中我们添加一个通用的“响应内容中的success字段值为true”的断言,并通过JSONPath格式的提取功能,从返回数据中获取新创建的项目的ID存入projectID变量中,后续接口可以通过${projectID}格式引用该变量。

5. 添加“查询新创建的项目”的HTTP请求

使用“GET /project/get/{id}”接口,在该接口中我们通过在请求URL中引用${projectId}变量的方式传入新创建的项目的ID。同时,依次添加4个断言:①响应内容中的success字段值为 true;②响应内容中的项目名称与创建时填写的信息保持一致;③响应内容中的项目描述与创建时填写的信息保持一致;④响应内容中的项目ID与之前获取的保持一致。

6. 添加“删除新创建的项目”的HTTP请求

使用“GET /project/delete/{projectId}”接口,在该接口中,我们通过在请求URL中引用${projectId}变量的方式传入新创建的项目的ID。同时,添加一个通用的“响应内容中的success字段值为true”的断言。

7. 添加“查询已删除的项目”的HTTP请求

使用“GET /project/get/{id}”接口,在该接口中我们通过在请求URL中引用${projectId}变量的方式传入新创建项目的ID。由于该项目已经删除,根据接口定义其返回内容中的data字段应该为空,因而在这个接口中我们依次添加2个断言:①响应内容中的success字段值为true;②响应内容中data字段为空。

运行接口测试

至此,我们已经通过上面创建的一系列接口请求,实现了我们需要去验证的测试场景。接下来点击“保存并执行”按钮,系统执行完所有测试场景后将会自动跳转到测试报告页面。在该页面中,我们可以看到所有接口执行结果的概览,同时也可以在左侧的接口列表中选择某个接口查看其详细的请求及响应内容。

关于 MeterSphere

MeterSphere是一站式的开源企业级持续测试平台,致力于通过开源技术创新加速高质量的软件交付,推动中国测试行业整体效率的提升。

MeterSphere项目遵循GPL v2.0开源许可协议,涵盖测试跟踪、接口测试、性能测试、 团队协作等功能,兼容JMeter等开源标准,有效助力开发和测试团队充分利用云弹性进行高度可扩展的自动化测试。