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

news2024/11/29 11:52:32

等价类划分法是一种典型的黑盒测试用例设计方法。采用等价类划分法时,完全不用考虑程序内部结构,设计测试用例的唯一依据是软件需求规格说明书。

等价类

所谓等价类,是输入条件的一个子集合,该输入集合中的数据对于揭示程序中的错误是等价的。等价类又分为有效等价类和无效等价类。有效等价类代表对程序有效的输入,而无效等价类则是其他任何可能的输入(即不正确的输入值)。有效等价类和无效等价类都是使用等价类划分法设计用例时所必须的,因为被测程序若是正确的,就应该既能接受有效的输入,也能接受无效输入的考验。

划分等价类的标准:

1.完备测试、避免冗余;

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

3.并是整个集合:完备性;

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

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

等价类划分的方法:

1.如果输入条件规定了一个取值范围,那么就应该确定一个有效等价类以及两个无效等价类。

如月份取值在112之间,由此可确定一个有效等价类即月份在112之间,和两个无效等价类,即月份取值小于1及月份取值大于12.

2.规定了输入条件必须如何的情况下可以确定一个有效等价类和一个无效等价类。

如输入值必须大于0,则有效等价类为输入值大于0,无效等价类为输入值小于或者等于0.

3.在输入数据是一个bool常量的情况下,可以确定一个有效等价类和一个无效等价类。

4.在规定了输入数据由n个值构成的情况下,并要求定其中的每个值进行测试时,可以确定n个有效等价类和一个无效等价类。

如交通工具类型为公共汽车、卡车、出租车、火车或者摩托车,那么就应该为每一个输入值确定一个有效等价类和一个无效等价类例如拖车。

5.在规定了输入数据冰箱最受的规则的情况下,可以确定一个有效等价类和若干个无效等价类(从不同角度违反规则)。

如输入值必须是数字类型的字符,则可确定一个有效等价类,及输入值为数字类型的字符,和多个无效等价类,即输入值为字母、为专用字符(如+、*、@等)以及为非打印字符(如回车、空格等)。

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

划分等价类之后,应建立等价类表,列出与每一个输入条件对应的有效等价类和无效等价类。

设计测试用例

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

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

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

总结:

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

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

文档获取方式:

加入我的软件测试交流群:632880530免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)

这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

以上均可以分享,只需要你搜索vx公众号:程序员雨果,即可免费领取

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

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

相关文章

C++编程案例讲解-基于结构体的控制台通讯录管理系统

基于结构体的控制台通讯录管理系统 通讯录是一个可以记录亲人、好友信息的工具,系统中需要实现的功能如下: 添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人…

BuhoCleaner for Mac:彻底改变您的Mac清理体验

BuhoCleaner for Mac是一款专为Mac用户打造的清理工具,它可以帮助您清理无用的文件、缓存、日志和其他垃圾,从而释放磁盘空间并提高系统性能。这款工具具有简单易用的界面和强大的清理功能,是Mac用户必备的清理工具之一。 特点 简单易用的界…

3D RPG Course | Core 学习日记四:鼠标控制人物移动

前言 前边我们做好了Navgation智能导航地图烘焙,并且设置好了Player的NavMeshAgent,现在我们可以开始实现鼠标控制人物的移动了。除了控制人物移动以外,我们还需要实现鼠标指针的变换。 实现要点 要实现鼠标控制人物移动,点击…

VHDL基础知识笔记(1)

1.实体:其电路意义相当于器件,它相当于电路原理图上的元器件符号。它给出了器件的输入输出引脚。实体又被称为模块。 2.结构体:这个部分会给出实体(或者说模块)的具体实现,指定输入和输出的行为。结构体的…

十分钟搭建自己的在线书库随时随地看小说,Kindle不再盖泡面!

Kindle中国电子书店停运不要慌,十分钟搭建自己的在线书库随时随地看小说! 文章目录 Kindle中国电子书店停运不要慌,十分钟搭建自己的在线书库随时随地看小说!1.网络书库软件下载安装2.网络书库服务器设置3.内网穿透工具设置4.公网…

5K买的300集全套JAVA面试视频、10W+字文档成功上岸一线互联网大厂

前言: 今年这情况,真心建议所有 Java 后端不要随便被“行情差洗脑”! 目前职友集上搜到的 java 岗位仍有22万,招聘需求相比其他行业不算少! 大家最应该关注的是:自身技术硬度如何? 毕竟不管在…

Redis学习(十)RedisTemplate 对各种数据类型的支持

