name: “QE 混沌弹性测试” description: “混沌工程和弹性测试,包括故障注入、负载测试和系统恢复验证。” trust_tier: 3 validation: schema_path: schemas/output.json validator_path: scripts/validate-config.json eval_path: evals/qe-chaos-resilience.yaml
QE 混沌弹性测试
目的
指导使用 v3 的混沌工程能力,包括控制故障注入、负载/压力测试、弹性验证和灾难恢复测试。
激活条件
- 当测试系统弹性时
- 当执行混沌实验时
- 当进行负载/压力测试时
- 当验证灾难恢复时
- 当测试断路器时
快速开始
# 运行混沌实验
aqe chaos run --experiment network-latency --target api-service
# 负载测试
aqe chaos load --scenario peak-traffic --duration 30m
# 压力测试至极限
aqe chaos stress --endpoint /api/users --max-users 10000
# 测试断路器
aqe chaos circuit-breaker --service payment-service
代理工作流程
// 混沌实验
Task("运行混沌实验", `
在 api-service 上执行控制混沌:
- 注入 500 毫秒网络延迟
- 监控服务健康指标
- 验证断路器激活
- 测量恢复时间
- 记录发现
`, "qe-chaos-engineer")
// 负载测试
Task("性能负载测试", `
运行负载测试模拟黑色星期五流量:
- 逐渐增加到 10,000 并发用户
- 维持负载 30 分钟
- 监控响应时间和错误率
- 识别瓶颈
- 对比服务水平协议
`, "qe-load-tester")
混沌实验
1. 故障注入
await chaosEngineer.injectFault({
target: 'api-service',
fault: {
type: 'latency',
parameters: {
delay: '500ms',
jitter: '100ms',
percentage: 50
}
},
duration: '5m',
monitoring: {
metrics: ['response_time', 'error_rate', 'throughput'],
alerts: true
},
rollback: {
automatic: true,
trigger: 'error_rate > 10%'
}
});
2. 负载测试
await loadTester.execute({
scenario: 'peak-traffic',
profile: {
rampUp: '5m',
steadyState: '30m',
rampDown: '5m'
},
users: {
initial: 100,
target: 5000,
pattern: 'linear'
},
assertions: {
p95_latency: '<500ms',
error_rate: '<1%',
throughput: '>1000rps'
}
});
3. 压力测试
await loadTester.stressTest({
endpoint: '/api/checkout',
strategy: 'step-increase',
steps: [100, 500, 1000, 2000, 5000],
stepDuration: '5m',
findBreakingPoint: true,
monitoring: {
resourceUtilization: true,
databaseConnections: true,
memoryUsage: true
}
});
4. 弹性验证
await resilienceTester.validate({
scenarios: [
'database-failover',
'cache-failure',
'external-service-timeout',
'pod-termination'
],
expectations: {
gracefulDegradation: true,
automaticRecovery: true,
dataIntegrity: true,
recoveryTime: '<30s'
}
});
故障类型
| 故障 | 描述 | 使用场景 |
|---|---|---|
| 延迟 | 添加网络延迟 | 测试超时 |
| 丢包 | 丢弃网络数据包 | 测试重试逻辑 |
| CPU 压力 | 消耗 CPU | 测试资源限制 |
| 内存压力 | 消耗内存 | 测试内存溢出处理 |
| 磁盘满 | 填满磁盘空间 | 测试磁盘错误 |
| 进程终止 | 终止进程 | 测试恢复 |
混沌报告
interface ChaosReport {
experiment: {
name: string;
target: string;
fault: FaultConfig;
duration: number;
};
results: {
hypothesis: string;
validated: boolean;
metrics: {
before: MetricSnapshot;
during: MetricSnapshot;
after: MetricSnapshot;
};
events: ChaosEvent[];
recovery: {
detected: boolean;
time: number;
automatic: boolean;
};
};
findings: {
severity: 'critical' | 'high' | 'medium' | 'low';
description: string;
recommendation: string;
}[];
artifacts: {
logs: string;
metrics: string;
traces: string;
};
}
安全控制
safety:
blast_radius:
max_affected_pods: 1
max_affected_percentage: 10
abort_conditions:
- error_rate > 50%
- p99_latency > 10s
- service_unavailable
excluded_environments:
- production-critical
required_approvals:
production: 2
staging: 0
SLA 验证
await resilienceTester.validateSLA({
slas: {
availability: 99.9,
p95_latency: 500,
error_rate: 0.1
},
period: '30d',
report: {
breaches: true,
trends: true,
projections: true
}
});
协调
主要代理: qe-chaos-engineer, qe-load-tester, qe-resilience-tester 协调员: qe-chaos-coordinator 相关技能: qe-performance, qe-security-compliance