软件测试方法——等价类划分法详解

news2024/9/21 4:38:15

1、等价类划分法的介绍和概念

    划分

指互不相交的一组子集,这些子集的并是整个集合。

对测试的意义:完备性和无冗余性。

    等价类

等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,具有等价特性。

    等价类合理地假设

测试某等价类的代表值就等于对这一类其它值的测试。

    等价类划分

等价类划分是一种典型的黑盒测试方法。

等价类测试方法是把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一部分中选取少数有代表性的数据作为测试用例。使用等价类划分方法设计测试用例要经历划分等价类(列出等价类表)和选取测试用例两步,它将不能穷举的测试过程进行合理分类,从而保证设计出来的测试用例具有完整性和代表性。

                  

2、等价类的类型划分

等价类划分可有两种不同的情况:有效等价类和无效等价类。

    有效等价类

是指对于程序的需求规格说明来说是合理的,有意义的输入数据构成的集合。

利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能(确认过程)。

    无效等价类(与有效等价类的定义恰巧相反)

是指对于程序的需求规格说明来说是不合理的,无意义的输入数据构成的集合。

利用无效等价类可检验程序对于无效数据的异常处理能力(检验过程)。

设计测试用例时,要同时考虑这两种等价类。因为,软件不仅要能接收合理的数据,也要能经受意外的考验。这样的测试才能确保软件具有更高的可靠性。
3、等价类测试用例的类别

根据测试用例的完整性可以划分

    弱等价类测试

    弱一般等价类测试
    弱健壮等价类测试

    强等价类测试

    强一般等价类测试
    强健壮等价类测试

PS:健壮性测试

健壮性有两层含义:容错能力和恢复能力

容错性测试通常构造一些不合理的输入来引诱软件错误,例如

•输入错误的数据类型:如“猴”年“马”月

•输入定义域之外的数值

粗暴一些方式俗称“大猩猩”测试法。除了不能拳打脚踢嘴咬之外,什么招术都可以使出来。例如在测试客户机-服务器模式的软件时,把网线拔掉,造成通信异常中断。

恢复测试重点考察以下几项:

•系统能否重新运行;

•有无重要的数据丢失;

•是否毁坏了其他相关的软件硬件。

3.1弱一般等价类

遵循单缺陷原则,要求用例覆盖每一个变量的一种取值即可,取值为有效值。

 3.2弱健壮等价类

在弱一般等价类的基础上,增加取值为无效值的情况。

对于有效输入,使用每个有效值类的一个值

对于无效输入,测试用例将拥有一个无效值,并保持其余的值是有效的。

 3.3强一般等价类

遵循多缺陷原则,要求用例覆盖每个变量的每种取值之间的迪卡尔乘积,即所有变量所有取值的所有组合,取值为有效值

覆盖所有的等价类

有可能的输入组合中的一个

 3.4强健壮等价类

在强一般等价类的基础上,增加取值为无效值的情况。

“健壮”考虑无效值,所有等价类都有考虑

“强”多缺陷假设

 4、等价类划分的原则
4.1按照区间划分

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

例子:输入值是学生成绩,范围是0~100之间

 有效等价类:0≤并≤100,如0,1,10等

无效等价类:<0 或 >100,如-1,101等

弱一般等价类:0~100中任意一个数为测试数据,只设计1个用例即可
强一般等价类:分为0、 1~99、 100三个等价类,需要设计3个用例
弱健壮等价类:考虑到60分在实际情况中为特殊数字,划分0、 1~99(除60外)、 100、 60四个等价类
强健壮等价类:考虑各种非法输入,如负数、其他字符等等
4.2按照数值划分

在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。

例子:输入条件说明输入学历为本科、硕士和博士3种之一

有效等价类:本科、硕士和博士其中一种

无效等价类:除要求的2种外其他字符,如小学、专科等
4.3按照数值集合划分

在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可确立一个有效等价类和一个无效等价类。

例子:密码输入框,要求密码必须是数字或字母

有效等价类:密码是数字和字母的组合(还可以细分)

无效等价类:密码包括中文、密码包括其他符号等
4.4按限制条件或规则划分

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

例子:校内电话号码拨外线为9开头

有效等价类:9+外线号码

无效等价类:非9开头+外线号码,9+非外线号码等
4.5细分等价类

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

例子:确定了等价类后,再列表形式列出所有划分出的等价类表

 5、等价类划分法的测试用例应用

    按照[输入条件][有效等价类][无效等价类] 建立等价类表,列出所有划分出的等价类
    为每一个等价类规定一个唯一的编号。
    设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止。
    设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。

 6、等价类划分法的实例分析

某程序规定:"输入三个整数 a 、 b 、 c 分别作为三边的边长构成三角形。通过程序判定所构成的三角形的类型,当此三角形为一般三角形、等腰三角形及等边三角形时,分别作计算 … "。用等价类划分方法为该程序进行测试用例设计。(三角形问题的复杂之处在于输入与输出之间的关系比较复杂。)

分析题目中给出和隐含的对输入条件的要求:

(1)整数 (2)三个数 (3)非零数 (4)正数
(5)两边之和大于第三边 (6)等腰 (7)等边
如果 a 、 b 、 c 满足条件( 1 ) ~ ( 4 ),则输出下列四种情况之一:
1)如果不满足条件(5),则程序输出为 " 非三角形 " 。
2)如果三条边相等即满足条件(7),则程序输出为 " 等边三角形 " 。
3)如果只有两条边相等、即满足条件(6),则程序输出为 " 等腰三角形 " 。
4)如果三条边都不相等,则程序输出为 " 一般三角形 " 。

请各位列出等价类表并编号

覆盖有效等价类的测试用例:

a      b      c              覆盖等价类号码

3      4      5             (1)--(7)

4      4      5             (1)--(7),(8)

4      5      5             (1)--(7),(9)

5      4      5             (1)--(7),(10)

4      4      4             (1)--(7),(11)

覆盖无效等价类的测试用例:

 7、总结

感谢每一个认真阅读我文章的人!!!
 

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

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

相关文章

23.4.25总结

复习了MYSQL数据库的主键和外键的知识&#xff1a; 在设计表时&#xff0c;可以通过外键这个按钮&#xff0c;更改Update rule&#xff08;更新规则&#xff09;和Delete rule&#xff08;删除规则&#xff09;。 外键行为 默认情况下是&#xff1a;NO ACTION、RESTRICT 两…

传统机器学习(七)支持向量机(1)超平面、SVM硬间隔、软间隔模型和损失函数

传统机器学习(七)支持向量机(1) 1 算法概述 1.1 超平面的理解 1.1.1 超平面公式 我们对“平面”概念的理解&#xff0c;一般是定义在三维空间中的&#xff0c;如下&#xff1a; 假设M和M0为平面上的两点&#xff0c;n为该平面的法向量&#xff0c;那么&#xff0c;通过下图…

4.25~~~~~

接着之前PE文件结构的预习 DOS 定位到NT 怎么操作的&#xff1f; 用的是e_lfanew&#xff0c;然后是相对于文件头的偏移量&#xff08;也就是raw表示方法&#xff09; 现在有个问题&#xff0c;为什么e_lfanew 这个变量不直接存储PE头 的绝对地址呢&#xff1f; 比如说&…

python 基础语法学习之变量与运算符

一、注释 注释: 就是对代码的解释&#xff0c;方便阅读&#xff0c;被注释的代码不执行 分类 单行注释 # 1.单行注释 以#号开头 &#xff0c;右边的所有东西都被当做说明文字 &#xff0c;程序不进行编译运行。 print(hello world)多行注释 # 2.多行注释 三个单引号 或…

学习日记(刷题,学java)

先看看题目 给你一个字符串数组 names &#xff0c;和一个由 互不相同 的正整数组成的数组 heights 。两个数组的长度均为 n 。 对于每个下标 i&#xff0c;names[i] 和 heights[i] 表示第 i 个人的名字和身高。 请按身高 降序 顺序返回对应的名字数组 names 。 示例 1&…

Chapter 4 :Constraining I/O Delay(ug903)

4.1 About Constraining I/O Delay 要在设计中准确地建模外部时序上下文&#xff0c;必须为输入和输出端口提供时序信息。由于XilinxVivado集成设计环境&#xff08;IDE&#xff09;只能识别FPGA边界内的时序&#xff0c;因此必须使用以下命令来指定超出这些边界的延迟…

Linux 系统文件权限管理(参考菜鸟教程)

一、查看文件用户&#xff0c;用户组&#xff0c;其他用户的文件权限&#xff0c;属主&#xff0c;属主用户组等信息 ls -l如图所示: &#xfeff; 1、第一个字符代表这个文件是目录、文件或链接文件等等。 当为 d 则是目录当为 - 则是文件&#xff1b;若是 l 则表示为链接…

SpringBoot+Shiro+Jwt+Vue+elementUI实现前后端分离单体系统Demo

记录一下使用SpringBoot集成Shiro框架和Jwt框架实现前后端分离Web项目的过程&#xff0c;后端使用SpringBoot整合ShiroJwt(auth0)&#xff0c;前端使用vueelementUI框架&#xff0c;前后端的交互使用的是jwt的token&#xff0c;shiro的会话关闭&#xff0c;后端只需要使用Shiro…

Sqlmap Tamper 编写/改写 学习

sqlmap的 --tamper 参数可以引入用户自定义的脚本修改注入时的payload &#xff0c;达到sql注入时对一些敏感字符的一些绕过 下载 sqlmap 自带的 tamper 脚本就在 /sqlmap/tamper 目录下&#xff0c;是用 python 编写的&#xff0c;所以我们可以用 python 语言自己编写一些脚本…

bismark和bsmap比对原理

1&#xff0c;bismark比对方法比较简单粗暴&#xff0c;它制作两种类型的基因组&#xff1a;1&#xff09;&#xff0c;将所有的C转化为T的基因组&#xff1b;2&#xff09;&#xff0c;将所有的G转化为A的基因组。它将bisulfate&#xff08;重chong硫酸盐&#xff09;处理后的…

【Kafka】面试题总结

Kafka 1、什么是消息队列2、消息队列有什么用3、Kafka 的多分区以及多副本机制有什么好处呢4、Zookeeper 在 Kafka 中的作用知道吗5、Kafka 如何保证消息的消费顺序6、Kafka 如何保证消息不丢失7、Kafka 如何保证消息不重复消费7、Kafka为什么快/吞吐量大 1、什么是消息队列 我…

【JavaScript】对象继承精华提炼

继承机制 每个函数都有一个prototype属性&#xff0c;指向一个对象&#xff0c;该对象是原型对象&#xff1b;构造函数生成实例时&#xff0c;该属性会自动成为实例对象的原型&#xff1b;原型对象上的所有属性和方法&#xff0c;都能被实例对象共享继承&#xff1b;原型对象的…

使用HALCON标定板快速标定,纠正成像畸变

使用HALCON标定板快速标定&#xff0c;纠正成像畸变 1生成标定板描述文件 gen_caltab (7, 7, 0.00375, 0.5, caltab.descr, caltab.ps)gen_caltab ( : : XNum, YNum, MarkDist, DiameterRatio, CalPlateDescr, CalPlatePSFile : ) 为具有矩形排列标记的标定板生成标定板描述文…

Linux环境下安装RocketMQ(单机、集群)

目录 前置要求&#xff1a; 一、下载RocketMQ 二、上传解压 三、配置rocketmq的环境变量 四、查看rocketmq的目录结构 五、启动 5.1 启动nameserver 5.2 启动broker 六、测试发送消息 七、关闭 八、RocketMQ集群搭建 8.1 RocketMQ集群模式介绍 8.2 搭建 8.2.1 准…

海康机器视觉Visionmaster-VM3D常见问题及解决方法

软件及环境问题 第一个问题&#xff1a;软件获取问题 官网获取 第二个问题&#xff1a;环境配置类问题 1.软件打不开&#xff0c;加密狗灯不亮&#xff0c;6报错&#xff1a;加密狗未检测到或异常。解决方法&#xff1a;安装3DVM的驱动。 安装后加密狗无法识别&#xff0c…

SLAM论文速递:SLAM—— MID-Fusion:基于八叉树的对象级多实例动态SLAM—4.26(1)

论文信息 题目&#xff1a; MID-Fusion:Octree-based Object-Level Multi-Instance Dynamic SLAMMID-Fusion:基于八叉树的对象级多实例动态SLAM 论文地址&#xff1a; https://ieeexplore.ieee.org/abstract/document/8794371发表期刊&#xff1a; 2019 International Conf…

LVS-NAT模式

什么是群集&#xff1f; 多台主机组成的一个整体&#xff0c;提供一个ip访问通道&#xff0c;所有的主机干一件事 提供同样的服务。 群集有哪些类型&#xff1f; ①负载均衡群集&#xff08;LB&#xff09;&#xff1a; 提高系统的响应能力&#xff0c;处理更多的访问请求&am…

Linux进程(1)

目录 ⛹&#x1f3fd;进程简介⛹&#x1f3fd;查看进程⛹&#x1f3fd;系统调用&#x1f6b4;&#x1f3fd;获取进程标示符&#x1f6b4;&#x1f3fd;创建进程 ⛹&#x1f3fd;进程状态&#x1f6b4;&#x1f3fd;孤儿进程&#xff1a;&#x1f6b4;&#x1f3fd;进程优先级 ⛹…

一次使用netcat的经验记录

1.netcat安装 参考&#xff1a;https://my.oschina.net/u/3530967/blog/1560985 2.netcat使用 参考&#xff1a;https://zhuanlan.zhihu.com/p/83959309 3.创建udp服务 &#xff08;1&#xff09;使用&#xff1a;nc -l -u -p 8810 创建udp服务端监听8810端口 在另一台机…

基于信度感知的半监督医学图像分类对比自集成

文章目录 Reliability-Aware Contrastive Self-ensembling for Semi-supervised Medical Image Classification摘要本文方法Reliability-Aware Contrastive Mean TeacherWeight FunctionReliability-Aware Consistency LossReliability-Aware Contrastive LossObjective Functi…