服务端测试
服务端测试有两种:一种是直接对 WEB 或者 APP 的 API 接口进行测试;另一种是对更后端的数据库、缓存系统、中间件、文件系统等进行测试,核心就是输入输出是否符合服务设计。必备的测试手段包括:
- 接口测试
- 性能测试
- 稳定性测试
- 异常测试
其中稳定性测试中涉及:异常、超时、重试幂等、性能等
基于 API 的服务端测试
这种服务端就是为 WEB/APP 端提供一些后台的接口,一般都是用 HTTP、HSF、MTOP 接口的方式提供。这种后台的测试从流程上来说是跟随着发布节奏来的,根据时间、提测以及持续集成目标,可以采用不同的测试方法:
- 手工接口测试
根据接口设计,测试人员可以借助中间件平台,自有工程,第三方工具进行接口测试了。接口测试过程中,特别需要关注异常场景测试,单接口异常测试主要包括输入异常、操作异常、依赖服务异常,测试验证时关注「容错逻辑」以及「异常返回码是否符合接口约定」。
- 输入异常:包括入参为特殊字段类型、非法长度、边界值等
- 操作异常:例如操作为特殊业务流程、非法修改数据等非正常业务操作
- 依赖服务异常:包括访问超时、服务挂掉、异常返回码等场景
- 手工集成测试
待需求的前端和上下游都交付之后就可以进入集成测试阶段,在这个环节测试人员除了协调各涉及端的测试进度、测试环境和自己域的业务验证之外,同样需要关注异常测试,集成阶段的异常主要包括输入异常、接口异常、操作异常,测试验证时关注「异常文案交互是否符合业务预期」。
- 输入异常:包括入参为特殊字段类型、非法长度、边界值等
- 接口异常:例如接口超时、非约定返回码等
- 操作异常:业务流程中高频导致的并发、乱序等非法操作场景
「异常测试」主要分为功能异常、服务端异常
功能异常主要通过各种入参模拟进行验证,接口测试目前可用自建平台、postman 以及其他任意接口测试平台
测试常用功能介绍:
- 保存参数、导入参数:平台支持保存当前参数模板,方便下次导入调用,但需注意仅支持保存一套参数
- 自定义 Timeout:可以自定义时间,越过接口原超时限制,mock 超时场景下接口返回
- 指定 Provider 调用:指定 IP 进行调用,便于调试和问题定位
- 活用执行结果信息:接口执行失败需要上下游配合排查定位时,traceId、Provider 是关键排查参数
注意事项:
- 特定角色才能在控制台进行 hsf 接口测试(例如测试负责人)
- 入参输入建议切换到 Code 模式下编辑,以免类型转换错误
服务端异常目前主要可通过一些强弱依赖平台进行验证,很多平台支持对线上流量自动进行分析并生成用。
- 持续集成
借助类似 Jenkins 工具平台完成手工测试的自动化持续集成,实现接口级别的回归和链路级别的回归。
对更后端的数据库、缓存系统、文件系统等中间件进行测试
对于这类后端服务来说,接口只是暴露给外用的部分,内部逻辑通常是非常复杂的,所以,除了针对接口做测试之外,测试人员还需要细致地了解这些服务端产品的技术框架及技术实现,需要了解到模块的级别,对于系统框架图、时序图等都有很好的理解,针对这些理解去设计用例和执行。下面介绍几种常见中间件的测试思路和方法:
- 模拟消息发送,验证消费消息后的代码逻辑
打开消息控制台,找到对应的 topic 点击发送,输入 body 消息后确定发送
消息控制台
- 验证 metaq 消息是否按照约定发送
打开 metaq 控制台,点击进入“消息查询”,查看消息体和轨迹,验证是否符合期望
- DTS 任务的调试
schedulerx 分布式系统调度任务的调试和排查可以使用控制台
- 编辑:输入 job 运行参数
- 触发一次:手动触发
- 指定机器:可以勾选指定 job 运行的服务器