等价类划分法设计测试用例

2023-11-12

等价类划分法:

一、方法简介

1.定义

是把所有可能输入的数据,即程序的输入域划分策划国内若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。方法是一种重要的、常用的黑盒测试用例设计方法。

2.划分等价类

等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:测试某等价类的代表值就等于对这一类其他值的测试,因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件就可以用少量代表性的测试数据取得较好的测试结果。等价类划分有两种不同的情况:有效等价类和无效等价类。

1)有效等价类

是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明所规定的功能和性能。

2)无效等价类

指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能多个。

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

3.划分等价类的标准

       1) 完备测试、避免冗余

       2) 划分等价类重要的是:集合的划分、划分为互不相交的一组子集,而子集的并是整个集合

       3) 并是整个集合:备性

       4) 子集互不相交:保证一种形式的无冗余性

       5) 同一类中标识(选择)一个测试用例,同一等价类中,往往处理相同,相同处理映射到“相同的执行路径”。

4.划分等价类的方法

1) 在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。如:输入值是学生成绩,范围是0~100;

clip_image001

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

       3)在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。

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

例:输入条件说明学历可为:专科、本科、硕士、博士四种之一,则分别取这四种的四个值作为四个有效等价类,另外把四种学历之外的任何学历作为无效等价类。

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

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

5.设计测试用例

在确立了等价类后,可建立等价类表,列出所有划分出的等价类输入条件:有效等价类、无效等价类,然后从划分出的等价类中按以下三个原则设计测试用例:

       1)为每一个等价类规定一个唯一的编号;

       2)设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止;

       3)设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。

二、实战演习

1、三角形问题

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

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

(1)整数 (2)三个数(3)非零数(4)正数

(5)两边之和大于第三边(6)等腰 (7)等边

如果a、b、c满足条件(1)~(4),则输出下列四种情况之一:

1)如果不满足条件(5),则程序输出为“非三角形”

2)如果三条边相等即满足条件(7),则程序输出为“等边三角形”

3)如果只有两条边相等,及满足条件(6),则程序输出为“等腰三角形”

4)如果三条边都不相等,则程序输出为“一般三角形”

列出等价类表并编号

clip_image002

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

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)

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

clip_image003

2NextDate

2、NextDate函数包含三个变量:month、day、year,函数的输出为输入日期后一天的日期。

例如,输入2006年3月7日,则函数的输出为2006年3月8日。要求输入变量month、day、year均为整数值,并且满足下列条件:

1、1<=month<=12

2、1<=day<=31

3、1812<=year<=2012

1)有效等价类为:

M1={月份:1<=月份<=12}

D1={日期:1<=日期<=31}

Y1={年份:1812<=年<=2012}

2)若条件1~3中任何一个条件失效,则NextDate函数都会产生一个输出,指明相应的变量超出取值范围,比如“month的值不在12范围中”。显然还存在这大量的year、month、day的无效组合,NextDate函数将这些组合作为统一的输出:“无效输入日期”。

其无效等价类为:

M2={月份:月份<1}

M3={月份:月份>12}

D2={日期:日期<1}

D3={日期:日期>31}

Y2={年份:年<1812}

Y3={年份:年>2012}

弱一般等价类测试用例

月份

日期

预期输出

6

15

1912

1912年6月16日

强一般等价类测试用例同弱一般等价类测试用例

注:弱有单缺陷假设;健壮考虑了无效值。

(一)弱健壮等价类测试

用例

ID

月份

日期

预期输出

WR1

 

6

15

1912

1912年6月16日

WR2

 

0

1

1912

月份不在1~12中

WR3

 

15

1

1912

月份不在1~12中

WR4

 

1

0

1912

日期不在1~31中

WR5

 

1

32

1912

日期不在1~31中

WR6

 

1

1

1811

年不在1812~2012中

WR7

 

1

1

2013

年不在1812~2012中

(二)强健壮等价类测试

用例

ID

月份

日期

预期输出

SR1

 

15

1

1912

月份不在1~12中

SR2

 

1

32

1912

日期不在1~31中

SR3

 

1

1

1811

年份不在1812~2012中

SR4

 

0

0

1912

两个无效一个有效

SR5

 

0

1

1811

两个无效一个有效

SR6

 

1

0

1811

两个无效一个有效

SR7

 

0

0

1811

三个无效

转自:https://blog.csdn.net/weixin_34138521/article/details/93363609

