黑盒测试用例设计方法-等价类划分法
目录
一、等价类的作用
二、等价类的分类
三、等价类的方法
四、等价类的原则
五、按照测试用例的完整性划分等价类
六、等价类步骤
七、案例
一、等价类的作用
为穷举测试设计测试点。
穷举:列出所有的可能情况,对其一一判断。
测试点:要验证的点。比如测试登录界面:用户名为空、用户名错误、密码为空、密码错误等等。
我们不可能实现穷举测试,等价类划分法是把程序所有可能的输入数据,进行分类(有效和无效等价类),然后从分类中选取具有代表性的数据来设计测试用例。
二、等价类的分类
有效等价类:合理的、有意义的输入数据构成的集合;
无效等价类:不合理的、没有意义的输入数据构成的集合;
三、等价类的方法
按区间划分。
按数值划分。
按数值集合划分。
按限制条件或规划划分。
按处理方式划分。
四、等价类的原则
①在输入条件规定的取值范围或值的个数的情况下,可以确定一个有效等价类和两个无效等价类。
例如:有这样一个需求,用户名的长度为 [1,100];
那么,一个有效等价类可以是:1≤x≤100;
两个无效等价类可以是:>1、<100;

知识扩展
看到这里有些人可能会疑惑,我的有效等价类不是在 1~100 之间吗,那我为什么不这样描述:>= 1并且 <= 100,而是描述为:1≤x≤100;这两种描述方式都可以使用,都是正确的描述方法。
还有一个问题,需求中是直接写 [1,100] 的,没有明确标明是 >= 1 并且 <= 100,还是 > 1 并且 < 100,那我为什么觉得他是 >= 1 并且 <= 100 呢?这里就要补充另一个知识点了;
不等式的小括号和中括号的含义
小括号和中括号在不等式里面表示一个取值范围,小括号是开区间,为不包含;中括号是闭区间,为包含。
比如:(1,100),表示不等式的解集是 >1 并且 < 100(不包含1和100)。
也可以表示为:1<x<100;
比如 [1,100] ,表示不等式的解集是 >=1 并且 <= 100(包含1和100)。
也可以表示为:1 ≤ x ≤ 100。
所以我之前这样描述:1≤x≤100,就是 >=1 并且 <= 100 的意思。
注:
1.在不等式里第一个数字为大于,最后一位数字为小于;
2.我们知道怎么打出“<”,知道怎么打出"=",那怎么把他们两个组合起来,打出“≤”呢❓❓❓最简单的就是在输入的时候上直接写中文“小于等于”;
“≥”也是同理。
我说这个的原因是想让你们看到 1 ≤ x ≤ 100 这种描述的时候不会
,知道他表示的是什么意思就好,本来就理解的话就更好啦啦~
②在规定了输入数据的一组值中(假定有n个值),并且程序要对每个输入值分别处理的情况下,可以确定n个有效等价类和一个无效等价类。
例如:考试的时候单选题只能在A、B、C、D四个选项中选择;
那么,n个有效等价类可以是:A、B、C、D;
一个无效等价类可以是:不在A、B、C、D之内的选项;
③在规定输入数据必须遵守的规则的情况下,可以确定一个有效等价类和若干个无效等价类。
例如:密码由 1~8 位的数字+字母组成;
那么,一个有效等价类可以是:1≤x≤8位的数字+字母组成的密码;
若干个无效等价类可以是:空(也就是<1)、>8、1<x<8位的纯数字、1<x<8位纯字母、1<x<8位非数字+非字母(小数、中文、特殊符号)、空格;
④在输入条件规定了输入值的集合或规定了“必须如何”的条件下,可以确定一个有效等价类和一个无效等价类。
例如:输入三个正整数代表每边的长度,构成等边三角形;
那么,一个有效等价类可以是:三条边都相等的;
一个无效等价类可以是:三条边不相等的;
⑤在确定已划分的等价类中各元素在程序处理中的方式不同的情况下,则应将该等价类进一步地划分为更小的等价类。
例如:密码不可以含有空格;
那么,先划分大的有效和无效等价类,有效:不含有空格;无效:含有空格;
然后还可以对无效等价类进行进一步的划分:前面含空格、后面含空格、中间含空格;
五、按照测试用例的完整性划分等价类
可以分为:弱一般等价类、弱健壮等价类、强一般等价类、强健壮等价类。
弱一般等价类:
遵循单缺陷原则,要求用例覆盖每个变量的一个值,取有效值。
弱健壮等价类:
在弱一般等价类的基础上,加上无效值;“健壮”的意思就是程序要有容错能力,输入了无效值也能正确识别出来;对于有效输入,取每个有效变量的一个值;对于无效输入,取一个无效值,其余的都是有效值。
强一般等价类:
遵循多缺陷原则,取每个变量每个值的迪卡尔乘积,也就是所有变量和所有值的组合情况;比如,
X有 2 个等价类,Y有 3 个等价类,那他的迪卡尔乘积就是:2*3=6,最终用例的数量就是 6。
强健壮等价类:
在强一般等价类的基础上,加上无效值(不仅取单个无效值,也要取多个无效值)。
六、等价类步骤
1、划分有效和无效等价类表,并设定编号;
2、根据等价类表编写测试用例。
等价类表的建立
1)在分析需求规格说明的基础上划分等价类,列出等价类表,为每一个等价类规定一个唯一的编号。
2)将程序可能的输入数据分成若干个子集,从每个子集中选取一个有代表性的数据作为测试用例。等价类是某个输入域的子集,在该子集中的每个输入数据的作用都是等效的。
3)设计新的测试用例,使其尽可能多地覆盖未覆盖的有效等价类,按照这一步骤重复进行,直到所有的有效等价类都被覆盖为止。
4)设计新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,按照这一步骤重复进行,直到所有的无效等价类都被覆盖为止。
七、案例
需求1:密码为 8-10 位数字字母组合。
等价表的格式:输入条件、输出条件(有就写)、有效等价类、有效等价类编号、无效等价类、无效等价类编号。

