第八章:验收标准与测试计划(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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# 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 路线图、商业化路径与社区建设路线。