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

article/2025/10/3 5:46:05

今天我们再来介绍另外一个编写测试用例的方法:等价类划分法,这个方法是最常用的写用例的方法。话不多说,开始整干货,首先,全图镇楼。

之前我们是如何测试一个商品的呢?产品就是要有它的测试点。测试点之前也说过,从它的外观、性能、功能还有安全性、易用性,可扩展性和兼容性这几个方面,对它进行测试点的总结。但是一个产品,它的每一个测试点其实都可以扩展成一个测试用例。

从测试点到测试用例之间,并不是直接把测试点这一句话然后拿过来就可以当测试用例。因为测试点是比较笼统的一个概念。它仅仅说了要测的某一个点,并没有说这一个点里面的输入输出是什么?

数据是什么,步骤都没有。所以需要进一步对测试点进行详细的阐述。然后这个过程就是阐述。阐述完之后所得的结果就是测试用例,针对这个测试点的阐述,具体的方法可以用等价类划分。

等价类划分法可以对测试点进行阐述,经过等价类划分法之后,可以得到很多的测试用例。那么这个等价类划分法是什么方法呢?简单来说就是穷尽可能性,并且找出代表,这就是等价类划分法。

穷尽可能性就是比如说年龄,一个输入框里面需要输入年龄,它的取值范围是 20 岁到 99岁。这时候我们按照等价类划分法的第一条原则就是穷尽可能性,那就是这个输入框里面可以写任何数。

可以写 20 岁以下的,也可以写 20 岁以上的,可以写 99 岁以下的,也可以写 99岁以上的,这都是他的任何可能性。

 第二个就是找出代表,因为现在分了几批,有 20 岁以下的第一批 ,20 岁到 99岁第二批 ,99岁以上第三批。这每一批当中之所以把它分成批次,是因为每一批里面都是一样的。因为17、18、19都是小于 20 的,这是同样的类型。

20 到 99 是大于 20 小于 99 的,比如说30、40、50、60,都是符合的。然后99以上的就是101,102到103,这些都是一样的等价的。所以根据第二个原则就是找出代表,那么就要在这三个批次里面找出代表,因为每个批次里面都是等价的。

比如二十岁以下的,取 17、18 和取 19 或 20 都是一样的效果,他们代表的都是 20 岁以下。所以就找一个代表,比如说 20 岁以下的,取一个值是17,20 岁到 99 岁取一个数,数值是25。然后 99 岁以上的,取的值是103,这就是找出的代表。

根据这个代表,就可以划分为有效等价类和无效等价类,既然找出代表了,就可以拿这些代表直接写测试用例。

 为什么还要划分有效和无效呢?因为我们分了3批,要求就是 20 到 99 岁这个范围之内的,要求的就是有效的,要求之外就是无效的。我们这三个批次有两个是要求之外的,比如说小于 20 岁或是大于 99 岁,这是要求之外的,就是无效的。

把无效的那个批次作为无效等价类,有效的批次就放到有效等价类。所以有效等价类就是 20 到99,无效等价类就是小于 20 大于99。其实一开始分批次的时候,没有直接用有效等价类或者无效等价类,是因为按照经验,这是比较显眼的一个事情。

因为 20 到 99 显然能够分成三段,就是 20 岁以下, 20 到 99 这一段,然后 99  以上这三段。但是实际上等价类划分,就直接是按照有效等价类和无效等价类来的,不按照我们平常的那种经验来。就是有效等价类,就是对于他给的条件就是属于有效的。

 比如他给的条件就是 20 到99,那无效等价类就是对它这个条件取反。20 到 99 那取反就是小于20,是取反的情况。那 20 到 99 取反,大于99,就是区分的另一个情况。还有年龄肯定是一个整数,这个整数是属于有效等价类的,那无效等价肯定就取反就非整数。

所以非整数的话,那小数、复数、中文、英文、特殊字符、空格什么的都是非整数,所以这些都可以作为无效等价类。这样的话,有效等价类我们在有效等价类里面,比如说 20 到 99 找一个代表值,就是比如说25,然后 15 那是无效等价类,因为小于 20 。

大于 99 的取101,取的这个值就是一个代表值。还有非整数取得的小数、负数、中文也是这些代表值。把这些代表值一一罗列出来,就可以作为测试用例的测试点了。所以最后我们就形成了一个表格,就是有输入条件。

比如说 20 到 99 是输入条件,有效等价类就是 20 到 99 之间的年龄,反效值就取一个代表值,20 到 99 取反会有两种取反情况,就是小于 20 大于 99 这两种。而整数取反就是会有小数、负数、中文、英文、特殊字符这几种情况。

 对于这种无效等价类,每个类它都有一个代表。所以在小于 20 取代表可能取个18,大于 99 取个101,然后小数取个代表。0.1、0.2都行,负数,-1、-2,中文,随便一个中文都行。

