proxy-pool/docs/testing/strategy.md

50 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 测试策略
## 1. 分层
- **领域单测**状态机、TTL、路由、容量、Fetch 分类和 Extraction 原子性。
- **契约测试**配置、OpenAPI、Protobuf 和 Provider Adapter fixture。
- **集成测试**PostgreSQL 事务、Redis Leader/限流、Outbox 与重建。
- **端到端测试**HTTP、CONNECT、Admin、Distribution 和优雅停机。
- **负载测试**Worker 调度微基准、50k 隧道 soak、集群 100k QPS 场景。
## 2. 必测不变量
1. 1,000 个并发预留不突破单 Proxy 最大并发。
2. 同一 Proxy 在并发 Extraction 中最多出现一次。
3. `allOrNothing` 不足时不消耗任何候选。
4. 连续 4 次 Empty 后 Valid 不切换;连续 5 次只从 A 切到 B。
5. Error 和 DuplicateOnly 不累计 Empty。
6. 100 个缺池信号只形成一个合并 Provider reconcile。
7. 并发 Fetch 不突破 `pool.maxSize``fetch.maxTotal`
8. TTL safety margin 内不再分配。
9. Snapshot 版本断档、目标错误或校验和错误不替换当前视图。
10. 非幂等 HTTP 和已建立 CONNECT 不自动重放。
11. 所有 Upstream 不可用时严格执行显式策略。
## 3. 基础质量门禁
```powershell
gofmt -l .
go vet ./...
go test ./...
go test -race ./internal/...
go build ./...
```
单条测试命令超时 60 秒。依赖真实等待的用例必须改为 fake clock集成和
soak 测试单独标记,不混入快速单测。
## 4. 100k QPS 验收
测试报告必须记录:
- CPU、内存、内核、网卡、文件描述符和 conntrack 配置。
- Worker 数量、故障域、目标利用率和负载均衡算法。
- HTTP/CONNECT 比例、keep-alive、请求/响应大小、上游 RTT 与失败率。
- Proxy 总数、每 Proxy 容量、Routing 数和 Snapshot 更新频率。
- 持续时间、P50/P95/P99、成功率、重试率、GC、RSS 和 goroutine 数。
只有在代表性环境持续达到目标且满足错误率和延迟门槛后,才能把“设计目标”
改为“已验证容量”。