代码化测试用例管理指导书
版次:2022 年 8 月 31 日 第 2 版 类型:技术文件 部门:软件部 上层文件: 软件测试规范 上海维宏电子科技股份有限公司 版权所有
| 文件版本 | 修改前文件版本 | 主要修订内容和原因 | 修订人 | 修订日期 |
|---|---|---|---|---|
| R1 | 余晓霞 | 2021/12/27 | ||
| R2 | R1 | 1、更新共享用例规范; 2、修改部分用词; 3、测试工具章节合并到编写测试用例 |
余晓霞 | 2022/8/31 |
1 目的和范围
在基于代码化测试用例管理的背景下,本指导书用于指导软件测试人员如何在基于 Robot Framework 框架下编写手工测试用例。
背景:公司软件产品的特性是相对长期稳定、可重复使用和多版本共存,因此测试用例和源码一样也属于公司宝贵的资产。随着业务的发展,软件版本越来越多,为了适应软件多版本,及时响应业务需求,简化测试用例的管理,提出了使用代码方式管理测试用例的思想,让测试用例和代码一样使用版本管理。此思想的提出也有利于强化手工测试人员对自动化测试的认知和使用,进而提升手工测试人员的编程素质,和强化测试人员对软件版本管理的认知。
2 代码化测试用例管理过程
代码化测试用例管理过程主要包含如下活动,如下活动无先后依赖关系,均可独立进行:
- 克隆\拉取最新代码用例
- 编写测试用例
- 用例评审
- 创建测试计划
- 执行测试
- 测试用例归档
2.1 克隆\拉取最新代码用例
把 Git 仓库的代码克隆到本地,若已克隆到本地,则在每次进行用例编写或创建测试计划前,拉取最新的代码用例。
代码用例的 Git 仓库地址找部门测试组长获取。
Git 操作指导可查看 wiki (内网) Git 指南
2.2 编写测试用例
代码化测试用例是基于 Robot Framework 进行开发的,因此其基础语法和 Robot Framework 保持一致。Robot Framework 基础语法可参考:Robot Framework用户手册-基础语法(外网) 。测试用例的组织需要使用预定义的关键字:do(测试步骤)、assert(预期结果)、prepare (前置条件)、data(测试数据)、call(调用共享用例)。执行测试用例集合的创建需要借助代码化测试用例管理工具,把需要导出的测试用例导出到 Excel 文件,作为测试执行记录。
测试用例开发工具不做限制,大家可使用适合自身的工具,例如:PyCharm、IntelliJ IDEA、VS Code 等。有些工具及其插件可在内网 wiki 工具集里获取。开发环境的选择建议尽量满足如下要求:
- 支持运行 Python;
- 支持 Robot Framework 语法校验;
2.2.1 测试套件规范
测试套件是一组测试用例的无序集合,一般来说,这组测试用例是相关的,放在一起便于管理,也称为测试用例集,是对测试用例进行组织和分组的实例。测试用例存储的载体为 .robot 的后缀的文件,这些文件又可以组织在文件夹中,这些文件夹就是更高层次的测试用例集。文件夹类型的测试套件不直接包含用例, 仅包含用例文件集。整个这些文件和文件夹组成了测试套件的层次结构,如下所示:
test/
├── testcase # 测试用例集
│ ├── HPCS # 功能测试用例集
│ │ └── Test_HPCS.robot # 测试套件文件
│ │ ├── TC001_参数生效表现验证_开启高光精度轮廓光顺功能 # 测试用例
│ │ ├── TC002_参数生效表现验证_HPCS等级
│ │ └── TC003_参数组合场景
│ │ └── Test_HPCS_效果对比图FSS.robot
│ │ ├── TC001_参数63100开启高精度轮廓光顺是否有效
│ │ ├── TC002_HPCS等级设置是否有效
│ ├── 机械回原点
│ │ └── Test_机械回原点.robot
│ │ ├── TC001_参数设置基本操作及生效性验证_正向
│ │ ├── TC002_参数设置基本操作及生效性验证_反向
│ │ └── TC003_Z轴回机械原点流程正确
│ ├── 共享用例 # 共享测试用例集
│ │ ├── 参数.robot # 参数共享用例套件
│ │ │ └── 检查参数名称 # 共享用例
│ │ │ ├── 检查参数默认值
│ │ │ ├── 检查参数单位
│ │ │ ├── 检查参数描述
│ │ │ ├── 检查参数设置权限(同时验证制作商可以使用操作员权限)_正向
│ │ │ ├── 检查参数设置权限为制造商时,在参数列表操作员无权查看参数_反向
├── tool # 测试工具集
测试用例集的目录层次结构,应该和软件功能规格说明书的目录结构保存一致,必须保证可以根据用例集名称和测试套件名称知道与其对应的功能规格说明书。
文件的命名必须以“Test_功能名” 开头,命名格式:Test_功能名_*(*代表:序号 、接口名 、子功能名等),其中"*"为可选项,也可留空,根据实际情况决定。
2.2.2 测试用例规范
测试用例是测试执行集合的最小单元,必须遵循上层文件《软件测试规范》。如下范例所示:
*** Test Cases ***
TC001_参数生效表现验证_开启高精度轮廓光顺功能 #用例标题
[Tags] P1 Auto 测试类型=功能 机型=10轴链式刀库、10轴圆盘刀库 #标签
prepare 全部Z轴有效 未回机械原点 速度参数和其它HPCS参数均为默认值 #前置条件
do 参数“开启高精度轮廓光顺功能”设置为是 #测试步骤
do 载入刀路文件(刀路文件中的路径角度必须包含有大于、小于和等于控制角度的角度)
do 查看轨迹视图的轨迹变化
assert 当刀路中路径角度大于控制角度时则进行光顺处理 #预期结果
assert 当刀路中路径角度等于控制角度时则不进行光顺处理
assert 当刀路中路径角度小于控制角度时则不进行光顺处理
示例说明:
- “*** Test Cases ***” 表示此模块属于用例模块
- 用例标题:TC001 _参数生效表现验证_开启高精度轮廓光顺功能。用例标题独占一行,顶格录入,禁止有缩进。
- [Tags] 是 Robot Framework 的标签模块。P1:表示优先级;Auto:表示已实现自动化;“测试类型=功能” 表示测试类型为功能的标签;“机型=10轴链式刀库、10轴圆盘刀库” 表示机型的标签,此用例适用10轴链式刀库、10轴圆盘刀库机型。另外,若所有用例存在相同的标签时,可把相同的标签抽取出来,放在 Robot Framework Settings 模块的 “FORCE TAGS” 标签了。
- prepare 标识此行为前置条件。多个前置条件以两个或两个以上的空格分隔,一个用例仅有一个 prepare。
- do 标识此为测试步骤。一个 do 代表一个测试步骤,测试步骤描述和“do”之间至少间隔两个或两个以上的空格。
- assert 标识此为预期结果。一个 assert 代表一个预期结果,预期结果描述和“ assert ”之间至少间隔两个或两个以上的空格。
2.2.3 测试数据规范
测试数据维护方式如下:
文件方式维护:
- 测试数据文件存放在用例的data目录下。大文件应该存放在指定的文件服务器。
- 当数据属于文件类型时,若存放在文件服务器,则测试数据填写绝对路径。若存放在用例的data目录,则测试数据填写相对路径或文件名。
表格方式维护:
通常当测试步骤相同,仅输入和输出的数据不同时,可以使用表格的方式维护测试用例。只有如下范例:
*** Test Cases *** TC004_检查不同类型的大文件的加工软件表现 #用例标题 [Documentation] 主要用于HPCS 对大文件加工的性能测试 #用例描述信息 [Tags] P3 测试类型=性能 #标签 [Template] 测试模板_检查大文件加工软件表现 #引用测试模板“测试模板_检查大文件加工软件表现的场景” #加工文件 预计加工完成时间 0.2.nc 500min #测试数据表 prc.g 200min
*** Keywords *** 测试模板_检查大文件加工软件表现 #测试模板:描述了测试用例的步骤和预期结果 [Arguments] ${加工文件} ${预计加工完成时间} #模板传参 do 设置开启高精度轮廓光顺的值为:是 do 设置HPCS保持角度的值为:默认值 do 设置HPCS控制误差的值为:默认值 do 设置HPCS区域半径的值为:默认值 do 设置HPCS细分长度的值为:默认值 do 设置HPCS等级的值为:3 do 载入刀路文件 ${加工文件} do 执行模拟加工 assert 等待${预计加工完成时间}直到加工结束 do 记录轨迹视图的轨迹图 assert 检查记录轨迹视图的轨迹图正确
> 示例说明:
>
> 1、范例使用了 Robot Framework 数据驱动测试的用例编写方式。
>
> 2、[Template] 引入模板,“测试模板_检查大文件加工软件表现的场景” 为测试模板名称。测试模板也可定义在共享用例里。
>
> 3、测试模板为自定义的关键字,定义在RF的关键字模块里(文件的“*\*\* Keywords ***”分隔下的模块属于Robot Framework 的关键字模块 )。
>
> 4、“#加工文件 预计加工完成时间 ” 为数据表的表头列。
>
> 5、使用命令行导出工具导出 excel 后,定义在模板的前置条件、步骤和预期结果会被导出,测试数据以一张新的 sheet 表格来存储。
3. **文本格式维护**:
在测试用例内容里,使用“ data ” 字段标识测试数据,如下范例:
```python
*** Test Cases ***
TC001_软限位功能检测有效性:加工刀路执行触发软限位
[Tags] P1 测试类型=功能
prepare 设置各个轴的行程范围:X(0 400)
... 设置X、Y、Z轴工件偏置为50 50 -20
... 已回机械原点
... 检查工作台行程范围是否有效:是
do 载入 @G代码 执行开始加工操作,查看软件表现。
data @G代码: #测试数据
... G00 X10 Z-5
... G01 X30
... X50
... X500
assert 当X轴机械坐标到达400后继续往正向运动时,状态为锁定,界面显示的值为400,软限位X,弹出黄色提示信息“软限位,X轴超过工作台行程范围”
assert 靠近限位边界5mm左右时有一个减速的过程,是为了防止机床抖动;
assert 提示信息显示约3S后自动消失;
do 限位后通过 @方式 控制轴往非限位方向运动
data 加工(范围在行程范围内) 手动 手轮 #测试数据
assert 控制的轴可以往非限位方向运动
范例说明: 1、data 标识此为测试测试数据。测试数据和“ data ”之间至少间隔两个或两个以上的空格。 2、多个测试数据需要分行编辑时,换行后使用“... ” ,如下所示,注意:当在 robotframework-ride 环境开发用例时,“... ” 会被自动转换成两个空格代替。 data 文件A: ... G00 X10 Z-5 ... G01 X30 ... X50 ... X500 3、多个测试数据不需要分行编辑时,可使用一个空格、逗号或分号进行分割,如:data 加工(范围在行程范围内)手动 手轮
2.2.4 共享用例规范
1、共享用例管理
- 共享步骤放在“ testcase/共享用例”目录下的文件。
- 测试用例主体的组织方式和测试用例一样。
示例:
*** setting ***
[Documentation] 文件名:参数.robot
*** Keywords *** #关键字模块
检查参数名称 #共享步骤名称
[Arguments] ${参数名称}
do 检查参数名称 ${参数名称} #测试步骤
asser 参数名称等于${参数名称} #预期结果
检查参数默认值
[Arguments] ${参数默认值}
do 检查参数默认值 ${参数默认值}
asser 参数默认值等于${参数默认值}
2、共享用例使用
共享用例的使用方式有两种种,分布为:一是使用关键字“ call ” 调用共享用例组成新的测试用例,此种方式的用例体有且只能使用“ call ”关键字,不可使用其它(例如:do,assert 等);二是使用模板的方式。
- 使用关键字“ call ” 调用共享用例组成新的测试用例。如下示例:
*** Test Cases ***
TC001_检查参数显示:加工后行为
call 检查参数名称 加工后行为 #关联共享步骤“检查参数名称”,“${参数名称}”为传参
call 检查参数默认值 回固定点
使用模板的方式
使用模板的方式分为两种,如下所示:
(1)使用共享用例名称作为模板
*** Test Cases ***
TC001_检查参数名称
[Template] 检查参数名称
#参数名称 默认值
加工后行为 回固定点
加工前是否机械回原点 是
是否启动主轴 是
(2)使用共享用例的文件名称作为模板。注意事项:引用的模板必须是文件名全称,例如:参数.robot;数据的第一行,必须是表头(或参数)的名称,且不需要使用注释井号 # 。
*** Test Cases ***
TC001_检查参数名称
[Template] 参数.robot
参数名称 默认值
加工后行为 回固定点
加工前是否机械回原点 是
是否启动主轴 是
2.3 测试用例评审
用例评审的方式主要分为两种,正式评审和非正式评审,正式评审可采用会议的形式进行,非正式评审可以找相关人员和有经验的人员进行。
编写测试用例完成之后,可像代码提交评审一样提交评审,相关人员审核通过之后,再合并到主分支。
2.4 创建测试计划
测试用例是存放在统一的仓库(Git)里,当需要执行指定的测试用例时,需要把这些指定的测试用例筛选出来,组成一个测试计划,方便测试执行记录。创建测试计划的工具和指导手册,可在内网 wiki 获取。工具获取和使用过程中有任何问题,请咨询软件部测试。
2.5 执行测试
测试执行方式分为手工执行和自动化执行,这里暂不涉及到自动化执行。手工执行的方式:在创建测试计划导出的 Excel 表格里做测试执行记录。测试结束之后,按部门要求把测试执行记录归档到指定的服务器。
2.6 测试用例归档
- 用例设计结束之后,把测试用例上传至相应的 Git 仓库;
- 测试结束之后,把更新后的测试用例上传至相应的 Git 仓库。
3 快速入门操作指南
3.1 从Git 分支上拉取最新的测试用例
测试用例管理的 demo 项目地址为:http://tfs.weihong.com:8080/tfs/SPI/_git/Demo_Project?path=%2F
3.2 创建测试套件
按测试套件规范创建文件夹或文件。例如新增一个断点继续功能,则新增一个名为 Test_加工_断点继续.robot 的文件。如下所示:
test
├── testcase
│ ├── 加工 # 功能套件文件夹
│ │ └── Test_加工_断点继续.robot # 测试套件文件
3.3 创建测试用例
1、打开用例文件添加用例模块标识,如下所示。在有些 IDE 工具(例如:RobotFramework-ride、Pycharm 等)里新增 robot 文件,会自动添加此标识,不需要手工添加。
*** Test Cases ***
2、在“*** Test Cases ***” 标识的模块下开始添加用例,如下所示。
*** Test Cases ***
TC001_检查断点继续功能基本流 #用例标题
[Tags] P1 测试类型=功能 #标签
prepare 不启用断点继续穿孔 #前置条件
do 导入加工文件 test02.ncex #测试步骤
do 启动加工 #测试步骤
do 等待激光开
do 停止加工
do 等待系统状态为空闲
do 在控制栏操作断点继续
assert 系统状态为运行 #预期结果
assert 绿灯亮
assert 加工开始位置为断点位置
TC002_检查暂停状态不可执行断点继续功能 #用例标题
[Tags] P2 测试类型=功能 #标签
prepare 系统状态为暂停状态
do 在控制栏操作断点继续
assert 系统状态为暂停
assert 提示语:当前状态不可执行断点继续
3、把新增或完善后的用例保存,并提交推送到 Git。
http://wiki.weihong.com/pages/editpage.action?pageId=27728089)
编制: 余晓霞 审核: 批准:
审批链接: