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

news2024/11/27 20:35:15

目录

一、等价类的作用

二、等价类的分类

三、等价类的方法

四、等价类的原则

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

六、等价类步骤

七、案例


一、等价类的作用

为穷举测试设计测试点。

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

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

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

二、等价类的分类

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

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

三、等价类的方法

按区间划分。

按数值划分。

按数值集合划分。

按限制条件或规划划分。

按处理方式划分。

四、等价类的原则

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

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

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

完。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/372814.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JasperReports studio相关操作

1.2 JasperReports JasperReports是一个强大、灵活的报表生成工具&#xff0c;能够展示丰富的页面内容&#xff0c;并将之转换成PDF&#xff0c;HTML&#xff0c;或者XML格式。该库完全由Java写成&#xff0c;可以用于在各种Java应用程序&#xff0c;包括J2EE&#xff0c;Web应…

【数据挖掘】1、综述:背景、数据的特征、数据挖掘的六大应用方向、有趣的案例

目录一、背景1.1 学习资料1.2 数据的特征1.3 数据挖掘的应用案例1.4 获取数据集1.5 数据挖掘的定义二、分类三、聚类四、关联分析五、回归六、可视化七、数据预处理八、有趣的案例8.1 隐私保护8.2 云计算的弹性资源8.3 并行计算九、总结一、背景 1.1 学习资料 推荐书籍如下&a…

C语言刷题(3)——“C”

各位CSDN的uu们你们好呀&#xff0c;今天小雅兰的内容还是做几道题噢&#xff0c;好好复习一下之前的知识点&#xff0c;现在&#xff0c;就让我们开始复习吧 牛客网在线编程_编程学习|练习题_数据结构|系统设计题库 倒置字符串_牛客题霸_牛客网 BC40 竞选社长 BC41 你是天才…

vitepress 就这几步操作,博客就搭好啦?

Ⅰ、什么是vitepress &#x1f48e; vitepress 使用场景 简单的说 &#xff0c;只要 会用 markdown 语法&#xff0c;就能构建自己的 「博客、笔记、使用文档」等系统 &#xff1b; ✨ vitepress 优势 优势介绍傻瓜式操作只需要配置 菜单 和 对应的 markdown 就能实现博客、笔…

OKR 与 KPI有何异同?各部门OKR实例【小bu】

OKR 与 KPI&#xff0c;如何本土化是关键 近期公司计划对去年实施的绩效考核方案进行优化&#xff0c;公司以往采用 KPI 绩效考核方式&#xff0c;产生了一些争议。一方面&#xff0c;执行期间部分部门一度忽略指标设置的真实目的&#xff0c;导致出现短视思维和行为&#xff1…

Vision Transformer学习了什么-WHAT DO VISION TRANSFORMERS LEARN? A VISUAL EXPLORATION

WHAT DO VISION TRANSFORMERS LEARN? A VISUAL EXPLORATION 文章地址 代码地址 摘要 视觉转换器( Vision Transformers&#xff0c;ViTs )正在迅速成为计算机视觉的事实上的架构&#xff0c;但我们对它们为什么工作和学习什么知之甚少。虽然现有研究对卷积神经网络的机制进…

LabVIEW控制DO通道输出一个精确定时的数字波形

LabVIEW控制DO通道输出一个精确定时的数字波形如何使用数据采集板卡的DO通道输出一个精确定时的数字波形&#xff1f;解答:产生一个数字波形首先需要创建一个布尔数组&#xff0c;把波形序列信息放到该布尔数组中&#xff0c;然后通过一个布尔数组至数字转换vi来产生数字波形。…

【C++】仿函数、lambda表达式、包装器

1.仿函数 仿函数是什么&#xff1f;仿函数就是类中的成员函数&#xff0c;这个成员函数可以让对象模仿函数调用的行为。 函数调用的行为&#xff1a;函数名(函数参数)C中可以让类实现&#xff1a;函数名(函数参数)调用函数 自己写一个仿函数&#xff1a; 重载()运算符 cla…

chatgpt的原理 第四部分

五、ChatGPT 终于说到了主角&#xff0c;能看到这里的&#xff0c;可以关注一下 JioNLP 公众号吗&#xff1f;我写的也够累的。 ChatGPT 模型上基本上和之前 GPT-3 都没有太大变化&#xff0c;主要变化的是训练策略变了&#xff0c;用上了强化学习。 强化学习 几年前&#xf…

【Linux驱动开发100问】如何编译Linux内核?

&#x1f947;今日学习目标&#xff1a;如何编译Linux内核&#xff1f; &#x1f935;‍♂️ 创作者&#xff1a;JamesBin ⏰预计时间&#xff1a;10分钟 &#x1f389;个人主页&#xff1a;嵌入式悦翔园个人主页 &#x1f341;专栏介绍&#xff1a;Linux驱动开发100问 如何编译…

【论文笔记】Deep 3D-to-2D Watermarking == Google ==CVPR‘2022

Deep 3D-to-2D Watermarking: Embedding Messages in 3D Meshes and Extracting Them from 2D Renderings 本文工作&#xff1a;提出了一个端到端的框架来从2D渲染图像中提取水印信息&#xff0c;且对 不同光照和相机位姿 的渲染结果具有鲁棒性。 1.1 本文工作概述 核心贡献&…

metaRTC新增纯C版JSON支持

概述 JSON 是轻量级的文本数据交换格式&#xff0c;它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集&#xff0c;采用完全独立于编程语言的文本格式来存储和表示数据。 简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 metaRTC新版本新增了纯C版的JSON支…

操作系统权限提升(十五)之绕过UAC提权-基于白名单DLL劫持绕过UAC提权

系列文章 操作系统权限提升(十二)之绕过UAC提权-Windows UAC概述 操作系统权限提升(十三)之绕过UAC提权-MSF和CS绕过UAC提权 操作系统权限提升(十四)之绕过UAC提权-基于白名单AutoElevate绕过UAC提权 注&#xff1a;阅读本编文章前&#xff0c;请先阅读系列文章&#xff0c;以…

pytorch学习日记之图片的简单卷积、池化

导入图片并转化为张量 import torch import torch.nn as nn import matplotlib.pyplot as plt import numpy as np from PIL import Image mymi Image.open("pic/123.png") # 读取图像转化为灰度图片转化为numpy数组 myimgray np.array(mymi.convert("L"…

GNURadio RTL-SDR之FM接收

环境配置与准备&#xff1a; PC操作系统: Windows10 64位系统。RTL-SDR: 包括射频主板和天线。Radioconda&#xff1a;GNURadio windows方案之一&#xff0c;安装radioconda-2023.02.24-Windows-x86_64&#xff0c;官方下载和操作指导&#xff1a; InstallingGR - GNU Radioht…

spring框架--全面详解(学习笔记)

目录 1.Spring是什么 2.Spring 框架特点 3.Spring体系结构 4.Spring开发环境搭建 5.spring中IOC和DI 6.Spring中bean的生命周期 7.Spring Bean作用域 8.spring注解开发 9.Spring框架中AOP&#xff08;Aspect Oriented Programming&#xff09; 10.AOP 实现分类 11.A…

并发编程之死锁问题介绍

一、本文概览 死锁问题在并发编程中是一个非常致命的问题&#xff0c;问题一旦产生&#xff0c;只能通过重启机器、修改代码来修复问题&#xff0c;下面我们通过一小段文章内容介绍下死锁以及如何死锁的预防 二、什么是死锁&#xff1f; 在介绍死锁之前&#xff0c;先来明确下什…

对象分配策略

对象创建后,究竟何去何从,对象在堆中又会经历哪些过程,本篇就会详细解释对象创建后直到对象被回收的整个过程。之前博主已经写过Minor GC、Major GC、Full GC的区别&#xff0c;而本篇也主要根据这几个GC开展。 对象回收过程流程如下图所示&#xff1a; 正常的对象生存过程&a…

NetSuite Saved Search中When Ordered By Field 与 Keep Dense_Rank辨析

今朝的题目是一个隐藏的宝藏话题&#xff0c;Saved Search中我们极少用的一个功能--When Ordered By Field和Keep Dense_Rank。 假如你碰到一个需求&#xff0c;要求是&#xff1a;“在销售历史中按照客户别&#xff0c;取最早交易日期的销售金额&#xff0c;以识别VIP客户”。…

QML Animation动画详解

1.Animation简介 Animation类型提供了四个属性&#xff1a; alwaysRunToEnd&#xff1a;该属性接收布尔类型的参数。该属性保存动画是否运行到完成才停止。当loops属性被设置时&#xff0c;这个属性是最有用的&#xff0c;因为动画将正常播放结束&#xff0c;但不会重新启动。…