Compare commits

..

1 Commits

Author SHA1 Message Date
杨博文 f0e9783aec 文档修改
2 months ago

File diff suppressed because it is too large Load Diff

Binary file not shown.

@ -1,447 +0,0 @@
# MuseGuard 系统测试报告
---
## 第一章 目的
本测试报告旨在全面记录和评估 MuseGuard基于对抗性扰动的多风格图像生成防护系统的软件质量状况通过系统化的测试活动验证系统功能的正确性、稳定性和可靠性为项目验收和后续维护提供依据。
---
## 第二章 测试概述
### 2.1 测试对象
- 项目名称MuseGuard - 基于对抗性扰动的多风格图像生成防护系统
- 测试版本v1.0 (main 分支最新代码)
- 测试范围Web 应用整体功能(前端 + 后端)
### 2.2 项目背景
随着 AI 图像生成技术的快速发展艺术家和创作者的作品面临被未经授权复制和模仿的风险。MuseGuard 提供一套完整的图像保护解决方案:
- 图像加噪防护:在图像中添加人眼不可见的对抗性扰动,干扰 AI 模型的学习过程
- 多算法支持:集成 ASPL、SimAC、CAAT、CAAT Pro、PID、Glaze 等多种防护算法
- 专题防护:针对人脸定制生成、人脸编辑、风格迁移等特定攻击场景的定制化防护
- 效果验证通过微调测试、质量评估FID/LPIPS/SSIM/PSNR、热力图分析验证防护效果
- 异步任务处理:基于 Redis + RQ 的任务队列,支持大规模图片批量处理
### 2.3 测试目的
1. 验证系统各功能模块是否符合需求规格说明书的要求
2. 发现并记录系统中存在的缺陷和问题
3. 评估系统的整体质量水平和稳定性
4. 为系统上线提供质量保障依据
### 2.4 测试时间
- 测试开始时间2026年1月4日
- 测试结束时间2026年1月7日
- 测试执行耗时68.09秒
---
## 第三章 测试环境与方法
### 3.1 硬件环境
| 项目 | 配置 |
|------|------|
| 云服务平台 | AutoDL |
| 操作系统 | Linux (Ubuntu) |
| GPU | NVIDIA GPU (CUDA 支持) |
| 处理器 | 云服务器 CPU |
| 内存 | 云服务器配置 |
### 3.2 软件环境
#### 3.2.1 后端环境
| 软件 | 版本 |
|------|------|
| Python | 3.11.14 |
| Flask | 3.0.0 |
| Flask-SQLAlchemy | 3.1.1 |
| Flask-JWT-Extended | 4.6.0 |
| MySQL | PyMySQL 1.1.1 |
| Redis | 5.0.1 |
| RQ (任务队列) | 1.16.2 |
#### 3.2.2 前端环境
| 软件 | 版本 |
|------|------|
| Vue.js | 3.x |
| Vite | 构建工具 |
| Three.js | 3D 渲染 |
| Element Plus / 自定义组件 | UI 框架 |
### 3.3 测试工具
| 工具 | 版本 | 用途 |
|------|------|------|
| pytest | 9.0.2 | 后端测试框架 |
| pytest-cov | 7.0.0 | 代码覆盖率统计 |
| pytest-flask | 1.3.0 | Flask 测试支持 |
| hypothesis | 6.148.7 | 基于属性的测试 |
| factory-boy | 3.3.1 | 测试数据工厂 |
| faker | 38.2.0 | 假数据生成 |
| Postman | 1.2.0 | API 测试支持 |
| 手工测试 | - | 前端功能与交互测试 |
| Chrome DevTools | - | 前端调试与性能分析 |
### 3.4 测试方法
本次测试采用以下测试方法:
1. **单元测试Unit Testing**
- 测试独立的函数、方法和类
- 不依赖外部服务
- 覆盖数据模型、Repository 层、服务层
2. **集成测试Integration Testing**
- 测试 API 端点和组件间的交互
- 验证认证、任务管理、图片处理、管理员功能等接口
3. **基于属性的测试Property-Based Testing**
- 使用 Hypothesis 库进行属性测试
- 自动生成测试数据验证系统属性
4. **前端功能测试Frontend Testing**
- 手工测试前端页面交互和用户体验
- 验证页面组件、状态管理、路由跳转等功能
- 检查边界条件和异常场景处理
---
## 第四章 测试结果与分析
### 4.1 覆盖分析
#### 4.1.1 需求覆盖分析
| 功能模块 | 需求项 | 测试用例数 | 覆盖状态 |
|----------|--------|------------|----------|
| 用户认证 (Auth) | 注册、登录、登出、修改密码、获取用户信息 | 11 | ✅ 已覆盖 |
| 用户管理 (User) | 用户配置管理 | 3 | ✅ 已覆盖 |
| 任务管理 (Task) | 任务列表、详情、状态、配额、取消 | 10 | ✅ 已覆盖 |
| 加噪任务 | 配置获取、任务创建、任务列表、任务详情 | 5 | ✅ 已覆盖 |
| 微调任务 | 配置获取、从加噪创建、从上传创建 | 4 | ✅ 已覆盖 |
| 热力图任务 | 任务列表、任务创建 | 2 | ✅ 已覆盖 |
| 评估任务 | 任务列表、任务创建 | 2 | ✅ 已覆盖 |
| 图片管理 (Image) | 上传、获取、删除、下载 | 12 | ✅ 已覆盖 |
| 管理员功能 (Admin) | 用户列表、详情、创建、更新、删除、统计 | 24 | ✅ 已覆盖 |
#### 4.1.2 代码覆盖率分析
| 模块 | 语句数 | 未覆盖 | 覆盖率 |
|------|--------|--------|--------|
| app/__init__.py | 47 | 6 | 87% |
| controllers/admin_controller.py | 191 | 55 | 71% |
| controllers/auth_controller.py | 205 | 81 | 60% |
| controllers/image_controller.py | 142 | 22 | 85% |
| controllers/task_controller.py | 584 | 233 | 60% |
| controllers/user_controller.py | 57 | 17 | 70% |
| database/__init__.py | 211 | 17 | 92% |
| repositories/base_repository.py | 60 | 18 | 70% |
| repositories/config_repository.py | 76 | 23 | 70% |
| repositories/image_repository.py | 63 | 19 | 70% |
| repositories/task_repository.py | 112 | 34 | 70% |
| repositories/user_repository.py | 61 | 18 | 70% |
| services/task_service.py | 276 | 83 | 70% |
| services/user_service.py | 14 | 0 | 100% |
| **总计** | **2876** | **863** | **70%** |
### 4.2 Bug 统计与分析
#### 4.2.1 Bug 等级描述
| 等级 | 描述 | 影响范围 |
|------|------|----------|
| 严重 (Critical) | 系统崩溃、数据丢失、核心功能无法使用 | 阻塞发布 |
| 高 (High) | 主要功能异常、影响用户体验 | 需优先修复 |
| 中 (Medium) | 次要功能异常、有替代方案 | 计划修复 |
| 低 (Low) | 界面问题、文案错误、建议优化 | 可延后修复 |
#### 4.2.2 已解决 Bug 列表(后端)
| Bug ID | 等级 | 模块 | 描述 | 状态 |
|--------|------|------|------|------|
| BUG-001 | 高 | Auth | 密码复杂度验证逻辑优化 | ✅ 已解决 |
| BUG-002 | 中 | Task | 任务状态更新异常 | ✅ 已解决 |
| BUG-003 | 低 | Image | 图片上传格式校验 | ✅ 已解决 |
#### 4.2.3 待解决 Bug 列表(后端)
| Bug ID | 等级 | 模块 | 描述 | 状态 |
|--------|------|------|------|------|
| - | - | - | 无待解决 Bug | - |
#### 4.2.4 前端 Bug 列表
本次前端测试共发现 10 个问题,按优先级分类如下:
**P0 - 高危问题**
| Bug ID | 等级 | 模块 | 描述 | 位置 | 状态 |
|--------|------|------|------|------|------|
| FE-002 | 高 | 管理员功能 | 管理员可删除自己账号,导致应用状态异常 | Page5/SubpageContainer.vue | ✅ 已解决 |
| FE-005 | 高 | 任务历史 | 列表页删除后分页"空窗",当前页无数据时未自动跳转 | Page4/Page4.vue | ✅ 已解决 |
| FE-006 | 高 | 组件 | 图片预览组件内存泄漏风险,路由跳转时 Blob URL 未清理 | ImagePreviewModal.vue | ✅ 已解决 |
**P1 - 体验问题**
| Bug ID | 等级 | 模块 | 描述 | 位置 | 状态 |
|--------|------|------|------|------|------|
| FE-001 | 中 | 任务历史 | 搜索后分页未重置,过滤结果可能显示为空 | Page4/Page4.vue | ✅ 已解决 |
| FE-003 | 中 | 图片上传 | 文件上传逻辑覆盖而非追加,多次选择文件会丢失之前的选择 | UniversalMode.vue / QuickMode.vue | ✅ 已解决 |
| FE-004 | 中 | 图片上传 | 文件大小超限时清空所有已选文件,体验不佳 | UniversalMode.vue | ✅ 已解决 |
| FE-008 | 中 | 管理员功能 | 管理员后台双重滚动条sticky header 可能失效 | Page5/SubpageContainer.vue | ✅ 已解决 |
**P2 - 优化建议**
| Bug ID | 等级 | 模块 | 描述 | 位置 | 状态 |
|--------|------|------|------|------|------|
| FE-007 | 低 | 组件 | 3D 轨迹图窗口调整变形,未响应窗口大小变化 | ThreeDTrajectoryModal.vue | ✅ 已解决 |
| FE-009 | 低 | 管理员功能 | VIP 生成数量输入框限制不严,未校验上限 | Page5/SubpageContainer.vue | ✅ 已解决 |
| FE-010 | 低 | 登录页 | WebGL 不支持时的白屏,缺少降级处理 | GridDistortion.vue | ✅ 已解决 |
#### 4.2.5 前端 Bug 详细说明
**FE-001 搜索后分页未重置**
- 问题:在任务历史页面,当用户在第 2 页或更后页时输入搜索关键字,过滤后的结果可能只有 1 页,但 currentPage 仍保持在之前的页码,导致列表显示为空
- 建议:监听 searchKeyword 和 selectedTaskType 的变化,一旦变化强制将 currentPage 重置为 1
**FE-002 管理员可删除自己**
- 问题:在用户管理列表中,管理员可以点击自己账号行的"删除"按钮会导致应用状态异常Token 失效但页面未跳转)
- 建议:在渲染列表时判断 user_id 是否为当前用户,如果是则隐藏删除按钮或禁用该操作
**FE-003 文件上传逻辑覆盖而非追加**
- 问题:用户选择了 2 张图后再次选择第 3 张图,前 2 张图会被覆盖,不符合"追加"预期
- 建议:将新文件 push 到数组中,或在 UI 上明确提示是"替换"操作
**FE-004 文件大小超限体验不佳**
- 问题:当总文件大小超过 15MB 限制时,会清空所有已选文件,用户体验差
- 建议:超限时只拒绝当前添加的文件,保留之前合法的文件
**FE-005 列表页删除后分页"空窗"**
- 问题:删除当前页最后一条数据后,页面显示"暂无符合条件的任务",用户需手动点上一页
- 建议:删除成功后判断当前页是否还有数据,若无则自动跳转到上一页
**FE-006 图片预览组件内存泄漏风险**
- 问题:使用 URL.createObjectURL 创建的 Blob URL 在组件销毁时可能未被清理
- 建议:添加 onUnmounted 生命周期钩子,在组件销毁时显式调用 clearBlobs()
**FE-007 3D 轨迹图窗口调整变形**
- 问题Three.js 初始化后,改变浏览器窗口大小时 Canvas 不会自动调整,导致画面变形
- 建议:引入 ResizeObserver 或监听 window.resize更新 camera 和 renderer
**FE-008 管理员后台双重滚动条**
- 问题kt-modal-body 和 kt-table-wrapper 都设置了 overflow-y: auto可能出现嵌套滚动条
- 建议:移除 kt-modal-body 的 overflow-y让 kt-table-wrapper 独立滚动
**FE-009 VIP 生成数量输入框限制不严**
- 问题:虽然 HTML 属性有 min/max但用户可通过键盘输入超出范围的值JS 逻辑未校验上限
- 建议:在 JS 逻辑中补充 if (count > 10) 的校验
**FE-010 WebGL 不支持时的白屏**
- 问题:登录页背景依赖 WebGL在不支持的设备上可能导致页面不可读
- 建议:设置默认背景图片或渐变色作为 Fallback或捕获 WebGL 错误进行降级处理
#### 4.2.6 Bug 分析
**后端测试**:本次后端测试未发现严重或高优先级的待解决 Bug系统整体运行稳定。
**前端测试**:共发现 10 个问题,已全部修复:
- P0 高危问题 3 个:管理员自删除、分页空窗、内存泄漏 ✅ 已解决
- P1 体验问题 4 个:搜索分页、文件上传、双重滚动条 ✅ 已解决
- P2 优化建议 3 个3D 渲染、输入校验、WebGL 降级 ✅ 已解决
#### 4.2.7 警告信息分析
测试过程中发现部分 SQLAlchemy 2.0 兼容性警告:
```
LegacyAPIWarning: The Query.get() method is considered legacy as of the 1.x series of SQLAlchemy
```
建议:后续版本将 `Model.query.get(id)` 替换为 `db.session.get(Model, id)` 以适配 SQLAlchemy 2.0。此警告不影响当前功能使用。
### 4.3 性能数据与分析
#### 4.3.1 性能数据
| 指标 | 数值 |
|------|------|
| 测试用例总数 | 149 |
| 通过用例数 | 149 |
| 失败用例数 | 0 |
| 通过率 | 100% |
| 总执行时间 | 68.09 秒 |
| 平均每用例耗时 | 0.46 秒 |
#### 4.3.2 测试结果分类
| 测试类型 | 用例数 | 通过 | 失败 | 通过率 |
|----------|--------|------|------|--------|
| 单元测试 - Models | 17 | 17 | 0 | 100% |
| 单元测试 - Properties | 8 | 8 | 0 | 100% |
| 单元测试 - Repositories | 25 | 25 | 0 | 100% |
| 单元测试 - Services | 15 | 15 | 0 | 100% |
| 集成测试 - Admin API | 24 | 24 | 0 | 100% |
| 集成测试 - Auth API | 11 | 11 | 0 | 100% |
| 集成测试 - Image API | 14 | 14 | 0 | 100% |
| 集成测试 - Task API | 22 | 22 | 0 | 100% |
| 前端功能测试 | 10 | 10 | 0 | 100% |
| **总计** | **159** | **159** | **0** | **100%** |
#### 4.3.3 测试结论
后端所有 149 个测试用例均通过,前端发现的 10 个问题已全部修复。系统功能完整、运行稳定。
---
## 第五章 测试结论
### 5.1 软件质量评估
| 质量维度 | 评估结果 | 说明 |
|----------|----------|------|
| 功能完整性 | 优秀 | 所有核心功能均已实现并通过测试验证 |
| 代码覆盖率 | 良好 | 后端整体覆盖率 70%,核心模块覆盖充分 |
| 后端稳定性 | 优秀 | 后端 100% 测试通过率,系统运行稳定 |
| 前端稳定性 | 优秀 | 发现的 10 个问题已全部修复 |
| 可维护性 | 良好 | 代码结构清晰,采用分层架构 |
| 安全性 | 良好 | 密码复杂度验证、JWT 认证等安全机制完善 |
### 5.2 软件风险
| 风险项 | 风险等级 | 说明 | 建议措施 |
|--------|----------|------|----------|
| SQLAlchemy 兼容性 | 低 | 使用了即将废弃的 API | 后续版本升级适配 SQLAlchemy 2.0 |
| 代码覆盖率提升空间 | 低 | 部分边缘场景未覆盖 | 持续补充测试用例 |
### 5.3 新增功能说明
本次 develop 分支更新包含以下重要变更:
**密码复杂度验证(新增)**
系统新增了密码强度验证功能,要求用户密码必须满足以下条件:
- 长度不少于 8 位
- 包含至少一个大写字母 (A-Z)
- 包含至少一个小写字母 (a-z)
- 包含至少一个数字 (0-9)
- 包含至少一个特殊字符 (!@#$%^&* 等)
此功能增强了系统的账户安全性。
### 5.4 测试结论
经过本次系统测试MuseGuard 系统整体质量状况优秀:
1. **后端功能验证**系统核心功能用户认证、任务管理、图片处理、管理员功能均已实现并通过测试验证149 个测试用例全部通过
2. **前端功能验证**:前端测试发现的 10 个问题已全部修复,系统运行稳定
3. **代码质量**:采用分层架构设计,代码结构清晰,便于维护和扩展
4. **安全性**新增密码复杂度验证JWT 认证机制完善
**综合评定**:系统满足上线要求,建议按计划发布。
---
## 附录:功能清单
### A. 用户系统功能
| 功能编号 | 功能名称 | 功能描述 | 测试状态 |
|----------|----------|----------|----------|
| AUTH-001 | 用户注册 | 支持邮箱验证码验证的用户注册 | ✅ 通过 |
| AUTH-002 | 用户登录 | JWT Token 认证登录 | ✅ 通过 |
| AUTH-003 | 用户登出 | 清除当前令牌 | ✅ 通过 |
| AUTH-004 | 修改密码 | 校验旧密码并更新新密码 | ✅ 通过 |
| AUTH-005 | 获取用户信息 | 返回当前登录用户基础信息 | ✅ 通过 |
| AUTH-006 | 密码复杂度验证 | 验证密码包含大小写、数字、特殊字符 | ✅ 通过 |
| USER-001 | 获取用户配置 | 获取用户默认任务配置 | ✅ 通过 |
| USER-002 | 更新用户配置 | 更新用户偏好配置 | ✅ 通过 |
### B. 任务管理功能
| 功能编号 | 功能名称 | 功能描述 | 测试状态 |
|----------|----------|----------|----------|
| TASK-001 | 任务列表 | 获取当前用户所有任务摘要 | ✅ 通过 |
| TASK-002 | 任务详情 | 查看单个任务详细信息 | ✅ 通过 |
| TASK-003 | 任务状态 | 查询任务最新状态 | ✅ 通过 |
| TASK-004 | 任务配额 | 展示用户任务配额 | ✅ 通过 |
| TASK-005 | 取消任务 | 终止队列中的任务 | ✅ 通过 |
### C. 加噪任务功能
| 功能编号 | 功能名称 | 功能描述 | 测试状态 |
|----------|----------|----------|----------|
| PERT-001 | 获取加噪配置 | 列出可选的加噪算法配置 | ✅ 通过 |
| PERT-002 | 创建加噪任务 | 创建并启动加噪任务 | ✅ 通过 |
| PERT-003 | 加噪任务列表 | 列出用户所有加噪任务 | ✅ 通过 |
| PERT-004 | 加噪任务详情 | 查看加噪任务完整信息 | ✅ 通过 |
### D. 微调任务功能
| 功能编号 | 功能名称 | 功能描述 | 测试状态 |
|----------|----------|----------|----------|
| FINE-001 | 获取微调配置 | 列出可用的微调方案 | ✅ 通过 |
| FINE-002 | 从加噪创建微调 | 基于加噪任务创建微调任务 | ✅ 通过 |
| FINE-003 | 从上传创建微调 | VIP/管理员上传数据创建微调 | ✅ 通过 |
| FINE-004 | 微调任务列表 | 查询用户微调任务列表 | ✅ 通过 |
### E. 热力图任务功能
| 功能编号 | 功能名称 | 功能描述 | 测试状态 |
|----------|----------|----------|----------|
| HEAT-001 | 创建热力图任务 | 基于加噪结果创建热力图 | ✅ 通过 |
| HEAT-002 | 热力图任务列表 | 查询热力图任务集合 | ✅ 通过 |
### F. 评估任务功能
| 功能编号 | 功能名称 | 功能描述 | 测试状态 |
|----------|----------|----------|----------|
| EVAL-001 | 创建评估任务 | 为微调结果创建评估任务 | ✅ 通过 |
| EVAL-002 | 评估任务列表 | 罗列所有评估任务 | ✅ 通过 |
### G. 图片管理功能
| 功能编号 | 功能名称 | 功能描述 | 测试状态 |
|----------|----------|----------|----------|
| IMG-001 | 上传原始图片 | 上传图片到任务图片库 | ✅ 通过 |
| IMG-002 | 获取图片文件 | 获取单张图片二进制流 | ✅ 通过 |
| IMG-003 | 删除图片 | 删除指定图片 | ✅ 通过 |
| IMG-004 | 下载加噪结果 | 下载扰动图片集合 | ✅ 通过 |
| IMG-005 | 下载热力图 | 下载热力图可视化文件 | ✅ 通过 |
| IMG-006 | 下载微调结果 | 导出微调生成图片 | ✅ 通过 |
| IMG-007 | 下载评估报告 | 下载评估数值报告 | ✅ 通过 |
### H. 管理员功能
| 功能编号 | 功能名称 | 功能描述 | 测试状态 |
|----------|----------|----------|----------|
| ADMIN-001 | 用户列表 | 分页浏览所有用户信息 | ✅ 通过 |
| ADMIN-002 | 用户详情 | 查看用户档案与统计 | ✅ 通过 |
| ADMIN-003 | 创建用户 | 管理员创建新用户 | ✅ 通过 |
| ADMIN-004 | 更新用户 | 更新用户信息和状态 | ✅ 通过 |
| ADMIN-005 | 删除用户 | 删除指定用户 | ✅ 通过 |
| ADMIN-006 | 系统统计 | 聚合统计平台数据 | ✅ 通过 |
### I. 前端功能测试
| 功能编号 | 功能名称 | 功能描述 | 测试状态 |
|----------|----------|----------|----------|
| FE-PAGE1 | 图片上传 | 通用模式/快速模式图片上传 | ✅ 通过 |
| FE-PAGE4 | 任务历史 | 任务列表搜索、分页、删除 | ✅ 通过 |
| FE-PAGE5 | 管理员后台 | 用户管理、VIP 码生成 | ✅ 通过 |
| FE-COMP1 | 图片预览 | 图片预览模态框 | ✅ 通过 |
| FE-COMP2 | 3D 轨迹图 | Three.js 3D 可视化 | ✅ 通过 |
| FE-LOGIN | 登录页 | WebGL 背景渲染 | ✅ 通过 |
---
**报告编制**:自动化测试系统
**报告日期**2026年1月6日
**团队名称**软件2302班-深度思考

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

File diff suppressed because it is too large Load Diff

@ -1,29 +0,0 @@
{
"name": "museguard",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview",
"test": "vitest run",
"test:watch": "vitest"
},
"dependencies": {
"axios": "^1.13.2",
"jszip": "^3.10.1",
"pinia": "^2.1.0",
"three": "^0.182.0",
"vue": "^3.5.24",
"vue-router": "^4.6.3"
},
"devDependencies": {
"@vitejs/plugin-vue": "^6.0.1",
"@vue/test-utils": "^2.4.6",
"fast-check": "^3.15.0",
"jsdom": "^24.0.0",
"vite": "^7.2.4",
"vitest": "^1.0.0"
}
}
Loading…
Cancel
Save