Skip to content

Latest commit

 

History

History
520 lines (445 loc) · 12.3 KB

File metadata and controls

520 lines (445 loc) · 12.3 KB

📦 测试套件管理

测试套件就像是把相关的测试用例打包成一个"套餐",让你可以一次性执行多个相关的测试。本文档将详细介绍如何在巧克力测试平台中管理测试套件。

🎯 测试套件概览

什么是测试套件?

测试套件是一组相关测试用例的集合,它们通常具有相同的测试目标、测试环境或业务场景。通过套件,你可以批量管理和执行测试用例。

套件数据模型

interface TestSuite {
  id: number;
  suite_name: string;         // 套件名称
  describe: string;           // 套件描述
  project: {                  // 所属项目
    id: number;
    project_name: string;
  };
  case_sences: string[];      // 包含的测试场景
  test_type: string;          // 测试类型
  test_env: string;           // 测试环境
  add_time: string;           // 创建时间
  update_time: string;        // 更新时间
  case_count: number;         // 用例数量
  last_execution?: {          // 最后执行信息
    time: string;
    status: string;
    pass_rate: number;
  };
}

🏗️ 套件创建

创建流程

1. 进入套件管理

导航路径: 接口测试 → 套件管理 → 新建套件

2. 基础信息配置

{
  "suite_name": "用户模块核心功能测试套件",
  "describe": "包含用户注册、登录、信息管理等核心功能的测试用例",
  "project": 1,
  "test_type": "接口测试",
  "test_env": "test"
}

3. 选择测试用例

有多种方式选择测试用例:

按模块选择

# 选择整个用户模块的所有用例
module: "user_module"
# 自动包含该模块下的所有测试用例

按场景选择

# 选择特定测试场景
scenes: ["用户登录", "用户注册", "用户信息修改"]
# 包含这些场景相关的所有用例

手动选择

# 手动勾选具体的测试用例
case_ids: "1,2,3,5,8,13,21"

智能推荐

# 基于历史数据和关联性推荐相关用例
recommendation_type: "related_cases"
base_case_id: 1

套件配置选项

执行配置

{
  "execution_config": {
    "mode": "parallel",           // parallel | sequential
    "max_workers": 3,             // 并行执行的最大worker数
    "timeout": 1800,              // 超时时间(秒)
    "retry_count": 2,             // 失败重试次数
    "retry_interval": 30,         // 重试间隔(秒)
    "stop_on_failure": false,     // 遇到失败是否停止
    "continue_on_error": true     // 遇到错误是否继续
  }
}

环境配置

{
  "environment_config": {
    "test_env": "test",
    "base_url": "http://test-api.example.com",
    "database": "test_database",
    "variables": {
      "api_key": "${TEST_API_KEY}",
      "timeout": 30,
      "debug": true
    }
  }
}

通知配置

{
  "notification_config": {
    "on_start": true,
    "on_complete": true,
    "on_failure": true,
    "recipients": ["test-team@example.com"],
    "channels": ["email", "dingtalk"]
  }
}

📋 套件列表管理

列表功能特性

数据展示

套件列表显示以下信息:

  • 套件名称: 点击可查看详情
  • 套件描述: 简要说明
  • 所属项目: 归属的项目
  • 用例数量: 包含的测试用例数
  • 测试环境: 配置的测试环境
  • 最后执行: 最近一次执行的时间和结果
  • 创建时间: 套件创建时间

高级筛选

interface SuiteFilterParams {
  project?: number;           // 项目筛选
  suite_name?: string;        // 套件名称搜索
  test_env?: string;          // 环境筛选
  test_type?: string;         // 类型筛选
  case_count_range?: [number, number]; // 用例数量范围
  last_execution_status?: string; // 最后执行状态
  date_range?: [string, string]; // 创建时间范围
}

批量操作

  • 批量执行: 同时执行多个测试套件
  • 批量删除: 删除选中的测试套件
  • 批量复制: 复制套件到其他项目
  • 批量导出: 导出套件配置信息
  • 批量修改环境: 批量修改测试环境

