黑盒测试方法|测试用例的设计方法--等价类划分方法

article/2025/10/3 4:47:55

黑盒测试方法–测试用例的设计方法–等价类划分方法

目录

  • 等价类划分方法
  • 边界值分析方法
  • 错误推测方法
  • 因果图方法
  • 判定表驱动分析方法
  • 正交实验设计方法
  • 功能图分析方法
  • 场景设计方法

等价类划分方法

一、方法简介
(1)定义
把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒测试用例设计方法。

(2)划分等价类:
等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试,因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件就可以用少量代表性的测试数据取得较好的测试结果。等价类划分可有两种不同的情况:有效等价类和无效等价类。

  1. 有效等价类
    是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。

  2. 无效等价类
    与有效等价类的定义恰巧相反。无效等价类指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能有多个。

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

(3)划分等价类的标准

  1. 完备测试、避免冗余;
  2. 划分等价类重要的是:集合的划分,划分为互不相交的一组子集,而子集的并是整个集合;
  3. 并是整个集合:完备性;
  4. 子集互不相交:保证一种形式的无冗余性;
  5. 同一类中标识(选择)一个测试用例,同一等价类中,往往处理相同,相同处理映射到"相同的执行路径"。

(4)划分等价类的方法

  1. 在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。如:输入值是学生成绩,范围是0~100;
  2. 在输入条件规定了输入值的集合或者规定了"必须如何"的条件的情况下,可确立一个有效等价类和一个无效等价类;
  3. 在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。
  4. 在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。例:输入条件说明学历可为:专科、本科、硕士、博士四种之一,则分别取这四种这四个值作为四个有效等价类,另外把四种学历之外的任何学历作为无效等价类。
  5. 在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则);
  6. 在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类。

在这里插入图片描述

(5)设计测试用例
在确立了等价类后,可建立等价类表,列出所有划分出的等价类输入条件:有效等价类、无效等价类,然后从划分出的等价类中按以下三个原则设计测试用例:

  1. 为每一个等价类规定一个唯一的编号;
  2. 设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止;
  3. 设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。

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

1、分析题目中给出和隐含的对输入条件的要求:
(1)整数 (2)三个数 (3)非零数 (4)正数
(5)两边之和大于第三边 (6)等腰 (7)等边

2、如果 a 、 b 、 c 满足条件( 1 ) ~ ( 4 ),则输出下列四种情况之一:

  1. 如果不满足条件(5),则程序输出为 " 非三角形 " 。
  2. 如果三条边相等即满足条件(7),则程序输出为 " 等边三角形 " 。
  3. 如果只有两条边相等、即满足条件(6),则程序输出为 " 等腰三角形 " 。
  4. 如果三条边都不相等,则程序输出为 " 一般三角形 " 。

3、列出等价类表并编号👇
在这里插入图片描述
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)

5、覆盖无效等价类的测试用例👇
在这里插入图片描述

(2)例子2
设有一个档案管理系统,要求用户输入以年月表示的日期。假设日期限定在1990年1月~2049年12月,并规定日期由6位数字字符组成,前4位表示年,后2位表示月。现用等价类划分法设计测试用例,来测试程序的"日期检查功能"。

1、划分等价类并编号,下表等价类划分的结果👇

输入等价类有效等价类无效等价类
日期的类型及长度①6位数字字符②有非数字字符、③少于6位数字字符、④多于6位数字字符
年份范围⑤在1990~2049之间⑥小于1990、⑦大于2049
月份范围⑧在01~12之间⑨等于00、⑩大于12

2、设计测试用例,以便覆盖所有的有效等价类在表中列出了3个有效等价类,编号分别为①、⑤、⑧,设计的测试用例如下:

测试数据期望结果覆盖的有效等价类
200211输入有效①、⑤、⑧

3、为每一个无效等价类设计一个测试用例,设计结果如下:

测试数据期望结果覆盖的无效等价类
95June无效输入
20036无效输入
2001006无效输入
198912无效输入
200401无效输入
200100无效输入
200113无效输入

(3)例子3
NextDate 函数包含三个变量:month 、 day 和 year ,函数的输出为输入日期后一天的日期。 例如,输入为 2006年3月 7日,则函数的输出为 2006年3月8日 。要求输入变量 month 、 day 和 year 均为整数值,并且满足下列条件:
①1≤month≤12
②1≤day≤31
③1920≤year≤2050

1、有效等价类

有效等价类
M1={月份:1≤月份≤12}
D1={日期:1≤日期≤31}
Y1={年:1812≤年≤2012}

