利用 Trae 生成技能(Skill)的试验
那天下午在博客园中看关于AI agent中skill的讨论,去trae官网看了下,已经tare已经支持了使用skill,更新最新版本后,在solo模式输入需要生成测试用例的需求。
帮我生成一个拥有设计软件测试的测试用例能力的skills,输入需求文档,使用语义切分的方式分隔需求,将分隔后需求提交给大模型分析,从等价类划分法、边界值法、因果图法、判定表法、场景法、正交表法和错误推测法等方法中选择合适的方式设计测试用例,输出测试用例到json文件中。
tare就自动创建好了skill,中间会提示我点击执行,进行创建文件、执行命令的操作。
在skill生成完成后测试了几个小需求,生成的json用例基本可以用,再让tare写python代码,将json格式用例写入excel中。
修改测试用例设计技能,添加python代码将json格式的测试用例写入到excel文件中,修改完成后重新生成测试用例
python代码的效果也符合预期。整个生成skill、编写python代码的耗时除去我的思考时间后不超过5分钟。
后续只需要对需求进行理解并重新整理后输入给tare solo就能直接在Excel文件里生成测试用例了,测试了几个小需求,目前存在的缺陷是只能依赖详细的需求,若需求描述不清晰、不完整,输出的用例一定会遗漏,需要加强用例评审。
下面是完整的skill描述和python代码
实战示例:创建测试用例设计技能
示例 1:JSON 格式测试用例设计技能
1. 创建技能目录
```bash
mkdir -p .trae/skills/test-case-designer-json
```
2. 编写 SKILL.md 文件
```markdown
---
name: "test-case-designer-json"
description: "设计软件测试用例。输入需求文档,使用语义切分分隔需求,分析后选择合适的测试方法(等价类、边界值、因果图等),生成测试用例并输出到JSON文件。"
---
# 测试用例设计器(JSON格式)
## 功能介绍
该技能用于自动化设计软件测试用例,基于输入的需求文档,通过语义切分、需求分析和测试方法选择,生成结构化的测试用例并输出到JSON文件。
## 使用场景
- 当用户需要为软件需求设计测试用例时
- 当用户希望使用多种测试方法(等价类划分、边界值分析等)设计测试用例时
- 当用户需要将测试用例导出为JSON格式时
## 输入输出示例
### 输入:
```
需求文档:
1. 用户登录功能
- 支持用户名和密码登录
- 用户名长度为6-20个字符
- 密码长度为8-16个字符
- 登录失败时显示错误信息
2. 商品搜索功能
- 支持关键词搜索
- 支持按价格范围搜索
- 支持按销量排序
```
### 输出:
```
测试用例已生成到 test_case/test_cases_20260226_1112.json 文件中,包含以下测试用例:
[
{
"用例ID": "TC001",
"用例描述": "添加单个高亮规则",
"操作步骤": [
"打开表格高亮配置界面",
"点击添加规则按钮",
"选择表格字段",
"输入匹配内容",
"设置背景颜色和文字颜色",
"保存配置"
],
"期望结果": "成功添加高亮规则,表格中符合条件的行/列显示高亮效果",
"测试方法": "场景法"
}
]
```
## 测试方法说明
该技能支持以下测试方法:
1. **等价类划分法**:将输入数据划分为有效等价类和无效等价类
2. **边界值法**:测试输入数据的边界值
3. **因果图法**:分析输入条件与输出结果之间的因果关系
4. **判定表法**:基于条件组合生成测试用例
5. **场景法**:基于用户场景生成测试用例
6. **正交表法**:基于正交设计生成测试用例
7. **错误推测法**:基于经验推测可能的错误情况
## 工作流程
1. **输入需求文档**:用户提供软件需求文档
2. **语义切分**:将需求文档按照语义进行切分,提取独立的功能点
3. **需求分析**:对每个功能点进行分析,识别输入、输出和约束条件
4. **测试方法选择**:根据功能特点选择合适的测试方法
5. **测试用例生成**:基于选择的测试方法生成测试用例,格式为JSON对象数组
6. **JSON文档输出**:每次生成测试用例时创建新的JSON文档,文件名包含时间戳,放入test_case文件夹中
7. **Excel文档输出(可选)**:使用json_to_excel.py脚本将JSON格式的测试用例转换为Excel文件
## 使用方法
1. 调用该技能
2. 提供需求文档内容
3. 等待技能分析和生成测试用例
4. 查看test_case文件夹中生成的测试用例文档:
- JSON格式:test_cases_<时间戳>.json
5. (可选)生成Excel格式测试用例:
- 确保已安装依赖:`pip install pandas openpyxl`
- 运行脚本:`python json_to_excel.py`
- 查看生成的Excel文件:test_cases_<时间戳>.xlsx
## 注意事项
- 需求文档应尽可能详细,包含功能描述、输入输出说明和约束条件
- 技能会自动选择最适合的测试方法,但用户可以根据需要指定特定的测试方法
- 生成的测试用例可能需要根据实际情况进行调整和补充
```
高级技巧:添加辅助脚本
为了增强技能的功能,您可以添加辅助脚本。例如,为JSON格式测试用例设计技能添加Excel转换脚本:
创建 json_to_excel.py 脚本
import json
import pandas as pd
import os
from datetime import datetime
# 读取JSON文件
def read_json_file(file_path):
with open(file_path, 'r', encoding='utf-8') as f:
return json.load(f)
# 将JSON转换为Excel
def json_to_excel(json_data, output_file):
# 准备数据
rows = []
for test_case in json_data:
# 将操作步骤列表转换为字符串
steps = '\n'.join(test_case['操作步骤'])
row = {
'用例ID': test_case['用例ID'],
'用例描述': test_case['用例描述'],
'操作步骤': steps,
'期望结果': test_case['期望结果'],
'测试方法': test_case['测试方法']
}
rows.append(row)
# 创建DataFrame
df = pd.DataFrame(rows)
# 写入Excel
with pd.ExcelWriter(output_file, engine='openpyxl') as writer:
df.to_excel(writer, index=False, sheet_name='测试用例')
# 设置列宽
worksheet = writer.sheets['测试用例']
for column in worksheet.columns:
max_length = 0
column_letter = column[0].column_letter
for cell in column:
try:
if len(str(cell.value)) > max_length:
max_length = len(str(cell.value))
except:
pass
adjusted_width = min(max_length + 2, 50)
worksheet.column_dimensions[column_letter].width = adjusted_width
if __name__ == '__main__':
# 确保test_case文件夹存在
os.makedirs('test_case', exist_ok=True)
# 读取最新的JSON文件
json_files = [f for f in os.listdir('test_case') if f.endswith('.json')]
if not json_files:
print('No JSON files found in test_case directory')
exit(1)
# 按修改时间排序,获取最新的文件
json_files.sort(key=lambda x: os.path.getmtime(os.path.join('test_case', x)), reverse=True)
latest_json = os.path.join('test_case', json_files[0])
# 读取JSON数据
test_cases = read_json_file(latest_json)
# 生成Excel文件名
timestamp = datetime.now().strftime('%Y%m%d_%H%M')
excel_file = os.path.join('test_case', f'test_cases_{timestamp}.xlsx')
# 转换为Excel
json_to_excel(test_cases, excel_file)
print(f'Excel file generated: {excel_file}')
念头
某个下午产生的想法,利用大模型去实现,对我的工作已经有些帮助了,当大模型持续进化、加强,我的工作不知道是否还存在。