注:为了节省时间,大致写了下,在企业里面写测试用例不单单只有这几要素。
需求2:输入三个正整数作为边长,判断这三条边能否构成三角形,若能,所构成的三角形是等边、等腰还是一般三角形,请用等价类划分法设计测试用例(面试题,真实碰到过!!!)。

假设
a代表第一条边的长度;
b代表为第二条边的长度;
c代表为第三条边的长度;
🤡一些解释
一般三角形:
任意两边之和大于第三边,任意两边之差小于第三边(一般情况下,只要将最短的两条边相加,将最长的边和最短的边相减即可得出是否能构成一般三角形);
任意两边之和大于第三边,也就是:
1、a+b>c;
2、a+c>b;
3、b+c>a;
任意两边之差小于第三边,也就是:
1、a-b<c;
2、a-c<b;
3、b-c<a;
等腰三角形:
如果有两个边的长相等,则为等腰三角形;
也就是:
1、a=b!=c;
2、a=c!=b;
3、b=c!=a;
等边三角形:
如果三个边的长都相等,则为等边三角形;
也就是:
a=b=c;
什么是正整数?
除了“0”以外的整数。
编写等价表
因为太多了,放不下的原因,就直接打文字了,可以自己在 excel 表格中完成,并给每个有效和无效等价类设定编号。
输入条件:
有效等价类:3位数、整数、不含“0”;
无效等价类:
非3位数(
1、只输入一条边:边只输入a;只输入b;只输入c;
2、只输入两条边:只输入a、b;只输入a、c;3、只输入b、c;
3、输入超过三条边:a、b、c、d
)、
非整数(
1、一条边为非整数:a为非整数;b为非整数;c为非整数;
2、二条边为非整数:a、b为非整数;a、c为非整数;b、c为非整数;
3、三条边为非整数:a、b、c为非整数
)、
输入“0”(
1、一条边输入“0”:a输入“0”;b输入“0”;c输入“0”;
2、两条边输入“0”:a、b输入“0”;a、c输入“0”;b、c输入“0”;
3、三条边输入“0”:a、b、c输入“0”
)、
空(
1、一条边不输入:a不输入;b不输入;c不输入;
2、两条边不输入:a、b不输入;a、c不输入;b、c不输入;
3、三条边不输入:a、b、c不输入
)、
空格(
1、一条边输入空格:a输入空格;b输入空格;c输入空格;
2、二条边输入空格:a、b输入空格;a、c输入空格;b、c输入空格;
3、三条边输入空格:a、b、c输入空格
)。
输出条件:
一般三角形:
有效等价类:
任意两边之和大于第三边(
1、a+b>c;
2、a+c>b;
3、b+c>a;
)、任意两边之差小于第三边(
1、a-b<c;
2、a-c<b;
3、b-c<a;
);
无效等价类:
任意两边之和小于第三边(
1、a+b<c;
2、a+c<b;
3、b+c<a;
)、任意两边之差大于第三边(
1、a-b>c;
2、a-c>b;
3、b-c>a;
);
等腰三角形:
有效等价类:
两条边相等(
1、a=b!=c;
2、a=c!=b;
3、b=c!=a;
);
无效等价类:
两条边不相等(
1、a!=b;
2、a!=b;
3、b!=c;
);
等边三角形:
有效等价类:
三条边相等(a=b=c);
无效等价类:
两条边不相等(a!=b!=c);
最后,动动手🤚✋,编写测试用例覆盖该等价类表(如果后续我有时间会进行补充滴⛄)。

