等价类划分法

测试一个两位数的加法计算器

测试需求:

  • 测试两个参数的值相加后的结果是否正确
  • 其中:输入的数值在-99到99之间大于99或小于-99的输入应被拒绝,并显示错误信息

开始测试

  • 根据测试需求,我们开始测试
  • 分别给第一个参数和第二个参数输入表中的值,得到的测试结果如表所示:

  • 很明显,如果我们对第一个参数的值分别取从-99到99的199个数,第二个参数的值分别取从-99到99的199个数,我们不可能对两位数相加的所有情况进行穷举测试。

解决方法:

等价类划分法

  • 等价类划分的办法就是把程序的输入域划分成若干部分
  • 然后从每个部分中选取少数代表性数据当作测试用例
  • 每一类的代表性数据在测试中的作用等价于这一类的其他值
  • 也就是说,如果某一类中的一个例子发现了错误,这一等价类中的其他例子也能发现同样的错误
  • 反之,如果某一类中的一个例子没有发现错误,则这一类中的其他例子也不会查出错误
  • 如果输入条件规定了取值的范围或值的个数,则可确定一个有效等价类和两个无效等价类
  • 如果一个输入条件说明了一个 "必须成立" 的情况,则可划分一个有效等价类和一个无效等价类
  • 如果输入条件规定了输入数据的一组可能的值,而且程序是不同的方式处理每一种值,则可为每一种值划分一个有效等价类,并划分一个无效等价类
  • 如果我们确知,已划分的某等价类中的各元素(例子)在程序中的处理方式是不同的,则应据此将等价类进一步划分成更小的等价类
  • 在确立了等价类之后,建立等价类表,列出所有划分出的等价

基于等价类划分的用列设计

  • 明确测试对象,非测试对象保证正确
  • 为每个等价类规定一个唯一的编号
  • 设计一个新的测试用列,使其尽可能多地覆盖尚未覆盖的有效等价类。重复这一步,最后使得所有有效等价类均被测试用例所覆盖
  • 设计一个新的测试用例,使其只覆盖一个无效等价类。重复这一步使所有无效等价类均被覆盖

等价类划分实战

STEP1: 根据测试需求可以分为三个等价类:

  • 一个有效数据的等价类,两个无效数据等价类
  • 有效数据等价类就是:由那些对程序的规格说明有意义的、合理的输入数据结构所构成的集合
  • 无效数据等价类就是:那些对程序的规格说明不合理的或无意义的输入数据所构成的集合

 STEP2:建立等价类表

  • 在实际工作中,我们通常在确立了等价类以后,把程序中所有的等价类建立等价类表,以便在编写测试用列的时候有所依据

 STEP3:确定测试用例

  • 为等价类表中的每一个等价类分配一个唯一的编号
  • 设计一个新的测试用例,使它能够尽量覆盖尚未覆盖的有效等价类
  • 重复这一步骤,从而使所有有效等价类均被测试用例所覆盖
  • 与上步类似,设计一个新的测试用例,使它只覆盖一个无效等价类
  • 重复这一步骤,从而使所有无效等价类均被测试用例所覆盖

 STEP4:细化等价类划分

  • 在测试 "-99<=数值<=99" 的这个等价类区间的时候
  • 我们会发现如10 + 40,-20 + 30 和 - 30 +(-30)这类的正数相加,正数负数相加,负数相加也是不同的等价区间
  • 根据以上等价类划分的结果,得出一下表的等价类表

 STEP5:完善测试用例

  • 根据上面划分的4个等价类,我们至少需要有5个测试用例

  •  根据以上等价类划分的结果,得出下表的等价类表

 

等价类的特点

  • 测试相同的内容
  • 如果等价类的一个测试能够捕获一个缺陷,那么选择该等价类中的其他测试也能捕获该缺陷
  • 如果等价类中的一个测试不能捕获缺陷,那么选择该等价类中的其他测试也不会捕获缺陷
  • 如果正确的划分等价类,阔以大大降低测试用例的数量,测试会准确有效
  • 如果错误的将两个不同的等价类当作一个等价类,那就会遗漏一种测试情况

等价类划分要注意的问题

  • 不但要考虑有效等价类,也要考虑无效等价类
  • 仔细划分,审查划分
  • 过于粗略可能会漏掉软件缺陷

等价类用例设计联系

  • 测试需求:余额宝体现到银行卡增加新规则:快速到账(2小时)日限额1w元
  • 超过1w元只能选择普通到账

分析过程

  • 设计用例

  •  细致分析需求,日限额1w,所以要区分两个场景

 

经典等价类划分面试题

  • 问题:根据下面给出的规格说明,利用等价类划分的方法,给出足够的测试用例
  • "一个程序读入3个整数,把这三个数值看做一个三角形的3条边的长度值
  • 这个程序要打印出信息,说明这个三角形是不等边的、是等腰的、还是等边的

1、把得出三角形的条件列好

2、覆盖测试用例即可

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值