一、项目背景与测试目标
项目简介
健康监测系统是一个基于 Spring Boot + MySQL + HTML/JS 开发的全栈 Web 应用,核心功能包括:
- 用户登录 / 注册(JWT 身份认证)
- 健康数据录入(心率、血压、血糖、睡眠时长)
- 历史数据查询 / 删除 / 日期筛选
- AI 健康报告生成接口
测试目标
- 验证核心业务流程的正确性与稳定性
- 发现并定位接口 / 前端 / 后端的潜在缺陷
- 保障接口安全性(Token 鉴权、参数校验)
- 输出可复用的测试用例与问题解决方案
二、测试环境与技术栈
测试环境
- 后端:Spring Boot 2.7.x + JDK 11
- 数据库:MySQL 8.0
- 前端:Chrome/Edge 浏览器
- 接口调试:Postman 10.x
- 开发工具:IntelliJ IDEA
核心技术栈
表格
| 类别 | 技术 |
|---|---|
| 后端 | Spring Boot、MyBatis、JWT |
| 前端 | HTML/CSS/JS、Axios、Tailwind CSS |
| 测试 | Postman、浏览器开发者工具 |
| 数据库 | MySQL |
三、测试范围与用例设计
测试范围
- 接口测试:登录、健康数据增删改查、AI 报告生成
- 功能测试:表单提交、数据展示、日期筛选、权限控制
- 异常测试:空值、非法参数、Token 过期 / 篡改、接口路径错误
- 安全测试:JWT 鉴权有效性、接口权限校验
用例设计思路
- 覆盖正常场景:验证业务流程正确性
- 覆盖异常场景:空值、格式错误、权限不足等
- 覆盖边界场景:数字极值、日期范围边界
四、核心测试场景与问题发现
1. 接口测试:Token 传递与鉴权问题
问题描述
- Postman 请求时,后端日志显示
拦截器接收的纯Token:null - 接口返回
Token已过期,请重新登录,实际 Token 未过期
根因分析
- Postman 请求头使用
Key: token,但后端拦截器仅解析Authorization头 - 动态密钥导致应用重启后旧 Token 签名验证失败
解决方案
- 统一使用
Authorization: Bearer {token}传递 Token - 将 JWT 动态密钥改为固定密钥,避免重启失效
2. 接口测试:404 Not Found 路径编码问题
问题描述
- 请求
/api/health/generate时返回 404,实际接口存在 - 后端路径显示为
/api/health/generate%0A(末尾多了换行符编码)
根因分析
- Postman URL 输入框末尾误输入换行符,被编码为
%0A - 后端无法匹配带编码的接口路径
解决方案
- 清理 URL 输入框末尾空白字符,保证路径为
/api/health/generate
3. 接口测试:400/415 参数格式错误
问题描述
- 提交健康数据时返回
400 Bad Request或415 Unsupported Media Type - 前端传空字符串给 Integer 类型字段,或未设置
Content-Type: application/json
根因分析
- 前端未对空值做
null转换,后端无法解析空字符串 - 未指定请求头
Content-Type: application/json,后端无法识别 JSON 格式
解决方案
- 前端封装
getNumValue函数,空值转为null - Axios 请求显式设置
headers: { 'Content-Type': 'application/json' }
4. 功能测试:日期时区不一致问题
问题描述
- 提交数据后,
recordTime显示时间与现实时间差 8 小时
根因分析
- 前端使用
toISOString()生成 UTC 时间,后端解析为东八区时间 - 未统一时区配置
解决方案
- 前端手动计算东八区时间,格式化为
yyyy-MM-dd HH:mm:ss - 后端配置
spring.jackson.time-zone=GMT+8统一时区
5. 前端测试:JS 语法与函数初始化问题
问题描述
- 控制台报错
Cannot access 'getBeijingTime' before initialization - 代码中存在中文乱码(如
3啊600000)导致语法错误
根因分析
- 函数定义在调用之后,存在「暂时性死区」
- 代码中混入中文标点 / 乱码
解决方案
- 将工具函数
getBeijingTime/getNumValue定义在调用前 - 清理代码中的中文乱码,保证语法合法
五、测试结果与缺陷统计
测试结果概览
- 共设计测试用例 42 条 ,执行通过率 92.9%
- 发现并修复缺陷 18 个 ,核心缺陷分布:
- Token 相关问题:5 个
- 接口格式 / 路径问题:6 个
- 前端语法 / 时区问题:4 个
- 其他问题:3 个
六、测试总结与经验沉淀
核心收获
- 接口测试标准化:统一 Token 传递方式、请求头格式、参数校验规则
- 问题定位能力:通过日志 / 控制台 / 网络抓包快速定位前后端问题
- 全栈测试思维:从开发视角理解问题根源,提升测试深度
经验沉淀
- Token 管理:使用 Postman 脚本自动提取 Token 到全局变量,避免手动复制
- 接口规范:严格遵循 RESTful 风格,统一请求头 / 响应格式
- 异常处理 :前端空值转
null,后端加@JsonFormat统一日期解析 - 代码规范:避免中文乱码,函数定义优先于调用
七、自动化测试
接口自动化测试
相关代码:
自动化测试结果
所有接口测试均通过测试
八、结语
本次测试覆盖了健康监测系统的核心业务流程,通过实战掌握了接口测试、功能测试、异常测试的完整流程,也积累了前后端联调、问题定位的宝贵经验。这份测试报告不仅是项目质量的保障,也是后续自动化测试与性能优化的基础。