团队作业3--需求改进&系统设计

一、需求规格书修改说明

1. 《需求规格说明书》改进

  • 数据备份与恢复:未说明用户误删任务后的恢复机制或定期备份功能
  • 用户个性化设置缺失:未提及用户自定义提醒方式(如仅短信/仅邮件/两者结合)、提醒时间提前量(如提前1小时/1天)的设置
  • 边界场景未覆盖:用户同时修改同一任务时的冲突处理(如Web端和桌面端同时编辑)
  • 任务依赖关系:复杂任务可能需要子任务或前后依赖(如“买食材”必须在“做饭”之前完成)

2. 用户故事

场景:大学生小林的考试周任务管理

(1)任务创建与自动分类

  • 小林输入任务:“完成机器学习大作业,参考教材第5章”,系统通过关键词“作业”“教材”自动分类为“学习”。
  • 他手动添加标签“#紧急”和子任务:“收集数据集→编写代码→撰写报告”。

(2)智能提醒与情感化交互

  • 截止时间前2天,系统发送邮件提醒:“你的‘机器学习大作业’还剩48小时!加油,你可以的~”
  • 任务完成后,界面显示鼓励动画:“今日已完成3/5任务,效率超90%同学!”

(3)多端同步与冲突处理

  • 小林在手机Web端修改了作业截止时间,桌面端实时同步更新。
  • 若同时修改,系统提示“检测到冲突,请选择保留哪个版本”。

3. 功能分析的四个象限

用户需求明确 用户需求不明确
核心功能 任务增删改查,多端实时同步,基础提醒(邮件/短信)
辅助功能 任务标签/手动分类,数据备份与恢复,冲突解决(多端编辑)

4. WBS与进度调整

  • 任务依赖关系 → 智能分类模块扩展(第8周)
  • 冲突处理测试 → 桌面端与Web端联调(第10周)
    风险控制:若延期,优先保证核心功能(任务管理、同步)

二、需求&原型改进 - 20分

  • 问题1:任务自动分类的准确性不足
    修改1:
  1. 改进自动分类算法,引入更全面的关键词库和机器学习模型(如朴素贝叶斯分类器)。
  2. 允许用户手动纠正分类错误,并将用户反馈数据用于模型优化。
  3. 示例:任务描述包含“代码”“调试”时,分类为“开发”而非“学习”。
  • 问题2:提醒方式单一,易被忽略
    修改2:
  1. 增加多级提醒(提前1天、1小时、10分钟),支持自定义提醒时间。
  2. 集成微信/钉钉等常用平台通知,避免短信/邮件的低到达率。
  3. 添加“紧急任务”红色高亮标识,强化视觉提醒。
  • 问题3:多端同步存在延迟
    修改3:
  1. 采用WebSocket实现实时双向同步,替代轮询机制。
  2. 增加“同步状态”提示图标(如绿色√表示同步成功)。
  • 问题4:情感化设计流于表面
    修改4:
  1. 根据任务完成情况推送个性化鼓励(如“连续3天完成任务,继续保持!”)。
  2. 允许用户选择UI主题(如“极简模式”“卡通模式”)。
  • 问题5:缺乏任务优先级管理
    修改5:
  1. 增加 “优先级”标记(高/中/低),支持按优先级排序和筛选。
  2. 智能推荐优先级:根据截止时间、任务类型(如“考试复习”自动设为高优先级)。
  3. UI优化:高优先级任务显示为红色,并在列表顶部置顶
  • 问题6:团队协作功能缺失
    修改6:
  1. 共享任务列表:允许用户创建小组并分配任务(如“小组作业分工”)。
  2. 进度追踪:显示每个成员的完成情况(如“3/5 任务已完成”)。
  3. 权限管理:创建者可编辑任务,其他人仅能标记完成。
  • 问题7:数据分析与复盘功能薄弱
    修改7:
  1. 任务完成统计:按周/月展示完成率、拖延情况(图表可视化)。
  2. 拖延分析:识别用户常延迟的任务类型(如“学习类任务延迟率40%”)。
    3.改进建议:基于数据推送时间管理技巧(如“你常拖延写作任务,试试番茄钟法”)。
  • 用户痛点与场景
  1. 痛点:
  • “常忘记小组作业的细分任务”(学生用户A)。
  • “紧急工作被淹没在琐事中”(职场用户B)。
  • 照片:用户手机备忘录杂乱无章的截图。
  1. 使用前场景:纸质便签易丢失,电子清单无分类(视频展示用户翻找便签的过程)。

  2. 使用后场景:

  • 自动分类将“课程报告”归入学习类,并提前1天提醒(视频演示提醒弹窗)。
  • 用户反馈:“颜色区分让我一眼看到优先级”(访谈片段)。

