黑盒测试用例设计方法笔记(二)-等价类划分

1 何为等价类?

  • 我们可以用一组元素来说明,比如与其等价的元素集合即为等价类;
  • 其中等价的元素其属性是一样的;
  • 而不同的等几类之间不会存在相同的元素。

2 测试思想

  • 用例设计时以具有相同的预期结果为等价划分原则,将系统的被测试域划分为不同的等价类集合,从中选出代表作为测试用例,以期达到尽可能完备同时又可避免冗余的测试。
  • 被测试域可能是输入域、输出域、输入或输出域的部分或任何其它值得测试的范围。

3 分类

分类说明
有效等价类对系统来说是有效的输入
无效等价类所有其它可能存在的情况

4 设计测试用例步骤

在这里插入图片描述

5 划分等价类说明

  • 没有标准的划分等价类的方法,不同的功能说明可能使用不同的方法;
  • 不同的等价类得到的测试用例质量不同;
  • 划分等价类可参考:

①如果某个输入条件规定值的范围,可以确定一个有效等价类和两个无效等价类
②如果输入条件规定了一个输入值的集合,可以确定一个有效等价类和一个无效等价类。
③如果输入条件是一个布尔表达式的条件,可以确定一个有效等价类和一个无效等价类
④如果输入条件定义了一个“必须”的情况,比如”标识的第一字符必须是字母”那么可以确定一个有效等价类和一个无效等价类。
⑤如果有理由确信,某一等价类中的各元素在程序中的处理有区别,那就把这个等价类分成更小的等价类。

6 确定测试用例

6.1 步骤

  • 划分等价类;
  • 为每一个有效等价类和无效等价类规定一个唯一的编号;
  • 设计一个测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类,重复这一步直到所有有效等价类均被测试用例所覆盖;
  • 设计一个测试用例,使其只覆盖一个无效等价类,重复这一步,直到所有无效等价类均被覆盖。

6.2 表示法

比如使用以下表格可以帮助快速确定测试用例:

条件有效等价类编号无效等价类编号

7 案例

7.1 功能说明

  • NextDate(年,月,日)是三个变量的函数。函数返回输入日期的下一个日期。变量年份,月份,日期都是整数值,且满足下面的条件:2000≤年≤2021,1≤月≤12, 1≤日≤31.
  • 分析和比较两种不同的等价类划分方法以及三种设计的结果

7.2 习题详解1

7.2.1 等价类及其编号
条件有效等价类编号无效等价类编号
[2000, 2021]1年<20004
年>20215
[1, 12]2月<16
月>127
[1, 31]3日<18
日>319
7.2.2 测试用例
覆盖等价类测试输入预期结果
1,2,3(2021,3,17)(2021,3,18)
4,2,3(1999,3,17)(“年输入错误!” )
5,2,3(2022,3,17)(“年输入错误!” )
1,6,3(2021,-1,17)(“月输入错误!” )
1,7,3(2021,13,17)(“月输入错误!” )
1,2,8(2021,3,0)(“日输入错误!” )
1,2,9(2021,3,32)(“日输入错误!” )

7.3 习题详解2

7.3.1 等价类及其编号
条件有效等价类编号无效等价类编号
闰年1年<200011
平年2年>202112
1,3,5,7,8,103月<113
4,6,9,114月>1214
2月5
12月6
[1, 28]7日<115
298日>3116
309
3110

7.3.2 测试用例1

覆盖等价类测试输入预期结果
1,3,7(2000,3,17)(2000,3,18)
2,4,8(2005,6,29)(2005,6,30 )
1,5,9(2000,2,30)(“日输入错误!” )
2,6,10(2005,12,31)(2006,1,1)
11,3,7(1999,1,17)(“年输入错误!” )
12,3,7(2030,1,17)(“年输入错误!” )
1,13,7(2000,-3,17)(“月输入错误!” )
1,14,7(2000,13,17)(“月输入错误!” )
1,3,15(2000,1,-17)(“日输入错误!” )
1,3,16(2000,1,32)(“日输入错误!” )

7.3.3 测试用例2

覆盖等价类测试输入预期结果
2,3,10(2005,3,31)(2005,4,1)
2,4,9(2005,6,30)(2005,7,1)
1,5,8(2000,2,29)(2000,3,1)
2,6,7(2005,12,1)(2005,12,2)
11,3,7(1999,1,17)(“年输入错误!” )
12,3,7(2030,1,17)(“年输入错误!” )
1,13,7(2000,-3,17)(“月输入错误!” )
1,14,7(2000,13,17)(“月输入错误!” )
1,3,15(2000,1,-17)(“日输入错误!” )
1,3,16(2000,1,32)(“日输入错误!” )

8 其它分类

当然用例还可以再进行补充,真正的用例个数要比以上多的多。等价类从某种程度上还可分为:

  • 弱一般等价类;

①尽可能多的覆盖所有的有效等价类,且每个被测变量的等价类至少出现一次;
②用例个数为:各个被测变量中的最大有效等价类个数。

  • 强一般等价类;

①覆盖所有被测变量有效等价类的组合;
②用例个数为:Π各个被测变量有效等价类数。

  • 弱健壮等价类;

①尽可能多地覆盖尚未覆盖的有效等价类,对于无效等价类,每个测试用例只考虑一个被测变量的无效等价类;
②用例个数为:各个被测变量中的最大有效等价类个数+Σ各个被测变量的无效等价类数。

  • 强健壮等价类。

①覆盖所有被测变量的有效等价类和无效等价类的组合;
②用例个数为:Π各个被测变量的(有效等价类数+无效等价类数)。

9 函数表示法

  • 函数y = f (x1,x2)输入变量的取值范围分别为:x1 ∈[a,d], x2 ∈[e,g] , 根据规格说明划分得相应的等价类;
  • X1:有效等价类[a, b) [b, c) [c, d];无效等价类(-∞,a), (d, +∞);
  • X2:有效等价类[e,f) [f,g];无效等价类(-∞,e), (g, +∞);
    在这里插入图片描述

【特别说明】:笔记来源于网络、各种资料、书本等,本文仅用于学习使用,不做他用,如果涉及版权问题,请联系博主删除,谢谢


【分享、共勉、共进、提升】更多、更全、更新的软件测试领域知识,请关注:
在这里插入图片描述


posted @   虫无涯  阅读(28)  评论(0编辑  收藏  举报  
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示