等价类划分法

发布时间:2024年01月08日

1、等价类划分法的介绍和概念

  • 划分

指互不相交的一组子集,这些子集的并是整个集合。

对测试的意义:完备性和无冗余性。

  • 等价类

等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,具有等价特性。

  • 等价类合理地假设

测试某等价类的代表值就等于对这一类其它值的测试。

  • 等价类划分

等价类划分是一种典型的黑盒测试方法。

等价类测试方法是把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一部分中选取少数有代表性的数据作为测试用例。使用等价类划分方法设计测试用例要经历划分等价类(列出等价类表)和选取测试用例两步,它将不能穷举的测试过程进行合理分类,从而保证设计出来的测试用例具有完整性和代表性。

2、等价类的类型划分

等价类划分可有两种不同的情况:有效等价类和无效等价类。

  • 有效等价类

是指对于程序的需求规格说明来说是合理的,有意义的输入数据构成的集合。

利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能(确认过程)。

  • 无效等价类(与有效等价类的定义恰巧相反)

是指对于程序的需求规格说明来说是不合理的,无意义的输入数据构成的集合。

利用无效等价类可检验程序对于无效数据的异常处理能力(检验过程)。

设计测试用例时,要同时考虑这两种等价类。因为,软件不仅要能接收合理的数据,也要能经受意外的考验。这样的测试才能确保软件具有更高的可靠性。

? ? ? ? ? ? ? ? ? ??

3、等价类测试用例的类别

根据测试用例的完整性可以划分

  • 弱等价类测试

弱一般等价类测试
弱健壮等价类测试

  • 强等价类测试

强一般等价类测试
强健壮等价类测试

PS:健壮性测试

健壮性有两层含义:容错能力和恢复能力

容错性测试通常构造一些不合理的输入来引诱软件错误,例如

?输入错误的数据类型:如“猴”年“马”月

?输入定义域之外的数值

粗暴一些方式俗称“大猩猩”测试法。除了不能拳打脚踢嘴咬之外,什么招术都可以使出来。例如在测试客户机-服务器模式的软件时,把网线拔掉,造成通信异常中断。

恢复测试重点考察以下几项:

?系统能否重新运行;

?有无重要的数据丢失;

?是否毁坏了其他相关的软件硬件。

3.1弱一般等价类

遵循单缺陷原则,要求用例覆盖每一个变量的一种取值即可,取值为有效值。

3.2弱健壮等价类

在弱一般等价类的基础上,增加取值为无效值的情况。

对于有效输入,使用每个有效值类的一个值

对于无效输入,测试用例将拥有一个无效值,并保持其余的值是有效的。

3.3强一般等价类

遵循多缺陷原则,要求用例覆盖每个变量的每种取值之间的迪卡尔乘积,即所有变量所有取值的所有组合,取值为有效值

覆盖所有的等价类

有可能的输入组合中的一个

3.4强健壮等价类

在强一般等价类的基础上,增加取值为无效值的情况。

“健壮”考虑无效值,所有等价类都有考虑

“强”多缺陷假设

4、等价类划分的原则

4.1按照区间划分

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

例子:输入值是学生成绩,范围是0~100之间

有效等价类:0≤并≤100,如0,1,10等

无效等价类:<0 或 >100,如-1,101等

弱一般等价类:0~100中任意一个数为测试数据,只设计1个用例即可
强一般等价类:分为0、 1~99、 100三个等价类,需要设计3个用例
弱健壮等价类:考虑到60分在实际情况中为特殊数字,划分0、 1~99(除60外)、 100、 60四个等价类
强健壮等价类:考虑各种非法输入,如负数、其他字符等等

4.2按照数值划分

在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。

例子:输入条件说明输入学历为本科、硕士和博士3种之一

有效等价类:本科、硕士和博士其中一种

无效等价类:除要求的2种外其他字符,如小学、专科等

4.3按照数值集合划分

在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可确立一个有效等价类和一个无效等价类。

例子:密码输入框,要求密码必须是数字或字母

有效等价类:密码是数字和字母的组合(还可以细分)

无效等价类:密码包括中文、密码包括其他符号等

4.4按限制条件或规则划分

在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。

例子:校内电话号码拨外线为9开头

有效等价类:9+外线号码

无效等价类:非9开头+外线号码,9+非外线号码等

4.5细分等价类

在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类,并建立等价类表。

例子:确定了等价类后,再列表形式列出所有划分出的等价类表

5、等价类划分法的测试用例应用

按照[输入条件][有效等价类][无效等价类] 建立等价类表,列出所有划分出的等价类
为每一个等价类规定一个唯一的编号。
设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止。
设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。

6、等价类划分法的实例分析

某程序规定:"输入三个整数 a 、 b 、 c 分别作为三边的边长构成三角形。通过程序判定所构成的三角形的类型,当此三角形为一般三角形、等腰三角形及等边三角形时,分别作计算 … "。用等价类划分方法为该程序进行测试用例设计。(三角形问题的复杂之处在于输入与输出之间的关系比较复杂。)

分析题目中给出和隐含的对输入条件的要求:

(1)整数 (2)三个数 (3)非零数 (4)正数
(5)两边之和大于第三边 (6)等腰 (7)等边
如果 a 、 b 、 c 满足条件( 1 ) ~ ( 4 ),则输出下列四种情况之一:
1)如果不满足条件(5),则程序输出为 " 非三角形 " 。
2)如果三条边相等即满足条件(7),则程序输出为 " 等边三角形 " 。
3)如果只有两条边相等、即满足条件(6),则程序输出为 " 等腰三角形 " 。
4)如果三条边都不相等,则程序输出为 " 一般三角形 " 。

请各位列出等价类表并编号

覆盖有效等价类的测试用例:

a ? ? ?b ? ? ?c ? ? ? ? ? ? ?覆盖等价类号码

3 ? ? ?4 ? ? ?5 ? ? ? ? ? ? (1)--(7)

4 ? ? ?4 ? ? ?5 ? ? ? ? ? ? (1)--(7),(8)

4 ? ? ?5 ? ? ?5 ? ? ? ? ? ? (1)--(7),(9)

5 ? ? ?4 ? ? ?5 ? ? ? ? ? ? (1)--(7),(10)

4 ? ? ?4 ? ? ?4 ? ? ? ? ? ? (1)--(7),(11)

覆盖无效等价类的测试用例:

最后我邀请你进入我们的【软件测试学习交流群:785128166】, 大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路

作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:程序员二黑】自提!

文章来源:https://blog.csdn.net/apex_eixl/article/details/135459184
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。