调研方法:

  • 情景模拟:让用户在原型中处理“考试复习+聚餐安排”的冲突任务。
  • A/B测试:对比用户对“机械提醒”vs.“鼓励性语言”的情绪反应(记录微笑次数)。

关键改进依据:

  • 80%用户希望增加“团队任务分配”功能(后续版本规划)。
  • 所有用户认为分类准确性比AI推荐更重要(优先级调整)。

三、系统设计 - 50分

1.系统架构图
┌───────────────┐ ┌───────────────┐
│ Client │ │ Third-Party │
│ (Web/Mobile) │◄─────►│ SMS/Email │
└───────┬───────┘ └───────────────┘

│ HTTPS/WebSocket

┌───────────────┐
│ API Gateway │
└───────┬───────┘

│ Service Router

┌───────────────────────────────┐
│ Application Layer │
├─────────────┬───────┬─────────┤
│ Task Service│Reminder│ Sync │
│ │ Service│ Service │
└───────┬─────┴───┬───┴────┬────┘
│ │ │
▼ ▼ ▼
┌───────────────────────────────┐
│ Service Layer │
├─────────────┬─────────┬───────┤
│ Classification│ Auth │ Cache │
│ Engine │ Service │ (Redis)│
└───────┬───────┴─────────┴───────┘



┌───────────────┐
│ Data Layer │
│ MySQL │
└───────────────┘
2. 数据库设计(MySQL)
用户表 (users)
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) UNIQUE NOT NULL, email VARCHAR(100) UNIQUE NOT NULL, phone VARCHAR(20), password_hash CHAR(60) NOT NULL, timezone VARCHAR(50) DEFAULT 'UTC', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );

任务表 (tasks)
CREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, title VARCHAR(100) NOT NULL, description TEXT, due_time DATETIME NOT NULL, status ENUM('未开始','进行中','已完成') DEFAULT '未开始', category_id INT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users(id), FOREIGN KEY (category_id) REFERENCES categories(id) );
CREATE INDEX idx_user_status ON tasks(user_id, status); CREATE INDEX idx_due_time ON tasks(due_time);

分类表 (categories)
SQL CREATE TABLE categories ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30) UNIQUE NOT NULL, description VARCHAR(200), is_system BOOLEAN DEFAULT 1 -- 标识系统预设分类 );

-- 初始数据
INSERT INTO categories (name, description) VALUES
('工作', '工作任务'),
('学习', '学习任务'),
('娱乐', '娱乐活动');
标签表 (tags)
SQL CREATE TABLE tags ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30) UNIQUE NOT NULL, user_id INT, -- NULL表示系统标签 color VARCHAR(7), FOREIGN KEY (user_id) REFERENCES users(id) );
CREATE TABLE task_tags ( task_id INT NOT NULL, tag_id INT NOT NULL, PRIMARY KEY (task_id, tag_id), FOREIGN KEY (task_id) REFERENCES tasks(id), FOREIGN KEY (tag_id) REFERENCES tags(id) );
提醒记录表 (reminders)
SQL CREATE TABLE reminders ( id INT AUTO_INCREMENT PRIMARY KEY, task_id INT NOT NULL, user_id INT NOT NULL, notify_time DATETIME NOT NULL, channel ENUM('email','sms') NOT NULL, status ENUM('pending','sent','failed') DEFAULT 'pending', retries INT DEFAULT 0, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (task_id) REFERENCES tasks(id), FOREIGN KEY (user_id) REFERENCES users(id) );
CREATE INDEX idx_notify_status ON reminders(notify_time, status);

  1. 核心模块设计
  • 自动分类引擎
    使用预定义关键词匹配(工作:会议/项目/报告;学习:考试/课程/阅读;娱乐:电影/游戏/旅行)
    可扩展为机器学习模型(BERT文本分类)

  • 提醒服务
    定时任务每分钟扫描reminders表
    使用Redis sorted set实现高效提醒调度
    失败重试机制(最多3次)

  • 同步服务
    使用WebSocket实现实时同步
    版本号机制保证数据一致性
    增量更新传输

  1. 安全设计
  • JWT身份验证
  • 敏感数据加密存储(AES-256)
  • 请求速率限制
  • SQL注入防护
  1. 性能优化
  • Redis缓存:
    用户任务列表缓存
    分类元数据缓存
  • 数据库读写分离
  • 异步任务队列(Celery)

