等价类

2023-11-18

动态测试方法是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等性能。这种方法由三部分组成:构造测试用例执行程序、分析程序的输出结果。

静态方法是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。对需求规格说明书、软件设计说明书、源程序结构分析流程图分析、符号执行来找错。


测试的目的是进行完备的测试,同时避免测试用例冗余
等价类是将集合划分成互不相交的一组子集,这些子集并不是整个集合
子集是由等价关系决定的,子集元素都有共同点
因此:
•利用子集表示了集合的完备性
•互不相交体现了无冗余性
等价类测试是通过每个等价类中的一个元素标识测试用例,降低测试用例的冗余性

等价类是指某个输入域的子集合
•− 在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。测试某等价类的代表值就等价于对这一类其它值的测试
等价类的划分有两种丌同的情况:
•− 有效等价类:对于程序规格说明来说,是合理的,有意义的输入数据构成的集合
•− 无效等价类:对于程序规格说明来说,是丌合理的,无意义的输入数据构成的集合
设计测试用例时,要同时考虑有效等价类和无效等价类设计

等价类测试重复边界值测试的两个决定因素,即健壮性和单/多缺陷假设。
等价类测试的关键,就是选择确定的等价关系,必须区分弱和强等价类

划分的等价类特点
测试的内容相同
一个等价类中的某个测试可以发现缺陷,那么这个等价类的其他测试也能发现该缺陷。
如果一个等价类中的一个测试没有发现缺陷,这个等价类的其他测试也丌能发现缺陷。

测试用例的选择
为每一个等价类规定一个唯一的编号
设计一个新的测试用例,使其尽可能多的覆盖尚未被覆盖的有效等价类,重复这一步,直至所有的有效等价类都被覆盖过
设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直至所有的无效等价类都被覆盖为止

等价类划分是难点
(1)如果输入条件规定了取值范围,戒值的个数,则可以确立一个有效等价类和两个无效等价类。
•例如,在程序的规格说明中,对输入条件有一句话:“…… 项数可以从1到999 ……”,则有效等价类是“1≤项数≤999”两个无效等价类是“项数<1”戒“项数>999”。
(2)如果输入条件规定了输入值的集合,戒者是规定了“必须如何”的条件,这时可确立一个有效等价类和一个无效等价类。
•例如,对变量标识符规定为“以字母打头的……串”。那么所有以字母打头的构成有效等价类,而不在此集合内(不以字母打头)的归于无效等价类。
(3)如果输入条件是一个布尔量,则可以确定一个有效等价类和一个无效等价类
(4)如果规定了输入数据的一组值,而且程序要对每个输入值分别进行处理,这时可为每一个输入值确立一个有效等价类,此外针对这组值确立一个无效等价类,它是所有不允许的输入值的集合
•例如:在教师上岗方案中规定对教授、副教授、讲师和助教分别计算分数,做相应的处理,可以确定4个有效等价类为教授、副教授、讲师和助教,一个无效等价类,它是所有不符合以上身分的人员的输入值的集合。
(5)如果规定了输入数据必须遵守的规则,则可确立一个有效等价类(符合规则)和若干个无效等价类
• 例如,规定“一个语句必须以分号';'结束”,这时,可以确定一个有效等价类“以';'结束”,若干个无效等价类“以':'结束”、“以','结束”、“以' '结束”、“以LF结束”等

等价类测试用例设计的步骤
分析需求描述
划分测试功能的粒度
确定每个测试功能的输入和输出
对输入/输出划分等价类
选择等价类的方法,计算测试用例数量
设计测试用例

等价类测试总结
等价类测试的弱形式不如强形式的测试全面
如果错误条件非常重要,有必要进行健壮形式的测试
如果输入数据以离散值区间和集合定义,则等价类测试是合适的
通过结合边界值测试,等价类测试可以得到加强
如果函数很复杂,需要做等价类测试
强等价类测试假设变量是独立的,相应的测试用例相乘会引起冗余问题。如果存在依赖关系,则常常会生成错误的测试用例
在确定合适的等价关系之前,可能需要进行多次尝试
强和弱形式的等价类测试之间的差别,有助于区分累进测试和回归测试

优缺点

  优点:避免了盲目或随机选取输入数据的布完整性和覆盖的不稳定性

  缺点:没有对组合情况进行充分的考虑,需要结合其他测试用例设计的方法进行补充


等价类测试方法:

在等价类测试当中,强指的是多缺陷假设,而弱指的是单缺陷假设,前者表明了一个笛卡尔乘积的概念;一般指的就是正常值,即不需要考虑异常者,而健壮性则刚好相反,即需要考虑异常者。

弱一般等价类:单缺陷假设,不讨论异常区域


强一般等价类:多缺陷假设,不考虑异常区域


