# 【测试用例设计方法】看完就会之:等价类边界值

等价类

等价类定义:某个输入域的子合集,该子集中的数据对于揭示程序的错误是等价的(强化:子集内的所有输入得到的输出一样)
等价类设计定义:把程序的输入域划分成不同等价类,列出等价表,从每一个等价类中选取少数具有代表性的数据,形成用例,其输出与预期结果一一对应。
优点:以较少的具有代表性的数据进行测试,有效覆盖需求规则,测试效果良好。
为加强程序可靠性,引入有效等价类和无效等价类概念;
有效等价类——合理的、有意义的输入数据
无效等价类——不合理的、无效的输入数据

有效等价类通常有限易识别,用来验证基本功能,而无效等价类的识别是设计中的重点
划分规则

  1. 子集互不相交,保证一种形式的无冗余性
  2. 子集的并集是全集,保证覆盖的全面
    具体示例
    最简单的就是单独数值的输入,例如请输入学生成绩,范围[0,100];
    # 【测试用例设计方法】看完就会之:等价类边界值_第1张图片

类似的是固定数值的输入,例:请输入1、2、3、4这四个数;这种场景就需要重点综合考虑输入框的规则来识别无效等价类

当输入的规则特别多的时候,不要慌,按照规则表述一条条列出来,再来区分有效还是无效。

​ 例:请输入最大长度是6的数字或字母

​ 识别需求中的两条规则,

  1. 输入最大长度是6

  2. 输入是数字或字母
    ​ 很容易得到两个有效等价类,然后在若干规则后去思考对应的无效值有哪些情况
    # 【测试用例设计方法】看完就会之:等价类边界值_第2张图片

要注意规则中的隐性条件
​ 例:请输入2010到2015年的年月日
示例中年月日之间有隐性条件每年分大小月和闰月,所以需要从这个角度加以区分
# 【测试用例设计方法】看完就会之:等价类边界值_第3张图片

输出用例

有效等价类的输入都能得到合理而有意义的结果,不会走报错、中断程序等各式各样的异常处理逻辑

因此秉持尽可能多的去覆盖有效的等价类的原则

而无效等价类,因为在用户和程序交互的过程中,需要感知具体是什么导致的程序中断,为啥没得到用户想要的效果

原则则是每次只覆盖一个无效等价类,使其与预期结果一一对应

等价类的测试设计方法也可以用在输出上

重点回顾

  1. 保持等价类内的代表性数据可以代表这一类输入;
  2. 划分等价类时保持各等价类的并集是全集(实际测试过程会遗漏无效等价类,即出现没考虑到的场景,这个后续走问题回溯就行)
  3. 注意规则中的“陷阱”:隐性条件

PS:等价类的测试设计方法非常通用,可以说是测试设计方法的基石,把无穷无尽的输入可能,根据规则,就变成了有限的可操作的,极大的减少了测试的工作量,你想想,穷尽测试是不可能滴!~ 实际运用上会将等价类和其他测试设计方法组合起来,个人理解就是通过等价类的优点把繁复的场景简化,然后根据需要去灵活运用。下面介绍和等价类最容易组合的一种。

边界值

人们从长期的测试工作经验得知,大量的错误是发生在输入或输出范围的边界上,而不是在输入范围的内部——“万物起源~”

定义:对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。

简单讲,边界值就是在等价类的基础上,聚焦容易出问题的边界

可以说是人类的经验和智慧。你随机选择的代表性数据不能说明问题是吧,那就专门选边界上的值~ 通常采用边界值设计的类型包括数字、字符、位置、重量、大小、速度、方位、尺寸、空间等,这些类型经过等价类一划分,已经很简明了,但是如何选择具体测试输入的值,让人犯难。

因此,引入边界值内点、上点、离点的概念

内点:最好理解,该等价类范围内的点都算内点(去掉上点、离点之后)

上点:可以从字面理解,边界上的点就是上点,不管是开区间还是闭区间

离点:离上点最近的一个点,如果边界是封闭的,那么离点就是域范围外离上点最近的一个点,如果边界是开放的,那么离点就是域范围内离上点最近的一个点(关键词:离上点最近,记住这个,然后去看区间的开闭情况)

搞定了这三类点的意义,就可以很轻松的在等价类中去选择你最“心仪”的数值了,还等什么,赶紧用等价类边界值的方法设计起来吧!

你可能感兴趣的:(测试用例)