【最佳实践】如何使用 MeterSphere 进行场景化接口测试


Administrator
飞致云 发布于 2023-01-11 / 6180 阅读 / 0 评论 /
1 测试目标使用 MeterSphere 的接口测试功能,测试 MeterSphere 项目管理相关接口是否正常。2 测试场景通过查询项目列表接口,获取现有的项目列表,并判断当前项目列表中没有要创建的项目「接口测试项目」。通过创建项目接口,创建一个名称和描述都为「接口测试项目」的项目,并从返回结果中

1 测试目标

使用 MeterSphere 的接口测试功能,测试 MeterSphere 项目管理相关接口是否正常。

2 测试场景

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

  • 通过创建项目接口,创建一个名称和描述都为「接口测试项目」的项目,并从返回结果中获取该项目的 ID。
  • 通过查询指定项目接口,传入上一步中获取的「接口测试项目」的 ID,并且判断返回中的项目 ID、名称及描述是否符合预期。
  • 通过删除项目接口,传入「接口测试项目」的 ID 删除该项目,并通过返回信息判断是否删除成功。
  • 通过查询指定项目接口,传入「接口测试项目」的 ID 再次查询该项目,通过返回信息再次确认该项目是否删除成功。

3 接口分析

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

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

  • GET /project/listAll
  • POST /project/add
  • GET /project/get/
  • GET /project/delete/

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

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

4 创建接口测试

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

4.1 详细步骤

  • 添加一个「登录 MeterSphere」的 HTTP 请求
  • 添加一个「获取项目列表」的 HTTP 请求
  • 添加一个「创建项目」的 HTTP 请求
  • 添加一个「查询新创建的项目」的 HTTP 请求
  • 添加一个「删除新创建的项目」的 HTTP 请求
  • 添加一个「查询已删除的项目」的 HTTP 请求

■ 添加一个「登录 MeterSphere」的 HTTP 请求

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

api_testing_2_2

■ 添加一个「获取项目列表」的 HTTP 请求

使用 「GET /project/listAll」接口,在这个接口请求里我们依次添加两个断言:

  • 响应内容中的 success 字段值为 true;
  • 响应内容中不包含我们要新建的项目名称「接口测试项目」,断言编辑完成后点击「添加」按钮进行添加。

api_testing_3_1

■ 添加一个「创建项目」的 HTTP 请求

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

api_testing_4_1

api_testing_4_2

■ 添加一个「查询新创建的项目」的 HTTP 请求

使用「GET /project/get/{projectid}」接口,在该接口中我们通过在请求 URL 中引用 ${projectid} 变量的方式传入新创建的项目的 ID;同时依次添加4个断言:

  • 响应内容中的 success 字段值为 true;
  • 响应内容中的项目名称与创建时填写的一致;
  • 响应内容中的项目描述与创建时填写的一致;
  • 响应内容中的项目 ID 与之前获取的一致。

api_testing_5_1

■ 添加一个「删除新创建的项目」的 HTTP 请求

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

api_testing_6_1

■ 添加一个「查询已删除的项目」的 HTTP 请求

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

  • 响应内容中的 success 字段值为 true;
  • 响应内容中 data 字段为空。

api_testing_7_1

5 运行接口自动化场景测试

至此我们已经通过上面创建的一系列接口请求,在新创建的接口测试场景配置中,点击「接口列表导入」按钮,导入要测试的接口。
api_testing_8_1

点击「运行环境」,新建一个环境配置并填入被测系统的基本信息,同时在场景配置中选择新建的环境并勾选「共享 Cookie」。
api_testing_9_1

api_testing_10_1

api_testing_11_1

点击「调试」按钮,系统执行完所有测试场景后,点击「调试下拉框-生成报告」或者「测试报告」,在该页面中我们可以看到所有接口执行结果的概览,同时也可以在左侧的接口列表中选择某个接口查看其详细的请求及响应内容。
api_testing_12_1

api_testing_report



是否对你有帮助?