51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2777|回复: 0
打印 上一主题 下一主题

[讨论] 黑盒测试用例设计技术--等价类划分法

[复制链接]
  • TA的每日心情
    奋斗
    2021-8-16 14:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2018-4-20 13:55:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    本文通过案例的形式,详细讲解黑盒测试用例设计技术中的等价类划分法。

    等价类划分是一种典型的黑盒测试方法,其原理是把程序的输入域划分成若干部分(子集),然后从每一个
    子集中选取少数具有代表性的数据作为测试用例。

    通过等价类划分,可以在尽可能覆盖所有测试路径的前提下,大幅度减少测试用例的数目。

    本文的主要内容有:

    等价类的概念介绍
    划分等价类的原则
    根据等价类设计测试用例的方法
    案例演示
    划分等价类
    等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。并合理
    的假设,测试某等价类的代表值就等于对这一类其它值的测试。

    等价类划分有两种不同的情况:

    有效等价类:指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。
    无效等价类:指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等
    价类至少应有一个,也可能有多个。
    在设计测试用例时,要同时考虑有效等价类和无效等价类,以此验证软件在正常操作和异常操作时是否都能
    正常运行。

    确定等价类的6条原则:

    1、在输入条件规定了取值范围或取值的个数的情况下,可以确立一个有效等价类和两个无效等价类。

    例1:输入值是学生成绩,输入形式为文本框,要求的输入范围是0~100
    有效等价类:0<=输入成绩<=100;
    无效等价类1:输入成绩<0;
    无效等价类2:输入成绩>100
    2、在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可以确立一个有效等价类和一
    个无效等价类。

    例2:输入值是人员性别,输入形式为文本框,要求输入的内容必须在集合{男,女}中
    有效等价类:性别=’男’ 或者 ‘女’
    无效等价类:性别=’人妖’
    3、在输入条件是一个布尔量的情况下,可以确立一个有效等价类和一个无效等价类。

    例3:输入值是状态标识位“是否完成”,输入形式为单选下拉框,选择范围为{是,否}
    有效等价类:选项=’是’ 或者 ‘否’
    无效等价类:未进行选择操作
    4、在规定了输入数据的一组值(假设N个),并且程序要对每一个输入值进行处理的情况下,可以确立N
    个有效等价类和一个无效等价类。

    例4:输入值是人员性别,输入形式为文本框,要求输入的内容必须在集合{男,女}中;不同的性别选择将跳
    转至不同的处理页面
    有效等价类1:性别=’男’
    有效等价类2:性别=’女’
    无效等价类:性别=’人妖’
    5、在规定了输入数据必须遵守的规则的情况下,可以确立一个有效等价类(符合条件)和若干无效等价类
    (从各个角度违反规则)。

    例5:输入值是人员性别,输入形式为单选下拉框,要求输入的内容必须在集合{男,女}中;
    有效等价类:性别=’男’ 或者 ‘女’
    无效等价类1:未选择人员性别
    无效等价类2:在浏览器开发工具中将人员性别的属性值更改为’人妖’
    6、在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类划分为更小的等价类。

    例6:在例2(输入值是人员性别,输入形式为文本框,要求输入的内容必须在集合{男,女}中)的基础上,
    不同的性别选择将跳转至不同的处理页面
    有效等价类:性别=’男’ 或者 ‘女’
    有效等价类细分1:性别=’男’
    有效等价类细分2:性别=’女’
    无效等价类:性别=’人妖’
    列出等价类表
    输入条件        有效等价类        无效等价类
    …        …        …
    确定测试用例
    根据已列出的等价类表,按照如下步骤确定测试用例:
    1)为每个等价类规定一个唯一的编号
    2)设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类。重复这一步,最后使得所有有效
    等价类均被测试用例所覆盖。
    3)设计一个新的测试用例,使其只覆盖一个无效等价类。重复这一步,使所有无效等价类均被覆盖。

    Example1

    某程序具有如下功能:输入3个正数a、b、c,分别作为三边的边长构成三角形,输出这3个数所构成的三
    角形类型。
    用等价类划分方法为该程序进行测试用例设计。

    划分等价类

    分析思路: 步骤一、要求输入3个数,且3个数都为正数;参照规则5,划分为一个有效等价类和三个无效
    等价类。

    有效等价类(1):a>0; b>0; c>0;
    无效等价类(2):a<=0
    无效等价类(3):b<=0
    无效等价类(4):c<=0
    步骤二、在有效等价类(1)的基础上,参照规则6,对该等价类进行细分;考察3个数能否构成三角形,
    参照规则5,划分为一个有效等价类和三个无效等价类。

    有效等价类(5):a>0; b>0; c>0; a+b>c; a+c>b; b+c>a
    无效等价类(6):a>0; b>0; c>0; a+b<=c
    无效等价类(7):a>0; b>0; c>0; b+c<=a
    无效等价类(8):a>0; b>0; c>0; a+c<=b
    步骤三、在有效等价类(5)的基础上,参照规则6,对该等价类进行细分;考察3个数能否构成等边三角
    形,参照规则2,划分为一个有效等价类和一个无效等价类。

    有效等价类(9):a>0; b>0; c>0; a+b>c; a+c>b; b+c>a; a=b=c
    无效等价类(10):a>0; b>0; c>0; a+b>c; a+c>b; b+c>a; a!=b 或 b!=c 或 c!=a
    步骤四、在无效等价类(10)的基础上,参照规则6,对该等价类进行细分;考察3个数能否构成等腰三
    角形,参照规则4,划分为三个有效等价类和一个无效等价类。

    有效等价类(11):a>0; b>0; c>0; a+b>c; a+c>b; b+c>a; a=b!=c
    有效等价类(12):a>0; b>0; c>0; a+b>c; a+c>b; b+c>a; b=c!=a
    有效等价类(13):a>0; b>0; c>0; a+b>c; a+c>b; b+c>a; c=a!=b
    无效等价类(14):a>0; b>0; c>0; a+b>c; a+c>b; b+c>a; a!=b; a!=c; b!=c
    设计测试用例

    序号        [a,b,c]        覆盖等价类        预期输出结果
    –        –        覆盖有效等价类        –
    1        [6,6,6]        (1)(5)(9)        等边三角形
    2        [3,3,5]        (1)(5)(10)(11)        等腰三角形
    3        [3,4,4]        (1)(5)(10)(12)        等腰三角形
    4        [4,5,4]        (1)(5)(10)(13)        等腰三角形
    –        –        覆盖无效等价类        –
    5        [3,4,5]        (1)(5)(14)        一般三角形
    6        [-1,3,2]        (2)        不能构成三角形
    7        [3,-1,2]        (3)        不能构成三角形
    8        [3,2,-1]        (4)        不能构成三角形
    9        [1,2,3]        (1)(6)        不能构成三角形
    10        [3,1,2]        (1)(7)        不能构成三角形
    11        [1,3,2]        (1)(8)        不能构成三角形
    Example2
    某程序具有如下功能:文本框要求输入日期信息,日期限定在1990年1月~2049年12月,并规定日期由6位数
    字字符组成,前4位表示年,后2位表示月;程序需对输入的日期有效性进行校验。
    用等价类划分方法为该程序的“日期检查功能”设计测试用例。

    划分等价类

    步骤一、要求输入6个数字字符yyyynn;参照规则5,划分为一个有效等价类和三个无效等价类。

    有效等价类(1):输入6个数字字符
    无效等价类(2):输入6个字符,存在非数字的情况
    无效等价类(3):输入少于6个字符
    无效等价类(4):输入多于6个字符
    步骤二、在有效等价类(1)的基础上,参照规则6,对该等价类进行细分;考察6个数是否满足日期格式要
    求,1990<=yyyy<=2049,01<=nn<=12,参照规则,划分为一个有效等价类和四个无效等价类。

    有效等价类(5):日期格式满足要求,1990<=yyyy<=2049,01<=nn<=12
    无效等价类(6):yyyy不满足要求,yyyy<1990
    无效等价类(7):yyyy不满足要求,yyyy>2049
    无效等价类(8):nn不满足要求,nn<01
    无效等价类(9):nn不满足要求,nn>12
    设计测试用例

    序号        yyyynn        覆盖等价类        预期输出结果
    –        –        覆盖有效等价类        –
    1        199307        (1)(5)        日期格式有效
    –        –        覆盖无效等价类        –
    2        19June        (2)        日期格式无效
    3        19Jun        (3)        日期格式无效
    4        19June2        (4)        日期格式无效
    5        198805        (6)        日期格式无效
    6        205005        (7)        日期格式无效
    7        198800        (8)        日期格式无效
    8        199513        (9)        日期格式无效

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-25 04:42 , Processed in 0.059986 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表