转载于:https://www.cnblogs.com/zhangwuji/p/7128240.html

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

等价类划分法设计测试用例 的相关文章

  • 软件测试开发/全日制/测试管理丨接口测试抓包与 Mock/接口自动化测试

    在软件开发中 接口测试是确保系统各个组件之间协同工作的重要环节 接口测试抓包与Mock以及接口自动化测试相结合 能够更全面 高效地验证接口的正确性 性能和稳定性 从而打造一个稳健的接口生态系统 接口测试抓包 接口测试抓包是一种通过监控和记录
  • 软件测试开发/全日制/测试管理丨用户端 App 自动化测试

    随着移动应用的普及和发展 用户端 App 自动化测试成为确保应用质量 提高测试效率的关键环节 这一测试方法不仅可以模拟用户真实的操作行为 还能够覆盖多种设备和平台 为移动应用的稳定性和用户体验提供可靠的保障 选择合适的自动化测试框架 在用户
  • 【性能测试入门】:压力测试概念!

    压力测试可以验证软件应用程序的稳定性和可靠性 压力测试的目标是评估软件在极端负载条件下的鲁棒性和错误处理能力 并确保软件在紧急情况下不会崩溃 它甚至可以进行超出软件正常工作条件的测试 并评估软件在极端条件下的工作方式 在软件工程中 压力测试
  • 软件测试|Windows系统配置pytest+allure环境教程

    前言 allure可以输出非常精美的测试报告 也可以和pytest进行完美结合 不仅可以渲染页面 还可以控制用例的执行 本文我们将介绍Windows系统中如何配置allure环境 第一步 配置Java环境 因为 allure 的运行依赖于J
  • 软件测试/测试开发/全日制/测试管理丨Python深拷贝与浅拷贝

    深拷贝和浅拷贝是两种不同的拷贝方式 它们在处理可变对象 如列表 字典 时有着不同的行为 以下是深拷贝和浅拷贝的主要区别 1 浅拷贝 Shallow Copy 创建方式 浅拷贝通过复制原始对象 创建一个新对象 但对于原始对象中的可变对象 如列
  • 2种方法,教你使用Python实现接口自动化中的参数关联

    通常在接口自动化中 经常会参数关联的问题 那么什么是参数关联 参数关联就是上一个接口的返回值会被下一个接口当做参数运用 其中Python中可以实现参数关联的方法有很多种 今天小编给大家介绍下 如何通过Python来实现接口自动化中的参数关联
  • Jenkins 插件下载速度慢、安装失败了!我教你怎么解决!

    Jenkins部署完毕 如果不安装插件的话 那它就是一个光杆司令 啥事也做不了 所以首先要登陆管理员账号然后点击系统管理再点击右边的插件管理安装CI CD必要插件 但是问题来了 jenkins下载插件速度非常慢 而且经常提示下载插件失败 真
  • 外包干了3个月,技术退步明显。。。。。

    先说一下自己的情况 本科生 19年通过校招进入广州某软件公司 干了接近4年的功能测试 今年年初 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了四年的功能测试 已经让我变得不思进取 谈了2年的女朋友
  • 测试开发必知:有Tomcat,为什么还要Nginx?

    只用Tomcat 不用Nginx搭建Web服务 行不行 我曾经提出的愚蠢问题 今天详细给自己解释下 为什么必须用Nginx 不用Nginx 只用Tomcat的Http请求流程 浏览器处理一个Http请求时 会首先通过DNS服务器找到域名关联
  • 测试用例评审流程优化

    测试用例 评审是QA日常工作流程中的关键一环 是QA同学完善测试用例 交流测试经验的好机会 负责组内测试用例建设以来 作者对于评审流程做了一些优化工作 本文作者将整个优化过程中的心得体会做了一个总结 希望能给大家带来帮助 01 原始流程 1
  • 新入职一个00后卷王,每天加班到2点,太让人崩溃了····

    在程序员职场上 什么样的人最让人反感呢 是技术不好的人吗 并不是 技术不好的同事 我们可以帮他 是技术太强的人吗 也不是 技术很强的同事 可遇不可求 向他学习还来不及呢 真正让人反感的 是技术平平 却急于表现自己的人 每天加班到12点 在老
  • 软件测试|Python中如何提取列表中索引为奇数的元素

    简介 在Python中 我们经常需要从列表中提取特定位置的元素 如果我们想要提取列表中索引为奇数的元素 可以使用一些简单的方法来实现这一目标 本文将介绍如何在Python中提取列表中索引为奇数的元素 并提供示例代码来帮助大家更好地理解这个过
  • 软件测试|使用matplotlib绘制平行坐标系图

    简介 绘制平行坐标系图 Parallel Coordinates Plot 是一种用于可视化多维数据的强大方法 在这篇文章中 我们将介绍如何使用Matplotlib库创建平行坐标系图 以及如何解释和定制这种图表 我们将使用一个示例数据集来演
  • 软件测试|sqlalchemy relationship

    简介 SQLAlchemy是一个流行的Python ORM 对象关系映射 库 它允许我们以面向对象的方式管理数据库 在SQLAlchemy中 relationship 是一个重要的功能 用于建立表之间的关系 在本文中 我们将详细探讨 rel
  • 软件测试|web自动化测试神器playwright教程(三十八)

    简介 在我们使用selenium时 我们可以获取元素的属性 元素的文本值 以及输入框的内容等 作为比selenium更为强大的web自动化测试神器 playwright也可以实现对元素属性 文本值和输入框内容的抓取 并且实现比seleniu
  • 测开和测试平台是否有存在的必要?

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 开眼了,自动化测试还能这样用?

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 新手也能看懂的【前端自动化测试入门】!

    前言 最近在网上搜索前端自动化测试相关的文档 但是发现网上的文章都是偏使用 没有把一些基础概念说清楚 导致后续一口气遇到一些 karma Jasmine jest Mocha Chai BDD 等词汇的时候很容易一头雾水 这次一方面整理一下
  • 外包干了2个月,技术倒退2年。。。

    先说一下自己的情况 本科生 20年通过校招进入深圳某软件公司 干了接近4年的 功能测试 今年国庆 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了四年的功能测试 已经让我变得不思进取 谈了3年的女朋
  • 用Python实现高效数据记录!Web自动化技术助你告别重复劳动!

    自动化关键数据记录 简介 关键数据记录是 Web 自动化测试中的关键部分 它们提供了关于系统行为和执行过程的详细信息 有助于验证用例的正确性 排查问题和确保应用程序的质量 行为日志 行为日志是一种用于记录系统或应用程序的操作和事件的技术 它

