当测试环境不稳定、环境不够用、或者需要准备测试数据时使用此技能。覆盖环境部署与配置管理、环境监控与问题排查(环境问题 vs 代码问题的快速区分)、多环境管理策略(开发/测试/预发)和日常测试数据准备。环境问题是最容易浪费测试时间的事——一个稳定的环境比一百个测试用例更有价值。输出环境健康度检查和数据准备 chec...
---
name: qa-test-env-data
version: 1.6.0
description: >-
当测试环境不稳定、环境不够用、或者需要准备测试数据时使用此技能。覆盖环境部署与配置管理、环境监控与问题排查(环境问题 vs 代码问题的快速区分)、多环境管理策略(开发/测试/预发)和日常测试数据准备。环境问题是最容易浪费测试时间的事——一个稳定的环境比一百个测试用例更有价值。输出环境健康度检查和数据准备 checklist。 ⚠️ 本技能含环境清理步骤,执行前请确认非生产环境。
when_to_use: 用户说"测试环境"、"环境搭建"、"环境配置"、"造数"、"测试数据"、"数据准备"、"环境部署"、需要搭建测试环境、需要准备测试数据时
allowed-tools: Read Grep Glob Bash
related_skills:
upstream:
- qa-testability-advocacy # 输入:可测试性改进建议
- qa-test-strategy-design # 输入:测试策略确定环境需求
downstream:
- qa-execution-observation # 输出:环境和数据支持执行
- qa-test-data-engineering
input_format:
required:
- name: 测试策略
type: object
description: 来自qa-test-strategy-design的测试策略
- name: 环境需求
type: string
description: 测试环境的配置需求
optional:
- name: 现有环境清单
type: array
description: 现有测试环境列表
output_format:
traceability:
- 每套环境配置带唯一ID(ENV-XXXX)
structure:
- env_requirements: 环境需求清单
- env_design: 环境设计方案
- configuration_guide: 配置指南
- maintenance_plan: 维护计划
categories: ['Development','Testing','DevOps']
depth_requirement_quantification:
reference_value: "根据环境复杂度调整部署深度:简单×1/中等×2/复杂×3"
minimum: "至少完成环境搭建、配置管理、数据准备3步"
error_recovery_guidance:
on_failure: "环境部署遗漏配置项时回退到测试策略补充依赖"
retry_behavior: "补充依赖后重新部署环境"
---
# 测试环境与数据管理
## 核心原则
环境挂了、数据不对是测试最常见的阻塞——需要系统性管理。
> **⚠️ 安全警告:使用本技能前必须确认以下条件**
>
> **环境确认**: 执行任何环境变更(重启、修复、清理)前,必须先确认目标环境确切标识(名称/地址),并验证该环境为已授权的非生产环境。严禁对生产环境执行未经审批的操作。
>
> **数据备份**: 任何数据清理操作(删除、归档、重置)前,必须先备份或确认已有备份可用。建议先在低风险环境进行试运行(dry-run)。
>
> **审批要求**: 涉及数据修改、环境重启、配置变更的操作,必须获得相关团队负责人的明确审批,并记录操作日志。
>
> **爆炸半径**: 批量操作前先在小范围验证,确认不影响其他团队。涉及共享环境时需与相关团队协调时间窗口。
>
> **禁止场景**: 禁止在未确认环境身份的情况下执行变更操作、禁止在无备份的情况下执行数据清理、禁止在未通知相关团队的情况下重启共享环境。
## 测试环境管理
### 环境分层
```text
环境层级:
├─ 开发环境(DEV)
│ ├─ 用途:开发自测
│ ├─ 数据:开发造数
│ └─ 稳定性:不稳定
│
├─ 集成环境(SIT)
│ ├─ 用途:集成测试
│ ├─ 数据:测试数据
│ └─ 稳定性:较稳定
│
├─ 预发环境(UAT)
│ ├─ 用途:用户验收
│ ├─ 数据:准生产数据
│ └─ 稳定性:稳定
│
└─ 生产环境(PROD)
├─ 用途:线上运行
├─ 数据:真实数据
└─ 稳定性:高稳定
```
### 环境健康检查
```text
检查清单:
├─ 服务状态
│ ├─ 应用服务是否正常?
│ ├─ 数据库是否正常?
│ ├─ 缓存是否正常?
│ └─ 消息队列是否正常?
│
├─ 依赖服务
│ ├─ 第三方服务是否可用?
│ ├─ 内部服务是否可用?
│ └─ 网络是否通畅?
│
├─ 配置检查
│ ├─ 配置是否正确?
│ ├─ 环境变量是否设置?
│ └─ 功能开关是否正确?
│
└─ 数据检查
├─ 数据是否完整?
├─ 数据是否一致?
└─ 测试数据是否就绪?
```
### 环境问题处理
```text
常见问题:
├─ 服务不可用
│ ├─ 检查:服务日志、端口、进程
│ ├─ 处理:重启服务、检查配置
│ └─ 预防:健康检查、监控告警
│
├─ 网络不通
│ ├─ 检查:ping、telnet、防火墙
│ ├─ 处理:检查网络配置、开放端口
│ └─ 预防:网络监控、冗余设计
│
├─ 配置错误
│ ├─ 检查:配置文件、环境变量
│ ├─ 处理:修正配置、重启服务
│ └─ 预防:配置管理、版本控制
│
└─ 数据异常
├─ 检查:数据完整性、一致性
├─ 处理:数据修复、数据恢复
└─ 预防:数据备份、数据监控
```
## 测试数据管理
### 数据准备方法
```text
数据准备方法:
├─ 手动造数
│ ├─ 适用:少量数据、复杂数据
│ ├─ 工具:数据库客户端、管理后台
│ └─ 优点:灵活、精确
│
├─ 脚本造数
│ ├─ 适用:批量数据、重复数据
│ ├─ 工具:SQL脚本、Python脚本
│ └─ 优点:高效、可复用
│
├─ 数据工厂
│ ├─ 适用:标准化数据、大量数据
│ ├─ 工具:Faker、Mockaroo、自研
│ └─ 优点:标准化、可扩展
│
└─ 接口造数
├─ 适用:业务数据、流程数据
├─ 工具:Postman、自研脚本
└─ 优点:业务真实、流程完整
```
### 数据脱敏
> 📌 本节与 qa-test-data-engineering「数据脱敏」内容同步,修改时请同步更新。完整版含 Python 实现代码见 qa-test-data-engineering。
```text
脱敏规则:
├─ 个人信息
│ ├─ 手机号:138****1234
│ ├─ 身份证:110***********1234
│ ├─ 邮箱:test****@example.com
│ └─ 姓名:*三
│
├─ 敏感数据
│ ├─ 银行卡:6222****1234
│ ├─ 密码:******
│ ├─ Token:****
│ └─ 地址:北京市***
│
└─ 脱敏方法
├─ 替换法:用*替换部分字符
├─ 加密法:用加密算法处理
├─ 截断法:只保留部分字符
└─ 随机法:用随机值替换
```
### 数据清理
> 📌 本节与 qa-test-data-engineering「数据清理」内容同步,修改时请同步更新两处。
```text
清理策略:
├─ 按用例清理
│ ├─ 每个用例执行后清理
│ ├─ 优点:数据隔离好
│ └─ 缺点:效率低
│
├─ 按模块清理
│ ├─ 每个模块测试后清理
│ ├─ 优点:效率较高
│ └─ 缺点:隔离性一般
│
├─ 按批次清理
│ ├─ 每个批次测试后清理
│ ├─ 优点:效率高
│ └─ 缺点:隔离性差
│
└─ 定期清理
├─ 定期清理历史数据
├─ 优点:保持数据量可控
└─ 缺点:可能影响测试
```
## 输出示例
**测试环境频繁出现"数据库连接失败"**
→ 环境健康检查:数据库服务是否正常→连接池是否耗尽→网络是否通畅
→ 环境分层:开发环境→测试环境→Staging→生产,各环境配置独立
**测试数据准备:需要测试支付流程的100种订单状态**
→ 数据准备:通过API批量创建各状态订单,输出订单列表供测试使用
→ 数据清理:测试完成后按策略自动清理(标记/归档/删除)
## 检查清单
环境与数据管理完成后检查:
- [ ] 环境分层是否清晰?
- [ ] 环境健康检查是否执行?
- [ ] 数据准备是否充分?
- [ ] 数据脱敏是否处理?
- [ ] 数据清理是否安排?
- [ ] 问题处理是否有预案?
don't have the plugin yet? install it then click "run inline in claude" again.