套件操作

单项操作

  • 🏃 立即执行: 立即执行测试套件
  • 👁️ 查看详情: 查看套件详细信息
  • ✏️ 编辑套件: 修改套件配置
  • 📊 执行历史: 查看历史执行记录
  • 📋 用例列表: 查看包含的测试用例
  • 🗑️ 删除套件: 删除测试套件

快捷操作

  • 快速复制: 基于现有套件创建新套件
  • 同步用例: 同步最新的测试用例
  • 导出配置: 导出套件配置文件
  • 导入配置: 从配置文件导入套件

🔄 套件同步机制

自动同步

当测试用例发生变化时,相关的测试套件可以自动同步更新。

同步触发条件

  • 新增测试用例
  • 删除测试用例
  • 修改测试用例
  • 模块结构变化

同步策略

class SuiteSyncStrategy:
    AUTO_ADD_NEW_CASES = True      # 自动添加新用例
    AUTO_REMOVE_DELETED_CASES = True  # 自动移除已删除用例
    NOTIFY_ON_CHANGES = True       # 变更时通知
    BACKUP_BEFORE_SYNC = True      # 同步前备份
    
    def sync_suite(self, suite_id, changes):
        # 实现同步逻辑
        pass

手动同步

# 根据用例场景同步套件
POST /api/auto_pytest/sync_suite_by_case_ids
{
  "suite_id": 1,
  "case_sences": ["用户登录", "用户注册", "用户信息修改"],
  "sync_mode": "merge"  # merge | replace | append
}

🏃‍♂️ 套件执行

执行方式

手动执行

# 立即执行测试套件
POST /api/auto_pytest/run_suite
{
  "suite_id": 1,
  "environment": "test",
  "execution_config": {
    "mode": "parallel",
    "max_workers": 3,
    "timeout": 1800
  }
}

定时执行

通过测试计划实现定时执行:

{
  "plan_name": "每日回归测试",
  "suite_id": 1,
  "cron": "0 2 * * *",
  "environment": "test",
  "is_enabled": true
}

API触发执行

# 通过API触发执行(用于CI/CD集成)
curl -X POST "http://api.example.com/api/auto_pytest/run_suite" \
  -H "Authorization: Bearer ${TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "suite_id": 1,
    "environment": "test",
    "trigger_source": "jenkins",
    "build_number": "123"
  }'

执行监控

实时状态

interface SuiteExecutionStatus {
  suite_id: number;
  execution_id: string;
  status: 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';
  progress: {
    total_cases: number;
    completed_cases: number;
    passed_cases: number;
    failed_cases: number;
    skipped_cases: number;
    progress_percentage: number;
  };
  start_time: string;
  estimated_end_time?: string;
  current_case?: {
    case_id: number;
    case_name: string;
    start_time: string;
  };
}

执行控制

  • ⏸️ 暂停执行: 暂停正在执行的套件
  • ▶️ 继续执行: 恢复暂停的执行
  • 🛑 停止执行: 强制停止执行
  • 🔄 重新执行: 重新执行失败的用例

📊 套件分析

执行结果分析

interface SuiteExecutionResult {
  suite_id: number;
  execution_id: string;
  start_time: string;
  end_time: string;
  duration: number;
  environment: string;
  
  summary: {
    total_cases: number;
    passed_cases: number;
    failed_cases: number;
    skipped_cases: number;
    pass_rate: number;
  };
  
  case_results: Array<{
    case_id: number;
    case_name: string;
    status: string;
    duration: number;
    error_message?: string;
  }>;
  
  performance: {
    avg_case_duration: number;
    slowest_case: {
      case_id: number;
      duration: number;
    };
    fastest_case: {
      case_id: number;
      duration: number;
    };
  };
}

趋势分析

interface SuiteTrend {
  suite_id: number;
  date_range: [string, string];
  executions: Array<{
    date: string;
    execution_count: number;
    pass_rate: number;
    avg_duration: number;
    failure_count: number;
  }>;
  
  trends: {
    pass_rate_trend: 'improving' | 'declining' | 'stable';
    duration_trend: 'faster' | 'slower' | 'stable';
    stability_score: number;
  };
}

质量指标

interface SuiteQuality {
  suite_id: number;
  quality_score: number;      // 质量评分 (0-100)
  
  metrics: {
    stability: number;        // 稳定性 (0-100)
    performance: number;      // 性能 (0-100)
    coverage: number;         // 覆盖率 (0-100)
    maintainability: number;  // 可维护性 (0-100)
  };
  
  issues: Array<{
    type: 'flaky_test' | 'slow_test' | 'outdated_test';
    case_id: number;
    case_name: string;
    severity: 'high' | 'medium' | 'low';
    description: string;
  }>;
}

🔧 套件维护

套件优化

性能优化

class SuiteOptimizer:
    def optimize_execution_order(self, suite_id):
        """优化用例执行顺序"""
        # 根据历史执行时间和依赖关系优化顺序
        pass
    
    def remove_redundant_cases(self, suite_id):
        """移除冗余用例"""
        # 识别和移除功能重复的用例
        pass
    
    def balance_parallel_execution(self, suite_id):
        """平衡并行执行"""
        # 优化并行执行的用例分配
        pass

用例管理

class SuiteCaseManager:
    def add_cases_by_pattern(self, suite_id, pattern):
        """按模式添加用例"""
        # 根据命名模式或标签模式添加用例
        pass
    
    def remove_outdated_cases(self, suite_id):
        """移除过时用例"""
        # 移除长期失败或不再维护的用例
        pass
    
    def update_case_priority(self, suite_id):
        """更新用例优先级"""
        # 根据业务重要性调整用例执行优先级
        pass

套件版本管理

interface SuiteVersion {
  version: string;           // 版本号
  suite_id: number;
  changes: {
    added_cases: number[];   // 新增用例
    removed_cases: number[]; // 移除用例
    config_changes: object;  // 配置变更
  };
  change_log: string;        // 变更日志
  author: string;            // 修改人
  create_time: string;       // 创建时间
}

套件备份恢复

class SuiteBackup:
    def backup_suite(self, suite_id):
        """备份套件配置"""
        suite_config = {
            'suite_info': self.get_suite_info(suite_id),
            'case_list': self.get_suite_cases(suite_id),
            'execution_config': self.get_execution_config(suite_id),
            'backup_time': datetime.now().isoformat()
        }
        return suite_config
    
    def restore_suite(self, backup_data):
        """恢复套件配置"""
        # 从备份数据恢复套件
        pass

🎯 套件策略

套件组织策略

按功能模块组织

用户管理套件
├── 用户注册相关用例
├── 用户登录相关用例
└── 用户信息管理用例

订单管理套件
├── 订单创建相关用例
├── 订单支付相关用例
└── 订单状态管理用例

按测试类型组织

冒烟测试套件
├── 核心功能验证用例
└── 基础接口可用性用例

回归测试套件
├── 全功能验证用例
└── 边界条件测试用例

性能测试套件
├── 响应时间测试用例
└── 并发压力测试用例

按执行频率组织

每日执行套件
├── 核心业务流程用例
└── 关键接口验证用例

每周执行套件
├── 完整功能回归用例
└── 兼容性测试用例

按需执行套件
├── 专项测试用例
└── 调试验证用例

套件设计原则

FIRST原则

  • Fast: 执行速度快
  • Independent: 用例间相互独立
  • Repeatable: 可重复执行
  • Self-Validating: 自动验证结果
  • Timely: 及时反馈结果

最佳实践

  1. 合理规模: 套件大小适中,便于管理和执行
  2. 清晰分类: 按业务逻辑或技术特性分类
  3. 定期维护: 定期更新和优化套件内容
  4. 版本管理: 记录套件变更历史
  5. 性能监控: 监控套件执行性能

🎉 套件管理大师! 你已经掌握了测试套件管理的精髓。记住,好的套件设计能让测试工作事半功倍!