news 2026/3/1 0:58:14

SchoolDash Alpha冲刺 测试随笔

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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. 项目测试评价

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/27 20:52:21

10个技巧让你的微信自动化效率翻倍:wxauto终极使用指南

在数字化办公时代,微信已成为工作沟通的重要工具。每天面对大量重复的消息发送、群管理操作,你是否感到效率低下?wxauto作为Windows平台微信客户端自动化工具,能帮你从繁琐操作中解放出来。本文将为你揭示wxauto的高效使用方法&am…

作者头像 李华
网站建设 2026/2/27 2:41:04

esp32cam数据加密传输在安防中的实践探索

esp32cam数据加密传输在安防中的实践探索:从“裸奔”到可信边缘的蜕变你有没有想过,家里那个便宜又小巧的esp32cam摄像头,其实正处在一场看不见的数字战争前线?它每天默默拍摄的画面,可能正通过Wi-Fi明文“裸奔”在网络…

作者头像 李华
网站建设 2026/2/28 13:24:11

揭秘OpenGlass:25美元打造专属AI智能眼镜的终极指南

揭秘OpenGlass:25美元打造专属AI智能眼镜的终极指南 【免费下载链接】OpenGlass Turn any glasses into AI-powered smart glasses 项目地址: https://gitcode.com/GitHub_Trending/op/OpenGlass 还在羡慕科幻电影里的智能眼镜吗?现在你也可以拥有…

作者头像 李华
网站建设 2026/2/27 1:42:59

Windows 10系统优化终极指南:告别臃肿拥抱流畅体验

Windows 10系统优化终极指南:告别臃肿拥抱流畅体验 【免费下载链接】Win10BloatRemover Configurable CLI tool to easily and aggressively debloat and tweak Windows 10 by removing preinstalled UWP apps, services and more. Originally based on the W10 de-…

作者头像 李华
网站建设 2026/2/28 5:58:47

Onekey工具极速上手:一键获取Steam游戏清单的完整指南

Onekey工具极速上手:一键获取Steam游戏清单的完整指南 【免费下载链接】Onekey Onekey Steam Depot Manifest Downloader 项目地址: https://gitcode.com/gh_mirrors/one/Onekey 想要快速获取Steam游戏文件清单却苦于繁琐操作?Onekey工具正是为你…

作者头像 李华
网站建设 2026/2/27 11:40:53

Mac与Windows文件共享:一个免费解决方案的用户体验分享

Mac与Windows文件共享:一个免费解决方案的用户体验分享 【免费下载链接】Free-NTFS-for-Mac Nigate,一款支持苹果芯片的Free NTFS for Mac小工具软件。NTFS R/W for macOS. Support Intel/Apple Silicon now. 项目地址: https://gitcode.com/gh_mirror…

作者头像 李华