# user-management **Repository Path**: haobinjun/user-management ## Basic Information - **Project Name**: user-management - **Description**: 企业级用户管理系统 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-13 - **Last Updated**: 2026-02-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # User Management System - Testing Guide ## 项目概述 这是一个企业级用户管理系统的完整测试项目,包含后端、前端和 E2E 测试。 ## 技术栈 ### 后端测试 - **框架**: JUnit 5, Mockito - **测试类型**: 单元测试、集成测试 - **覆盖率工具**: JaCoCo - **数据库**: H2 (测试环境) ### 前端测试 - **框架**: Vitest, Vue Test Utils - **测试类型**: 组件测试、Store 测试 - **覆盖率工具**: Vitest Coverage (V8) ### E2E 测试 - **框架**: Playwright - **浏览器**: Chrome, Firefox, Safari (WebKit) ## 项目结构 ``` user-management/ ├── src/ │ ├── main/java/com/userman/ # 后端源代码 │ │ ├── entity/ # 实体类 │ │ ├── repository/ # 数据访问层 │ │ ├── service/ # 业务逻辑层 │ │ ├── controller/ # 控制器层 │ │ ├── dto/ # 数据传输对象 │ │ ├── exception/ # 异常处理 │ │ ├── security/ # 安全配置 │ │ └── config/ # 配置类 │ ├── test/java/com/userman/ # 后端测试 │ │ ├── service/ # Service 层单元测试 │ │ ├── controller/ # Controller 层集成测试 │ │ └── resources/ # 测试资源 │ └── main/resources/ # 配置文件 ├── frontend/ │ ├── src/ # 前端源代码 │ ├── tests/ # 前端测试 │ │ ├── unit/ # 单元测试 │ │ │ ├── components/ # 组件测试 │ │ │ └── stores/ # Store 测试 │ │ ├── e2e/ # E2E 测试 │ │ └── setup.js # 测试设置 │ ├── vitest.config.js # Vitest 配置 │ └── playwright.config.js # Playwright 配置 └── tests/ └── docs/ # 测试文档 ├── TEST_PLAN.md # 测试计划 └── TEST_REPORT_TEMPLATE.md # 测试报告模板 ``` ## 测试运行说明 ### 后端测试 #### 运行所有测试 ```bash # 在项目根目录 mvn clean test ``` #### 运行单元测试 ```bash mvn clean test -Dtest=*Test ``` #### 运行集成测试 ```bash mvn clean verify -DskipUnitTests=false ``` #### 生成覆盖率报告 ```bash mvn clean test jacoco:report ``` 报告位置: `target/site/jacoco/index.html` #### 运行特定测试类 ```bash mvn test -Dtest=UserServiceTest ``` ### 前端测试 #### 运行所有测试 ```bash cd frontend npm test ``` #### 运行测试并查看 UI ```bash npm run test:ui ``` #### 生成覆盖率报告 ```bash npm run test:coverage ``` 报告位置: `frontend/coverage/index.html` #### 运行特定测试文件 ```bash npm test -- LoginForm.spec.js ``` #### 监听模式 ```bash npm test -- --watch ``` ### E2E 测试 #### 安装 Playwright 浏览器 ```bash cd frontend npx playwright install ``` #### 运行所有 E2E 测试 ```bash npm run test:e2e ``` #### 运行 E2E 测试(UI 模式) ```bash npm run test:e2e:ui ``` #### 调试 E2E 测试 ```bash npm run test:e2e:debug ``` #### 运行特定 E2E 测试文件 ```bash npx playwright test login.spec.js ``` #### 运行特定测试用例 ```bash npx playwright test -g "should login successfully" ``` #### 在特定浏览器运行 ```bash npx playwright test --project=chromium npx playwright test --project=firefox npx playwright test --project=webkit ``` ## 测试覆盖率 ### 后端覆盖率目标 | 指标 | 目标值 | |------|--------| | 行覆盖率 | ≥ 80% | | 分支覆盖率 | ≥ 75% | | 方法覆盖率 | ≥ 85% | | 类覆盖率 | ≥ 80% | ### 前端覆盖率目标 | 指标 | 目标值 | |------|--------| | 行覆盖率 | ≥ 80% | | 分支覆盖率 | ≥ 75% | | 函数覆盖率 | ≥ 85% | | 语句覆盖率 | ≥ 80% | ## 测试用例统计 | 层级 | 测试用例数 | |------|-----------| | 后端单元测试 | 53 | | 后端集成测试 | 28 | | 前端单元测试 | 117 | | E2E 测试 | 62 | | **总计** | **260** | ## E2E 测试场景列表 ### 用户认证流程 1. 显示登录表单 2. 验证空字段错误 3. 有效凭证登录成功 4. 无效凭证错误消息 5. 切换密码可见性 6. 记住用户名功能 7. 已认证用户重定向 8. 忘记密码流程 9. 会话管理(登出) 10. 处理令牌过期 11. 注册新用户 12. 验证密码确认 ### 用户 CRUD 操作 1. 显示用户列表 2. 关键词搜索用户 3. 分页浏览用户 4. 加载状态显示 5. 空状态显示 6. 打开创建用户弹窗 7. 创建新用户成功 8. 验证必填字段 9. 验证邮箱格式 10. 打开编辑用户弹窗 11. 更新用户成功 12. 显示删除确认 13. 删除用户成功 14. 取消删除操作 15. 更新用户状态 16. 按状态筛选用户 17. 按部门筛选用户 18. 显示用户详情 19. 批量删除操作 20. 批量状态更新 ### 角色权限配置 1. 显示角色列表 2. 创建新角色 3. 编辑现有角色 4. 删除角色 5. 显示角色权限 6. 为角色分配权限 7. 给用户分配角色 8. 移除用户角色 9. 显示用户角色 10. 验证用户权限 11. 按资源筛选权限 12. 无权限拒绝访问 13. 无权限隐藏操作按钮 14. 角色权限继承 15. 权限冲突处理 ### 数据导入导出 1. 导出用户到 Excel 2. 导出筛选数据 3. 显示导出成功通知 4. 处理导出错误 5. 打开导入弹窗 6. 从 Excel 导入用户 7. 验证文件格式 8. 显示导入预览 9. 处理导入错误 10. 取消导入操作 11. 显示导入进度 12. 批量删除操作 13. 批量状态更新 14. 导入数据验证 15. 导出数据验证 ## CI/CD 集成 ### GitHub Actions 示例 ```yaml name: Test Suite on: push: branches: [ main, develop ] pull_request: branches: [ main ] jobs: backend-tests: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set up JDK 17 uses: actions/setup-java@v3 with: java-version: '17' distribution: 'temurin' - name: Run backend tests run: mvn clean test - name: Generate coverage report run: mvn jacoco:report - name: Upload coverage uses: codecov/codecov-action@v3 frontend-tests: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Setup Node.js uses: actions/setup-node@v3 with: node-version: '18' - name: Install dependencies run: cd frontend && npm ci - name: Run unit tests run: cd frontend && npm test -- --run - name: Upload coverage uses: codecov/codecov-action@v3 e2e-tests: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Setup Node.js uses: actions/setup-node@v3 with: node-version: '18' - name: Install dependencies run: cd frontend && npm ci - name: Install Playwright run: cd frontend && npx playwright install --with-deps - name: Run E2E tests run: cd frontend && npm run test:e2e - name: Upload test results if: always() uses: actions/upload-artifact@v3 with: name: playwright-report path: frontend/playwright-report/ ``` ## 测试最佳实践 ### 单元测试 1. 保持测试独立,避免依赖顺序 2. 使用 Mock 隔离外部依赖 3. 测试边界条件和异常情况 4. 使用描述性的测试名称 5. 一个测试只验证一个功能点 ### 集成测试 1. 使用真实的数据库(H2) 2. 测试完整的请求-响应流程 3. 验证安全性和权限控制 4. 测试异常处理机制 ### E2E 测试 1. 模拟真实用户操作 2. 使用 Page Object 模式 3. 添加适当的等待和重试 4. 验证业务流程完整性 5. 保持测试独立性 ## 常见问题 ### Q: 如何调试失败的测试? A: - 后端: 使用 IDE 的调试功能或 `mvn -Dtest=TestClass#methodName test` - 前端: 运行 `npm run test:ui` 使用可视化界面 - E2E: 运行 `npm run test:e2e:debug` 使用调试模式 ### Q: 测试太慢怎么办? A: - 使用并行测试执行 - 减少 E2E 测试数量 - 使用 Mock 隔离慢速依赖 - 优化数据库查询 ### Q: 如何处理测试数据? A: - 使用 `@BeforeEach` 和 `@AfterEach` 管理测试数据 - 使用事务回滚恢复数据 - 使用工厂模式创建测试数据 ## 联系方式 如有问题,请联系测试团队: - 邮箱: qa@company.com - Slack: #qa-team