6.扩展性设计

  • 支持插件式分类算法
  • 可配置的提醒规则
  • Webhook第三方集成接口

四、Alpha任务分配计划 - 20分

  • 人员分工矩阵
角色 人员代号 主要职责
PM PM1(黄娟英) 需求管理、进度跟踪、资源协调
前端 FE1(黄熙儿)/FE2(杨子俊) 实现前端界面与接口联调
后端 BE1(袁卓妍)/BE2(吴其锦) 接口开发、数据库设计、系统集成
智能分类 IC1(黄娟英) 智能分类算法开发与优化
提醒推送 RP1(钟鸣) 邮件/短信提醒功能开发与测试
测试 QA1(夏钦涛) 用例编写、测试执行、缺陷管理
  • 里程碑计划
    gantt
    dateFormat  YYYY-MM-DD
    section 核心功能
    任务管理模块    :active, 2025-04-15, 7d
    任务分类模块    :crit, 2025-04-22, 8d
    日程提醒模块    :2025-04-30, 6d
    数据同步模块    :2025-05-06, 5d
    
    section 质量保障
    接口联调       :crit, 2025-05-03, 5d
    系统测试       :2025-05-08, 7d
  • 详细任务分配(按周拆分)

第1周(04.15 - 04.21)基础框架搭建

任务 负责人 交付物 关键依赖
需求确认与接口定义 PM1 + 全体 接口文档v1.0 需04/17前冻结核心接口
Web端基础框架搭建 FE1 可交互的Web端基础页面框架 等待接口文档
桌面端基础框架搭建 FE2 可运行的桌面端基础框架 需要服务器资源
数据库设计与建表 BE1 初始化SQL脚本 PM确认字段定义
测试环境搭建 QA1 测试用例模板 需要服务器资源

第2周(04.22 - 04.28)核心功能开发

任务 负责人 交付物 关键依赖
任务创建功能 BE1 + FE1 可成功创建任务并保存到数据库的完整流程 需调用数据库接口
任务修改功能 BE1 + FE1 支持修改任务各项信息及状态的功能 需要前端页面提供修改入口
任务删除功能(单/批量) BE1 + FE2 可实现单个和批量删除任务的功能 需前端提供操作触发
自动分类功能 IC1 可根据关键字自动分类任务的算法 需要任务描述数据
手动分类功能 FE2 可手动调整分类及添加自定义标签的界面 需要BE1提供数据接口

第3周(04.29 - 05.05)功能完善与优化

任务 负责人 交付物 关键依赖
日程提醒逻辑开发 RP1 可根据任务截止时间发送邮件/短信提醒的逻辑 需联调邮件/短信服务
数据同步机制开发 BE2 实现Web和桌面端数据实时同步的功能 需要前后端配合测试
智能分类优化 IC1 提高智能分类准确率的优化算法 需要大量测试数据反馈
前端界面优化 FE1/FE2 更美观易用的前端界面设计 等待各功能接口稳定
压力测试方案 QA1 核心接口压测报告 需要部署预发布环境

