接口测试 案例分享|易盛信息在 MeterSphere 上实现多类型接口场景自动化测试

MeterSphere · 2021年07月27日 · 最后由 小狄子 回复于 2021年07月29日 · 4069 次阅读

笔者曾经写过一篇 1.5 版本的《MeterSphere 案例分享:易盛信息 MetetSphere 接口测试使用经验》。由于 1.6 版本之后平台进行了较大的改进,尤其是接口场景构建上,因此本文将介绍如何在新版本 MeterSphere 平台上进行多类型接口的场景自动化测试。

某资金系统通过对外统一接口实现相关资金系统功能(登录、签约、出入金等),屏蔽调用资金中间件细节。使用 MeterSphere 模拟用户在前端界面的操作发起 HTTP 请求,后方资金服务收到请求后将会在数据库中体现结果。实际测试时系统架构如下图,一种典型的业务场景为:用户登录→查询资金→转入资金→查询资金→转出资金→查询资金。

如何使用 MeterSphere 实现这一场景的测试呢?有以下 5 个步骤。

Step 1:梳理接口清单

此测试场景的接口清单,分为 HTTP 类型和 SQL 类型两种。

HTTP 类型

公共参数:

接口详情:

  1. 登录 POST /fund/login:

请求:

{
"custtradeid": "客户 ID",
"custmoneypwd": "客户密码"
}

响应:

{
"code": 200,
"message": "OK",
"result": {
//略
}
}

  1. 入金 POST /fund/in:

请求:

{
"custtradeid": "客户 ID",
"custmoneypwd": "客户密码",
"bankid": "银行代码",
"custbankacctno": "银行账户号",
"changemoney": "金额"
//略
}

响应:

{
"code": 200,
"message": "OK",
"result": {
//略
}
}

  1. 出金 POST /fund/out:

请求:

{
"custtradeid": "客户 ID",
"custmoneypwd": "客户密码",
"bankid": "银行代码",
"custbankacctno": "银行账户号",
"changemoney": "金额"
//略
}

响应

{
"code": 200,
"message": "OK",
"result": {
//略
}
}

SQL 类型

接口详情 - 查询账户余额 SELECT:

请求:

SELECT ENABLEMONEY FROM MONEY WHERE FIRMID='${custreadeid}'

响应:

Step 2:录入接口数据

以入金接口为例,操作及编写内容如下。

首先,点击顶部接口测试及二级菜单接口定义,切换至对应项目的接口定义模块,之后点击左侧模块栏上方文件夹添加图标,创建接口。

填写如下内容:

基础信息:

请求头:

请求体:

重复此操作直到录入本次测试所需的所有接口。

Step 3:编写用例

以登录接口为例,首先在 API 分栏点击接口右侧操作列的 CASE 按钮,弹出用例列表。

用例编写其实和接口编写过程类似,只不过用例当中会写实际数据或者参数化数据(使用变量)。

在请求体中使用 ${custtradeid}变量,用于在前置脚本或者场景化的时候赋值。之后添加对应的前置脚本 “设置用户”,这里比较简单,就是一个普通的变量赋值。

添加断言,利用 JSONPath 推荐功能来自动生成断言非常便捷,即对此用例先调试执行拿到接口响应结果。

点击如图所示按钮即可自动添加此节点的断言。

Step 4:配置环境

接口及用例中的请求地址是不包含域名或 IP 的,需要在场景测试时进行环境配置(截图中为配置完毕的环境),配置完毕的环境既用在此处进行用例执行,又可以用在后文进行场景执行。

点击环境配置按钮,可以在弹出页配置此环境的 “通用配置”、“Hosts”、“HTTP 配置”,“数据库配置” 及 “TCP 配置”。

全局变量:

配置完毕的全局变量可以在步骤中使用 ${变量名}的方式引用。

Hosts 配置:

HTTP 配置:

如果前一步指定了 host,则这里可以直接填写域名,否则这里可以填写 IP。左侧可以选择 http 或者 https 类型。

数据库配置:

正确配置完毕的数据库才能在 SQL 类型用例中使用。可以点击右下方校验按钮查看配置内容是否正确。

Step 5:编写与执行场景

选择上方接口自动化菜单,点击场景列表标题栏右侧的添加按钮,创建场景。填写如下内容:

基础信息:

场景步骤:

点击页面右下方圆形加号,选择从接口列表导入。

可以选择导入接口或者用例,这两种都支持复制方式,且用例支持引用方式。这里我们采用引用方式导入用例,方便在一起维护。登录查询后添加自定义脚本对 SQL 查询结果保存的变量重命名,防止后文冲突。

继续添加入金接口的用例,并增加断言。需注意,导入用例时会一并导入用例的断言。

按照场景需要继续添加其他需要的自定义脚本、控制器等内容。最终场景步骤列表如下:

可以注意到,本场景使用 “自定义脚本 + 断言” 的方式实现了对业务规则的检查,具体操作为:首先使用 BeanShell 获取前述步骤中重命名的变量名,及 SQL 查询的变量名 (后续文章将继续介绍相关套路),使用 BigDecimal 类型进行精确存储,并进行了计算,将对比结果保存为自定义变量 compareResult,之后添加断言规则,对 compareResult 结果进行断言。

可以注意到,断言规则左侧有缩进,说明此断言规则是跟在步骤 6 的自定义脚本下方的。使用时各个步骤的从属逻辑可以在界面自由拖动,调整起来较为方便。

场景执行:

选择本次执行场景并保存后,即可在列表页点击对应场景右侧执行按钮即可开始场景执行。

执行完毕后可以查看并保存报告。

至此,出入金类型的接口测试场景就编写并调试完成了,可以手工执行,也可以嵌入到持续集成流程中。

希望通过这个场景构建的示例抛砖引玉,帮助到需要者。

共收到 2 条回复 时间 点赞

这个是收费的吧

回复

开源版是免费使用的,核心功能都是免费的

兔子🐰 [该话题已被删除] 中提及了此贴 02月18日 16:23
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册