所有的一些无效等价类的取值和有效等价类的取值取多少值,就有多少个测试用例。比如说我们在写测试用例的时候,它有一个表格,测试用例有个表格,这个表格也是比较固定的。它有一个表头,就是测试编号,测试模块,前置条件,测试环境,操作步骤和数据。

预测实际结果是否通过备注,这是它的表头。然后根据这个测试编号,比如说我们当前第一个测试用例就写 1 。测试模块,是因为这个功能是年龄输入的模块,所以我们就可以写年龄输入模块。前置条件基本上就是网络正常。

 就是首先是在网络环境下进行测试的,这是前置条件。测试环境就是你用什么样的操作系统,以及用什么样的浏览器,操作步骤,就是你怎样拿着这个数值进行测试的。

 比如说这一个年龄输入模块,他肯定先给你一个地址 URL 输入到浏览器里面,你还能打开这个模块看到这个界面,然后它会有一个输入框。第二步就是在这个输入框里面输入你要测试的那个值,这个值之前也说过,有效等价类和无效等价类的代表值。

要把这个值比如说输入一个有效等价类的值,25。第三步就是点击提交按钮,这时候你要注意了,操作步骤和预期结果是一对一的关系。一对一就是每一个操作步骤都有一个对应的结果,比如第一步是输入一个网址,这时候预期结果就是输入网址,能正常打开。

第二步就是输入年龄,这时候的预期结果就是能正常输入年龄。第三步就是提交,看是否成功。对应的第三步的预期结果就是系统提示输入数据有效,并且提示提交成功。就是步骤每一步都必须要有一个结果,你不能跳过。

很多人可能就是操作步骤写了一二三,但是最后预期结果只写了最后一步的提交按钮的结果,而其它的结果都不提。如果不提其他结果的话,那万一最终结果可能是其他没提的那些原因导致的,这时候就无法说清楚你这个测试用例是否有效。

所以说的每一句话都有凭有据,所以才会避免不必要的争执。一切以测试用例为主,就比较明明白白,不会有各种各样浪费时间的沟通成本。以上就是关于等价类划分法的介绍,你学废了吗?这个方法在测试人员的实际工作中,是使用率最高的方法,方便有效。下期我们将介绍更多的编写测试用例的方法,敬请期待!

 


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

相关文章

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

等价类划分法: 一、方法简介 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中所有非守护线程的"保姆"。 用户线…

JAVA多线程基础篇--守护线程(Daemon Thread)

1.概述 JAVA中的线程主要分为两类:用户线程(User Thread)和守护线程(Daemon Thread)。JAVA语言中无论是线程还是线程池,默认都是用户线程,因此用户线程也被称为普通线程。守护线程也被称之为后台线程、服务线程或精灵…

面试官: 谈谈什么是守护线程以及作用 ?

文章首发自微信公众号: 小哈学Java 个人网站: https://www.exception.site/java-concurrency/java-concurrency-daemon-thread 目录 一、什么是守护线程 二、守护线程的作用及应用场景 三、总结 一、什么是守护线程 守护线程相对于正常线程来说,是比较特殊的一…

入门oracleDBA面试题

1.默认情况下管理员创建了一个用户,就会在 /home 下创建一个用户的主目录 2.当用mount进行设备或文件挂载时,需要用的设备名称位于 /dev 位置。 3.列出目录所有目录里的所有文件ls -l 4.Su 可以讲普通用户转换为超级用户,但是需要密码 5.…

oracle面试题答案,Oracle面试题笔试题及参考答案

一套Oracle面试题笔试题及参考答案 Oracle, 笔试, 面试 完成下列操作,写出相应的SQL语句 1.创建表空间neuspace,数据文件命名为neudata.dbf,存放在d:\data 目录下,文件大小为200MB,设为自动增长,增量5MB&am…

一个oracle面试题

某天,群里突然冒出一个道友询问oracle的面试题,特此记录一下 一系列过程: 第一步建表: DROP TABLE serv; DROP TABLE terminal; CREATE TABLE serv(serv_id NUMBER(10),prod_id NUMBER(10),user_type VARCHAR2(30),terminal_na…

oracle试题和答案,Oracle面试题及答案

Oracle面试题及答案模块和题目 l基本SQL查询 l运算符与函数 l子查询 l连接查询 建表语句emp.sql PartI(第一天) 01.查询员工表所有数据,并说明使用*的缺点 答: select*fromemp; 使用*的缺点有 a)查询出了不必要的列 b)效率上不如直接指定列名 02.查询职位(JOB)为PRE…

Oracle面试题整理

目录 Oracle面试题整理 1.MySQL和Oracle的区别: 2.Oracle中function和procedure的区别? 3. 比较truncate和delete命令 ? 4.oralce中 rowid, rownum的定义 5. 事务的特性(ACID)是指什么 6. 列举几种表连接方式…