mcpField
Q
qe-test-environment-management

qe-test-environment-management

github.com/proffesor-for-testing测试与质量51983 次安装今天更新
代码仓库

关于 qe-test-environment-management

用于规划和管理本地、CI、预发布及生产类测试环境的技能,涵盖环境复现、生产环境一致性、外部服务模拟和基础设施成本控制。

主要功能

  1. 01划分环境类型
  2. 02用 Docker 保持环境一致
  3. 03检查生产环境一致性
  4. 04模拟外部服务
  5. 05控制基础设施成本

适用场景

  1. 01搭建测试基础设施
  2. 02排查环境相关故障
  3. 03对齐开发与生产环境
  4. 04降低测试环境开销

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/proffesor-for-testing/agentic-qe --skill qe-test-environment-management

安装后在 Claude Code 中输入/qe-test-environment-management确认已加载。

详细介绍

测试环境管理

<default_to_action> 管理测试环境时:

  1. 定义环境类型(本地、CI、预发布、生产)
  2. 使用 Docker 容器化,以确保一致性
  3. 确保与生产环境保持一致(相同的版本、配置)
  4. 模拟外部服务(服务虚拟化)
  5. 优化成本(自动关闭、竞价实例)

快速环境检查清单:

  • 与生产环境使用相同的 OS 和版本
  • 使用相同类型和版本的数据库
  • 使用相同的配置结构
  • 使用容器确保可复现性
  • 在数小时后自动关闭

关键成功因素:

  • “在我的机器上能运行”=环境不一致
  • 基础设施即代码=可重复的环境
  • 服务虚拟化=无需外部依赖即可测试 </default_to_action>

快速参考卡

使用场景
  • 搭建测试基础设施
  • 调试特定于环境的故障
  • 降低测试基础设施成本
  • 确保开发环境与生产环境保持一致
环境类型
类型用途生命周期
本地快速反馈开发者会话
CI自动化测试每次构建(临时)
预发布生产前验证持久
生产金丝雀/合成测试持续
开发环境与生产环境一致性检查清单
项目必须一致
OS相同版本
数据库相同类型 + 版本
依赖项相同版本
配置相同结构
环境变量相同名称

用于测试环境的 Docker

# docker-compose.test.yml
version: '3.8'

services:
  app:
    build: .
    ports:
      - "3000:3000"
    environment:
      NODE_ENV: test
      DATABASE_URL: postgres://postgres:password@db:5432/test
    depends_on:
      - db
      - redis

  db:
    image: postgres:15
    environment:
      POSTGRES_DB: test
      POSTGRES_PASSWORD: password

  redis:
    image: redis:7

在容器中运行测试:

docker-compose -f docker-compose.test.yml up -d
docker-compose -f docker-compose.test.yml exec app npm test
docker-compose -f docker-compose.test.yml down

基础设施即代码

# test-environment.tf
resource "aws_instance" "test_server" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t3.medium"

  tags = {
    Name         = "test-environment"
    Environment  = "test"
    AutoShutdown = "20:00" # Cost optimization
  }
}

resource "aws_rds_instance" "test_db" {
  engine                  = "postgres"
  engine_version          = "15"
  instance_class          = "db.t3.micro"
  backup_retention_period = 0 # No backups needed for test
  skip_final_snapshot     = true
}

服务虚拟化

// Mock external services with WireMock
import { WireMock } from 'wiremock-captain';

const wiremock = new WireMock('http://localhost:8080');

// Mock payment gateway
await wiremock.register({
  request: {
    method: 'POST',
    url: '/charge'
  },
  response: {
    status: 200,
    jsonBody: { transactionId: '12345', status: 'approved' }
  }
});

// Tests use mock instead of real gateway

成本优化

# Auto-shutdown test environments after hours
0 20 * * * aws ec2 stop-instances --instance-ids $(aws ec2 describe-instances \
  --filters "Name=tag:Environment,Values=test" \
  --query "Reservations[].Instances[].InstanceId" --output text)

# Start before work hours
0 7 * * 1-5 aws ec2 start-instances --instance-ids $(aws ec2 describe-instances \
  --filters "Name=tag:Environment,Values=test" \
  --query "Reservations[].Instances[].InstanceId" --output text)

使用竞价实例(节省 70%):

resource "aws_instance" "test_runner" {
  instance_type = "c5.2xlarge"
  instance_market_options {
    market_type = "spot"
    spot_options {
      max_price = "0.10"
    }
  }
}

由 Agent 驱动的环境管理

// Provision test environment
await Task("Environment Provisioning", {
  type: 'integration-testing',
  services: ['app', 'db', 'redis', 'mocks'],
  parity: 'production',
  lifetime: '2h'
}, "qe-test-executor");

// Chaos testing in isolated environment
await Task("Chaos Test Environment", {
  baseline: 'staging',
  isolate: true,
  injectFaults: ['network-delay', 'pod-failure']
}, "qe-chaos-engineer");

Agent 协调提示

记忆命名空间
aqe/environment-management/
├── configs/*            - Environment configurations
├── parity-checks/*      - Dev/prod parity results
├── cost-reports/*       - Infrastructure costs
└── service-mocks/*      - Service virtualization configs
Fleet 协调
const envFleet = await FleetManager.coordinate({
  strategy: 'environment-management',
  agents: [
    'qe-test-executor',       // Provision environments
    'qe-performance-tester',  // Environment performance
    'qe-chaos-engineer'       // Resilience testing
  ],
  topology: 'sequential'
});

相关技能


请记住

环境不一致=测试不稳定。“在我的机器上能运行”的问题源自:OS/版本不同、缺少依赖项、配置不同、数据不同。

**基础设施即代码可确保可重复性。**对环境配置进行版本控制,按需启动完全相同的环境。

**使用 Agents:**Agents 会自动配置与生产环境匹配的测试环境,确保一致性,模拟外部服务,并通过自动扩缩和自动关闭优化成本。

评论

支持 Markdown