随机推荐

  • TortoiseGit SSH拉取GitLab代码

    ING 前述 Git获取远端代码的方式主要有两种https和SSH 这两种方式的主要区别在于 1 https url克隆会比较方便 复制https url然后到git Bash里面直接用clone命令克隆到本地就好了 但是每次fetch和p
  • 黑猫带你学eMMC协议第19篇:eMMC RPMB区域详解(重放保护内存块)

    1 前言 1 1 声明 本文依据eMMC JEDEC5 1 网络资料及个人工作经验整理而成 如有错误请留言 本文结合eMMC JEDEC5 1协议手册查看效果更佳 文章为个人辛苦整理 付费内容 禁止私自转载 1 2 内容提要 本文大约一万一
  • 2. Redis持久化、主从哨兵架构详解

    分布式缓存技术Redis 1 Redis持久化 1 1 RDB快照 snapshot 1 1 1 bgsave的写时复制 COW 机制 1 2 AOF append only file 1 2 1 AOF重写 1 3 Redis 4 0 混
  • flea-frame-db使用之基于EntityManager实现JPA分表的数据库操作【旧】

    基于EntityManager实现JPA分表的数据库操作 引言 1 EntityManager持久化操作 2 分表规则定义 3 分表操作实现 4 自测 4 1 新增数据 4 2 查询数据 4 3 更新数据 4 4 删除数据 更新 引言 本文
  • 在不影响线上服务情况下,删除大表数据表

    在不影响线上数据库服务情况下 如何删除数据库中的大表 分析 数据库中表涉及到db和os两个层面 1 db层面删表涉及到table cache的全局唯一锁 一旦数据表过大 会长时间占用全局为一锁 导致db卡死 2 os层面涉及到数据表物理文件
  • 伤腰的Python爬虫案例,零基础必备实战教程。

    前言 今天带大家采集一个二次元图片网站 里面漂亮的小姐姐层出不穷 图片的数据量也是比较大的 来一睹为快吧 开发环境介绍 python 3 6 pycharm requests parsel os 爬虫案例数据采集一般步骤 找数据对应的链接地
  • conan的学习与使用

    conan学习与使用 资源 官方地址 C C Open Source Package Manager conan io 重要概念 什么是包管理工具 包管理工具的主要作用是管理第三方依赖 也可以看成一个 轮子 工厂 每个人都可以上传自己造的
  • verdi显示数据

    在波形数据上点右键 2 s complement 就是大家计算机课上学的 补码 1 s complement 是课上讲的 反码 signed magnitude 最高位是符号位 0 正数 1 负数 低位是绝对值 另外 ncverilog v
  • FFmpeg命令行工具学习(五):FFmpeg 调整音视频播放速度

    转自 https www cnblogs com renhui p 10709074 html FFmpeg对音频 视频播放速度的调整的原理不一样 下面简单的说一下各自的原理及实现方式 一 调整视频速率 调整视频速率的原理为 修改视频的pt
  • QT之实现简陋聊天

    相关知识 QT 数据库 TCP IP Socket 1 登陆界面 包含登陆和注册两种功能 思路如下 难点 建立服务器和数据库 数据库保存数据 服务器与数据库产生联系 解决 数据库与服务器放在同一个类中 登陆和注册时 客户端与服务端连接 传输
  • 数据结构与算法(Java描述)-19、哈夫曼树、哈夫曼编码算法

    一 哈夫曼树的基本概念 在一棵二叉树中 定义从A结点到B结点所经过的分支序列叫做从A结点到B结点的路径 从A结点到B结点所经过的分支个数叫做从A结点到B结点的路径长度 从二叉树的根结点到二叉树中所有叶结点的路径长度之和称作该二叉树的路径长度
  • ctfshow 网络迷踪做题记录(1)

    ctfshow 网络迷踪做题记录 1 新手上路 找桥的名字 附件为一张海边图片 百度识图为蜈支洲岛 得到地点名 但还需要具体桥的名字 再用搜索引擎搜索关键字 就可以看到结果中的 情人桥 初学乍练 题目描述 提交这架飞机的目的地 附件图片为一
  • 十分钟让你搞懂会用Spring Retry

    一 项目的配置 为了启用 Spring Retry 的支持 首先要在pom xml 文件中添加以下依赖项
  • 良许Linux

    一个系统管理员可能会同时管理着多台服务器 这些服务器也许会放在不同的地方 要亲自一台一台的去访问来管理它们显然不是最好的方法 通过远程控制的方法应该是最有效的 Linux系统的远程管理工具大概有几种 telnet ssh vnc等 其中ss
  • motionface respeak新的aigc视频与音频对口型数字人

    在当今的数字化时代 人工智能 AI 正在逐渐渗透到我们生活的方方面面 其中 AI技术在视频制作和处理领域的应用也日益广泛 本文将探讨如何利用AI技术实现视频中人脸与音频同步对口型的方法 旨在进一步丰富视频制作的效果和表现形式 数字人一件对口
  • 由于无法验证发布者,Windows已经阻止此软件

    Windows系统都很注重系统的安全性 在提高安全性的同时 也给我们某些应用带来不便 比如在日常工作中经常会到某些网站上进行登录 需要安装该站点的ActiveX控件 否则无法正常加载 这时可能会弹出 由于无法验证发行者 所以WINDOWS已
  • matlab中由离散点生成云图,[转载]在matlab中由离散点生成云图

    首先 有离散点的数据如下 x 376 82 377 56 379 74 421 20 419 41 417 82 418 80 458 86 457 72 459 55 461 64 500 27 501 51 499 48 498 02
  • U盾的工作原理

    你的数字证书有一对 一份在U盾里的私钥 一份在银行的公钥 其实两份银行都有 U盾的原理很类似于双向认证的TLS SSL 或者其它用到RSA的双向证书验证手段 以下步骤可能和U盾实际执行的有所区别 但本质相同 银行先给你一个 冲击 它包含了随
  • No module named ‘cv2‘ 解决办法 (No module named ‘numpy‘ 等所有报错均可解决)

    更多视觉额自动驾驶项目请见 自动驾驶项目 实在不行可以私信我解决 0 常规解决方案 1 当出现No module named cv2 解决方案 pip install opencv python i https pypi tuna tsin
  • 等价类划分法设计测试用例

    等价类划分法 一 方法简介 1 定义 是把所有可能输入的数据 即程序的输入域划分策划国内若干部分 子集 然后从每一个子集中选取少数具有代表性的数据作为测试用例 方法是一种重要的 常用的黑盒测试用例设计方法 2 划分等价类 等价类是指某个输入