目录 一、SpringDataRedis 简介1.1 什么是 Redis?1.2 什么是 Jedis?1.3 什么是 Spring Data Redis? 二、RedisTemplate 中 API 使用2.1 pom.xml 依赖2.2 配置文件2.3 RedisTemplate 的直接方法2.4 String 类型相关操作2.5 Hash 类型相关操作2…

台灯选用什么类型好?双十一值得入手的护眼台灯推荐

如何给孩子挑选一盏能够护眼的台灯一直是许多家长都为之头痛的一大难题,主要是如今市面上的台灯实在太多了,而且迭代速度非常快,再加上这些产品中还混杂了许多不专业品牌、网红产品和低价劣质产品等等,想要挑选到一款好的台灯确实…

MVC模式和三层架构:

MVC模式: M:Model,业务模型,处理业务 V:View,视图,界面展示 C:Controller,控制器,处理请求,调用模型和视图 MVC优点: 职责单一&am…

C++ Lambda表达式 在竞赛中提高你的代码连贯性

本文中的lambda表达式使用方式应该在目前的所有比赛中(C11及以上)都是可以使用的,因为比较落后的蓝桥杯都更新到了C14。 当题目做的越来越多,难度越来越大,相应的代码就会越来越长,通常在100行左右。 在行…

你的GPU能跑Llama 2等大模型吗?用这个开源项目上手测一测

你的 GPU 内存够用吗?这有一个项目,可以提前帮你查看。 在算力为王的时代,你的 GPU 可以顺畅的运行大模型(LLM)吗? 对于这一问题,很多人都难以给出确切的回答,不知该如何计算 GPU 内…

云栖大会72小时沉浸式精彩回顾

计算,为了无法计算的价值 2023 杭州云栖大会震撼落幕 自2015年,云计算支撑着移动互联网创新 AI时代,继续支撑所有开发者的创新与梦想 当大会主题再次回归 让我们也打开时空隧道 一起回顾72小时云栖之旅 打造一朵AI时代最开放的云 随着…

SpringBoot单元测试报错“Error creating bean with name ‘serverEndpointExporter‘ ”

问题场景 在SpringBoot中使用单元测试时,出现以下报错,意思是创建名为‘serverEndpointExporter’的bean时出错。 org.springframework.beans.factory.BeanCreationException: Error creating bean with name serverEndpointExporter defined in class…

折叠旗舰新战局:华为先行,OPPO接棒

乌云中的曙光,总能带给人希望。 全球智能手机出货量已经连续八个季度下滑,行业里的乌云挥之不散。不过,也能看到高端市场逆势上涨,散发光亮。个中逻辑在于,当前换机周期已经达到了34个月,只有创新产品才能…

使用R语言构建HTTP爬虫:IP管理与策略

目录 摘要 一、HTTP爬虫与IP管理概述 二、使用R语言进行IP管理 三、爬虫的伦理与合规性 四、注意事项 结论 摘要 本文深入探讨了使用R语言构建HTTP爬虫时如何有效管理IP地址。由于网络爬虫高频、大量的请求可能导致IP被封禁,因此合理的IP管理策略显得尤为重要…

简单的nvm语法

文章目录 导文常用的nvm语法 导文 nvm(Node Version Manager)是一个用于管理Node.js版本的工具,它提供了一些简单的命令来操作Node.js的安装、切换和管理。 常用的nvm语法 这些命令可以在终端中执行,以方便地进行Node.js版本的管…

汇编-DUP操作符

DUP操作符使用整数表达式作为计数器, 为多个数据项分配存储空间。 在为字符串或数组分配存储空间时,这个操作符尤其有用,并且可以使用初始化或非初始化数据: .data BYTE 20 DUP(0) ;20个字节,都等于0 BYTE 20 …

C++入门学习(2)缺省参数

前言 继上回我们学习了命名空间和在C里面的输入输出之后,我们知道了命名空间可以解决C语言命名冲突的问题,也简单掌握了命名空间的使用,我们已经可以写出简单的C代码,所以大家还是要继续练习敲代码,提高语感。 #includ…

再谈Android重要组件——Handler(Native篇)

前言 最近工作比较忙,没怎么记录东西了。Android的Handler重要性不必赘述,之前也写过几篇关于hanlder的文章了: Handler有多深?连环二十七问Android多线程:深入分析 Handler机制源码(二) And…

构建金融新核心生态!金融级数字底座“源启”与易捷行云可进化数字原生平台完成互认证

近日,金融级数字底座“源启”顺利与易捷行云可进化数字原生云平台V6完成互认证。易捷行云云平台V6可支持金融机构核心应用实现高速响应、秒级扩容,并切实保障银行核心系统安全稳定,符合“源启”金融级数字底座(2.0版)技…