软件测试用例
概念:一个为了特定的目的(检验开发的代码实现是否满足用户的需求)而设计的文档(包含测试输入、执行条件、预期结果),文档的形式可以是xmind、excel等。
测试用例的核心要素
常见测试用例的包括但不限于下面核心8要素
- 用例编号:表示用例的唯一性,有时也叫用例ID
- 用例标题:表示要测试或验证的目的,通常一句话简要描述。忌讳出现有无,忌讳出现模糊不清的词语。一般使用输入内容+结果的方式呈现,见名知意。
- 测试项目:当前测试的功能所属范围
- 用例级别:表示用例测试功能的重要程度或者影响力。体现用例执行的先后顺序。测试正常功能的测试用例永远大于测试异常的
- 预置条件:验证该功能需要的前提条件
- 输入数据:必要的输入数据
- 执行步骤:验证该功能需要的先后操作步骤,必须要有序号,尽可能详细 ,保证任何人都通过执行步骤,来使用此测试用例
- 预期结果:希望得到的结果,必须明确忌讳出现有无,忌讳出现模糊不清的词语,可以验证测试用例是否通过。分析需求文档,来确定预期结果
测试用例模板
示例
软件测试用例的作用
- 便于理清测试思路,确保需覆盖测试的功能点无遗漏
- 便于测试工作量的评估
- 便于提前准备测试数据
- 便于把控测试工作进度
- 便于回归测试
- 便于测试工作的组织,提高测试效率,降低测试交接成本
设计测试用例的常见方法,如下所示:
等价类划分法
适用场景
- 针对需要数据量大,有测试数据输入的地方。典型代表:页面级的输入框类测试
等价类分类:
- 有效等价类:满足需求的数据子集
- 无效等价类:不满足需求的数据子集
等价类划分法设计用例步骤
- 明确需求
- 确定有效和无效等价类
- 提取数据编写测试用例
如何确定有效和无效的等价类
- 有效等价类:满足需求的数据就是有效等价类
- 无效等价类:我们可以从规则(需求本身)丶长度丶类型丶是否为空(必填项)丶是否重复.. 等方面去违反,来设计无效等价类。注意:我们一条测试用例最多只能有一个不满足需求的条件,方便我们确定bug的所在。
案例:
新浪邮箱登录,要求输入(邮箱名)@sina.cn和(密码)。邮箱名为:4-16位字符,支持英文、数字、下划线(不能全是数字或者下划线)。密码:6-18位字符
分析过程
设计测试用例:
下面是部分测试用例
ID | 模块 | 优先级 | 标题 | 前置条件 | 测试数据 | 执行步骤 | 预期结果 |
register_001 | mailbox | p1 | 邮箱正确(4-16位英文)和密码正确(6-18位字符)时,登录成功 | 网络正常 | 账号:abcd 密码:abcdef | 1:打开邮箱 2:输入正确账号和密码 | 邮箱登录成功 |
用例标题:表示要测试或验证的目的,通常一句话简要描述,其他标题如下所示
边界值分析法
边界值分析法概念:基于边界值有效等价类和无效等价类的分界点设计测试用例的一种【黑盒】方法。作用:对等价类的补充,统计表明程序最容易出错的地方就是在边界附近。
适用场景
- 在等价类的基础上针对有边界范围的测试数据输入的地方
- 常见词语描述:大小、尺寸、重量、最大、最小、至多、至少等修饰词语
- 典型代表:有边界范围的输入框类测试
边界范围的确定
选取正好等于、刚好大于、搞好小于边界的值作为测试数据
- 上点:边界上的点(正好等于)
- 离点:距离上点最近的点(刚好大于、刚好下于)
- 内点:范围内的点(区间范围内的数据)
示例
边界范围取值优化
作用:7个点优化为5个点
- 上点:必选(不考虑区间开闭)
- 内点:必选(建议选择中间范围)
- 离点:开内闭外(考虑开闭区间,开区间选择内部离点,闭区间选择外部离点
边界值法设计用例步骤
- 明确需求
- 确定有效和无效等价类
- 确定边界范围值
- 提取数据编写测试用例
注意事项:边界值分析法是对等价类划分法的一种补充,因此同一个需求的测试用例应该是两者之和。
判定表法
等价类边界值分析法主要关注单个输入类条件的测试,并未考虑输入条件之间的各种组合、输入条件与输出结果之间有相互制约关系的测试。此时我们就要使用判定表法了。判定表:是一种以表格形式表达多条件逻辑判断的工具
应用场景
- 存在多个输入条件、多个输出结果,输入和输入之间有组合关系,输入和输出之间有依赖或关系
判定表组成:
- 条件桩:所有输入条件
- 动作桩:所有的可能的输出结果
- 条件项:单个条件的取值范围,一般都是有效等价类和无效等价类
- 动作项:基于每一种条件的组合,得到确认的结果
设计测试用例的步骤
- 明确条件桩(找到所有的输入条件)
- 明确动作桩(找到所有的输出结果)
- 对条件桩进行全组合
- 明确每个组合对应的动作桩(基于每一种条件的组合情况,确定本组合下的输出结果。)
- 设计测试用例,每行数据对应一条测试用例
约定:
- 金额大于500的情况下使用Y代替
- 过期的情况下使用Y代替
- 金额小于500情况下使用N代替
- 不过期的情况下使用N代替
判定表如下所示:
因果图
概念:用图解的方法表示输入的各组合关系,写出判定表,进而设计测试用例的一种【黑盒测试】方法。
适用范围:
- 适用于分析程序输入条件的各种组合情况,以及输入和输出之间的依赖关系。
基本符号
- 恒等(-):条件成立,结果成立。
- 非(~)NOT:条件成立,结果不成立;条件不成立,结果成立。
- 或(V)OR:只要有一个条件成立,结果就成立;所有条件都不成立时,结果才不成立。
- 与/且(^)AND:多个条件必须同时成立,结果成立;只要有一个不成立,结果就不成立。
设计测试用例的步骤
- 需求分析
- 画出因果图
- 将因果图转换为判定表
- 生成测试用例
正交法
正交表是数学中一种特殊的表。使用此表的好处:用最小的测试用例获得最大的测试覆盖率。
正交表的基本说明
- k代表因素(输入参数)
- m叫水平(输入参数的取值)
- n代表测试用例数
- 读法:k因素m水平
应用场景
- 存在多个输入条件、多个输出结果,输入和输入之间有组合关系,输入和输出之间有依赖或关系。组合情况数据量太别大的情况下。
基于正交表设计测试用例步骤
- 需求分析
- 确定因素与水平(因素:控件名称;水平:每个控件对应的取值)
- 确定要采用的正交表
- 将正交表中的字母用文字代替
- 设计测试用例(一行就是一条测试用例)
基于allpairs设计测试用例
- 需求分析
- 确定因素与水平(因素:控件名称;水平:每个控件对应的取值)
- 将确定的因素与水平复制到txt文件中
- 打开DOS窗口,进入allpairs目录,运行命令:allpairs.exe test.txt > result.txt
- 根据生成的新文件编写测试用例(一行就是一条测试用例)
场景法
场景法,也可以叫流程图法,是用流程图描述用户的使用场景,然后通过覆盖流程路径来设计测试用例
场景法的意义
- 用户使用角度:用户平时使用的不是单个功能,而是多个功能组合起来进行使用
- 测试人员角度:平时测试的都是单个功能点进行测试,容易忽略多个功能的组合测试
场景法的适用场景
- 对于多个功能之间的组合逻辑测试,可以使用场景法。例如:集成测试丶系统测试丶验收测试...
设计测试用例的步骤
- 需求分析
- 绘制流程图
- 设计测试用例(一条流程路径就是一条测试用例
绘制流程图步骤
- 第1步:确认场景中关键业务步骤
- 第2步:确定业务之间的先后顺序
- 第3步:用箭头连接即可
流程图常用符号
案例:ATM机取款流程
错误推测法
定义:通过经验和直觉推测系统可能出现问题的地方,一般由经验丰富的测试人员使用。
设计思想
- 凭人们对过去所作测试结果的分析,列举出可能出现问题的清单,根据清单测试来发现缺陷
适用场景
- 所有正常测试结束后,通过错误推断法再测试之前问题较多的模块
- 时间紧,任务量大,根据之前项目类似经验找出易出错的模块重点测试
测试用例设计方法总结
- 具有输入功能,但输入之间没有组合关系 选择 等价类
- 输入有边界 如长度、类型 选择 边界值
- 多输入、多输出、输入与输入之间存在组合关系、输入与输出之间存在依赖或制约关系 选择 判定表、因果图
- 用最少的测试用例获得最大测试覆盖率时 选择 正交法
- 多个功能的组合测试 选择 场景法、流程图
- 最后推荐使用 错误推测法 来进一步补充测试用例
方法之间不是割裂开来的,而是根据实际需求来综合使用。一个需求我们可以同时使用多种方法来设计测试用例