2、若条件 ① ~ ③中任何一个条件失效,则 NextDate 函数都会产生一个输出,指明相应的变量超出取值范围,比如 "month 的值不在 1-12 范围当中 " 。显然还存在着大量的 year 、 month 、 day 的无效组合, NextDate 函数将这些组合作统一的输出: " 无效输入日期 " 。其无效等价类为:

无效等价类
M2={月份:月份<1}
M3={月份:月份>12}
D2={日期:日期<1}
D3={日期:日期>31}
Y2={年:年<1812}
Y3={年:年>2012}

3、弱一般等价类测试用例

月份日期预期输出
61519121912年6月16日

强一般等价类测试用例同弱一般等价类测试用例
注:弱–有单缺陷假设;健壮–考虑了无效值

4、弱健壮等价类测试

用例ID月份日期预期输出
WR161519121912年6月16日
WR2-1151912月份不在1~12中
WR313151912月份不在1~12中
WR46-11912日期不在1~31中
WR56321912日期不在1~31中
WR66151811年份不在1812~2012中
WR76152013年份不在1812~2012中

5、强健壮等价类测试

用例ID月份日期预期输出
SR1-1151912月份不在1~12中
SR26-11912日期不在1~31中
SR36151811年份不在1812~2012中
SR4-1-11912两个无效一个有效
SR56-11811两个无效一个有效
SR6-1151811两个无效一个有效
SR7-1-11811三个无效

(4)例子4
佣金问题等价类测试用例,它是根据佣金函数的输出值域定义等价类,来改进测试用例集合。

销售额佣金
销售额≤1000元佣金10%
1000<销售额≤1800佣金=100+(销售额-1000)*15%
销售额>1800佣金=220+(销售额-1800)*20%
测试用例枪机(45)枪托(30)枪管(25)销售额佣金
155550050
21515151500175
32525252500360

根据输出域选择输入值,使落在输出域等价类内,可以结合弱健壮测试用例结合。


http://chatgpt.dhexx.cn/article/KPj6lHq1.shtml

相关文章

软件测试:等价类划分举例

等价类的设计思路&#xff1a; 根据输入条件&#xff0c;确定等价类&#xff0c;包括有效等价类和无效等价类&#xff0c;建立等价类列表为每个等价类规定一个唯一的编号设计一个测试用例&#xff0c;使其尽可能多地覆盖尚未被覆盖的有效等价类&#xff0c;重复这一步&#xff…

等价类划分法-案例剖析-设计测试用例

目录 等价类划分法概念 有效等价类和无效等价类 等价类设计测试用例步骤 案例1 案例2 案例3 等价类划分法概念 等价类划分法是把所有可能的输入数据&#xff0c;即程序的输入数据集合划分成若干个子集即等价类&#xff0c;然后从每个等价类中选取少量具有代表性的数据作为…

15.3-等价类划分

目录 一、等价类划分的概念 二、使用等价类划分的原因 三、等价类划分的价值 四、相关概念 1、等价类 2、有效等价类 3、无效等价类 五、等价类划分法使用步骤 六、等价类的划分原则 1、原则1 2、原则2 3、原则3 4、原则4 5、原则5 6、原则6 七、测试用例的设计步骤 八、等价类…

软件测试用例设计 (一)等价类划分法

软件测试对于软件的重要性不言而喻&#xff0c;是计算机类学生毕业后的一个重要从业方向之一。 如果要从事软件测试&#xff0c;那么有些必备的技能还是要有的。比如&#xff0c;测试理论、测试工具、测试文档的编制。 今天我们就来看看最最最重要的测试理论&#xff1a;黑盒…

测试用例设计——等价类划分法

一、分析问题 如果我们需要对下面的这个两位数加法器设计测试用例&#xff0c;在测试了1&#xff0b;1&#xff0c;1&#xff0b;2&#xff0c;&#xff08;-1&#xff09;1和&#xff08;-1&#xff09;&#xff0b;2之后&#xff0c;是否有必要测试1&#xff0b;3&#xff0c…

等价类划分法设计用例(超详细)

等价类划分法 等价类&#xff1a; 1、解决了不能穷举测试的问题、控制成本、控制测试用例数量 2、数据值要明确&#xff0c;对文字敏感 3、依据需求将输入划分为若干个等价类&#xff0c;划分等价类&#xff08;需求、数据特征&#xff09; 等价类设计用例的难点&#xff1a;…

测试用例设计方法 之【等价类划分法】

前言&#xff1a; 在没有测试用例之前&#xff0c;团队里的成员进行测试时&#xff0c;完全“以人为本”&#xff0c;根据个人思路、需求理解度、发散性思想来完成测试系统&#xff0c;人无完人&#xff0c;弊端显而易见。衍生出【测试用例】后&#xff0c;测试工作的目标得到…

