当前位置: 首页 > news >正文

SchoolDash Alpha冲刺 测试随笔

SchoolDash Alpha冲刺 测试随笔

课程与作业信息

  • 所属课程:软件工程实践
  • 作业要求来源:第五次作业——Alpha冲刺
  • 本篇目标:描述项目测试工作安排、测试工具的选择与应用、测试过程中发现的具体问题、测试心得及项目测试评价

1. 项目测试工作安排

在Alpha冲刺期间,测试工作与开发同步推进,采用分层测试策略,包括单元测试、集成测试和端到端测试。整体规划强调自动化优先,覆盖核心模块如认证、商品管理、订单流程和多角色功能。测试时间占比项目总时的30%,目标是确保系统稳定性。

  • 前期(Day 1-3):重点进行单元测试,验证基础模块如环境配置、数据库连接和认证逻辑。
  • 中期(Day 4-6):开展集成测试,检查前后端交互、API响应和数据一致性。
  • 后期(Day 7-10):执行端到端测试,模拟完整用户流程;生成覆盖率报告,进行回归测试和优化。
  • 执行机制:每日站会讨论测试进度,团队成员协作,进行调试。

2. 测试工具的选择与应用

基于项目技术栈(Vue.js前端、Express.js后端、Sequelize/MySQL数据库),选择工具支持快速自动化和问题定位。工具应用逐步展开,从单元到端到端,确保高效发现和验证问题。

  • 后端测试工具:Jest + Supertest
    选择原因:Jest支持异步和覆盖率报告,Supertest模拟HTTP请求,适合API和模型测试。
    应用:用于路由验证和数据库操作测试,例如mock请求体检查插入逻辑。

  • 前端测试工具:Vitest + @vue/test-utils
    选择原因:与Vite集成高效,支持组件渲染和事件模拟。
    应用:测试Vue页面交互,如参数传递和响应头配置。

  • 端到端测试工具:Cypress
    选择原因:浏览器自动化,支持视频录制和自定义命令。
    应用:模拟用户操作,如登录流程和跨域请求验证。

3. 测试过程中发现的具体问题

测试过程中,通过层层验证发现了多个问题,这些问题涉及功能实现、配置和交互方面,并及时记录和解决。以下是关键发现的问题及其修复:

1)图片功能移除问题

问题描述

测试商品查询时发现模型和数据库中残留图片字段,导致数据返回不一致。

解决方案
  1. 后端修改

    • 从 Goods 模型中移除 imgUrl 字段
    • 修改所有返回商品数据的 API,确保不包含图片相关字段
    • 移除轮播图相关路由和功能
  2. 前端修改

    • 移除所有显示商品图片的组件
    • 移除轮播图组件
    • 修改商品列表和详情页面,不再显示图片
  3. 数据库修改

    • 执行 SQL 命令移除 goods 表中的 imgUrl 列:
      ALTERTABLEgoodsDROPCOLUMNimgUrl;

2)API 404 错误 - 商品详情页面

问题描述

集成测试中暴露前端请求路径与后端不匹配。

问题原因

前端请求路径与后端路由定义不匹配:

  • 前端请求:/goods/detail
  • 后端路由:/home/goods/detail
解决方案

修改前端 GoodsDetail.vue 中的 API 请求路径:

// 修改前constres=awaitrequest({url:`/goods/detail/${goodsId}`,method:'GET'});// 修改后constres=awaitrequest({url:`/home/goods/detail/${goodsId}`,method:'GET'});

3) API 500 错误 - 商品上传

问题描述

单元测试模拟上传时,因空id字段引发数据库错误。

问题原因

前端在新增商品时发送了空字符串的id字段,导致数据库插入时出现 “Incorrect integer value: ‘’ for column ‘id’” 错误。

解决方案
  1. 前端修改

    • 在 GoodsManage.vue 的 handleAddGoods 函数中移除 id 字段:
      // 修改前goodsForm.value={id:'',name:'',price:'',categoryId:'',stock:'',desc:''};// 修改后goodsForm.value={name:'',price:'',categoryId:'',stock:'',desc:''};
  2. 后端修改

    • 在 goodsRoutes.js 中过滤 id 字段:
      // 从请求体中移除imgUrl和id字段const{imgUrl,id,...goodsData}=req.body;

4)订单详情页面失败

问题描述

端到端测试订单渲染失败,由于数据结构不匹配。

问题原因

订单详情 API 返回的数据结构与前端期望的不匹配,导致页面渲染失败。

解决方案
  1. 检查并确保后端 API 返回正确的数据结构
  2. 修改前端 OrderDetail.vue 组件,添加错误处理和数据验证
  3. 确保订单项关联查询正确执行

5)服务器连接被拒绝错误

问题描述

环境测试时SQLite加载失败导致系统出现 “Failed to load resource: net::ERR_CONNECTION_REFUSED” 错误,无法连接到后端服务器。

问题原因

SQLite3 模块加载失败,导致后端服务无法启动。

解决方案
  1. 修改 .env 文件中的数据库配置:

    # 修改前 USE_SQLITE=true # 修改后 USE_SQLITE=false
  2. 确保 MySQL 数据库配置正确,并重启后端服务:

    pm2 restart schooldash-backend

6)数据库模型与实际表结构不匹配

问题描述

查询测试发现imgUrl字段残留,导致数据库模型与实际表结构不匹配。

问题原因

