第八章:验收标准与测试计划(Acceptance Criteria & QA Plan)
8.1 验收目标与范围(Scope & Objectives)
验收目标
- 确保 DeployLite 各模块(Control Plane、Runner、Pipeline、Artifact、Policy、UI)功能完整可用;
- 所有核心路径通过功能、性能、安全测试;
- 可实现“自动构建→打包→部署→回滚”全链路稳定运行;
- 建立标准化 QA 验收模板,供版本迭代复用;
- 确保部署版本达到 生产级可上线标准(Production-ready)。
验收范围
| 模块 | 验收类型 | 覆盖层级 |
|---|
| API Server | 功能 / 性能 / 安全 | 单元 + 集成 |
| Pipeline Engine | 功能 / 稳定性 | 集成 + E2E |
| Runner Agent | 功能 / 并发性能 | 集成 + 压测 |
| Scheduler | 性能 / 容错 | 集成 |
| Artifact Service | 功能 / 安全 | 集成 |
| Policy Engine | 功能 / 策略正确性 | 单元 + 集成 |
| UI 控制台 | 功能 / 交互 | E2E 自动化 |
| Notification 系统 | 功能 / 通信正确性 | 集成 |
| Security & Audit | 合规 / 防护 | 渗透测试 |
| Monitoring & Metrics | 功能 / 可靠性 | 集成 |
| Database & Storage | 性能 / 数据一致性 | 集成 + 压测 |
8.2 功能验收标准(Functional Acceptance Criteria)
下表定义主要功能模块的 通过标准(Pass Criteria) 与 拒收条件(Fail Criteria)。
8.2.1 仓库接入(Repo Integration)
| 验收项 | 通过标准 | 拒收条件 |
|---|
| OAuth 连接 | 用户能通过 OAuth2 成功授权 GitHub/GitLab | 授权后仓库列表为空 |
| 仓库同步 | 仓库信息同步至系统 | 分支或 Tag 缺失 |
| Webhook 触发 | Push / Tag 事件触发 Pipeline | Push 后无触发记录 |
| 私有仓库 | 可成功访问代码 | Token 失效或无权限 |
8.2.2 Pipeline 构建与执行
| 验收项 | 通过标准 | 拒收条件 |
|---|
| YAML 解析 | 无错误提示,生成 Pipeline 对象 | 报错或字段丢失 |
| 构建执行 | 任务成功执行完毕 | 构建中断 / Runner 无响应 |
| 并发执行 | 50 并发任务同时运行成功率 ≥ 98% | 死锁 / 队列阻塞 |
| 缓存复用 | 二次构建时间减少 ≥ 40% | 无缓存命中 |
| 日志回传 | 实时日志完整展示 | 日志缺失或乱码 |
8.2.3 部署与回滚
| 验收项 | 通过标准 | 拒收条件 |
|---|
| 多环境部署 | dev/staging/prod 均成功 | 环境切换异常 |
| 健康检查 | 5s 内返回 200 状态 | 探针超时或失败 |
| 自动回滚 | 部署失败后回滚成功率 ≥ 100% | 回滚超时 |
| 蓝绿/金丝雀策略 | 正确放量与切换 | 流量不一致 |
| 回滚一致性 | Artifact Hash 一致 | 回滚后版本错乱 |
8.2.4 Artifact 制品管理
| 验收项 | 通过标准 | 拒收条件 |
|---|
| 上传制品 | 上传成功并记录元数据 | 上传失败或 hash 不匹配 |
| 下载制品 | 下载速度 ≥ 40MB/s | 文件损坏或断链 |
| 清理策略 | 过期制品被正确清理 | 未清理或误删 |
| SBOM 报告 | 自动生成且可查看 | 文件缺失或格式错误 |
8.2.5 Runner 管理
| 验收项 | 通过标准 | 拒收条件 |
|---|
| 注册流程 | 新 Runner 可注册成功 | Token 校验失败 |
| 心跳机制 | 10s 内周期心跳正常 | 超时未心跳 |
| 任务接收 | 能正常领取任务 | 调度分配失败 |
| 并发执行 | 多任务独立执行 | CPU/Mem 冲突 |
8.2.6 策略与审批流
| 验收项 | 通过标准 | 拒收条件 |
|---|
| 策略加载 | OPA 可热更新 | 策略文件未加载 |
| 拒绝策略 | 违规操作被阻止 | 错误放行 |
| 审批流程 | Maintainer 审批后自动继续部署 | 审批未触发或状态错误 |
8.2.7 安全与审计
| 验收项 | 通过标准 | 拒收条件 |
|---|
| Secret 加密 | 所有密钥存储加密 | 明文存储 |
| 操作审计 | 所有操作有 trace_id | 缺少记录 |
| 签名验证 | 镜像签名通过校验 | 验签失败或跳过 |
8.2.8 UI 控制台
| 验收项 | 通过标准 | 拒收条件 |
|---|
| 页面加载 | 首屏加载 < 2s | > 3s |
| 响应交互 | 操作延迟 < 300ms | 无响应 |
| 状态刷新 | 自动刷新无闪烁 | 状态不同步 |
| 移动端兼容 | 768px 下布局正常 | 元素错位 |
| 测试目标 | 场景 | 工具 | 指标 |
|---|
| API 性能 | 1000 并发 GET /projects | k6 / wrk | QPS ≥ 2000 |
| 调度性能 | 1000 Job 分配延迟 | custom loadgen | P95 < 500ms |
| 构建性能 | 50 Runner 并发 | deploylite-bench | 成功率 ≥ 98% |
| 制品存储 | 上传下载并发 | s3-bench | 上传 ≥ 50MB/s |
| 数据库 | 5000 TPS 插入 | pgbench | CPU < 80% |
| 日志流 | 实时传输 10GB/小时 | vegeta + WebSocket | 延迟 < 2s |
| 前端 | Lighthouse 测速 | Chrome DevTools | 分数 ≥ 90 |
性能压测阶段性目标
| 阶段 | 并发任务 | 平均延迟 | 成功率 |
|---|
| 阶段 1(初测) | 100 | 200ms | 95% |
| 阶段 2(预发布) | 500 | 250ms | 97% |
| 阶段 3(生产模拟) | 1000 | 300ms | ≥ 99% |
压测环境配置
控制面节点:4C8G × 2
Runner 节点:8C16G × 10
Redis + PostgreSQL 独立部署
数据规模:
- Pipelines:1 万
- Artifacts:5 万
- Projects:1000+
8.4 安全测试计划(Security Testing Plan)
| 测试类型 | 工具 / 方法 | 验收目标 |
|---|
| SQL 注入 | ZAP / sqlmap | 无可利用注入点 |
| XSS | OWASP ZAP | 输入转义正确 |
| CSRF | Burp Suite | 所有敏感操作带 Token |
| SSRF | 自定义扫描 | 拒绝外部请求 |
| 文件上传 | MIME 校验 + 白名单 | 拒绝非安全文件 |
| RBAC 绕过 | 模拟低权限用户 | 无水平越权 |
| Secret 泄漏 | 静态扫描(gitleaks) | 无明文密钥 |
| 依赖漏洞 | Trivy | 无高危 CVE |
| 签名伪造 | Cosign Verify | 所有镜像签名可验证 |
8.5 自动化测试体系(Automation Framework)
层级结构
tests/
├── unit/
│ ├── pipeline_test.go
│ ├── runner_test.go
│ └── scheduler_test.go
├── integration/
│ ├── api_integration_test.go
│ ├── artifact_integration_test.go
├── e2e/
│ ├── deploy_e2e_test.go
│ ├── rollback_e2e_test.go
├── mock/
│ └── mock_runner.go
└── load/
└── pipeline_load_test.go
测试覆盖策略
| 层级 | 工具 | 目标覆盖率 |
|---|
| 单元测试 | go test | ≥ 85% |
| 集成测试 | docker-compose | ≥ 80% |
| E2E 测试 | Playwright | ≥ 70% |
| Mock 测试 | Mockery | 主要外部依赖 |
| 性能测试 | k6 | N/A |
| 安全测试 | ZAP / Trivy | 全面覆盖核心接口 |
自动执行流程(CI Pipeline)
flowchart LR
A[Commit / PR] --> B[Unit Tests]
B --> C[Integration Tests]
C --> D[E2E Tests]
D --> E[Static Analysis (golangci-lint)]
E --> F[Security Scan (Trivy)]
F --> G[Generate Coverage Report]
报告与结果
- 输出 HTML 报告;
- 覆盖率文件:
coverage.out; - 性能结果:
bench.json; - 安全扫描报告:
security_report.json。
8.6 回归测试与版本发布验收(Regression & Release QA)
回归范围
- 所有核心流程(构建、打包、部署、回滚);
- 安全与权限;
- 策略引擎与审批;
- 前端交互;
- 通知与审计。
回归执行策略
- 每版本发布前自动执行;
- 每周运行全量自动化;
- 高风险版本(变更 > 500 行代码)需人工验证;
- 新功能至少 2 名 QA 复核。
发布前验收流程
sequenceDiagram
Dev->>QA: 提交 Release Candidate
QA->>Staging: 部署测试版本
QA->>Tests: 自动化测试执行
Tests-->>QA: 报告结果
QA->>PM: 验收报告
PM->>Prod: 批准上线
验收门槛(Release Gate)
| 指标 | 门槛 |
|---|
| 功能通过率 | ≥ 98% |
| 自动化测试通过率 | ≥ 95% |
| 性能指标达标 | 是 |
| 无高危漏洞 | 是 |
| 安全扫描通过 | 是 |
| 审批通过 | 是 |
8.7 混沌与容灾测试(Chaos & Resilience Tests)
| 测试场景 | 期望结果 |
|---|
| Runner 突然宕机 | 任务迁移到其他 Runner |
| Redis 队列短时不可用 | 调度延迟 < 2s |
| 数据库断连 10s | 自动重连,任务不中断 |
| 存储 S3 拒绝访问 | 自动切换备用存储 |
| API Server 重启 | 当前任务不受影响 |
| 网络分区 | Runner 缓存队列,重连后同步 |
| 策略引擎加载失败 | 使用上一次缓存策略 |
测试工具
- Chaos Mesh / LitmusChaos:K8s 注入器;
- Kill-Signal 注入脚本:模拟进程终止;
- Network Chaos:延迟、丢包、断连。
8.8 QA 报告模板(QA Report Template)
# DeployLite QA 报告
版本号:v1.2.0
测试负责人:QA 张明
测试周期:2025-10-10 至 2025-10-20
## 一、测试范围
- 功能模块:Pipeline, Runner, Artifact
- 非功能模块:性能、日志、监控
## 二、测试结果
| 模块 | 通过率 | 缺陷数 | 状态 |
|------|--------|--------|------|
| Pipeline | 100% | 0 | ✅ |
| Runner | 98% | 2 | ⚠️ |
| Artifact | 100% | 0 | ✅ |
## 三、性能指标
| 指标 | 实测值 | 目标值 | 结果 |
|------|----------|----------|----------|
| API 延迟 | 180ms | ≤200ms | ✅ |
| 构建成功率 | 99.2% | ≥98% | ✅ |
## 四、安全扫描
无高危漏洞(Trivy 报告:0)
## 五、结论
通过 ✅(允许上线)
✅ 第八章总结
本章定义了 DeployLite 的“可交付标准”。
关键目标:
“功能完整、性能达标、安全合规、可自动化回归”。
下一章进入终局部分:
第九章:版本规划与迭代路线(Version Roadmap & Iteration Plan)
将提供未来三阶段产品演进计划、Gantt 路线图、商业化路径与社区建设路线。
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。