软件测试理论:测试设计方法论详解
软件测试理论:测试设计方法论详解
软件测试是软件开发过程中的重要环节,其目的是发现软件缺陷,提高软件质量。而测试设计方法论是软件测试的核心,它决定了测试用例的设计质量和测试效率。本文将详细介绍几种常用的测试设计方法论,包括测试用例格式、等价类划分、边界值分析、流程分析、正交试验、状态迁移和判定表等。
测试用例格式
测试用例是软件测试的基础,其格式规范对于测试工作的顺利进行至关重要。一个完整的测试用例通常包含以下要素:
- 用例编号:用例的唯一标识,要求具有易识别性和易维护性,能能够根据用例编号识别用例的目的和作用,一般格式为:A-B-C-D
- A:一般表示产品或者项目名称
- B:表示用例属性(针对哪个的测试阶段,UT,IT,ST)
- C:表示测试项或者功能模块
- D:编号
如:taobao-st-login-001
测试项:说明测试用例所属功能模块
用例名称:用于描述测试用例的关注点,原则上用例名称不能重复
如:输入错误的验证码,登录失败优先级:体现测试用例的重要程度,一般分为高、中、低
测试类型:如:功能测试、可用性测试,兼容性测试、可靠性测试、安全测试,性能测试
前置条件:描述执行用例时需要优先满足的条件
测试步骤:根据业务流程描述出操作的每一个步骤(包括动作和数据)
预期结果:根据需求描述用例每个测试步骤需要达到的效果(界面表现、功能表现、数据表现)
如:
等价类划分
等价类划分是一种常用的黑盒测试方法,其基本思想是将输入数据划分为若干个等价类,在每个等价类中选取少量具有代表性的数据作为测试用例,以减少测试用例的数量,提高测试效率。
原理:根据需求将被测对象的所有可能的输入划分为若干集合,在每一个集合中,每一个元素对于发现bug的效果是等价的
分类:
- 1)有效等价类
- 2)无效等价类
- 等价类划分原则
- 1)在输入条件规定了取值范围或值的个数的情况下,可以确立一个有效等价类和两个无效等价类
- 2)在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可以确立一个有效等价类和一个无效等价类
- 3)在输入条件时一个布尔量的情况下,可以确定一个有效等价类和一个无效等价类
- 4)在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确定n个有效等价类和一个无效等价类
- 5)在规定了输入数据必须遵守的规则情况下,可确定一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)
- 6)在确定已划分的等价类中,各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步细分
- 使用步骤:
- 1)分析需求,根据划分原则,划分出有效等价类和无效等价类
- 2)列出等价类表
- 3)为有效等价类设计测试用例(设计原则:一条用例尽量多的覆盖未被覆盖的有效等价类,重复操作,知道所有的有效等价类被覆盖完)
- 4)为无效等价类设计测试用例(设计原则:每条测试用例覆盖一个未被覆盖的无效等价类,重复操作,知道所有的无效等价类被覆盖完)
举例:邮箱注册:
要求:
- 1)邮箱地址:6-18个字符,可以包含字母数组下划线,以字母开头
- 2)密码:6-16个字符,区分大小写
- 3)手机号:有效
步骤:
- 1)根据需求,划分有效等价类和无效等价类,列出等价类表
- 2)为有效等价类设计测试用例
- 3)为无效等价类设计测试用例
每个无效等价类需要用一个用例来覆盖,其他条件需要均为有效,注意,这里无效等价类不能叠加,因为如果叠加,可能存在因为一个无效等价类导致另一个无效等价类不能被测试到
这里无效等价类的用例就不再列举了
边界值分析法
边界值分析法是一种补充等价类划分的测试方法,其基本思想是测试输入或输出边界附近的值,因为大多数的缺陷都出现在输入的边界上。
原理:大多数的缺陷出现在输入的边界,如果边界即边界附近的值都不会引发错误,则集合内其他值引发错误的概率也非常低
基本概念
- 1)上点:输入边界上的点
- 2)离点:离上点最近的点
- 3)内点:输入范围内的点
例:[2,6],上点为2,6(有效),离点为1,7(无效)
例:[2,6),上点2(有效)、6(无效),离点1(无效),5(有效)
流程分析
流程分析法是一种基于业务流程的测试方法,其基本思想是通过分析业务流程,设计测试用例覆盖所有可能的流程路径。
流程图的基本使用
如:基本概念
- 1)基本流
- 2)备选流
- 3)异常流
在实际测试过程中主要关注基本流和备选流
- 使用步骤
- 1)根据需求,画出流程图
- 2)根据流程图提取测试路径
- 3)利用等价类和边界值方法为每一条路径设计测试用例
如:1)画流程图
2)提取路径 - 1)1-2-3-4
- 2)1-2-5-6-7-8-9-2-3-4
- 3)1-2-5-10-11-8-9-2-3-4
- 4)1-2-5-6-7-8-12
- 3)为每条路径设计测试用例
- 1)一次猜测正确,奖励1000积分
- 2)第一次猜大了,第二次猜测正确,奖励1000积分
- 3)第一次猜小了,第二次猜测正确,奖励1000积分
- 4)连续猜错5此,游戏结束
正交试验
正交试验法是一种基于组合数学的测试方法,其基本思想是通过正交表来设计测试用例,以达到用较少的测试用例覆盖较多的测试组合的目的。
常用于功能测试(查询)、配置测试等
基本概念:
- 1)因子:影响试验结果的条件
- 2)水平:每个因子可能的取值
- 试验步骤
- 1)分析需求,获取因子以及因子的水平数
- 2)根据因子及水平选择正交表
- 3)根据实际情况以及经验优化正交表
- 4)使用等价类和边界值为每一条规则设计测试用例
例如:某系统库存查询功能,如图所示,使用正交实验法设计测试用例 - 1)分析因此、水平数(6个因子,2水平)
- 2)选取正交表(可以使用使用正交小助手(下载地址)),得到正交表,如下
- 3)优化正交表
- 1)补充全部不使用(+1)
- 2)补充只使用一个条件(+6)
- 4)为每一条规则设计测试用例
状态迁移
状态迁移法是一种基于状态机的测试方法,其基本思想是通过分析系统状态及其迁移路径,设计测试用例覆盖所有可能的状态转换。
什么是状态迁移法
状态机的测试主要关注在测试状态转移的正确性上面,对于一个有限状态机,通过测试验证其在给定的条件下是否需能够产生需要的状态变化,有没有不可达的状态和非法的状态,可能不可能产生非法的状态转移等,对于被测系统,如果我们可以抽象出它的若干状态,以及这些状态之间的切换条件和切换路径,那么我们可以从状态迁移路径覆盖的角度来设计用例对该系统进行测试,状态迁移法的目标的设计足够的用例达到对系统状态的覆盖,状态-条件组合的覆盖以及状态迁移路径的覆盖使用方法
- 1)分析需求,明确对象的状态节点
- 2)绘制状态迁移图
- 3)绘制状态迁移树
- 4)提取测试路径
- 5)利用等价类与边界值为每条路径设计测试用例
例如:某航空订票系统中订单的状态如下
1)选定座位后,此时为待付款状态
2)付款后,为已支付状态
3)出行,到机场换取登机牌,此时为已出票状态
4)过安检登机,此时为已出行状态
5)在未出行前都可以取消
步骤:
1)分析状态节点:待付款、已支付、已出票、已出行、取消
2)绘制状态迁移图
3)绘制状态迁移树
4)提取路径 - 1)待付款-取消
- 2)待付款-已付款-取消
- 3)待付款-已付款-已出票-取消
- 4)待付款-已付款-已出票-已出行
- 5)为上述每条路径设计测试用例
判定表
判定表是一种用于分析和表达在多个条件下程序执行不同动作的工具,其基本思想是通过表格的形式清晰地展示各种条件组合及其对应的执行动作。
用于分析和表达在多个条件下程序执行不同动作的工具
组成
- 1)条件桩:列出影响结果的所有的条件
- 2)动作桩:根据不同的条件可能执行的动作
- 3)条件项:不同条件的组合
- 4)动作项:在具体的条件下执行的动作
格式如:
举例如:
- 使用方法
- 1)分析需求,获取被测对象的输入和输出,定义条件桩,动作桩
- 2)设计判定表
- 3)优化判定表
- 4)使用等价类和边界值对每一条规则设计测试用例
举例:某文件管理系统中对修改文件有如下要求:第一个字符必须是A或者B,其余字符必须为数字,满足条件则修改文件名成功,如果第一个字符不合法,提示:第一个字符必须为A或者B。如果其他字符不合法,提示:其他字符必须为数字
1)分析需求 - 1)条件:
- 1)第一个字符必须是A或者B
- 2)其余字符必须为数字
2)动作: - 1)修改文件名成功
- 2)第一个字符必须为A或者B
- 3)其他字符必须为数字
2)设计判定表:
3)优化判定表
4)用等价类的方法和边界值的方法来设计测试用例