完。。。
相关文章:
黑盒测试用例设计方法-等价类划分法
目录 一、等价类的作用 二、等价类的分类 三、等价类的方法 四、等价类的原则 五、按照测试用例的完整性划分等价类 六、等价类步骤 七、案例 一、等价类的作用 为穷举测试设计测试点。 穷举:列出所有的可能情况,对其一一判断。 测试点&#x…...
4.OCR文本识别Connectionist Temporal Classification(CTC)算法
文章目录1.基础介绍2.Connectionist Temporal Classification(CTC)算法2.1 什么是Temporal Classification2.2 CTC问题描述2.2关于对齐2.3 前向后向算法2.4 推理时3.pytorch中的CTCLOSS参考资料欢迎访问个人网络日志🌹🌹知行空间🌹dz…...
误删了Ubuntu/Linux的一些默认用户目录怎么办?
用户目录:指位于 $HOME 下的一系列常用目录,例如 Documents,Downloads,Music,还有 Desktop等。本文不是讲如何恢复原有目录及其重要文件,适用于仅恢复目录功能一:仅恢复个别目录如误删了Desktop…...
ArXiv简介以及论文提交
arXiv网站简介 arXiv是一个收集物理学、数学、计算机科学、生物学与数理经济学的论文预印本的网站。其中arXiv发音同“archive”,因为“X”代表希腊字母 ,国际音标为[kai]。它于1991年8月14日成立,现由美国康奈尔大学维护。 ——维基百科 对…...
pytorch学习
目录如下: pytorch常用操作 pytorch 常用操作 pytorch 的 detach()函数 1. 什么是detach()函数 我们在将输出特征矩阵进行存储的时候,经常需要将torch.Tensor类型的数据转换成别的如numpy类型的数据,但是Tensor类型的数据是会自动计算梯度…...
【OC】块初识
Block简介 Blocks是C语言的扩充功能。可以用一句话来表示Blocks的扩充功能:带有自动变量的匿名函数。 匿名函数 所谓匿名函数就是不带有名称的函数。C语言的标准不允许存在这样的函数。例: int func(int count);它声明了名称为func的函数。下面的源代…...
3-2 创建一个至少有两个PV组成的大小为20G的名为testvg的VG
文章目录1. 在vmware添加多块20G的硬盘,并创建分区2. 创建一个至少有两个PV组成的大小为20G的名为testvg的VG,要求PE大小为16M,而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录3. 新建用户archlinux,要求其家目录为/users/archlinu…...
【密码学】 一篇文章讲透数字证书
【密码学】 一篇文章讲透数字证书 数字证书介绍 数字证书是一种用于认证网络通信中参与者身份和加密通信的证书,人们可以在网上用它来识别对方的身份。 我们在上一篇博客中介绍了数字签名的作用和原理,数字签名可以防止消息被否认。有了公钥算法和数字签…...
Linux 操作系统原理 — 内存管理 — 虚拟地址空间(x86 64bit 系统)
目录 文章目录目录虚拟地址格式与内核页表(四级页表)虚拟地址格式与内核页表(四级页表) 在 x86 64bit 系统中,可以描述的最长地址空间为 2^64(16EB),远远超过了目前主流内存卡的规格…...
C语言深入知识——(2)指针的深入理解
1、字符指针 (1)字符指针的普通用法 char a A; char* pa &a;但是一般来说字符指针很少这么用……更多是拿来存储一个字符串 (2)字符串的两种存储以及区别 现在有了两种存储数组的方法 ①一个是使用char类型数组存储②另外…...
Git使用笔记
分支branch切换到另一个分支git checkout 你要切换到的分支的名字git checkout master将本地的这个分支branch1和gitee上的branch1进行合并(本地的branch1有的,gitee上branch1没有的增加上去)git merge branch1git merge 分支的名字查看本地是…...
数据库管理-第五十八期 倒腾PDB(20230226)
数据库管理 2023-02-26第五十八期 倒腾PDB1 克隆本地PDB2 没开归档总结第五十八期 倒腾PDB 其实本周过的不大好,连着两天熬夜,一次是割接一次是处理ADG备库的异常,其实本周有些内容是以前处理过的问题,到了周末还肚子痛。哎… 1…...
我看谁还敢说不懂git
文章目录一、Git介绍1.1、Git的作用1.2、Git的理念1.3、Git的特点1.4、Git对比SVN二、Git的概念2.1、Git基础概念三、Git的基本操作3.1、使用Git管理一个代码仓库的流程3.2、Git常用命令介绍四、Git状态的变化五、Git安装和配置5.1、Git的安装5.2、Git的配置六、Git的高级操作6…...
Scratch少儿编程案例-算法练习-实现加减乘除练习题
专栏分享 点击跳转=>Unity3D特效百例点击跳转=>案例项目实战源码点击跳转=>游戏脚本-辅助自动化点击跳转=>Android控件全解手册点击跳转=>Scratch编程案例👉关于作者...
【离线数仓-9-数据仓库开发DWS层设计要点-1d/nd/td表设计】
离线数仓-9-数据仓库开发DWS层设计要点-1d/nd/td表设计离线数仓-9-数据仓库开发DWS层设计要点-1d/nd/td表设计一、DWS层设计要点二、DWS层设计分析 - 1d/nd1.DWS层设计一:不考虑用户维度2.DWS层设计二:考虑用户维度2.DWS层设计三 :考虑用户商…...
python网络数据获取
文章目录1网络爬虫2网络爬虫的类型2.1通用网络爬虫2.1.12.1.22.2聚焦网络爬虫2.2.1 基于内容评价的爬行策略2.2.2 基于链接结构的爬行策略2.2.3基于增强学习的爬行策略2.2.4基于语境图的爬行策略2.3增量式网络爬虫深层网页爬虫3网络爬虫基本架构3.1URL管理模块3.2网页下载模块3…...
[Datawhale][CS224W]图机器学习(六)
目录一、简介二、概述三、算法四、PageRank的缺点五、Python实现迭代法参考文献一、简介 PageRank,又称网页排名、谷歌左侧排名、PR,是Google公司所使用的对其搜索引擎搜索结果中的网页进行排名的一种算法。 佩奇排名本质上是一种以网页之间的超链接个…...
aws ecr 使用golang实现的简单镜像转换工具
https://pkg.go.dev/github.com/docker/docker/client#section-readme 通过golang实现一个简单的镜像下载工具 总体步骤 启动一台海外区域的ec2实例安装docker和awscli配置凭证访问国内ecr仓库编写web服务实现镜像转换和自动推送 安装docker和awscli sudo yum remove awsc…...
【20230225】【剑指1】分治算法(中等)
1.重建二叉树class Solution { public:TreeNode* traversal(vector<int>& preorder,vector<int>& inorder){if(preorder.size()0) return NULL;int rootValuepreorder.front();TreeNode* rootnew TreeNode(rootValue);//int rootValuepreorder[0];if(preo…...
「JVM 高效并发」Java 线程
进程是资源分配(内存地址、文件 I/O 等)的基本单位,线程是执行调度(处理器资源调度)的基本单位; Loom 项目若成功为 Java 引入纤程(Fiber),则线程的执行调度单位可能变为…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...



