当前位置: 首页 > news >正文

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

目录

一、等价类的作用

二、等价类的分类

三、等价类的方法

四、等价类的原则

五、按照测试用例的完整性划分等价类

六、等价类步骤

七、案例


一、等价类的作用

为穷举测试设计测试点。

穷举:列出所有的可能情况,对其一一判断。

测试点:要验证的点。比如测试登录界面:用户名为空、用户名错误、密码为空、密码错误等等。

我们不可能实现穷举测试,等价类划分法是把程序所有可能的输入数据,进行分类(有效和无效等价类),然后从分类中选取具有代表性的数据来设计测试用例。

二、等价类的分类

有效等价类:合理的、有意义的输入数据构成的集合;

无效等价类:不合理的、没有意义的输入数据构成的集合;

三、等价类的方法

按区间划分。

按数值划分。

按数值集合划分。

按限制条件或规划划分。

按处理方式划分。

四、等价类的原则

①在输入条件规定的取值范围或值的个数的情况下,可以确定一个有效等价类和两个无效等价类。

例如:有这样一个需求,用户名的长度为 [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);

最后,动动手🤚✋,编写测试用例覆盖该等价类表(如果后续我有时间会进行补充滴⛄)。

完。。。

相关文章:

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

目录 一、等价类的作用 二、等价类的分类 三、等价类的方法 四、等价类的原则 五、按照测试用例的完整性划分等价类 六、等价类步骤 七、案例 一、等价类的作用 为穷举测试设计测试点。 穷举&#xff1a;列出所有的可能情况&#xff0c;对其一一判断。 测试点&#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参考资料欢迎访问个人网络日志&#x1f339;&#x1f339;知行空间&#x1f339;&#x1f3…...

误删了Ubuntu/Linux的一些默认用户目录怎么办?

用户目录&#xff1a;指位于 $HOME 下的一系列常用目录&#xff0c;例如 Documents&#xff0c;Downloads&#xff0c;Music&#xff0c;还有 Desktop等。本文不是讲如何恢复原有目录及其重要文件&#xff0c;适用于仅恢复目录功能一&#xff1a;仅恢复个别目录如误删了Desktop…...

ArXiv简介以及论文提交

arXiv网站简介 arXiv是一个收集物理学、数学、计算机科学、生物学与数理经济学的论文预印本的网站。其中arXiv发音同“archive”&#xff0c;因为“X”代表希腊字母 &#xff0c;国际音标为[kai]。它于1991年8月14日成立&#xff0c;现由美国康奈尔大学维护。 ——维基百科 对…...

pytorch学习

目录如下&#xff1a; pytorch常用操作 pytorch 常用操作 pytorch 的 detach()函数 1. 什么是detach()函数 我们在将输出特征矩阵进行存储的时候&#xff0c;经常需要将torch.Tensor类型的数据转换成别的如numpy类型的数据&#xff0c;但是Tensor类型的数据是会自动计算梯度…...

【OC】块初识

Block简介 Blocks是C语言的扩充功能。可以用一句话来表示Blocks的扩充功能&#xff1a;带有自动变量的匿名函数。 匿名函数 所谓匿名函数就是不带有名称的函数。C语言的标准不允许存在这样的函数。例&#xff1a; int func(int count);它声明了名称为func的函数。下面的源代…...

3-2 创建一个至少有两个PV组成的大小为20G的名为testvg的VG

文章目录1. 在vmware添加多块20G的硬盘&#xff0c;并创建分区2. 创建一个至少有两个PV组成的大小为20G的名为testvg的VG&#xff0c;要求PE大小为16M&#xff0c;而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录3. 新建用户archlinux,要求其家目录为/users/archlinu…...

【密码学】 一篇文章讲透数字证书

【密码学】 一篇文章讲透数字证书 数字证书介绍 数字证书是一种用于认证网络通信中参与者身份和加密通信的证书&#xff0c;人们可以在网上用它来识别对方的身份。 我们在上一篇博客中介绍了数字签名的作用和原理&#xff0c;数字签名可以防止消息被否认。有了公钥算法和数字签…...

Linux 操作系统原理 — 内存管理 — 虚拟地址空间(x86 64bit 系统)

目录 文章目录目录虚拟地址格式与内核页表&#xff08;四级页表&#xff09;虚拟地址格式与内核页表&#xff08;四级页表&#xff09; 在 x86 64bit 系统中&#xff0c;可以描述的最长地址空间为 2^64&#xff08;16EB&#xff09;&#xff0c;远远超过了目前主流内存卡的规格…...

C语言深入知识——(2)指针的深入理解

1、字符指针 &#xff08;1&#xff09;字符指针的普通用法 char a A; char* pa &a;但是一般来说字符指针很少这么用……更多是拿来存储一个字符串 &#xff08;2&#xff09;字符串的两种存储以及区别 现在有了两种存储数组的方法 ①一个是使用char类型数组存储②另外…...

Git使用笔记

分支branch切换到另一个分支git checkout 你要切换到的分支的名字git checkout master将本地的这个分支branch1和gitee上的branch1进行合并&#xff08;本地的branch1有的&#xff0c;gitee上branch1没有的增加上去&#xff09;git merge branch1git merge 分支的名字查看本地是…...

数据库管理-第五十八期 倒腾PDB(20230226)

数据库管理 2023-02-26第五十八期 倒腾PDB1 克隆本地PDB2 没开归档总结第五十八期 倒腾PDB 其实本周过的不大好&#xff0c;连着两天熬夜&#xff0c;一次是割接一次是处理ADG备库的异常&#xff0c;其实本周有些内容是以前处理过的问题&#xff0c;到了周末还肚子痛。哎… 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层设计一&#xff1a;不考虑用户维度2.DWS层设计二&#xff1a;考虑用户维度2.DWS层设计三 &#xff1a;考虑用户商…...

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&#xff0c;又称网页排名、谷歌左侧排名、PR&#xff0c;是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 线程

进程是资源分配&#xff08;内存地址、文件 I/O 等&#xff09;的基本单位&#xff0c;线程是执行调度&#xff08;处理器资源调度&#xff09;的基本单位&#xff1b; Loom 项目若成功为 Java 引入纤程&#xff08;Fiber&#xff09;&#xff0c;则线程的执行调度单位可能变为…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库&#xff0c;专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性&#xff0c;并提供了一个通用的框架&…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

快刀集(1): 一刀斩断视频片头广告

一刀流&#xff1a;用一个简单脚本&#xff0c;秒杀视频片头广告&#xff0c;还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农&#xff0c;平时写代码之余看看电影、补补片&#xff0c;是再正常不过的事。 电影嘛&#xff0c;要沉浸&#xff0c;…...