等价类划分法测试用例设计举例

一、基本概念 等价类是指程序输入域的子集。 等价类划分&#xff08;Equivalance Partitioning&#xff09;测试的思想&#xff1a;将程序的输入域划分为若干个区域&#xff08;等价类&#xff09;&#xff0c;并在每个等价类中选择一个具有代表性的元素生成测试用例。该方法…

等价类划分测试用例设计方法

一.方法简介 1.定义 是把所有可能的输入数据,即程序的输入域划分成若干部分&#xff08;子集&#xff09;,然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒测试用例设计方法。 2.划分等价类 等价类是指某个输入域的子集合。在该子集合…

编写测试用例方法之等价类划分法

今天我们再来介绍另外一个编写测试用例的方法&#xff1a;等价类划分法&#xff0c;这个方法是最常用的写用例的方法。话不多说&#xff0c;开始整干货&#xff0c;首先&#xff0c;全图镇楼。 之前我们是如何测试一个商品的呢&#xff1f;产品就是要有它的测试点。测试点之前也…

等价类划分法设计测试用例

等价类划分法&#xff1a; 一、方法简介 1.定义 是把所有可能输入的数据&#xff0c;即程序的输入域划分策划国内若干部分&#xff08;子集&#xff09;&#xff0c;然后从每一个子集中选取少数具有代表性的数据作为测试用例。方法是一种重要的、常用的黑盒测试用例设计方法…

常用测试用例设计方法5-错误推算法

一&#xff0c;错误推算法的定义 基于测试人员的经验和直觉推测推测程序中所有可能存在的各种错误&#xff0c;有针对性的设计测试用例的方法。 二&#xff0c;错误推算法的基本思想 基于测试人员的经验和直觉推测推测程序中所有可能存在的各种错误&#xff0c;有针对性的设计…

测试用例设计--等价类的几个例子

等价类的设计思路: 根据输入条件,确定等价类,包括有效等价类和无效等价类,建立等价类列表为每个等价类规定一个唯一的编号设计一个测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类被覆盖完为止设计一个测试用例,使其尽可能多的覆盖…

理解:守护线程---理解

定义&#xff1a;守护线程--也称“服务线程”&#xff0c;在没有用户线程可服务时会自动离开。 优先级&#xff1a;守护线程的优先级比较低&#xff0c;用于为系统中的其它对象和线程提供服务。 设置&#xff1a;通过setDaemon(true)来设置线程为“守护线程”&#xff1b;将一…

并发编程线程基础知识:守护线程

什么是守护线程 守护线程–也称“服务线程”&#xff0c;它是后台线程&#xff0c;在没有用户线程可服务时会自动离开。 守护线程优先级 守护线程的优先级比较低&#xff0c;用于为系统中的其它对象和线程提供服务。 如何设置守护线程 通过 setDaemon(true)来设置线程为“…

Java 守护线程的作用 Java 守护线程线程

Java 守护线程的作用 Java 守护线程线程 一、概述 在看java线程相关的内容时&#xff0c;有一个 daemon thread 守护线程的概念&#xff0c;看方法注释内容&#xff0c;大意是&#xff1a;将此线程标记为守护线程或用户线程。当运行的所有线程都是守护线程时&#xff0c;Java虚…

多线程中守护线程的使用

java中线程分为非守护线程(用户线程)和守护线程(后台线程) 一、setDaemon(boolean on) java线程中对于守护线程的使用主要是依靠setDaemon(boolean on)方法 方法作用: 将此线程设置为守护线程 守护线程使用上与普通线程没有区别, 但是在结束上有一点不同, 当一个进程中所有…

python守护线程

启用守护线程 守护线程&#xff0c;又称后台线程&#xff0c;它是在后台运行的&#xff0c;如果所有前台线程都死亡&#xff0c;那么后台线程就会自动死亡。 import threadingdef run(n):for i in range(n):print(threading.current_thread().name " " str(i)) …

多线程-守护线程

守护线程&#xff08;daemon&#xff09;&#xff1a; 线程分为用户线程&#xff08;如main线程&#xff09;和守护线程&#xff1b; 虚拟机必须确保用户线程执行完毕&#xff0c;而不会等待守护线程执行完毕&#xff1b; 守护线程有&#xff1a;记录操作日志的线程、监控内存的…

守护线程是什么?守护线程和非守护线程的区别是?守护线程的作用是?

守护线程是区别于用户线程&#xff0c;用户线程即我们手动创建的线程&#xff0c;而守护线程是程序运行的时候在后台提供一种通用服务的线程。垃圾回收线程就是典型的守护线程。 守护线程和非守护线程的区别是 public static void main(String[] args) throws InterruptedExce…