提交 7b6aaccd authored 作者: 陈泽健's avatar 陈泽健

docs(prd): 添加自动化测试用例生成需求文档

- 定义了自动化测试用例生成功能的需求背景与目标
- 规定了 system_config.json 和 module_config.json 的配置文件格式
- 设计了自动化测试用例 JSON 数据模板结构和参数说明
- 制定了元素定位策略和操作类型规范
- 明确了 element_value 和 expected_result 的填写规则
- 建立了模块导航和功能操作流程规范
- 提供了完整的测试数据规范和固定测试值标准
上级 eaa16b43
# 需求文档
## 需求背景与目标
### 1.1 背景
当前自动化测试用例仍是手动编写,效率较低,且无法批量生成,且无法自动生成JSON数据模板,无法自动生成测试用例。需要实现自动化测试用例生成。
### 1.2 目标
通过claude code+mcp,根据system_config.json获取系统登录地址、账号密码。根据提供的module_config.json自动访问系统的对应模块进行操作,收集操作步骤的元素定位类型以及元素定位值,并通过自动化测试用例JSON数据模板输出自动化测试用例。实现快速自动补充JSON数据
## 2. 功能需求
1. 根据同目录下的config.json文件,获取系统登录地址、账号密码。
- system_config.json文件格式示例:
```json
[
{
"system_type": "new_platform",
"system_front_url": "https://192.168.5.44",
"system_back_url": "https://192.168.5.44/#/LoginAdmin",
"username": "admin@xty",
"password": "Ubains@4321",
"code": "csba"
},
{
"system_type": "new_platform",
"system_front_url": "https://192.168.5.44",
"system_back_url": "https://192.168.5.44/#/LoginAdmin",
"username": "admin@xty",
"password": "Ubains@4321",
"code": "csba"
}
]
```
2. 根据同目录下的module_config.json文件,获取需要收集的自动化模块名称、模块功能。
- module_config.json文件格式示例:
```json
[
{
"module_name": "区域管理",
"module_name_son": "增值服务",
"module_function": ["添加","编辑","删除"]
},
{
"module_name": "区域管理",
"module_name_son": "增值服务",
"module_function": ["添加","编辑","删除"]
}
]
```
3. 通过claude code+mcp,自动访问系统进行模块操作,并通过自动化测试用例JSON数据模板输出自动化测试用例。
- 自动化测试用例JSON数据模板格式示例:
```json
{
"name": "{module_name}_{module_name_son}_{model_function}",
"para": [
{
"page": "login/logindf",
"step": "点击左侧【用户管理】",
"locator_type": "XPATH",
"locator_value": "//span[contains(.,'用户管理')]",
"element_type": "click",
"element_value": "",
"expected_result": ""
},
{
"page": "login/logindf",
"step": "点击【用户列表】按钮",
"locator_type": "XPATH",
"locator_value": "//li[contains(.,'用户列表')]",
"element_type": "click",
"element_value": "",
"expected_result": ""
},
{
"page": "login/logindf",
"step": "点击【新增】按钮",
"locator_type": "XPATH",
"locator_value": "//button[contains(.,'添加')]",
"element_type": "click",
"element_value": "",
"expected_result": ""
},
{
"page": "login/logindf",
"step": "输入账号",
"locator_type": "XPATH",
"locator_value": "//input[@id='accountChange']",
"element_type": "input",
"element_value": "admin@zdh",
"expected_result": ""
},
{
"page": "login/logindf",
"step": "输入用户名",
"locator_type": "XPATH",
"locator_value": "//input[@placeholder='用户名']",
"element_type": "input",
"element_value": "admin@zdh",
"expected_result": ""
},
{
"page": "login/logindf",
"step": "输入新密码",
"locator_type": "XPATH",
"locator_value": "//input[@placeholder='11位及以上的大小写字母和数字且连续3位及以上不重复和不连续组合']",
"element_type": "input",
"element_value": "Ubains@1357",
"expected_result": ""
},
{
"page": "login/logindf",
"step": "输入确认密码",
"locator_type": "XPATH",
"locator_value": "//input[@placeholder='确认密码']",
"element_type": "input",
"element_value": "Ubains@1357",
"expected_result": ""
},
{
"page": "login/logindf",
"step": "点击【确定】按钮",
"locator_type": "XPATH",
"locator_value": "//button[contains(.,'确定')]",
"element_type": "click",
"element_value": "",
"expected_result": ""
},
{
"page": "login/logindf",
"step": "获取提示文本",
"locator_type": "XPATH",
"locator_value": "//p[@class='el-message__content']",
"element_type": "getTips",
"element_value": "",
"expected_result": "添加成功"
},
{
"page": "login/logindf",
"step": "验证列表数据",
"locator_type": "XPATH",
"locator_value": "//td[contains(.,'admin@zdh')]",
"element_type": "getText",
"element_value": "",
"expected_result": "列表中包含新添加的用户"
}
],
"platform": "web",
"base_url": "https://192.168.5.44/"
}
```
- 参数说明:
- name: 测试用例名称,命名格式为:{module_name}_{module_name_son}_{model_function},例如:区域管理_增值服务_添加。
- para: 测试步骤列表,每个步骤包含以下字段:
- page: page字段为当前模块功能操作的页面路由后缀。
- step: 操作步骤描述,例如:点击左侧【用户管理】。
- locator_type: 元素定位类型,例如:ID、XPATH、CSS_SELECTOR等。优先获取ID、XPATH,**不允许用UID**。
- locator_value: 元素定位值,例如://button[contains(.,'确定')],需要与locator_type一致。
- **注意**:XPATH中使用 `contains(.,'文本')` 而非 `contains(text(),'文本')`,以正确匹配Element UI等框架中span子元素内的文本。
- element_type: 操作类型,例如:click、input、select、checkbox、switch、getTips、getText。
- element_value: 操作值,**根据element_type不同有不同填写规则**:
- `input`:填写需输入的文本内容(如"test001"
- `getTips`:**留空**,预期结果填写在expected_result字段
- `getText`:**留空**,预期结果填写在expected_result字段
- `click`、`select`、`checkbox`、`switch`:**留空**
- expected_result: 预期结果描述,根据操作类型填写,如"添加成功""列表中包含新添加的数据"等。
4. 输出的自动化测试用例文件命名格式为:{module_name}_{module_name_son}_{model_function}.json,例如:区域管理_增值服务_添加.json。
- 模板参考:[自动化测试用例模板](新统一平台/测试数据/新统一平台测试用例 - 副本.xlsx)
- 输出位置:config文件同目录下的 `testcases/` 子目录
## 3. 需求补充说明
### 3.1 配置文件格式规范
#### 3.1.1 system_config.json格式
采用标准JSON格式,包含以下字段:
- `system_type`: 系统类型标识
- `system_front_url`: 系统前台地址
- `system_back_url`: 系统后台地址
- `username`: 登录账号
- `password`: 登录密码
- `code`: 验证码(固定值:csba)
**注意**:登录时需用户输入选择使用前台或后台URL。
#### 3.1.2 module_config.json格式
- `module_name`: 一级菜单名称
- `module_name_son`: 二级菜单名称
- `module_function`: 功能列表,支持"添加""编辑""删除"
### 3.2 执行流程规范
#### 3.2.1 模块导航方式
采用**两级菜单导航**:
1. 先点击一级菜单(`module_name`)
2. 再点击二级菜单(`module_name_son`)
#### 3.2.2 功能操作策略
- **添加操作**:填写通用固定测试值
- **编辑操作**:先自动创建测试数据 执行编辑 清理测试数据
- **删除操作**:先自动创建测试数据 执行删除 清理测试数据
#### 3.2.3 元素定位策略
采用**智能检测**方式,按以下优先级选择定位方式:
1. **优先级1**:id属性(唯一标识)
2. **优先级2**:name属性
3. **优先级3**:class属性
4. **备选方案**:XPATH表达式
#### 3.2.4 Page字段获取
通过**URL解析**获取当前功能所在页面的路由后缀。
#### 3.2.5 预期结果生成
根据操作类型**自动生成**预期结果提示文本,例如:
- 添加操作 "添加成功"
- 编辑操作 "编辑成功"
- 删除操作 "删除成功"
### 3.3 支持的元素类型(element_type)
#### 3.3.1 基础类型
- **click**:点击按钮、链接等可点击元素
- **input**:文本输入框(input type=text)
- **select**:下拉选择框(select)
#### 3.3.2 选择类型
- **checkbox**:复选框(checkbox)和单选框(radio)
- **switch**:开关控件(如Element UI的switch)
#### 3.3.3 验证类型
- **getTips**:获取弹窗提示信息(如Element UI的el-message组件中的"添加成功""删除成功"等提示)
- **getText**:获取列表中的文本数据(如表格td元素中的文本,用于验证数据是否存在于列表中)
### 3.4 element_value expected_result 填写规范
#### 3.4.1 element_value 填写规则
| element_type | element_value 填写内容 | 示例 |
|-------------|----------------------|------|
| `input` | 需输入的文本内容 | `"test001"` |
| `getTips` | **留空** | `""` |
| `getText` | **留空** | `""` |
| `click` | **留空** | `""` |
| `select` | **留空** | `""` |
| `checkbox` | **留空** | `""` |
| `switch` | **留空** | `""` |
#### 3.4.2 expected_result 填写规则
| element_type | expected_result 填写内容 | 示例 |
|-------------|-------------------------|------|
| `input` | 通常留空(非验证步骤) | `""` |
| `click` | 通常留空(非验证步骤) | `""` |
| `select` | 通常留空(非验证步骤) | `""` |
| `getTips` | 预期的弹窗提示文本 | `"添加成功"` |
| `getText` | 预期的验证描述 | `"列表中包含新添加的商品"` |
#### 3.4.3 完整示例对比
**错误的写法**(element_value填写了验证相关内容):
```json
{
"element_type": "getTips",
"element_value": "添加成功", // ❌ 错误
"expected_result": ""
}
```
**正确的写法**(验证内容填写在expected_result):
```json
{
"element_type": "getTips",
"element_value": "", // ✅ 正确:留空
"expected_result": "添加成功" // ✅ 正确:填写预期结果
}
```
### 3.5 测试数据规范
#### 3.4.1 固定测试值
使用**通用测试值**,例如:
- 用户名:test001
- 手机号:13800138000
- 密码:Test@123456
- 邮箱:test001@example.com
### 规范文档
- 代码规范: `Docs/PRD/01规范文档/_PRD_规范文档_代码规范.md`
- 问题总结: `Docs/PRD/01规范文档/_PRD_问题总结_记录文档.md`
- 方法总结: `Docs/PRD/01规范文档/_PRD_方法总结_记录文档.md`
- 文档规范: `Docs/PRD/01规范文档/_PRD_规范文档_文档规范.md`
- 测试规范: `Docs/PRD/01规范文档/_PRD_规范文档_测试规范.md`
---
*文档结束*
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论