第4周(05.06 - 05.12)联调测试与收尾

任务 负责人 交付物 关键依赖
端到端测试 QA1 + FE + BE 完整的ToDoList系统功能验证 需要所有接口就绪
安全审计 BE1 敏感数据加密验证报告 需PM协调第三方扫描
部署上线 BE2 生产环境部署包 需要运维手册
用户培训材料 PM1 用户使用手册及培训PPT 需要核心功能截图

每日执行节奏

  • 09:00 - 09:15 每日站会(全员)→ 同步进度/阻塞问题
  • 10:00 - 12:00 编码时间(开发)
  • 14:00 - 15:00 接口联调(FE + BE结对)
  • 16:00 - 17:00 测试用例评审(QA主导)
  • 19:00前 提交当日代码(强制要求)

风险应对方案

  • 接口延迟风险
  1. 采取“接口先行”策略,BE提前1天提供Mock数据
  2. FE使用EasyMock工具模拟接口
  • 邮件/短信服务故障
  1. 准备备用提醒方式,如系统内弹窗提醒(隐藏功能)
  2. 及时联系邮件/短信服务提供商解决问题
  • 性能瓶颈
  1. 对数据同步接口做优化(BE2负责)
  2. 启用缓存机制提高常用数据读取速度(BE1实施)

五、测试计划 - 10分

1.引言

  • 项目背景
    本系统旨在为用户提供智能化的任务管理服务,支持任务创建、分类、提醒及多端数据同步功能,目标用户为学生、开发者和团队,通过情感化设计和AI推荐提升用户体验。
  • 测试术语
    黑盒测试:基于功能需求验证输入输出是否符合预期。
    压力测试:模拟高并发场景检验系统稳定性。
    同步延迟:数据在多端同步所需的时间阈值(目标≤2秒)。

2. 任务概述

  • 测试范围
    功能测试:任务管理(增删改查)、自动分类、提醒推送、跨端同步。
    兼容性测试:Chrome/Edge浏览器;Windows 10/11桌面端。
    性能测试:500并发任务处理、同步延迟≤2秒、提醒准时率100%。
    安全性测试:用户数据加密存储、权限控制(仅所有者可修改任务)。
  • 测试目标
    确保核心功能符合需求,无阻塞性缺陷。
    验证多端数据一致性及同步稳定性。
    达到用户量基础目标(500人)下的系统可用性。

3. 测试策略
(1) 测试人员需求与分工

角色 人员 职责
前端测试工程师 黄熙儿、杨子俊 负责 Vue.js 前端功能测试、组件单元测试、跨浏览器兼容性测试。
后端测试工程师 夏钦涛、吴其锦 负责 Spring Boot 接口测试、数据库操作验证、性能压测。
自动化测试工程师 黄娟英 使用 Selenium/Cypress 实现端到端自动化测试,集成 CI/CD 流程。
系统测试工程师 钟鸣、袁卓妍 负责多端同步测试、提醒推送验证、用户权限管理测试。

(2) 测试方法

测试类型 方法/工具 说明
前端功能测试 手动测试 + Vue Test Utils 验证 Vue 组件渲染逻辑、用户交互(如任务增删改查)、表单校验。
后端单元测试 JUnit 5 + Mockito 测试 Spring Boot 业务逻辑(如分类算法、提醒调度)、DAO 层数据操作。
接口测试 RestAssured + Postman 验证 RESTful API 的请求响应、状态码、数据一致性。
自动化测试 Cypress + Selenium 模拟用户端到端操作(如登录-创建任务-同步-提醒),覆盖核心业务流程。
性能测试 JMeter + Gatling 模拟高并发用户操作(如 100 用户同时添加任务),测试 API 吞吐量。
安全测试 OWASP ZAP + Spring Security 测试 检查 XSS、CSRF 漏洞,验证用户权限控制(如 JWT 鉴权)。

(3) 工具引用及测试培训

  • 工具引用:
    • 后端测试:JUnit 5(单元测试)、RestAssured(接口测试)、H2 内存数据库(隔离测试环境)。
    • 前端测试:Cypress(端到端测试)、Jest(单元测试)。

