测试方法-等价类划分

测试方法

软件测试方法
经典定义:
软件测试(Software Testing),在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程
标准定义:
软件测试是使用人工或自动的手段来运行或测定某个软件系统的过程,其期的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别

软测的目的:
发现问题,检查系统是否满足需求
比如是对之前的黑白灰盒方法的一个具体化实现
在这里插入图片描述
常见的方法如下:

等价类划分法

边界值

因果图

判定表驱动法

正交实验法

功能图法

场景实验法

错误推断法

需求转化

设计文档

探索式测试

1、黑盒-等价类

(用少量的数据代表大量的数据,找出最具有代表性的值)
由于:测试是无穷无尽的
(比如QQ注册,手机号密码昵称的组合有无穷多,由于测试数据无穷无尽,那么测试就是无穷无尽的)

等价类划分法:
等价类: 选取少数有代表性的数据,这一类数据等价于这一类的其它值;找出最小的子集,可以发现最多的错误;
◆等价类划分的办法是把程序的输入域划分成若干部分,然后从每个部分中选取少数代表性数据当作测试用例
◆每一类的代表性数据在测试中的作用等价于这一类中的其他值,也就是说,如果某一类中的一一个例子发现了错误,这一等价类中的其他例子也能发现同样的错误。
◆反之,如果某一类中的一个例子没有发现错误,则这一类中的其他例子也不会查出错误。

**两大特性:**必须设计的用例;涵盖了大部分情况;

两类情况:
有效等价类:找出有效值的代表范围;
无效等价类:找出无效值的代表范围;

等价类划分原则

◆如果输入条件规定了取值的范围或值的个数,则可确定一个有效等价类和两个无效等价类
◆如果一一个输入条件说明了一个“必须成立”的情况,则可划分一个有效等价类和一个无效等价类
◆如果输入条件规定了输入数据的一组可能的值,而且程序是用不同的方式处理每一种值,则可为每一种值划分一 个有效等价类,并划分一个无效等价类(类似于地铁不同时间的放行。也类似于生活中要站好队比如看球赛)
◆如果我们确知,已划分的某等价类中的各元素(例子)在程序中的处理方式是不同的,则应据此将此等价类进一步划分成更小的等价类
◆在确立了等价类之后,建立等价类表,列出所有划分出的等价类

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

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

(正常条件下取值范围放宽,在异常的无效的条件下要把取值范围缩小,让有效等价类都有用例应对,让每一个无效等价类都有唯一的用例应对)

等价类的特点

1.测试相同的内容
2.如果等价类中的一个测试能够捕获一个缺陷, 那么选择该等价类中的其他测试也能捕获该缺陷
3.如果等价类中的一个测试不能捕获缺陷,那么选择该等价类中的其他测试也不会捕获缺陷(不是划分得越细化越好,最好是刚刚好)
4.如果正确的划分等价类,可以大大降低测试用例的数量,测试会准确有效
5.如果错误的将两个不同的等价类当作一个等价类, 那就会遗漏一种测试情况,相反如果将一个等价类看做两个不同的等价类,测试就会冗余。

等价类划分要注意的问题

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

使用场景:
输入条件(取值范围/值个数;必须值集合;布尔值;一组处理值;必须遵守的规则;再细分更小等价类;)

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

测试需求:
测试两个参数的值相加后的结果是否正确
其中 : 输入的数值在-99到99之间大于99或小于-99的输入应被拒绝,并显示错误信息
在这里插入图片描述
分别给第一个参数和第二个参数输入表中的值,得到的测试结果如表所示:

在这里插入图片描述
很明显,如果我对第一个参数的值分别取从-99到99的199个数,第二个参数的值分别取从-99到99的199个数,不可能对两位数相加的所有情况进行穷举测试。
如果不能进行穷举测试,我们将面临以下问题:
在测试了1+1, 1+2, 1+ (-1) 和1+ (-2) 之后,还是否有必要测试1+3,1+4呢?
如果不对加法计算器程序进行穷举测试,能否放心的认为所有的参数组合都是正确的呢?
所以需要使用等价类划分法

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

◆一个有效数据的等价类,两个无效数据等价类
◆有效数据等价类就是:由那些对程序的规格说明有意义的、合理的输入数据所构成的集合
◆无效数据等价类就是:那些对程序的规格说明不合理的或无意义的输入数据所构成的集合
在这里插入图片描述

  • STEP2:建立等价类表 (类似于测试的依据)
    ◆在实际工作中,我们通常在确立了等价类以后,把程序中所有的等价类建立等价类表,以便在编写测试用例的时候有所依据
    在这里插入图片描述
  • STEP3:确定测试用例

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

  • STEP4:细化等价类划分

( 如果发现划分的各元素在程序中处理的方式不一样,还需要进行再一次细化)
◆在测试“-99<=数值<=99"的这个等价类区间的时候
◆我们会发现如10 + 40,-20+ 30和-30+(-30)这类的正数
相加,正数负数相加,负数相加也是不同的等价区间 (如果用二进制的话,这两个是不同的,是有算法差异的。)
因此可以做更多的等价类划分,现在有两个有效两个无效的等价类,将相加的数分为了正数和负数:
在这里插入图片描述

完善测试用例:
在这里插入图片描述其实可以更加细化,比如输入的数字,中文,特殊字符,所以无效等价类可以更细化。

根据前面的等价类方法,我们按照测试用例表给出的测试用例进行了测试,没有发现问题,那么在程序上线后,如果出现以下问题,为什么程序提示输入的数据有误了呢?

在这里插入图片描述
因为只考虑范围 ,不考虑边界
在下一节的边界法会给出更好的方案

例2:余额宝提现

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

在这里插入图片描述

设计用例:
在这里插入图片描述
再次分析过程:
细致分析需求,日限额1w,所以要区分两个场景(第一次和第n次提现)
在这里插入图片描述

例3:三角形测试用例设计

转载自:
https://blog.csdn.net/xuhongge/article/details/2632172
以三角形测试为例:输入3个整数做为三角形的三个边,通过程序判定三角形的类型。
在三角形计算中,要求三角形的三个边长:A B C 。

      1、 当三边不可能构成三角形时提示错误,可构成三角形时计算三角形周长。
      2、若是等腰三角形打印“等腰三角形”, 若两个等腰的平方和等于第三边平方和,则打印“等腰直角三角形”。
      3、若是等边三角形,则打印:“等边三角形”。
      4、画出程序流程图并设计一个测试用例。

分析一下:

         1、构成三角形的条件:任意两边之和大于第三边;

         2、构成等腰三角形的条件:任意两边相等;

        3、构成等腰直角三角形的条件:任意两边相等,而且两条边的平方和等于第三边的平方和;

        4、构成等边三角形的条件:三条边都相等。

在这里插入图片描述
测试用例:
在这里插入图片描述

发布了82 篇原创文章 · 获赞 7 · 访问量 4175

猜你喜欢

转载自blog.csdn.net/sunshine612/article/details/105279142
今日推荐