一什么是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?page1size10 │ │ │ │ 断言: status200, data.length 0 │ │ │ │ │ │ │ │ ☑ 边界-分页边界测试 │ │ │ │ GET /api/users?page0size100 │ │ │ │ 断言: status200 │ │ │ │ │ │ │ │ ☑ 异常-无效参数测试 │ │ │ │ GET /api/users?page-1 │ │ │ │ 断言: status400 │ │ │ └─────────────────────────────────────────────────────┘ │ │ │ │ [取消] [保存选中用例] │ └─────────────────────────────────────────────────────────┘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 ListApiEndpoint 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。总想让大模型帮你做很多工作最后发现什么也做不了或是根据达不到想要的效果。不妨从一两个痛点切入无论用任何工具或是方案只要完美解决了问题实现的提效。再向其他方面进行扩张慢慢在形成一片最生形成体系最后才能达到想要的效果。