虽然从模型中移除了 imgUrl 字段,但数据库表中仍然存在该字段,导致 Sequelize 查询时出现字段不匹配错误。

解决方案
  1. 通过 MySQL 查询确认表结构:

    DESCRIBEgoods;
  2. 执行 SQL 命令移除不需要的字段:

    ALTERTABLEgoodsDROPCOLUMNimgUrl;
  3. 确保模型定义与数据库表结构完全一致

7)订单页面商品图片缓存问题

问题描述

测试移除图片功能后,用户订单页面仍然显示商品图片。

问题原因

浏览器缓存了旧的订单数据,导致即使代码中已移除图片相关组件,页面仍然显示缓存的图片数据。

解决方案
  1. 前端修改

    • 在请求中添加时间戳参数防止缓存:

      params:{status:statusFilter.value,t:newDate().getTime()// 添加时间戳防止缓存}
    • 在请求配置中添加缓存控制头:

      headers:{'Cache-Control':'no-cache','Pragma':'no-cache'}
    • 在页面加载时清除可能的本地缓存:

      localStorage.removeItem('orderListCache');
  2. 用户端解决方案:

    • 清除浏览器缓存
    • 使用硬刷新(Ctrl+F5)重新加载页面

8)身份验证和角色权限问题

问题描述

测试中发现不同角色(用户、骑手、管理员)的身份验证和权限控制存在问题。

解决方案
  1. 实现基于角色的访问控制(RBAC)

  2. 为不同角色设置不同的 Token 存储键:

    • 用户:token
    • 管理员:adminToken
    • 骑手:riderToken
  3. 在请求拦截器中根据 URL 路径选择正确的 Token:

    if(config.url.includes('/admin/')){token=localStorage.getItem('adminToken');}elseif(config.url.includes('/rider/')){token=localStorage.getItem('riderToken');}else{token=localStorage.getItem('token');}

9)数据库连接配置问题

问题描述

测试时产生数据库连接配置在不同环境下切换困难的问题,应同时支持 SQLite 和 MySQL。

解决方案
  1. 创建灵活的数据库配置文件:

    // config/db.jsconstuseSQLite=process.env.USE_SQLITE==='true';if(useSQLite){// SQLite 配置}else{// MySQL 配置}
  2. 使用环境变量控制数据库类型:

    USE_SQLITE=false # 使用 MySQL USE_SQLITE=true # 使用 SQLite

10)跨域问题(CORS)

问题描述

分离部署测试出现访问拒绝。

解决方案

在后端 app.js 中配置 CORS:

constcors=require('cors');app.use(cors({origin:['http://localhost:5173','http://your-domain.com'],credentials:true}));

4. 测试心得

测试过程强调问题驱动,发现如配置和缓存问题需多环境模拟,收获自动化工具加速迭代。挑战包括数据一致性验证复杂,但通过mock解决。建议未来集成更多边缘测试,提升安全性。

5. 项目测试评价

测试覆盖全面,发现并解决多个问题,提升系统稳定性。优点:工具高效,问题定位准。不足:端到端场景可进一步扩展。

http://www.cnnetsun.cn/news/195550.html

相关文章:

  • Zenodo科研数据管理平台深度解析与实战应用指南
  • 1Fichier下载管理:3分钟快速上手的5个高效解决方案
  • 5步掌握CircuitJS1桌面版:零基础搭建专业电路仿真环境
  • 全网资源一键下载:Res-Downloader深度使用手册
  • Cyber Engine Tweaks终极指南:解锁《赛博朋克2077》无限潜能
  • FlutterOpenHarmony列表滚动组件实现
  • HLS Downloader:免费开源工具让流媒体视频下载变得简单高效
  • CircuitJS1 Desktop Mod完全掌握:零基础电路仿真实战宝典
  • 解锁全球通信自由:Nrfr如何让你的手机真正“本地化“
  • 9、Windows应用开发中的功能实现与实用类解析
  • 12、俄罗斯方块与绘图应用开发详解
  • 网页转图片利器:wkhtmltoimage零基础入门指南
  • 终极网页截图工具:wkhtmltoimage完整使用指南
  • Mac Mouse Fix:为什么你的鼠标在Mac上需要一次“性能升级“?
  • FramePack实战指南:5分钟掌握AI舞蹈视频制作全流程
  • 深岩银河存档编辑器:3分钟学会游戏资源自由调配
  • LangFlow品牌视觉识别系统(VI)设计理念
  • Free-NTFS-for-Mac终极指南:如何免费解锁Mac完整NTFS读写权限
  • ScienceDecrypting:彻底告别加密文档困扰的终极解决方案
  • LanzouAPI直链解析核心技术揭秘:如何实现蓝奏云高速下载的终极方案
  • Windows更新故障全攻略:从诊断到修复的一站式解决方案
  • 为什么90%的设计师都在使用Ai2Psd工具?揭秘AI到PSD无损转换的终极方案
  • Zotero Reference:5分钟搞定PDF参考文献智能管理
  • Navicat Mac版试用期重置技术解析与实践指南
  • HLS流媒体下载终极指南:轻松捕获在线视频的高效方法
  • LRCGET歌词下载神器:彻底解决离线音乐库歌词同步难题
  • 炉石传说脚本终极指南:游戏自动化的智能助手高效技巧
  • 哔哩哔哩漫画批量下载完整教程:从入门到精通
  • 革命性3D模型预览方案:让Windows资源管理器智能化升级
  • Windows苹果设备驱动完整安装指南:一键解决连接烦恼