弱健壮等价类:单缺陷假设,要考虑异常区域


强健壮等价类:多缺陷假设,要考虑异常区域;即一个全笛卡尔乘积


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

等价类 的相关文章

  • 【Kaggle】Stable Diffusion - Image to Prompts竞赛代码初步理解

    文章目录 一 前言 二 导包 三 加载预训练的 OFA 模型 四 模型EDA 五 Inference 六 安装并导入所有依赖项 七 设置配置 八 加载示例提交 九 Build index from images 十 CLIP interro
  • grep命令

    grep 全称是global regular expressions print 功能就是查找匹配模式的行 grep对文本内容的处理是以行为单位 输出也是输出匹配的行 也可以使用两个变种程序egrep和fgrep egrep与grep E相
  • linux下绑定任务到特定的CPU

    一 linux c查看cpu核 1 命令行查看cpu有几个核 cat proc cpuinfo grep processor wc l 或 nproc 2 linux c代码查看 include
  • 一文了解全面静态代码分析

    在开发具有安全性 可靠性和合规性的软件时 全面静态代码分析是一种有效的方法 在这里 我们将就静态分析而言 讨论全面静态代码分析的不同之处 阐述全面静态代码分析的重要性 以及如何进行全面静态代码分析 什么是全面静态代码分析 全面静态代码分析
  • 计算机行业应届生秋招春招究竟拼的是什么?

    计算机行业是被行外人神话的行业 也是被行内人吐槽的行业 2020年中国高校IT行业毕业生达到了将近70万人 这是什么概念 这样的情况下应届生的顺利就业将会是很大的问题 也就是说几十计算机行业的人才需求很大 也将面临着很大一部分毕业生找不到工
  • iOS系统语音识别

    iOS10语音识别框架Speech 项目中用到语音识别功能 这里简单的进行了一下封装 大概实现了系统语音识别的功能 还没测试 应该会有很多坑 语音识别功能封装 系统的语音识别 外部语音输入 实现语音转文字功能 项目地址 https gith
  • Tello无人机飞控(Python)程序设计

    Tello无人机飞控 Python 程序设计总结 1 py飞控库介绍 tello的几个不同的飞控库有什么区别吗 用哪个好些 Tello的几个不同飞控库主要是针对Python开发者提供的控制无人机的工具包 它们各有特点和使用方式 以下是对一些
  • 闪回版本查询+闪回版本查询案例1+闪回版本查询案例2

    闪回版本查询 闪回版本查询提供了一个审计 检查行改变的查询功能 通过它可以查找到 所有已经提交了的行记录 语法 select column name column name from table name versions between
  • 5G智慧交通白皮书 附下载地址

    智慧交通是人民对美好生活的向往之一 智慧交通从安全 效率 节能等方面改善人民的出行体验 无人驾驶的发展和普及进一步改变人们的生活方式 智慧交通业务丰富 面对不同的应用场景 需要专属的解决方案 网络联接 实时通信是智慧交通的基础 5G 赋能智
  • 围棋:一间低夹

    一间低夹 搜索结果 哔哩哔哩 Bilibili 1 复杂的新版一间高夹 第一集 复杂的新版一间高夹 第一集 哔哩哔哩 bilibili 2 复杂的新版一间高夹 第二集 复杂的新版一间高夹 第二集 哔哩哔哩 bilibili 3 复杂的新版一
  • java的六大框架_常用的java开发框架介绍 (初学者必备的六大框架)

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 常用的java开发框架java作为主流的开发语言之一其框架的使用也是非常广泛的 java到javaee部分全部是在以框架来开发 因为框架可以大大节约时间以及成本 那么java中常用的主流框架都有

