测试用例设计方法之等价类划分与边界值分析
1. 等价类划分
1.1. 前言
我们知道软件测试是根据软件开发各个阶段的规格说明和程序的内部结构而精心设计一批测试用例,并利用这些测试用例运行软件,以发现软件错误的过程。但在设计测试用例时,往往程序的输入是不可能穷举的。因此,我们在测试某个程序时就被限制在从所有的输入条件中挑选某个小的子集来设计测试用例。选择这个子集的前提是必须保证子集是正确的,保证子集尽可能的发现最多的错误,保证子集能代表其他大部分的测试用例,保证子集的数量是最为合理的。
1.2. 定义
在前言中提到的“子集”,因为他们一个个具有代表性的集合,我们将这个“子集”称为等价类。等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:测试某个等价类的代表值就等于对这一类其他值的测试,因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件就可以用少量代表性的测试数据取得较好的测试结果。
等价类划分是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。
1.3. 方法应用
使用等价类划分方法来做测试,主要分两个步骤:确定等价类,生成测试用例。
1.3.1. 确定等价类
确定等价类的过程是根据规格说明选取每一个输入条件将其划分为两个或更多的组。一般将等价类分为两类,有效等价类和无效等价类。有效等价类代表对程序的有效输入。无效
等价类代表的则是其他任何可能的不正确的输入。遵循“有效”,“无效”这个两个原则我们可以设计一个等价类表,确定等价类的结果就是生成一个等价类表。
1.3.2. 生成测试用例
根据第一步的等价类表来生成测试用例,其过程如下: 1. 为每一个等价类设置一个不同的编号 2. 编写新的测试用例,尽可能多地覆盖那些尚未被覆盖的有效等价类,直到所有的有效等
价类都被测试用例所覆盖。也就可理解为一个测试用用例可以涵盖多个有效等价类。 3. 编写新的测试用例,覆盖一个且一个尚未被覆盖的无效等价类,直到所有的无效等价类
都被测试用例所覆盖。也就可以理解为一个测试用例只能涵盖一个无效等价类。 生成一个测试用例表:
1.4. 一个范例 1.4.1. 需求规格说明
在各种输入条件下,测试程序的登录对话框功能。
用户名和密码的规则如下:
• 用户名长度为6至10位(含6位和10位) • 用户名由字符(a-z 、A-Z )和数字(0-9)组成 • 不能为空、空格和特殊字符 密码规则同用户名规则
1.4.2. 根据规格说明生成等价类表
这里做用户名输入的测试,因为密码输入和它一样(照样再做一套测试用例就可)
1.4.3. 为每一个等价类设置一个不同的编号
1.4.4. 设计测试用例
1.5. 等价类划分小结测试题
(一) 填空题:
和_____2_______两个分类,对于1. 等价类划分法中等价类一般分为可以一个测试用例覆盖多个等价类,对于_____2_______则一个测试用例只能覆盖一个等价类。
42.
(二) 设计题: 保险费率计算
某保险公司承担人寿保险,该公司保费计算方式为投保额*保险率,保险率又依点数不同而有别,10点以上费率为0.6 %,10点以下费率为0.1% : 输入数据说明。
要求:
年 龄:一或两位数字。 性 别:以英文「MALE 」、「FEMALE 」、「M 」、「F 」表示。 婚 姻:「已婚」、「未婚」。 扶养人数:空白或一位数字。
保险费率:10点以上,10点以下。
请根据上面的规格说明,使用等价类划分设计出等价类表和测试用例表。
答案 填空题
1: 有效等价类 ○
2: 无效等价类 ○
3: 等价类表 ○
4: 测试用例表 ○
设计题 等价类表:
测试用例表:
2. 边界值分析
2.1. 前言
一般很难提供一份如何进行边界值分析的“详细说明”,因为这种方法需要一定程度的创造性,以及对问题采取一定程度的特殊处理办法。
往往他是对其他方法的补充。例如与等价类划分综合使用时,在等价类取值时如果按照边界值来取值则具有更高的测试回报率。
边界值分析法与等价类划分法存在两个方面的不同:
1, 等价类划分是从等价类中挑选出任意一个元素,而边界值分析需要选择一个或多个元素且是边界元素;
2, 等价类划分仅仅关注输入条件,而边界值分析还要考虑输出等价类。
2.2. 定义
边界值分析:对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。
尽管说难提供一份如何进行边界值分析的“详细说明”。但还是可以归纳一些提取边界值的原则:
1)如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。
2)如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少1、比最大个数多1的数作为测试数据。
3)根据规格说明的每个输出条件,应用前面的原则①②。
4)如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。
5)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构边界上的值作为测试用例。
6)分析规格说明,找出其他可能的边界条件。
2.3. 应用方法
因为边界值需要考虑到输出域,所以要根据具体的需求看看是从结果域来划分还是从输入域来划分。如果从输入域划分,一般还是先利用等价类划分法确定出等价类表,再根据等价类表利用定义的原则取出边界值生成测试用例表。如果是从输出域划分,一般根据输出等价类来确认输入等价类表,再根据等价类表利用定义的原则取出边界值生成测试用例表。
另外,有些边界值在软件的内部,最终用户几乎看不到,但是软件测试仍有必要检查。这样的边界条件称为次边界条件或内部条件,也称做隐式条件。作为综合测试方法的一种补充手段,往往要考虑规格说明中的一些隐式边界值。例如存储空间的溢出、数组下标计算的溢出、内存分配的溢出等。
对应每个边界值需要单独设计一个测试用例。
2.4. 一个范例 2.4.1. 需求规格说明
找零钱最佳组合
假设商店货品价格(R)皆不大於100元(且为整数),若顾客付款在100元内(P),求找给顾客之最少货币个(张)数?(货币面值50元(N50),10元(N10),5元(N5),1元(N1)四种)
2.4.2. 根据规格说明生成等价类表
2.4.3. 根据等价类表,取边界值生成测试用例表
2.5. 边界值分析小结测试题
(一) 填空题
1. 边界值分析法作为等价类划分法的补充,它和等价类划分的主要两个区别是:
1 ○345 2.
(二) 设计题
测试一个计算结果保存在一个字节中的最大两位数加法计算器。
答案 填空题
1等价类划分从等价类中随机取一个值,而边界值分析需要取两个或两个以上 ○
2等价类只考虑输入域,而边界值分析不仅考虑输入域还要考虑输出域 ○
3内存溢出 ○
4下标溢出 ○
5存储空间溢出 ○
设计题 等价类表:
测试用例表:
测试用例设计方法之等价类划分与边界值分析
1. 等价类划分
1.1. 前言
我们知道软件测试是根据软件开发各个阶段的规格说明和程序的内部结构而精心设计一批测试用例,并利用这些测试用例运行软件,以发现软件错误的过程。但在设计测试用例时,往往程序的输入是不可能穷举的。因此,我们在测试某个程序时就被限制在从所有的输入条件中挑选某个小的子集来设计测试用例。选择这个子集的前提是必须保证子集是正确的,保证子集尽可能的发现最多的错误,保证子集能代表其他大部分的测试用例,保证子集的数量是最为合理的。
1.2. 定义
在前言中提到的“子集”,因为他们一个个具有代表性的集合,我们将这个“子集”称为等价类。等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:测试某个等价类的代表值就等于对这一类其他值的测试,因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件就可以用少量代表性的测试数据取得较好的测试结果。
等价类划分是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。
1.3. 方法应用
使用等价类划分方法来做测试,主要分两个步骤:确定等价类,生成测试用例。
1.3.1. 确定等价类
确定等价类的过程是根据规格说明选取每一个输入条件将其划分为两个或更多的组。一般将等价类分为两类,有效等价类和无效等价类。有效等价类代表对程序的有效输入。无效
等价类代表的则是其他任何可能的不正确的输入。遵循“有效”,“无效”这个两个原则我们可以设计一个等价类表,确定等价类的结果就是生成一个等价类表。
1.3.2. 生成测试用例
根据第一步的等价类表来生成测试用例,其过程如下: 1. 为每一个等价类设置一个不同的编号 2. 编写新的测试用例,尽可能多地覆盖那些尚未被覆盖的有效等价类,直到所有的有效等
价类都被测试用例所覆盖。也就可理解为一个测试用用例可以涵盖多个有效等价类。 3. 编写新的测试用例,覆盖一个且一个尚未被覆盖的无效等价类,直到所有的无效等价类
都被测试用例所覆盖。也就可以理解为一个测试用例只能涵盖一个无效等价类。 生成一个测试用例表:
1.4. 一个范例 1.4.1. 需求规格说明
在各种输入条件下,测试程序的登录对话框功能。
用户名和密码的规则如下:
• 用户名长度为6至10位(含6位和10位) • 用户名由字符(a-z 、A-Z )和数字(0-9)组成 • 不能为空、空格和特殊字符 密码规则同用户名规则
1.4.2. 根据规格说明生成等价类表
这里做用户名输入的测试,因为密码输入和它一样(照样再做一套测试用例就可)
1.4.3. 为每一个等价类设置一个不同的编号
1.4.4. 设计测试用例
1.5. 等价类划分小结测试题
(一) 填空题:
和_____2_______两个分类,对于1. 等价类划分法中等价类一般分为可以一个测试用例覆盖多个等价类,对于_____2_______则一个测试用例只能覆盖一个等价类。
42.
(二) 设计题: 保险费率计算
某保险公司承担人寿保险,该公司保费计算方式为投保额*保险率,保险率又依点数不同而有别,10点以上费率为0.6 %,10点以下费率为0.1% : 输入数据说明。
要求:
年 龄:一或两位数字。 性 别:以英文「MALE 」、「FEMALE 」、「M 」、「F 」表示。 婚 姻:「已婚」、「未婚」。 扶养人数:空白或一位数字。
保险费率:10点以上,10点以下。
请根据上面的规格说明,使用等价类划分设计出等价类表和测试用例表。
答案 填空题
1: 有效等价类 ○
2: 无效等价类 ○
3: 等价类表 ○
4: 测试用例表 ○
设计题 等价类表:
测试用例表:
2. 边界值分析
2.1. 前言
一般很难提供一份如何进行边界值分析的“详细说明”,因为这种方法需要一定程度的创造性,以及对问题采取一定程度的特殊处理办法。
往往他是对其他方法的补充。例如与等价类划分综合使用时,在等价类取值时如果按照边界值来取值则具有更高的测试回报率。
边界值分析法与等价类划分法存在两个方面的不同:
1, 等价类划分是从等价类中挑选出任意一个元素,而边界值分析需要选择一个或多个元素且是边界元素;
2, 等价类划分仅仅关注输入条件,而边界值分析还要考虑输出等价类。
2.2. 定义
边界值分析:对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。
尽管说难提供一份如何进行边界值分析的“详细说明”。但还是可以归纳一些提取边界值的原则:
1)如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。
2)如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少1、比最大个数多1的数作为测试数据。
3)根据规格说明的每个输出条件,应用前面的原则①②。
4)如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。
5)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构边界上的值作为测试用例。
6)分析规格说明,找出其他可能的边界条件。
2.3. 应用方法
因为边界值需要考虑到输出域,所以要根据具体的需求看看是从结果域来划分还是从输入域来划分。如果从输入域划分,一般还是先利用等价类划分法确定出等价类表,再根据等价类表利用定义的原则取出边界值生成测试用例表。如果是从输出域划分,一般根据输出等价类来确认输入等价类表,再根据等价类表利用定义的原则取出边界值生成测试用例表。
另外,有些边界值在软件的内部,最终用户几乎看不到,但是软件测试仍有必要检查。这样的边界条件称为次边界条件或内部条件,也称做隐式条件。作为综合测试方法的一种补充手段,往往要考虑规格说明中的一些隐式边界值。例如存储空间的溢出、数组下标计算的溢出、内存分配的溢出等。
对应每个边界值需要单独设计一个测试用例。
2.4. 一个范例 2.4.1. 需求规格说明
找零钱最佳组合
假设商店货品价格(R)皆不大於100元(且为整数),若顾客付款在100元内(P),求找给顾客之最少货币个(张)数?(货币面值50元(N50),10元(N10),5元(N5),1元(N1)四种)
2.4.2. 根据规格说明生成等价类表
2.4.3. 根据等价类表,取边界值生成测试用例表
2.5. 边界值分析小结测试题
(一) 填空题
1. 边界值分析法作为等价类划分法的补充,它和等价类划分的主要两个区别是:
1 ○345 2.
(二) 设计题
测试一个计算结果保存在一个字节中的最大两位数加法计算器。
答案 填空题
1等价类划分从等价类中随机取一个值,而边界值分析需要取两个或两个以上 ○
2等价类只考虑输入域,而边界值分析不仅考虑输入域还要考虑输出域 ○
3内存溢出 ○
4下标溢出 ○
5存储空间溢出 ○
设计题 等价类表:
测试用例表: