AI健康系统测试报告

一、项目背景与测试目标

项目简介

健康监测系统是一个基于 Spring Boot + MySQL + HTML/JS 开发的全栈 Web 应用,核心功能包括:

  • 用户登录 / 注册(JWT 身份认证)
  • 健康数据录入(心率、血压、血糖、睡眠时长)
  • 历史数据查询 / 删除 / 日期筛选
  • AI 健康报告生成接口

测试目标

  1. 验证核心业务流程的正确性与稳定性
  2. 发现并定位接口 / 前端 / 后端的潜在缺陷
  3. 保障接口安全性(Token 鉴权、参数校验)
  4. 输出可复用的测试用例与问题解决方案

二、测试环境与技术栈

测试环境

  • 后端: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

三、测试范围与用例设计

测试范围

  1. 接口测试:登录、健康数据增删改查、AI 报告生成
  2. 功能测试:表单提交、数据展示、日期筛选、权限控制
  3. 异常测试:空值、非法参数、Token 过期 / 篡改、接口路径错误
  4. 安全测试: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 Request415 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 个

六、测试总结与经验沉淀

核心收获

  1. 接口测试标准化:统一 Token 传递方式、请求头格式、参数校验规则
  2. 问题定位能力:通过日志 / 控制台 / 网络抓包快速定位前后端问题
  3. 全栈测试思维:从开发视角理解问题根源,提升测试深度

经验沉淀

  • Token 管理:使用 Postman 脚本自动提取 Token 到全局变量,避免手动复制
  • 接口规范:严格遵循 RESTful 风格,统一请求头 / 响应格式
  • 异常处理 :前端空值转null,后端加@JsonFormat统一日期解析
  • 代码规范:避免中文乱码,函数定义优先于调用

七、自动化测试

接口自动化测试

相关代码:

接口自动化测试脚本

自动化测试结果

所有接口测试均通过测试


八、结语

本次测试覆盖了健康监测系统的核心业务流程,通过实战掌握了接口测试、功能测试、异常测试的完整流程,也积累了前后端联调、问题定位的宝贵经验。这份测试报告不仅是项目质量的保障,也是后续自动化测试与性能优化的基础。

相关推荐
twc8294 小时前
与LLM结对编程:测试先行如何提升AI辅助开发质量
软件测试·人工智能·大模型·llm·结对编程
twc8296 小时前
LLM辅助编程:从直接生成到测试驱动的质量跃迁
软件测试·大模型·llm
程序员小远8 小时前
Python+requests+unittest+excel 实现接口自动化测试框架
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·excel
尚云第三方软件测试1 天前
第三方 CMA/CNAS 软件测试报告服务的未来发展方向
软件测试·cans
程序员三藏1 天前
如何用Selenium实现自动化?
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例