科技政策查询手机端系统 - PSP 记录与项目总结
一、PSP2.1 时间记录表格
- 预估时间记录
| PSP2.1 | Personal Software Process Stages | 预估时间(分钟) |
|---|---|---|
| Planning | 计划 | 30 |
| · Estimate | ・估计这个任务需要多少时间 | 30 |
| Development | 开发 | 480 |
| · Analysis | ・需求分析 (包括学习新技术) | 60 |
| · Design Spec | ・生成设计文档 | 40 |
| · Design Review | ・设计复审 (和同事审核设计文档) | 20 |
| · Coding Standard | ・代码规范 (为目前的开发制定合适的规范) | 10 |
| · Design | ・具体设计 | 60 |
| · Coding | ・具体编码 | 180 |
| · Code Review | ・代码复审 | 30 |
| · Test | ・测试(自我测试,修改代码,提交修改) | 80 |
| Reporting | 报告 | 90 |
| · Test Report | ・测试报告 | 40 |
| · Size Measurement | ・计算工作量 | 20 |
| · Postmortem & Process Improvement Plan | ・事后总结,并提出过程改进计划 | 30 |
| 合计 | 600 |
- 实际时间记录
| PSP2.1 | Personal Software Process Stages | 实际时间(分钟) |
| --------------------------------------- | -------------------------------- | -------- |
| Planning | 计划 | 25 |
| · Estimate | ・估计这个任务需要多少时间 | 25 |
| Development | 开发 | 540 |
| · Analysis | ・需求分析 (包括学习新技术) | 70 |
| · Design Spec | ・生成设计文档 | 45 |
| · Design Review | ・设计复审 (和同事审核设计文档) | 15 |
| · Coding Standard | ・代码规范 (为目前的开发制定合适的规范) | 10 |
| · Design | ・具体设计 | 70 |
| · Coding | ・具体编码 | 200 |
| · Code Review | ・代码复审 | 40 |
| · Test | ・测试(自我测试,修改代码,提交修改) | 90 |
| Reporting | 报告 | 100 |
| · Test Report | ・测试报告 | 45 |
| · Size Measurement | ・计算工作量 | 20 |
| · Postmortem & Process Improvement Plan | ・事后总结,并提出过程改进计划 | 35 |
| | 合计 | 665 |
二、测试用例设计(共 12 个)
测试环境
数据库:MySQL 8.0,包含policy表(含 10 条测试数据)
服务器:Tomcat 10.1
测试设备:手机浏览器(Chrome Mobile、Safari)
测试用例列表
| 序号 | 测试目的 | 输入 | 预期结果 | 实际结果 | 是否通过 |
| ---- | ------------- | -------------------- | -------------------------------- | ------------------ | ---- |
| 1 | 关键字模糊查询(政策名称) | 关键字:科技创新 | 显示政策名称包含 “科技创新” 的 2 条政策 | 显示 2 条匹配政策,名称、文号正确 | ✅ |
| 2 | 关键字模糊查询(全文) | 关键字:研发投入 | 显示正文包含 “研发投入” 的 1 条政策 | 显示 1 条匹配政策,正文内容正确 | ✅ |
| 3 | 多条件组合查询 | 关键字:科技,发布机构:河北省科学技术厅 | 显示同时满足两个条件的 2 条政策 | 显示 2 条匹配政策,条件均符合 | ✅ |
| 4 | 政策分类筛选 | 选择分类:企业 | 显示分类为 “企业” 的 1 条政策 | 显示 1 条匹配政策,分类正确 | ✅ |
| 5 | 分页功能(第一页) | 无参数(默认第一页) | 显示前 10 条政策,分页栏显示 “第 1 页 / 共 1 页” | 显示 10 条政策,分页信息正确 | ✅ |
| 6 | 分页功能(边界测试) | 页码:0 | 自动修正为第 1 页,显示前 10 条政策 | 显示第 1 页数据,无报错 | ✅ |
| 7 | 政策详情查看 | 点击政策名称:关于促进科技创新的若干政策 | 打开新窗口,显示该政策的标题、文号、全文等完整信息 | 新窗口显示完整详情,信息正确 | ✅ |
| 8 | 空关键字查询 | 关键字:(空格) | 显示所有政策(共 10 条) | 显示 10 条政策,无过滤 | ✅ |
| 9 | 无匹配数据查询 | 关键字:测试123456 | 显示 “暂无符合条件的政策” | 显示提示信息,无报错 | ✅ |
| 10 | 非法参数处理 | 页码:abc | 自动修正为第 1 页,显示前 10 条政策 | 显示第 1 页数据,无报错 | ✅ |
| 11 | 特殊字符查询 | 关键字:冀政发[2022] | 显示文号包含 “冀政发 [2022]” 的 1 条政策 | 显示 1 条匹配政策,文号正确 | ✅ |
| 12 | 新窗口打开验证 | 点击任意政策名称 | 浏览器打开新标签页,显示详情页 | 新标签页正常打开,详情页加载成功 | ✅ |
程序正确性验证说明
通过以下方式确保程序正确:
功能覆盖:测试用例覆盖了核心功能(模糊查询、分类筛选、分页、详情查看)、边界情况(空数据、非法参数)、异常场景(无匹配数据);
数据一致性:查询结果与数据库表数据逐一比对,确保政策名称、文号、全文等信息完全匹配;
交互验证:手动测试手机端点击、滑动、分页等交互,确认新窗口打开、数据加载无延迟或报错;
兼容性测试:在 Chrome Mobile、Safari 等主流手机浏览器测试,界面布局、功能均正常。
三、个人项目学习总结 - 技术收获
MVC 架构实践:深入理解了 Model(实体类)、View(JSP)、Controller(Servlet)的分层职责,通过 Dao 层封装数据库操作,代码可维护性显著提升;
移动端适配:掌握了响应式布局的核心(、百分比宽度、弹性布局),解决了手机端界面适配问题;
数据库优化:使用 Druid 连接池复用数据库连接,避免频繁创建 / 关闭连接的性能损耗;分页查询减少了数据传输量,提升了移动端加载速度;
异常处理:完善了参数校验(如页码非数字自动修正)、异常捕获(数据库操作异常打印日志,前端友好提示),程序鲁棒性增强。 - 过程改进
PSP 的价值:通过 PSP 表格记录时间,发现 “测试” 和 “代码复审” 阶段实际耗时超预估,后续项目会提前预留更多时间用于测试和代码优化;
需求分析的重要性:初期因未明确 “新窗口打开详情” 的需求,曾返工修改 JSP 链接(添加target="_blank"),后续会更细致地梳理需求细节;
测试驱动开发:本次先编码后测试,导致部分 bug(如分页计算错误)在后期才发现,后续尝试 “先写测试用例,再编码” 的方式,提升代码质量。 - 问题解决能力提升
中文乱码问题:通过 “数据库连接串指定 UTF-8 + JSP 设置 charset + 响应设置 UTF-8” 的三重方案,彻底解决了中文查询、显示乱码;
分页逻辑错误:最初总页数公式为totalCount / PAGE_SIZE,导致整除时丢失最后一页,修正为(totalCount + PAGE_SIZE - 1) / PAGE_SIZE,解决了边界问题;
移动端点击延迟:通过 CSS 优化(去除hover效果、增大点击区域),提升了手机端交互的流畅度。 - 后续改进方向
引入 Redis 缓存政策分类、热门查询结果,减少数据库压力;
替换为 Elasticsearch 实现全文检索,提升海量数据下的查询效率;
引入移动端 UI 框架(如 Vant),优化界面美观度和交互体验;
增加用户行为日志(如查询关键字、点击记录),为后续推荐功能做准备