(4) 测试阶段计划

阶段 工作内容 人员安排
单元测试 - Vue 组件单测(任务列表渲染、表单提交) - Spring Boot 业务逻辑单测(分类算法、提醒触发) 黄熙儿、夏钦涛
集成测试 - 前后端接口联调(任务创建与同步) - Spring Boot 与 MySQL 集成测试 杨子俊、袁卓妍
系统测试 - 端到端业务流程测试(登录-任务管理-提醒推送) - 性能压测(500 并发用户) 吴其锦、钟鸣
验收测试 - 用户试用反馈收集(500 人基础目标) - 修复关键缺陷并复测 全员参与

(5) 测试停止及恢复条件

  • 停止条件:
    后端核心接口(如任务同步)返回 500 错误或响应时间 > 5 秒。
    前端 Vue 路由守卫失效(如未登录用户可访问任务列表)。
  • 恢复条件:
    修复 Spring Boot 接口逻辑并验证通过。
    重新执行关联的端到端测试用例。

(6) 测试文档及缺陷管理

  • 测试文档:
    测试用例:使用 TestRail 管理,按模块分类(用户管理、任务管理、同步服务)。
    测试报告:通过 Allure 生成可视化报告(集成 JUnit 和 RestAssured)。
  • 缺陷管理:
    工具:JIRA(标记为 前端/后端-Java/同步/安全)。
    流程:测试人员提交缺陷 → 开发修复 → 测试验证 → 关闭。

(7) 测试环境

环境类型 配置
前端环境 - Node.js v16+、Vue CLI 5.x、Chrome 100+ - 桌面端:Windows 10 + .NET 6
后端环境 - Java 17、Spring Boot 3.x、MySQL 8.0 - 服务器:Tomcat 10 + Docker 容器化部署

4.测试资源
(1) 硬件资源需求
测试服务器:AWS EC2 实例(4核 CPU/8GB RAM/50GB SSD)。
客户端设备:
Web 端:3 台 Windows PC、2 台 MacBook。
桌面端:2 台 Windows 10/11 物理机。
(2) 软件资源需求
后端:IntelliJ IDEA(开发工具)、JMeter 5.5、Postman。
前端:VSCode + Vue Devtools、Cypress 12.0+。
(3) 测试环境需求
数据库:测试使用 H2 内存数据库(单元测试)与 MySQL 8.0(集成测试)。
网络环境:使用 Charles Proxy 模拟高延迟、断网场景。
(4) 测试人员需求
专职测试人员:4 人(2 前端测试、2 后端测试)。
开发支持:2 人(协助调试复杂场景)。
(5) 其他资源
测试数据生成:使用 Java Faker 库生成模拟任务数据。

5. 风险评估

风险类型 描述 应对措施
技术风险 Spring Boot 依赖冲突导致启动失败 统一管理 Maven 依赖版本,每日构建验证。
协作风险 前后端接口定义变更未及时同步 使用 Swagger 维护实时 API 文档,每日晨会确认接口状态。
环境风险 Docker 容器化部署与物理机环境差异 在物理机和容器环境并行测试关键功能。
人力风险 Java 测试工程师对 Spring Boot 不熟悉 安排结对编程,由开发人员(袁卓妍)指导测试代码编写。
安全风险 JWT 令牌泄露导致越权访问 使用 OWASP ZAP 扫描接口,增加 Token 有效期和刷新机制测试。

6. 补充说明
(1) 后端技术适配:
Spring Boot 的单元测试需覆盖 Service 层逻辑和 Controller 层接口。
使用 Testcontainers 验证 MySQL 集成操作的真实性。
(2) 持续集成:
Jenkins 流水线集成 Maven 构建、JUnit 测试、Allure 报告生成。
(3) 监控与日志:
测试环境集成 ELK(Elasticsearch + Logstash + Kibana)追踪接口调用日志。

posted @ 2025-04-21 10:57  bugubugu!  阅读(166)  评论(0)    收藏  举报