259
社区成员
发帖
与我相关
我的任务
分享一、本周计划任务与实际完成任务
1.1 本周计划任务
本周,团队整体处于敏捷第五迭代的收尾阶段,本周个人计划任务由迭代计划会议拆解确定,主要涵盖以下几项:完成用户认证模块下的三个后端接口开发(用户注册、用户登录、退出登录),为全组后续功能开发提供统一的身份认证底座;配合团队完成手机端APK打包与安装测试,验证前端界面在真实Android设备上的可用性;参与UML建模工作,依据项目整体架构绘制四类UML图;同时主导推进项目测试报告的撰写与完善工作。
1.2 实际完成任务
本周所有计划任务均已完成,具体完成情况如下:
1.在用户认证模块方面,本周完成了用户注册接口(POST /api/users/register)、用户登录接口(POST /api/users/login)和退出登录接口(POST /api/users/logout)三个接口的完整开发。注册接口实现了对用户名非空、密码不少于6位、用户名唯一性三项约束的后端校验,密码采用BCryptPasswordEncoder进行哈希存储;登录接口在通过用户名和密码验证后以UUID生成Token并持久化至user_tokens表,记录过期时间;退出登录接口通过将对应Token的valid字段置为0来实现即时失效,保证账户安全。三个接口均以统一的ApiResponse<T>格式封装响应体,与团队约定的接口规范完全一致。
2.在APK打包与手机端测试方面,完成了将前端页面打包为Android WebView APK的工作,并在真实Android手机上进行了安装和功能验证,确认手机端能够正常加载前端界面、访问公网服务器后端接口,主要功能路径在移动端均可正常使用。
3.在UML建模方面,依据项目整体架构,参与绘制了四类UML图:用例图描述了不同角色(游客、已登录用户)与系统功能之间的交互关系;类图呈现了核心实体(User、Task、Course、Reminder等)的属性与方法及其关联关系;顺序图重点对用户登录认证链路(前端→AuthInterceptor→UserService→数据库)进行了时序描述;E-R图刻画了数据库主要表之间的实体关联关系。上述图形作为设计文档的组成部分提交至团队文档库。
5.在测试报告方面,本周主导参与了团队集成测试报告的撰写与审查,按照参考规范系统梳理了测试目标、测试环境、各功能模块的测试用例(共45条)、测试记录及Bug统计分析,对初稿中测试记录描述空洞、用例粒度不足等问题进行了全面完善。
此外,本周还参与修复了项目集成测试阶段暴露的若干缺陷,包括用户认证模块初期存在的Token持久化逻辑缺失问题,以及课程导入模块中相关后端逻辑的协同排查与修复验证。
1.3 本周PSP时间记录
依照PSP规范,本周各阶段工作的预估耗时与实际耗时对比如下表所示。
|
PSP阶段 |
阶段描述 |
预估耗时(min) |
实际耗时(min) |
|
Planning |
计划(本周任务拆解与时间估算) |
20 |
25 |
|
Development · Analysis |
需求分析(用户认证三接口、APK部署需求梳理) |
60 |
70 |
|
Development · Design |
概要设计与接口规范制定 |
60 |
60 |
|
Development · Coding |
编码实现(注册/登录/退出登录接口,APK前端适配) |
420 |
540 |
|
Development · Code Review |
代码自审与互审 |
60 |
60 |
|
Development · Test |
接口自测与回归Bug验证 |
90 |
110 |
|
UML建模 |
参与绘制用例图、类图、顺序图、E-R图 |
120 |
140 |
|
Reporting |
主导测试报告撰写与完善 |
150 |
180 |
|
Postmortem |
本周工作回顾与周报撰写 |
40 |
50 |
|
合计 |
|
1020 |
1235 |
本周实际总耗时约为预估的1.21倍,主要超支集中在编码实现阶段(预估420分钟,实际540分钟)。超支的主要原因是退出登录接口初期未考虑多设备Token的处理边界,以及APK在部分Android版本上出现WebView跨域问题,定位和修复耗时较多。
二、个人工作中存在的问题及应对措施
本周在工作推进过程中遭遇了两个值得记录的问题。
第一个问题是APK在不同Android版本上的跨域兼容性问题。在将前端打包为WebView APK后,测试发现在Android 10及以下版本的设备上,WebView向后端发送携带Authorization头的请求时会触发CORS预检(OPTIONS请求),而后端最初未对OPTIONS请求进行显式放行,导致Token校验拦截了预检请求,前端收到401错误。发现该问题后,本人首先通过Chrome远程调试(chrome://inspect)定位到了具体的请求失败日志,随后在AuthInterceptor的preHandle方法中增加了对OPTIONS方法的提前放行逻辑,问题得以解决。这一经历提示我在设计认证拦截器时应将跨域预检请求列为标准放行场景,而不依赖框架的默认配置。
第二个问题是在UML建模过程中,各成员对类图中实体关联关系的理解存在一定分歧,尤其是Task与Reminder之间是"一对多"还是"多对多"的争议花费了较多讨论时间。应对措施是回归数据库表结构进行确认——reminders表中通过task_id外键直接关联tasks表,明确为一对多关系,最终以数据模型为准统一了理解。这一经历让我认识到在设计讨论中直接引用已有的数据库Schema作为单一可信来源(Single Source of Truth),可以有效缩短分歧讨论的时间。
三、个人学习的新知识点及学习途径与方法
本周新接触和深化掌握的知识点主要集中在以下三个方向。
一是Spring Security与手动Token认证机制的对比理解。本周在实现认证模块的过程中,通过查阅Spring官方文档和Stack Overflow上的相关讨论,深入理解了基于HandlerInterceptor手动实现Token校验与引入Spring Security框架两种路径的适用场景差异。项目采用的手动拦截器方案在代码量和依赖复杂度上都更为轻量,适合本项目的规模;而Spring Security更适合需要精细权限管理的企业级场景。这一对比理解让我在技术选型的思维上有了更清晰的框架。
二是Android WebView的跨域调试方法。在处理APK跨域问题的过程中,学习并实践了Chrome远程调试(USB调试+chrome://inspect/#devices)对WebView内页面进行实时Network面板抓包和Console日志查看的方法。此前调试前端问题主要依赖PC浏览器的开发者工具,本次掌握的移动端远程调试技能填补了这一空白,学习途径主要来源于Chrome DevTools官方文档。
三是UML图的实践绘制方法。此前对UML图的了解主要停留于课堂理论,本周借助draw.io工具完成了四类图的实际绘制,在操作过程中对类图中接口与实现类的表示方式(虚线+空心三角形)、顺序图中同步消息与返回消息的区分、以及E-R图中主键与外键的标注规范有了更为直观的掌握。学习途径包括draw.io官方示例库和《UML精粹》相关章节的查阅。
四、个人对本周工作的感悟
本周是整个项目周期中工作密度较高的一周,横跨后端接口开发、移动端部署测试、文档建模和测试报告四条并行线索。回顾下来,最深刻的感受有以下几点。
其一,认证模块作为底层基础设施的优先交付价值。用户注册、登录和退出登录三个接口是组内其他所有需要身份验证功能的前提依赖。本周优先完成这三个接口并向组内同步了UserContext.userId()的使用方式后,其他成员在开发任务管理、课程管理等模块时能够无阻塞地接入认证机制,这验证了在迭代中识别关键依赖并主动优先交付的重要性。若认证模块延迟完成,将可能阻塞整个团队的并行开发进度。
其二,文档工作与开发工作之间的张力与平衡。本周在完成接口开发的同时还主导了测试报告的撰写,两类工作在思维模式上存在显著差异——编码要求深度专注,而文档撰写要求整体视角和表达能力。在实践中发现,将两类工作交替安排(上午编码,下午/晚上写文档)比混合穿插效果更好,能够减少上下文切换带来的效率损耗。这一工作节奏的调整是本周的一个实用收获。
其三,测试报告主导撰写过程中对系统整体的再认知。在梳理45条测试用例的过程中,本人系统性地过了一遍每个功能模块的输入输出边界和异常场景,这实际上是一次对整个系统的非正式整体审查。在此过程中发现了若干之前开发时未曾意识到的边界情况(如评分值为null时的统计行为),并推动了相应的补充验证。这让我理解了为什么软件工程强调测试人员独立于开发人员——不同视角能发现不同类型的问题。