一,什么是SuperPowers?

    Superpowers (https://github.com/obra/superpowers)是一个完整的软件开发工作流程,适用于您的编码代理,它建立在一组可组合的“技能”和一些初始指令之上,以确保您的代理使用它们。

0

     安装和配置可以参考:https://zhuanlan.zhihu.com/p/1994894438053470382,网上还有很多相关的文章,在此就不展开了,本文主要介绍如何使用SuperPowers实现零代码开发测试平台。

二,如何开发测试平台?

首先我是在公司内部的龙虾平台Codeflicker上安装的SuperPower插件,大模型使用的是glm-5,当然token消耗不要考虑。安装完成后就可以尝试通过提要求来生成测试平台。

1,提出需求进行头脑风暴

我的需求是:写一下模仿Apifox格式的接口自动化测试平台,前端使用vue3来实现,增加大模型生成接口自动化用例功能。

SuperPower针对这个需求提出一些问题,根据自己的需要做选择即可,最后会给出几个架构方案让我来选择:

我已了解需求。现在让我提出几个架构方案:

方案对比
方案一:微服务架构(推荐)
* 前端:Vue3 + Element Plus + Pinia + TypeScript
* 后端:Spring Boot 多模块(API模块、调度模块、AI模块分离)
* 优点:模块解耦清晰,便于团队协作开发,AI模块可独立扩展
* 缺点:初期架构稍复杂
方案二:单体分层架构
* 前端:Vue3 + Element Plus + Pinia
* 后端:Spring Boot 单模块,标准三层架构
* 优点:简单直接,开发快速
* 缺点:AI功能耦合,后期扩展受限
方案三:前后端一体化 + Node中间层
* 前端:Vue3
* 后端:Spring Boot 核心 + Node.js AI代理层
* 优点:AI模型调用灵活(Node生态SDK丰富)
* 缺点:运维复杂度增加

我推荐方案一,理由:
1. 团队协作场景下,模块分离便于并行开发
2. AI模块独立,后续接入更多模型时改动小
3. Spring Boot 生态成熟,适合企业级
你觉得哪个方案更合适?

2,具体方案设计

选择了方案一后,SuperPower就会给出具体的设计方案:

一、系统架构

┌─────────────────────────────────────────────────────────────────┐
│                         前端 (Vue3)                              │
│  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌────────┐│
│  │ 接口管理  │ │ 用例管理  │ │ 环境管理 │ │ 测试执行 │ │ 报告中心││
│  └──────────┘ └──────────┘ └──────────┘ └──────────┘ └────────┘│
│  ┌──────────────────────────────────────────────────────────┐   │
│  │              AI用例生成 (调用后端AI服务)                   │   │
│  └──────────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│                    Spring Boot 后端                              │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐             │
│  │  API模块    │  │  调度模块   │  │   AI模块    │             │
│  │ - 接口CRUD  │  │ - 定时任务  │  │ - 多模型适配 │             │
│  │ - 用例管理  │  │ - 任务执行  │  │ - 用例生成   │             │
│  │ - 环境管理  │  │ - 报告生成  │  │ - Prompt管理 │             │
│  └─────────────┘  └─────────────┘  └─────────────┘             │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │                   公共模块 (认证/工具/配置)                 │   │
│  └──────────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────────┘
                              │
        ┌─────────────────────┼─────────────────────┐
        ▼                     ▼                     ▼
   ┌─────────┐          ┌──────────┐          ┌──────────┐
   │  MySQL  │          │  Redis   │          │ AI模型API │
   └─────────┘          └──────────┘          └──────────┘

技术栈明细:

* 前端:Vue3 + TypeScript + Element Plus + Pinia + Axios + Vue Router

* 后端:Spring Boot 3.x + MyBatis-Plus + MySQL 8.0 + Redis + XXL-Job

* AI:支持 OpenAI / 通义千问 / 其他模型(策略模式适配)

二、数据模型设计

┌──────────────────┐     ┌──────────────────┐
│     Project      │     │      User        │
├──────────────────┤     ├──────────────────┤
│ id               │     │ id               │
│ name             │     │ username         │
│ description      │     │ password         │
│ owner_id         │────▶│ email            │
│ created_at       │     │ avatar           │
└──────────────────┘     │ role             │
         │               └──────────────────┘
         ▼
┌──────────────────┐     ┌──────────────────┐
│   ApiEndpoint    │     │   Environment    │
├──────────────────┤     ├──────────────────┤
│ id               │     │ id               │
│ project_id       │────▶│ project_id       │
│ name             │     │ name             │
│ method           │     │ base_url         │
│ path             │     │ variables (JSON) │
│ headers (JSON)   │     │ headers (JSON)   │
│ params (JSON)    │     │ created_at       │
│ description      │     └──────────────────┘
│ created_at       │              │
└──────────────────┘              ▼
         │               ┌──────────────────┐
         ▼               │   TestReport     │
┌──────────────────┐     ├──────────────────┤
│   TestCase      │     │ id               │
├──────────────────┤     │ task_id          │
│ id               │     │ total_count      │
│ endpoint_id      │     │ pass_count       │
│ name             │     │ fail_count       │
│ request_config   │     │ duration         │
│ pre_script       │     │ result (JSON)    │
│ post_script      │     │ created_at       │
│ assertions(JSON) │     └──────────────────┘
│ ai_generated     │
│ created_at       │
└──────────────────┘
         │
         ▼
┌──────────────────┐
│   ScheduleTask   │
├──────────────────┤
│ id               │
│ project_id       │
│ name             │
│ cron_expression  │
│ case_ids (JSON)  │
│ notify_config    │
│ enabled          │
│ created_at       │
└──────────────────┘

核心实体说明:

  • * Project: 项目,用例和环境的项目隔离
  • * ApiEndpoint: 接口定义,支持从Swagger/OpenAPI导入
  • * TestCase: 测试用例,关联接口,包含请求配置、断言、前后置脚本
  • * Environment: 环境配置,baseUrl + 变量 + 公共headers
  • * ScheduleTask: 定时任务,cron表达式配置执行计划
  • * TestReport: 测试报告,记录执行结果

三、前端模块设计


src/
├── api/                    # API请求模块
│   ├── project.ts
│   ├── endpoint.ts
│   ├── testcase.ts
│   ├── environment.ts
│   ├── schedule.ts
│   ├── report.ts
│   └── ai.ts
├── assets/                 # 静态资源
├── components/             # 公共组件
│   ├── ApiForm/           # 接口表单组件
│   ├── CaseEditor/        # 用例编辑器
│   ├── CodeEditor/        # 代码编辑器(脚本)
│   ├── AssertEditor/      # 断言编辑器
│   └── ThemeSwitch/       # 主题切换
├── composables/           # 组合式函数
│   ├── useTheme.ts
│   ├── useRequest.ts
│   └── useMessage.ts
├── layouts/               # 布局组件
│   └── MainLayout.vue
├── router/                # 路由配置
├── stores/                # Pinia状态管理
│   ├── project.ts
│   ├── environment.ts
│   └── user.ts
├── styles/                # 样式文件
│   ├── dark.scss
│   └── light.scss
├── types/                 # TypeScript类型
├── utils/                 # 工具函数
└── views/                 # 页面组件
    ├── project/
    │   ├── List.vue
    │   └── Detail.vue
    ├── endpoint/
    │   ├── List.vue
    │   ├── Editor.vue
    │   └── Import.vue      # Swagger导入
    ├── testcase/
    │   ├── List.vue
    │   ├── Editor.vue
    │   └── AIGenerate.vue # AI生成页面
    ├── environment/
    │   └── Manager.vue
    ├── schedule/
    │   ├── List.vue
    │   └── Editor.vue
    └── report/
        ├── List.vue
        └── Detail.vue

页面布局(类似Apifox):


┌────────────────────────────────────────────────────────────┐
│  Logo    项目选择    环境选择          🔔  👤  🌙主题切换  │
├──────────┬─────────────────────────────────────────────────┤
│          │                                                 │
│  📁项目   │              内容区                            │
│          │                                                 │
│  🔌接口   │    - 接口列表 / 用例列表 / 报告列表            │
│          │    - 编辑器区域                                 │
│  ✅用例   │    - 响应预览                                   │
│          │                                                 │
│  🌍环境   │                                                 │
│          │                                                 │
│  ⏰定时   │                                                 │
│          │                                                 │
│  📊报告   │                                                 │
│          │                                                 │
└──────────┴─────────────────────────────────────────────────┘

四、后端模块设计

api-test-platform/
├── api-platform-common/          # 公共模块
│   ├── config/
│   │   ├── RedisConfig.java
│   │   └── MybatisPlusConfig.java
│   ├── exception/
│   │   ├── GlobalExceptionHandler.java
│   │   └── BusinessException.java
│   ├── result/
│   │   └── Result.java
│   └── utils/
│       ├── JwtUtil.java
│       └── JsonUtil.java
│
├── api-platform-api/             # API模块 (端口: 8080)
│   ├── controller/
│   │   ├── ProjectController.java
│   │   ├── EndpointController.java
│   │   ├── TestCaseController.java
│   │   ├── EnvironmentController.java
│   │   ├── ScheduleController.java
│   │   └── ReportController.java
│   ├── service/
│   │   ├── ProjectService.java
│   │   ├── EndpointService.java
│   │   ├── TestCaseService.java
│   │   ├── EnvironmentService.java
│   │   └── ReportService.java
│   ├── mapper/
│   └── entity/
│
├── api-platform-schedule/        # 调度模块 (端口: 8081)
│   ├── config/
│   │   └── XxlJobConfig.java
│   ├── job/
│   │   └── TestExecuteJob.java
│   ├── executor/
│   │   ├── HttpExecutor.java       # HTTP请求执行器
│   │   ├── ScriptExecutor.java     # 脚本执行器
│   │   └── AssertExecutor.java      # 断言执行器
│   └── service/
│       └── ScheduleService.java
│
├── api-platform-ai/              # AI模块 (端口: 8082)
│   ├── controller/
│   │   └── AIController.java
│   ├── service/
│   │   ├── AIProviderService.java
│   │   └── CaseGenerateService.java
│   ├── provider/                   # 多模型适配器
│   │   ├── AIProvider.java         # 接口
│   │   ├── OpenAIProvider.java
│   │   ├── QwenProvider.java
│   │   └── ProviderFactory.java
│   ├── prompt/
│   │   └── PromptTemplate.java
│   └── config/
│       └── AIConfig.java
│
└── pom.xml                        # 父POM

模块职责:

* common: 公共配置、工具类、统一响应、异常处理* api: 核心业务接口,提供REST API* schedule: 定时任务调度,用例执行引擎* ai: AI模型适配,用例生成服务

五、AI用例生成功能设计

5.1 多模型适配架构

┌─────────────────────────────────────────────────────┐
│                  AIController                        │
│  POST /api/ai/generate-cases                        │
│  POST /api/ai/analyze-endpoint                      │
└──────────────────────┬──────────────────────────────┘
                       ▼
┌─────────────────────────────────────────────────────┐
│              CaseGenerateService                     │
│  - 解析接口信息                                      │
│  - 构建Prompt                                        │
│  - 调用AI模型                                        │
│  - 解析生成结果                                      │
└──────────────────────┬──────────────────────────────┘
                       ▼
┌─────────────────────────────────────────────────────┐
│              AIProviderService                       │
│  - 管理模型配置                                      │
│  - 选择可用模型                                      │
│  - 负载均衡/故障转移                                 │
└──────────────────────┬──────────────────────────────┘
                       ▼
┌─────────────────────────────────────────────────────┐
│     ProviderFactory                                  │
│  根据配置创建对应Provider实例                        │
└──────────┬──────────────────┬───────────────────────┘
           ▼                  ▼
┌──────────────────┐  ┌──────────────────┐
│  OpenAIProvider  │  │   QwenProvider   │
│  - chat()        │  │   - chat()       │
│  - parseResult() │  │   - parseResult()│
└──────────────────┘  └──────────────────┘

5.2 用例生成流程

用户选择接口 → 点击"AI生成用例"
        │
        ▼
┌─────────────────────────────────┐
│  构建Prompt                      │
│  - 接口路径、方法、参数          │
│  - 请求体Schema                  │
│  - 业务上下文(可选)              │
└──────────────┬──────────────────┘
               ▼
┌─────────────────────────────────┐
│  AI模型生成                     │
│  - 正向用例(正常流程)            │
│  - 边界用例(边界值测试)          │
│  - 异常用例(错误处理测试)        │
└──────────────┬──────────────────┘
               ▼
┌─────────────────────────────────┐
│  解析AI响应                     │
│  - 提取用例名称                  │
│  - 提取请求参数                  │
│  - 提取断言规则                  │
└──────────────┬──────────────────┘
               ▼
┌─────────────────────────────────┐
│  用户确认/编辑 → 保存用例        │
└─────────────────────────────────┘

5.3 Prompt模板设计

// 用例生成Prompt模板
String promptTemplate = """
你是一个API测试专家。请根据以下接口信息生成测试用例。
接口信息:
- 方法: {method}
- 路径: {path}
- 描述: {description}
- 请求参数: {params}
- 请求体Schema: {bodySchema}
请生成以下类型的测试用例(JSON格式):
1. 正向用例:正常业务流程测试
2. 边界用例:参数边界值测试
3. 异常用例:错误处理测试
返回格式:
{
  "cases": [
    {
      "name": "用例名称",
      "type": "positive|boundary|exception",
      "request": { 请求配置 },
      "assertions": [ 断言列表 ]
    }
  ]
}
""";

5.4 前端交互设计

┌─────────────────────────────────────────────────────────┐
│  AI生成测试用例                              [配置模型] │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  选择接口: [GET /api/users          ▼]                 │
│                                                         │
│  生成类型: ☑ 正向用例  ☑ 边界用例  ☑ 异常用例           │
│                                                         │
│  用例数量: [3] 个(每种类型)                           │
│                                                         │
│  业务上下文(可选):                                    │
│  ┌─────────────────────────────────────────────────┐   │
│  │ 这是一个用户查询接口,支持分页和筛选              │   │
│  └─────────────────────────────────────────────────┘   │
│                                                         │
│                    [ 生成用例 ]                         │
│                                                         │
├─────────────────────────────────────────────────────────┤
│  生成结果预览:                                          │
│  ┌─────────────────────────────────────────────────┐   │
│  │ ☑ 正向-查询用户列表                              │   │
│  │   GET /api/users?page=1&size=10                 │   │
│  │   断言: status=200, data.length > 0              │   │
│  │                                                  │   │
│  │ ☑ 边界-分页边界测试                              │   │
│  │   GET /api/users?page=0&size=100                │   │
│  │   断言: status=200                               │   │
│  │                                                  │   │
│  │ ☑ 异常-无效参数测试                              │   │
│  │   GET /api/users?page=-1                        │   │
│  │   断言: status=400                               │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                         │
│              [取消]    [保存选中用例]                    │
└─────────────────────────────────────────────────────────┘

6.2 接口管理

GET    /api/endpoints             # 接口列表

POST   /api/endpoints             # 创建接口PUT    /api/endpoints/{id}        # 更新接口DELETE /api/endpoints/{id}        # 删除接口POST   /api/endpoints/import      # Swagger/OpenAPI导入

6.3 测试用例

GET    /api/testcases             # 用例列表POST   /api/testcases             # 创建用例PUT    /api/testcases/{id}        # 更新用例DELETE /api/testcases/{id}        # 删除用例POST   /api/testcases/{id}/run    # 单个执行POST   /api/testcases/batch-run   # 批量执行

6.4 环境管理

GET    /api/environments          # 环境列表POST   /api/environments          # 创建环境PUT    /api/environments/{id}     # 更新环境DELETE /api/environments/{id}     # 删除环境

6.5 定时任务

GET    /api/schedules             # 任务列表POST   /api/schedules             # 创建任务PUT    /api/schedules/{id}        # 更新任务DELETE /api/schedules/{id}        # 删除任务PUT    /api/schedules/{id}/toggle # 启用/禁用

6.6 测试报告

GET    /api/reports               # 报告列表GET    /api/reports/{id}          # 报告详情DELETE /api/reports/{id}          # 删除报告

6.7 AI服务

POST  /api/ai/generate-cases      # AI生成用例GET   /api/ai/models             # 可用模型列表PUT   /api/ai/models/{provider}  # 配置模型

七、技术实现要点

7.1 前端主题切换​​​​​​​

// 使用CSS变量 + Element Plus主题
// dark.scss
:root {
  --bg-primary: #1a1a1a;
  --bg-secondary: #252525;
  --text-primary: #ffffff;
}
// light.scss
:root {
  --bg-primary: #ffffff;
  --bg-secondary: #f5f5f5;
  --text-primary: #333333;
}

7.2 Swagger导入解析

// 解析OpenAPI 3.0规范
@Service
public class SwaggerImportService {
    public List<ApiEndpoint> parse(String swaggerJson) {
        OpenAPI openAPI = new OpenAPIV3Parser().parse(swaggerJson);
        // 转换为ApiEndpoint实体
    }
}

7.3 用例执行引擎

public class HttpExecutor {
    public HttpResponse execute(RequestConfig config, Environment env) {
        // 1. 替换环境变量
        // 2. 执行前置脚本
        // 3. 发送HTTP请求
        // 4. 执行后置脚本
        // 5. 执行断言
    }
}

7.4 多模型策略模式

public interface AIProvider {
    String chat(String prompt);
}
@Component
@ConditionalOnProperty(name = "ai.provider", havingValue = "openai")
public class OpenAIProvider implements AIProvider { ... }
@Component
@ConditionalOnProperty(name = "ai.provider", havingValue = "qwen")
public class QwenProvider implements AIProvider { ... }

设计呈现完毕。我来编写设计文档。然后就开发生成具体的设计文档,存储到docs/superpowers/specs中。

3,具体实施计划

计划包含20个任务:

  • * Task 1-3: 后端父项目与Common模块
  • * Task 4-6: API模块实体类与数据库脚本
  • * Task 7-11: 用户认证、项目管理服务与控制器
  • * Task 12-13: Schedule和AI模块初始化
  • * Task 14-20: 前端项目初始化、路由、布局、主题、API模块

是否需要我继续创建 Phase 2-5 的实现计划?

按龙虾输出与其进行交互,具体流程就不在此展示了,经过漫长的交互过程,SuperPower会按计划生成对应的代码文档,最后输出:

codeflicker ✅ 项目完成总结

项目结构​​​​​​​

api-test-platform/          # 后端
├── api-platform-common/    # 公共模块
├── api-platform-api/       # 核心业务模块
├── api-platform-schedule/  # 定时任务模块
└── api-platform-ai/        # AI模块
api-test-platform-web/      # 前端 (Vue3 + TypeScript)
├── src/views/              # 页面组件
├── src/api/                # API接口
├── src/composables/        # 组合式函数
└── src/styles/             # 主题样式

已实现功能​​​​​​​

┌──────────┬─────────────────────┐
│ 模块     │ 功能                │
├──────────┼─────────────────────┤
│ 用户管理 │ 登录、注册、JWT认证 │
├──────────┼─────────────────────┤
│ 项目管理 │ CRUD、成员协作      │
├──────────┼─────────────────────┤
│ API管理  │ 导入、编辑、文档    │
├──────────┼─────────────────────┤
│ 测试用例 │ 手动/AI生成、断言   │
├──────────┼─────────────────────┤
│ 环境管理 │ 多环境变量          │
├──────────┼─────────────────────┤
│ 执行引擎 │ HTTP请求、断言验证  │
├──────────┼─────────────────────┤
│ 定时任务 │ 调度、执行          │
├──────────┼─────────────────────┤
│ 测试报告 │ 生成、查看          │
├──────────┼─────────────────────┤
│ AI集成   │ OpenAI/Qwen多模型   │
└──────────┴─────────────────────┘

启动方式

​​​​​​​# 后端
cd api-test-platform && mvn spring-boot:run -pl api-platform-api
# 前端
cd api-test-platform-web && npm install && npm run dev

最后会生成如下结构的接口自动化平台:

0

  • 本地安装或是选择一个mysql数据库,创建api-test-platform/api-platform-aip/src/main/resources/schema.sql中的数据库和表,同时导入data.sql中的数据。

  • 按SuperPower输出的方式启动前端和后端服务,即可进入平台。

  • SuperPower生成平台的所有交互,以及生成的文件,可以去下面的仓库中下载:https://github.com/songxianfeng/SuperPowersTest

三,SuperPower使用思考

    从最近使用这个工具生成了几个简单的平台,并验证了生成的效果,结合我多年开发测试平台的经验,得出如下几点反思吧,与大家交流一下。

1,大模型发展势头对测试冲击很大

    最近大模型发展确实很猛,各种大模型,Agent, MCP, 龙虾,Skills,感觉学都学不过来,有很强大的无力感。业界也有很多人在积极探索大模型在测试行业的使用,如大模型生成手工用例,生成接口自动化用例,生成UI自动化用例,代码分析,bug分析,安全探索等等。如今把常规的测试流程生成Skills, 就可以保证在测试过程中不会遗漏任何环节。使用SuperPower花一两个小时,就可以开发一个测试平台,真是非常牛X,不服不行。

2,自身实力非常重要,大模型替代不了

     大模型虽然非常牛X ,但是我们也不用过于担心,自身积累的各种经验还是非常重要的。比如说,对业务的理解,项目流程中的各种工具使用,风险预警等等。当产品提出一个新需求时,如果他不讲解,相关的开发和测试根本无法理解的情况下,我们可以根据以入的经验快速评估其中的风险。这个大模型做不到,他可以做设计好的流程化的东西,暂时还无法做到经验的应用。

      虽然使用SuperPower生成测试平台非常快,但是你如果没有开发测试平台的经验。从提出需求,到头脑风暴讨论,再到设计方案评估等,都无法提出自己有效的建议。同时,SuperPower开发出的测试平台,从常规角度帮你实现了部分功能,但是代码中也存在不少Bug, 需要你根据具体使用场景进行优化和修改。如果你完全没有开发经验,也很难应付接下来的工作。

3,大模型助力提效工作

     在当前形势下,要保持传统工作方式,保持工匠精神也大可不必,不如结合自己的经验,借助于大模型让自己的工作如虎添翼。比如说,在接到一个需求的情况下,需要先分析需求文档,编写测试用例,提测试后再部署环境,创建测试数据进行测试。就可以把工作流程写成Skills,通过把需求给龙虾,让它帮你实现一些很简单而繁琐的工作。同时测试完成后,也可以通过编写项目总结 的skill来实现对项目流程的汇总分析工作。

    像早期提效工作,可以通过大模型相关工具,分析代码调用链路,评估影响的接口,页面,从而生成相应的接口自动化和UI自动化用例,在提测的时候自动执行。借助于覆盖率相关工具,评估测试效果,分析可能存在的问题,给出测试建议,或是自动补充相应的测试用例。

4,全面评估不可急躁

     大模型冲击比较大,容易让人造成无所是从的情况。要么不知道如何使用,要么就感觉到大模型可以做任何事情。在没有考虑好如何在日常工作中使用大模型的情况下,什么都想用大模型来处理,这个也是不行的。为了使用大模型而使用,创建了一堆Agent, 生成海量的skills。总想让大模型帮你做很多工作,最后发现什么也做不了,或是根据达不到想要的效果。

不妨从一两个痛点切入,无论用任何工具或是方案,只要完美解决了问题,实现的提效。再向其他方面进行扩张,慢慢在形成一片,最生形成体系,最后才能达到想要的效果。

Logo

一站式 AI 云服务平台

更多推荐