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

安装和配置可以参考: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
最后会生成如下结构的接口自动化平台:

-
本地安装或是选择一个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。总想让大模型帮你做很多工作,最后发现什么也做不了,或是根据达不到想要的效果。
不妨从一两个痛点切入,无论用任何工具或是方案,只要完美解决了问题,实现的提效。再向其他方面进行扩张,慢慢在形成一片,最生形成体系,最后才能达到想要的效果。
更多推荐



所有评论(0)