测试用例的编写
概述
编写测试用例文档应有文档模板,须符合内部的规范要求。这方面可以参考一些基本的测试用例编制标准。例如《GB/T 8567计算机软件文档编制规范》、《IEEE 829软件的测试文件编制标准》(IEEE Standard for Software and System Test Documentation)和《GB/T 15532计算机软件测试规范》(Specification of computer software testing)等,也可以是企业或项目组自行制定的文档规范。
设计的测试用例最终是需要保存为文档形式,存储形式可以是Word文字文档,也可以是Excel的表格类文档,也可以保存为数据库。
测试用例要素(依据GB/T 15532)
1. 名称和标识
每个测试用例应有唯一的名称和标识符。
- 唯一的标识符:用以区别其他测试用例。测试用例的编号有一定的规则,比如某商城系统的查询模块的系统测试用例的编号可以这样定义规则:SCXT-CXMK-ST-001,命名规则是项目名称+子项目+测试阶段类型(系统测试阶段)+编号。定义测试用例编号,便于查找测试用例,也便于测试用例的跟踪。
- 测试名称(测试标题):是对测试用例的描述,测试用例标题应该清楚表达测试用例的用途。比如”测试登陆时的密码错误的系统出错提示”。
2. 测试追踪
说明测试所依据的内容来源,如系统测试依据的是用户需求,确认测试(配置项测试)是依据软件需求,集成测试和单元测试依据的是软件设计。
3. 用例说明
简要描述测试对象(测试项目或子项目)和特性、测试目的和所采用的测试方法。
4. 测试环境
描述执行测试用例所需要的具体测试环境,包括硬件环境和软件环境。通常,在整个测试模块中需要对应说明整个测试的特殊环境要求,在单个测试用例的测试环境需要表述该测试用例所单独需要的特殊环境要求。
5. 测试的前置条件
该项测试执行前的前提条件,测试配置情况(如用于测试的模拟系统和测试工具等配置情况)、参数设置情况(测试开始前的设置,如标志、断点、指针、控制参数和初始化数据等)等。
例如,进行某项删除操作,前置条件是:管理员身份登陆,并确认将被删除的选项已经预先存入系统中。
6. 输入数据
规定执行本测试用例所需的各个输入,用来执行测试用例的输入要求。输入数据可以包含以下内容:
- 输入可能是数据、文件或具体操作(例如单击鼠标,在键盘做按键处理等),有时候相关的数据库或文件也要作具体说明。通常,根据需求中的输入条件,确定测试用例的输入。
- 测试输入的来源(例如,测试工具产生、外设输入和人工输入等),以及选择输入所使用的方法(例如,等价类、边界值、错误推测、因果图、决策表等方法)
- 测试输入是真实的还是模拟的(如压力测试中会采用模拟用户作为输入)
- 说明各个测试输入间的时间顺序或事件顺序等。
7. 操作过程(执行步骤)
执行本测试用例所需的每一步操作。对于复杂的测试用例,测试用例的输入需要分为几个步骤完成,这部分内容要在操作步骤中详细列出。对于每个操作应提供:
- 每一步所需要的执行动作、输入和设备操作等
- 每一步期望的测试结果
- 每一步的评价准则
- 程序终止应有的结果或差错指示
- 获取和分析实际测试结果的过程
8. 期望结果
说明测试用例执行中由被测软件所产生期望的测试结果。必要时,应提供中间的期望结果。期望测试结果应该有具体内容,如确定数值、状态或信号等,不应是不确切的概念或笼统的描述。
一般来说,预期结果主要根据软件需求中的输出得出。如果在实际测试过程中,得到的实际测试结果与预期结果不符,那么测试不通过;反之则测试通过。
9. 用例级别
定义测试用例的优先级别,可以粗略地分为”高”和”低”两个级别,也可以分为”高”、“中”、“低”三个级别。
一般来说,软件需求的优先级和测试用例的优先级一致。即如果软件需求的优先级为”高”,那么针对该需求的测试用例的优先级也相应为”高”;反之亦然。
10. 评价测试结果的准则
说明判断测试用例执行中产生的中间和最后结果是否正确的准则。对于每个测试结果,应根据不同情况提供包含如下信息:
- 实际测试结果所需要的精度
- 实际测试记过与期望结果之间的差异允许的上下限
- 时间的最大和最小间隔,或事件数目的最大和最小值
- 实际测试结果不确定时,再测试的条件
- 与产生测试结果有关的错误处理
11. 前提和约束
在测试用例说明中是假的所有前提条件和约束条件,如果有特别限制、参数偏差或异常处理,应该标识出来,并要说明他们对测试用例的影响。
12. 测试终止条件
说明测试正常终止和异常终止的条件。
测试用例模板
完整测试用例模板(符合GB/T 15532标准)
| 用例名称 | |
|---|---|
| 用例标识 | |
| 测试追踪 | |
| 用例说明 | |
| 用例的初始化 | 硬件配置 |
| 软件配置 | |
| 测试配置 | |
| 参数配置 | |
| 操作过程 | 序号 |
| ---------- | ------ |
| 前提和约束 | |
| 过程终止条件 | |
| 结果评价标准 | |
| 设计人员 | |
| 设计日期 |
简单功能的测试用例模板
| 标识码 | 用例名称 | ||
|---|---|---|---|
| 优先级 | 高/中/低 | 父用例 | |
| 执行时间估计 | 分钟 | ||
| 前提条件 | |||
| 基本操作步骤 | |||
| 输入/动作 | 期望的结果 | 备注 | |
| 示例:典型正常值 | … | ||
| 示例:边界值 | … | ||
| 示例:异常值 | … |
常用测试用例表
| 用例编号 | 测试模块 | ||
|---|---|---|---|
| 编制人 | 编制时间 | ||
| 开发人员 | 程序版本 | ||
| 测试人员 | 测试负责人 | ||
| 用例级别 | |||
| 测试目的 | |||
| 测试内容 | |||
| 测试环境 | |||
| 规则指定 | |||
| 执行操作 | |||
| 测试结果 | 步骤 | 预期结果 | 实测结果 |
| 1 | |||
| 2 | |||
| … | … | … | |
| 备注 |
测试用例要素说明:
- 测试项目:指明并简单描述本测试用例是用来测试哪些项目、子项目或软件特性的
- 用例编号:对该测试用例分配唯一的标识号
- 用例级别:指明该用例的重要程度。测试用例的级别分为4级:级别1(基本)、级别2(重要)、级别3(详细)、级别4(生僻)
- 备注:如需要,则填写”特殊环境需求(硬件、软件、环境)”、“特殊测试步骤要求”、“相关测试用例”等信息
测试用例表达要求
测试用例集是测试工作中沟通的重要数据渠道,因此其表达要求:
1. 保证测试用例的明确性
测试人员要尽量避免测试用例存在含糊的因素,否则会影响测试工作的进行,影响测试结果的准确性。清晰的测试用例会使测试人员在测试过程中不会出现模棱两可的测试结果。
在测试过程中,测试用例的测试结果是唯一的,即通过、没通过或未进行测试。如果测试没有通过,一般会生成相应的测试错误报告;如果测试没有进行,也会生成相应的原因说明报告,如测试用例本身具有错误性、测试用例的不适用性等等。
反面例子:
用户正确操作,系统正常运行; 用户进行非法操作,系统不能正常运行。
在这里,测试用例没有具体说明什么是正确的操作,什么是非法的操作。另外,从测试用例描述中也无法知道什么是系统的正常或不正常的运行状态。这就必然导致测试人员对测试用例的不确定理解,从而引发测试中的错误问题。
2. 保证测试用例的代表性
尽量将具有相似功能的测试用例抽象合并。这样,每一个测试用例都具有代表性,可以测试一类或一系列的系统功能。
3. 保证测试用例的简洁性
冗长和复杂的测试用例是不应该出现的,因为这样的用例可读性差、不利于测试人员理解和操作。简洁的测试用例可以让测试过程目的明确,让测试结果具有唯一性。
练习题:尝试为”用户登录功能”设计一条测试用例。