Files
张翔 08ea5fbe98 feat(admin): 添加用户管理相关文件
添加用户管理视图、API和状态管理文件
2026-03-28 14:37:29 +08:00

509 lines
10 KiB
Markdown

# 自动化测试框架使用示例
本文档提供详细的自动化测试框架使用示例,帮助您快速上手。
---
## 📋 目录
1. [环境准备](#环境准备)
2. [智能测试选择器](#智能测试选择器)
3. [测试执行](#测试执行)
4. [测试报告](#测试报告)
5. [CI/CD集成](#cicd集成)
6. [常见场景](#常见场景)
---
## 环境准备
### 1. 验证环境配置
在开始之前,请先验证环境配置是否正确:
```bash
# 验证环境变量
./scripts/verify-env.sh
# 初始化测试数据库
./scripts/init-test-database.sh
# 初始化测试数据(可选)
npm run ts-node scripts/init-test-data.ts
```
### 2. 启动测试环境
```bash
# 启动容器化测试环境
docker-compose -f docker-compose.test.yml up -d
# 查看容器状态
docker-compose -f docker-compose.test.yml ps
# 查看容器日志
docker-compose -f docker-compose.test.yml logs -f
```
### 3. 停止测试环境
```bash
# 停止测试环境
docker-compose -f docker-compose.test.yml down
# 停止并清理数据
docker-compose -f docker-compose.test.yml down -v
```
---
## 智能测试选择器
### 基本用法
#### 1. 从文件读取变更列表
```bash
# 创建变更文件列表
echo "everything-is-suitable-admin/src/views/UserManagement.vue" > changed-files.txt
echo "everything-is-suitable-admin/src/api/user.ts" >> changed-files.txt
# 运行智能测试选择器
node dist/scripts/scripts/cli/smart-test-selector-cli.js \
--input changed-files.txt \
--output selected-tests.json \
--report test-selection-report.md
```
#### 2. 使用Git获取变更文件
```bash
# 获取相对于main分支的变更
git diff --name-only origin/main...HEAD > changed-files.txt
# 运行智能测试选择器
node dist/scripts/scripts/cli/smart-test-selector-cli.js \
--input changed-files.txt \
--output selected-tests.json \
--report test-selection-report.md
```
### 高级用法
#### 1. 按优先级过滤
```bash
# 只选择高优先级测试
node dist/scripts/scripts/cli/smart-test-selector-cli.js \
--input changed-files.txt \
--priority high \
--output selected-tests.json
# 选择高优先级和中等优先级测试
node dist/scripts/scripts/cli/smart-test-selector-cli.js \
--input changed-files.txt \
--priority medium \
--output selected-tests.json
```
#### 2. 按测试级别过滤
```bash
# 只选择冒烟测试
node dist/scripts/scripts/cli/smart-test-selector-cli.js \
--input changed-files.txt \
--level smoke \
--output selected-tests.json
# 选择冒烟测试和功能测试
node dist/scripts/scripts/cli/smart-test-selector-cli.js \
--input changed-files.txt \
--level functional \
--output selected-tests.json
```
#### 3. 禁用关联分析
```bash
# 只选择直接相关的测试,不包括关联模块的测试
node dist/scripts/scripts/cli/smart-test-selector-cli.js \
--input changed-files.txt \
--no-include-related \
--output selected-tests.json
```
### 查看选择结果
```bash
# 查看JSON格式的选择结果
cat selected-tests.json | jq .
# 查看Markdown格式的分析报告
cat test-selection-report.md
```
---
## 测试执行
### 智能测试执行
#### 1. 执行智能选择的测试
```bash
# 使用之前生成的选择结果
npm run test:smart selected-tests.json
# 或者直接使用编译后的脚本
node dist/scripts/run-selected-tests.js selected-tests.json
```
#### 2. 执行全量测试
```bash
# 执行所有测试
npm run test:all
# 或者使用Playwright直接执行
npx playwright test
```
### 按测试级别执行
#### 1. 执行冒烟测试
```bash
# 只执行标记为@smoke的测试
npx playwright test --grep @smoke
```
#### 2. 执行功能测试
```bash
# 执行标记为@functional的测试
npx playwright test --grep @functional
```
#### 3. 执行边缘场景测试
```bash
# 执行标记为@edge的测试
npx playwright test --grep @edge
```
### 按模块执行
```bash
# 执行用户管理模块的测试
npx playwright test e2e/user-management/
# 执行角色管理模块的测试
npx playwright test e2e/role-management/
# 执行API测试
npx playwright test e2e/api/
```
### 调试模式
```bash
# 以UI模式运行测试
npx playwright test --ui
# 以调试模式运行测试
npx playwright test --debug
# 以 headed 模式运行测试(显示浏览器)
npx playwright test --headed
# 慢速运行(每个操作延迟1000ms)
npx playwright test --slow-mo=1000
```
---
## 测试报告
### 生成测试报告
#### 1. 生成HTML报告
```bash
# 执行测试并生成HTML报告
npx playwright test --reporter=html
# 打开HTML报告
npx playwright show-report
```
#### 2. 生成JSON报告
```bash
# 执行测试并生成JSON报告
npx playwright test --reporter=json --output=test-results.json
```
#### 3. 生成JUnit报告
```bash
# 执行测试并生成JUnit报告
npx playwright test --reporter=junit --output=junit-results.xml
```
### 生成覆盖率报告
```bash
# 执行测试并生成覆盖率报告
npm run test:coverage
# 查看覆盖率报告
open coverage/index.html
```
### 生成趋势报告
```bash
# 生成测试趋势报告
npm run test:report
# 查看趋势报告
open test-trend-report.html
```
---
## CI/CD集成
### Woodpecker CI
#### 1. 自动触发
当有代码推送到仓库时,Woodpecker CI会自动执行以下步骤:
1. **智能测试选择**:分析代码变更,选择相关测试
2. **智能测试执行**:执行选择的测试用例
3. **测试报告生成**:生成测试报告并上传
#### 2. 手动触发
```bash
# 在Woodpecker CI界面手动触发构建
# 或者使用CLI工具
woodpecker-cli build start <repo> <build>
```
#### 3. 定时触发
```yaml
# .woodpecker.yml
when:
- event: cron
cron: daily-test
```
### GitHub Actions(示例)
```yaml
name: Smart Test
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]
jobs:
smart-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '20'
- name: Install dependencies
run: npm ci
- name: Get changed files
run: |
git diff --name-only origin/main...HEAD > changed-files.txt || echo "[]" > changed-files.txt
- name: Smart test selection
run: |
node dist/scripts/scripts/cli/smart-test-selector-cli.js \
--input changed-files.txt \
--output selected-tests.json \
--report test-selection-report.md
- name: Run smart tests
run: npm run test:smart selected-tests.json
- name: Upload test results
uses: actions/upload-artifact@v3
with:
name: test-results
path: |
selected-tests.json
test-selection-report.md
```
---
## 常见场景
### 场景1:开发新功能
```bash
# 1. 创建新分支
git checkout -b feature/user-profile
# 2. 开发新功能
# ... 编写代码 ...
# 3. 验证环境配置
./scripts/verify-env.sh
# 4. 获取变更文件
git diff --name-only origin/main...HEAD > changed-files.txt
# 5. 智能选择测试
node dist/scripts/scripts/cli/smart-test-selector-cli.js \
--input changed-files.txt \
--output selected-tests.json \
--report test-selection-report.md
# 6. 执行测试
npm run test:smart selected-tests.json
# 7. 查看测试报告
npx playwright show-report
# 8. 提交代码
git add .
git commit -m "feat: add user profile feature"
git push origin feature/user-profile
```
### 场景2:修复Bug
```bash
# 1. 创建修复分支
git checkout -b fix/login-bug
# 2. 修复Bug
# ... 修改代码 ...
# 3. 只执行冒烟测试验证修复
git diff --name-only origin/main...HEAD > changed-files.txt
node dist/scripts/scripts/cli/smart-test-selector-cli.js \
--input changed-files.txt \
--level smoke \
--output selected-tests.json
npm run test:smart selected-tests.json
# 4. 提交修复
git add .
git commit -m "fix: resolve login issue"
git push origin fix/login-bug
```
### 场景3:重构代码
```bash
# 1. 创建重构分支
git checkout -b refactor/user-service
# 2. 重构代码
# ... 重构代码 ...
# 3. 执行全量测试确保重构没有破坏功能
npm run test:all
# 4. 查看覆盖率报告
npm run test:coverage
open coverage/index.html
# 5. 提交重构
git add .
git commit -m "refactor: improve user service structure"
git push origin refactor/user-service
```
### 场景4:发布前验证
```bash
# 1. 切换到发布分支
git checkout release/v1.0.0
# 2. 验证环境配置
./scripts/verify-env.sh
# 3. 执行全量测试
npm run test:all
# 4. 生成覆盖率报告
npm run test:coverage
# 5. 生成趋势报告
npm run test:report
# 6. 查看所有报告
open coverage/index.html
open test-trend-report.html
npx playwright show-report
```
### 场景5:本地调试测试
```bash
# 1. 以UI模式运行测试
npx playwright test --ui
# 2. 以调试模式运行特定测试
npx playwright test e2e/user-management/login.spec.ts --debug
# 3. 以 headed 模式运行测试
npx playwright test --headed --slow-mo=1000
# 4. 只运行失败的测试
npx playwright test --last-failed
```
---
## 📚 相关文档
- [故障排查指南](./troubleshooting-guide.md)
- [测试用例设计规范](./test-case-design-guide.md)
- [API文档](./api-documentation.md)
- [配置说明](./configuration-guide.md)
---
## 💡 最佳实践
1. **提交前验证**:每次提交代码前,先运行智能测试选择器验证变更
2. **优先级管理**:为测试用例设置合适的优先级,确保关键路径优先测试
3. **定期全量测试**:定期执行全量测试,确保系统整体质量
4. **覆盖率监控**:持续监控测试覆盖率,确保覆盖率不低于80%
5. **报告分析**:定期分析测试报告,识别不稳定的测试用例
---
## 🆘 获取帮助
如果遇到问题,请参考:
1. [故障排查指南](./troubleshooting-guide.md)
2. [项目文档](../README.md)
3. 联系测试团队
---
**文档版本**: v1.0
**最后更新**: 2026-03-28
**维护人员**: 张翔