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

第二篇:系统功能测试实战:图书借阅模块 BUG 排查与修复代码

一、模块介绍
我在项目中负责全系统功能测试,重点测试核心借阅业务模块,覆盖借书、还书、续借、逾期计算、重复借阅校验等功能。本文记录测试用例设计、测试过程中发现的 BUG,以及对应的修复代码与排查思路。
二、借阅模块测试用例设计
正常流程:读者登录→查询可借图书→提交借书→生成借阅记录;
边界用例 1:同一本书未归还,再次借阅;
边界用例 2:图书库存为 0 时发起借阅;
边界用例 3:归还图书,自动计算逾期天数与罚款;
异常用例:手动修改前端借阅 ID,非法请求后端接口。
三、测试过程发现的核心 BUG 及修复
BUG1:同一本图书可以无限重复借阅,无校验逻辑
现象:读者未归还图书,仍能再次提交借阅申请,数据库生成多条借阅记录。
问题根源:后端借阅接口未查询当前图书未归还记录。
修复代码(后端借阅业务层):
java
运行
// 查询该图书是否存在未归还记录
LambdaQueryWrapper<Borrow> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Borrow::getBookId, borrowDTO.getBookId())
.eq(Borrow::getReturnStatus, 0);
Long count = borrowMapper.selectCount(wrapper);
if(count > 0){
throw new RuntimeException("该书尚未归还,无法再次借阅");
}
BUG2:逾期天数计算逻辑错误,同一天归还仍产生罚款
现象:借书当天归还,系统判定逾期 1 天并生成罚款。
问题根源:日期差值未做判断,直接相减。
修复思路:使用 LocalDate 计算日期差,只有归还日期 > 借阅日期才计算逾期。
java
运行
LocalDate borrowDate = borrow.getBorrowDate();
LocalDate now = LocalDate.now();
long day = ChronoUnit.DAYS.between(borrowDate, now);
if(day > 30){ // 借阅期限30天
int overDay = (int) (day - 30);
borrow.setOverFine(overDay * 0.5); // 每日0.5元罚款
}
BUG3:归还图书后,图书库存数量未自动加 1
现象:图书归还成功,图书表库存不变,库存数量持续减少。
修复:归还成功后更新图书库存 + 1,添加事务保证数据一致性。
BUG4:前端借阅记录列表分页数据错乱,重复展示数据
问题:前端查询接口未携带分页参数,每次请求全量数据覆盖页面。
修复:调用借阅列表接口时,固定传入 pageNum、pageSize,后端分页返回。
四、测试流程收获
完整测试分为功能测试、边界测试、异常测试三层,测试不能只测正常流程,边界场景才是系统最容易出问题的地方。测试时先定位前端问题还是后端问题:控制台无报错但数据异常 = 后端逻辑问题;控制台报 404/500 / 参数缺失 = 前后端对接问题。
截图建议:借阅模块测试用例表格截图、重复借阅报错弹窗截图、逾期罚款计算界面、BUG 修复后正常借阅页面

http://www.jsqmd.com/news/1107595/

相关文章:

  • 打造全员共识的项目计划制定指南
  • 基于PIC18F8722与IN-PC55TBTRGB的智能灯光系统设计
  • IntelliJ IDEA折叠系统底层解析(基于OpenAPI 241.18034源码):从PsiElement到FoldingDescriptor的11层调用链拆解
  • 【JavaSE基础语法】07-继承与多态
  • 孩子学编程用什么软件好?适趣图形编程,适合低龄孩子的编程启蒙工具
  • IDEA书签功能被严重低估?JetBrains内部培训文档流出:4层嵌套标记+Git集成跳转的独家实践
  • 每天几万条群消息,用个人微信api做增量私域内容沉淀怎么才不撑爆服务器?
  • 收藏!小白程序员也能轻松入门AI大模型,抓住时代红利!
  • CH395Q之CH395Q简介(一)
  • XInputTest:3分钟测出你的游戏手柄真实延迟,告别操作卡顿
  • 项目启动后类名搜索突然变慢?揭秘IDEA 2024.1新增的Classpath Watcher机制与3种降级策略
  • Python爬虫经典案例023:视频网站爬取——B站视频信息采集实战
  • 2026年国内龙虾下载推荐:八款全品类智能体深度测评AionClaw功能全解析
  • VK视频下载器:免费快速保存VK视频的终极解决方案
  • 2026 App市场分析怎么做?完整实战流程分享
  • 计算机毕业设计之基于推荐算法的商品购物网站的设计与开发
  • 为什么你的IDEA多光标总“失灵”?20年IDE生态专家拆解JDK版本、插件冲突与Keymap配置三大致命坑
  • HA-PEG 改性纳米粒实现体内长效循环的原理剖析
  • IDEA中MyBatis Mapper XML跳转失败,全因这4个Gradle/Maven依赖冲突!(含版本兼容对照表v2.8.1)
  • Better BibTeX:为LaTeX用户打造的终极Zotero插件指南
  • Mac百度网盘终极加速方案:免费解锁SVIP极速下载的完整指南
  • IntelliJ IDEA MyBatis插件突然失灵?92%开发者忽略的XML跳转配置黑洞(附一键诊断脚本)
  • python 打包桌面应用另类实现方法:基于 Python + Node.js + Vue.js 的桌面应用程序,使用 pywebview 提供原生桌面体验。
  • GPS在9151模块中的功耗
  • Diablo Edit2:3步打造完美暗黑破坏神II角色的终极指南
  • 百度网盘macOS客户端本地优化方案的技术解析
  • 2026年企业级大文件传输加速新突破:源头厂家揭秘
  • LV30条码扫描器与TM4C1299微控制器的嵌入式系统设计
  • 为什么你的IDEA永远跳不到MyBatis XML?揭秘IntelliJ 2023.3+对mybatis-spring-boot-starter 3.0.2的兼容性断层(紧急补丁已发布)
  • AI 时代供应链人不被替代:SCMP 帮你从执行者变成战略指挥官