随机推荐

  • Freetype编译

    编译freetype步骤 1 解压包freetype 2 10 0 tar 2 cd freetype 2 10 0 3 cd builds unix 4 chmod 777 configure 创建一个文件夹 media private
  • java8特性:Stream高效操作数组集合

    简介 Stream 作为 java8 的新特性 基于 lambda 表达式 是对集合对象功能的增强 它专注于对集合对象进行各种高效 便利的聚合操作或者大批量的数据操作 提高了编程效率和代码可读性 Stream 的原理 将要处理的元素看做一种
  • 通讯录管理系统C语言链表实现

    本程序采用链表的方式可以实现对于通讯录信息的管理操作主要有增 删 改 查 显示全部信息 退出六个功能 代码注释都有逻辑简单易懂适合初学者进行链表的学习 代码如下 include
  • 全新范式

    在本文中提出了一种简单的注意力机制Box Attention 它支持网格特征之间的空间交互 从感兴趣的Box中采样 并提高了Transformer针对多个视觉任务的学习能力 具体来说 介绍的BoxeR 即Box Transformer的缩写
  • CNN:Windows下编译使用Caffe和Caffe2

    用于检测的CNN分为基于回归网络的方法和基于区域 CNN网络的方法 其中基于回归网络的方法典型为YOLO9000 可以兼容使用VGG Net框架 其中基于区域 CNN网络方法 大量使用了Caffe作为基础CNN框架 准备工作 python2
  • 安装nedo.js 'npm'不是内部或外部命令,也不是可运行的程序 或批处理文件

    npm 不是内部或外部命令 也不是可运行的程序 或批处理文件 问题 没有npm命令需要按需node js npm 不是内部或外部命令 也不是可运行的程序 或批处理文件 一 下载安装node js nodejs官网 https nodejs
  • Spring Boot Metrics使用

    Spring Boot 使用Metrics监控 导入pom依赖
  • 2021年第八届大唐杯全国大学生移动通信5G技术大赛省赛

    2021年第八届大唐杯全国大学生移动通信5G技术大赛省赛 实验背景 勘站规划 网络部署 开通调测 业务认证摘自 https www bilibili com video BV1Hr4y1Y7m8 spm id from 333 337 se
  • vue+$emit调用父级方法,添加其他参数

    前言 我们在vue中子组件调用父组件的方法使用的是this emit 方法名 参数 但是在某些特定场合 我们还希望可以在父组件那里添加其他参数 实现方法
  • 新手学习Python要注意的13个问题

    作为一门易学的编程语言 Python对初学者来说确实是一个非常好的选择 不过 初学者在学习Python的过程中可能会遇到一些常见的问题 以下是一些常见的Python学习问题 语法错误 语法错误是最常见的问题之一 初学者经常会忘记冒号 括号
  • llvm之IR设计

    llvm之IR设计 引言 1 逻辑关系 2 class Module 3 class IRBuilder 4 class Instruction 5 class Constant 6 class Function 引言 llvm IR是ll
  • v-if与v-show的区别=====》面试题

    共同点 都是控制元素显示或隐藏的指令 区别 v show 控制元素无论是true还是false都会被渲染出来 通过diaplay none控制元素隐藏 v if控制元素是true渲染 是false不渲染 在dom树结构中不显示 加分回答 应
  • [STM32系列]一、HAL库的串口中断接收

    STM32系列 一 HAL库的串口中断任意长度接收 1 前言 2 回调函数 3 HAL库中断接收函数使用 1 前言 HAL即硬件抽象层 英语 Hardware Abstraction Layer 实现了不同硬件的统一接口操作 这就极大的简化
  • 极简Json格式剖析与fastjson下载和使用

    Json存在的意义 Json主要用来做数据的传输 例如发送java中的一个对象 由于对象是存储在内存里的 不能直接将内存里的对象发送出去 这时需要使用序列化 持久化 手段 将对象转换为一系列字符串 比如说Json 在字符串送达目的地时再使用
  • HTTP协议和Tomcat服务器

    目录 1 HTTP 是什么 2 HTTP 工作过程 2 1 HTTP 协议格式 2 1 1 抓包工具的使用 2 1 2 抓包工具原理 2 1 3 抓包结果分析 2 1 4 协议格式总结 3 HTTP 请求 Request 3 1 请求地址
  • 常用的数组方法整理

    常用的数组方法 1 concat 2 join 3 pop 4 shift 5 unshift 7 reverse 8 sort 9 slice 10 splice 11 toString 12 valueOf 13 IndexOf 14
  • 二、Vue3跨组件调用函数[mitt]

    一 跨组件调用函数 安装 npm install mitt 创建文件并写入 bus js import mitt from mitt export const eventBus mitt 使用方法 import eventBus from
  • 2022年6月8日STM32——SPI读写串行FLASH 和 串行FLASH文件系统FatFs

    此内容是为自己方便回忆 如有错误 欢迎指导 内容来源于野火指南者开发板教程 一 SPI读写串行FLASH SPI Serial Peripheral Interface 串行外围设备接口 是高速全双工的通信总线 通讯速率较高 SPI物理层
  • VS2019中文输出乱码解决方法(C语言)

    现象 VS2019控制台输出中文乱码 第一种解决方法 安装插件Format on Save重启VS2019生效 注意 别装错了 刚开始我就装错了这个UTF 8 No BOM 装了这个插件的同学 记得要删掉 不然还是会出现问题 第二种解决方法
  • 等价类

    动态测试方法是指通过运行被测程序 检查运行结果与预期结果的差异 并分析运行效率 正确性和健壮性等性能 这种方法由三部分组成 构造测试用例 执行程序 分析程序的输出结果 静态方法是指不运行被测程序本身 仅通过分析或检查源程序的语法 结构 过程