15.3-等价类划分

article/2025/10/3 4:41:07

目录

一、等价类划分的概念

二、使用等价类划分的原因

三、等价类划分的价值

四、相关概念

1、等价类

2、有效等价类

3、无效等价类

五、等价类划分法使用步骤

六、等价类的划分原则

1、原则1

2、原则2

3、原则3

4、原则4

5、原则5

6、原则6

七、测试用例的设计步骤

八、等价类划分法考点

1、等价类划分的原则

2、等价类划分设计测试用例的步骤

九、举例说明等价类的应用


一、等价类划分的概念

  • 依照《需求规格说明书》的描述,找出程序所有的输入形成一个集合( 输入域);
  • 然后依照程序的输入域划分出若干个子集,从每个子集中选出一个或者少数的测试数据代表对这个区域进行测试。

二、使用等价类划分的原因

  • 通过较少的测试用例达到了尽量多的测试覆盖,解决了不能穷举测试的问题。
  • 例如如果一个子集中的测试数据代表 测试通过了,则认为该测试数据所代表的整个子集测试通过了。

三、等价类划分的价值

  • 能够有效的减少工作量,提高了工作效率,同时也保证了测试的覆盖强度。

四、相关概念

1、等价类

  • 等价类指某个输入域的子集。
  • 在该子集合中,各个输入数据对于揭露程序中的缺陷都是等效的(如果一个元素能够发现软件缺陷,其余的元素也可以;如果这个元素不可以的话,其余的元素也不能发现软件的缺陷)。

2、有效等价类

  • 指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合;
  • 指用户输入的有效数据,并得到预期的或正常的结果;
  • 利用有效等价类验证程序是否实现了《需求规格说明书》中所规定的的功能和性能。

3、无效等价类

  • 指对程序的规格说明来说是不合理的、或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能多个。
  • 异常的或不符合规定的输入,相应的也会得到异常的输出或提示信息。

五、等价类划分法使用步骤

1、先从程序规格说明书中找出各个输入条件

  • 从需求规格说明书中找出所有的输入条件;有些输入条件是明确的,有些是隐含的,这些都要找出来。

2、再为每个输入条件划分等价类(划分时需遵循等价类的划分原则),形成若干互不相交的子集

3、列出等价表

六、等价类的划分原则

原则2+原则6可以得到原则4。
原则1中有效范围的指遇到程序分别处理时,也要参考原则6对有效范围进行进一步的划分。

1、原则1

  • 在输入条件规定了 取值范围值的个数的情况下,可以确定一个有效等价类和两个无效等价类。
  • 例如输入条件中规定输入的数据需在[1,10]之间;那么一个1~10(包括1和10)之间的数值都是有效等价类;那么小于1或者大于10的数值都是无效等价类。

2、原则2

  • 在输入条件规定了 输入值的集合或者规定了“ 必须如何”的条件的情况下,可以确立一个有效等价类和一个无效等价类。
  • 例如公司职级必须是按照初级、中级、高级进行划分;那么有效等价类就是初级、中级、高级中任意数值;无效等价类就是输入大师级。

3、原则3

  • 在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价来。

4、原则4

  • 在规定了 输入数据的一组值(假定n个),并且程序要对每一个输入值 分别处理的情况下,可确定n个有效等价类和一个无效等价类。
  • 例如公司规定了出差期间乘坐公交、地铁、出租车都是可以报销的,但是报销的比例不同,公交100%报销、地铁90%报销、出租车80%报销,除此之外其他类型的交通工具不予报销;那么输入数据为(公交,地铁,出租车)时,3个有效等价类公交、地铁、出租车须分别进行测试;交通工具为飞机时是无效等价类。

5、原则5

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

6、原则6

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

七、测试用例的设计步骤

1、为每个等价类规定一个唯一编号
2、设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类。重复这一步,最后使得所有有效等价类均被测试用例所覆盖。
  • 一个测试用例可以覆盖1~n个有效等价类。
  • 一个测试用例可以覆盖多个有效等价类的原因:通过有效等价类是为了验证程序功能的正确性。
3、设计一个新的测试用例,使其只覆盖一个无效等价类。重复这一步使所有无效等价类均被覆盖。
  • 一个测试用例只可以覆盖一个无效等价类。
  • 一个测试用例不可以覆盖多个无效等价类的原因:无效等价类系统不会接收,输入后系统会发生错误;当一个测试用例覆盖2个无效等价类时,程序会出现 错误的遮掩情况,出现错误掩盖时就无法判断是哪个无效等价类产生的错误信息。
  • 错误掩盖情况:假设无效等价类a、b分别对应错误信息a、b;当等价类a判断正确时才会去判断等价类b输入程序是否正确;但是无效等价类a输入程序已经报错了,根本不会再去判断等价类b,所以错误信息中只包含无效等价类a的错误信息,其实无效等价类b也是错误的。

八、等价类划分法考点

1、等价类划分的原则

 

2、等价类划分设计测试用例的步骤

九、举例说明等价类的应用

规格说明:
一个软件中要求用户输入以年月表示的日期,假定日期的输入范围限定在2000年1月至2100年12月之间,并且规定日期由6位数字字符组成,前4位表示年,后2位表示月,那么对应的“日期输入格式检查”这一功能的等价类。
注意:基于等价类划分法,有效等价类的测试用例确实应该只有一条,但这里加入了边界值的思想,所以写了3条测试用例,边界值法后续的文章会详细介绍。

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

相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

多线程中守护线程的使用

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

python守护线程

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

多线程-守护线程

守护线程(daemon): 线程分为用户线程(如main线程)和守护线程; 虚拟机必须确保用户线程执行完毕,而不会等待守护线程执行完毕; 守护线程有:记录操作日志的线程、监控内存的…

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

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

JAVA多线程——守护线程

在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) 用个比较通俗的比如,任何一个守护线程都是整个JVM中所有非守护线程的保姆: 只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作&#…

java守护线程 作用_Java中守护线程的总结

在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) 用个比较通俗的比如,任何一个守护线程都是整个JVM中所有非守护线程的保姆: 只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作&#xf…

【线程】什么是守护线程?

Java提供了两种线程:守护线程和用户线程 守护线程,是指在程序运行时 在后台提供一种通用服务的线程,这种线程并不属于程序中不可或缺的部分。通俗点讲,任何一个守护线程都是整个JVM中所有非守护线程的"保姆"。 用户线…