软件测试|测试方法论—边界值
边界值分析法是一种很实用的黑盒测试用例方法,它具有很强的发现故障的能力。边界值分析法也是作为对等价类划分法的补充,测试用例来自等价类的边界。
这个方法其实是在测试实践当中发现,Bug 往往出现在定义域或值域的边界上,而不是在其内部。为检测边界附近的处理专门设计测试用例,通常都会取得很好的测试效果。
在用边界值分析法的时候,一般规定了取值范围以及值的个数的场景。
在分析等价类案例,划分等价类的时候,一般都是会有比较特殊的点,叫做极点或者上点。比如 [1,100] 中的上点就是 1 和 100,这两个数值就被称为边界值,也可以叫极值。设计测试用例的时候,可以在等价类的基础上,去重点验证它的边界点的情况。
边界值举例
比如需求中的要求是输入的参数值必须大于等于 0 同时小于 100 的整数。
正确代码可以这样设置判断条件:
# 正确条件 1num > -1 and num < 100# 正确条件 2num >= 0 and num <= 99
但是在实际的代码编写过程中,很有可能因为各种原因,导致判断条件设置错误:
# 错误条件 1num >= -1 and num <= 101# 错误条件 2num > 0 and num < 101# 错误条件 3num >= 1 and num <= 100
第一种错误情况是因为多包含了 -1 和 101,第二种错误情况是或者漏掉了 0,而第三种错误情况是漏掉了 0 并且多包含了 100。
因为会有各种错误情况的出现,所以需要选择边界值进行重点测试来避免这些情况。
边界值确定
使用边界值分析法设计用例需要考虑 3 个点的选择。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N0Djr1p6-1661957017336)(upload://nNwjLMu9tmnZPu3eZAUkXyq9rbx.png)]
- 上点:边界上的点
- 离点:离上点最近的点。如果输入域是封闭的,则离点在域范围外;如果输入域是开区间,则离点在域的范围内。
- 内点:在输入域内任意一个点
要选取正好等于、刚好大于或刚好小于边界值作为测试数据,一般来说要把上点、离点和内点都取到。所以选取正好等于、刚好大于或刚好小于边界值作为测试数据。
综上,题目中要选择的点有六个:正好等于边界值的 0、100,刚好小于边界值的 -1、99,刚好大于边界值的 1、101。
边界点划分规则
- 如果规定了输入域的取值范围,则选取刚好在范围边界的点,以及刚好超过边界的点,作为测试的输入数据。
- 如果规定了输入值的个数,则用最大个数,最小个数,比最小个数少 1,比最大个数多 1 的数作为测试数据。
- 如果规定了输入是一个有序的集合,则选取集合的第一个元素和最后一个元素作为测试数据。
实例
问题:计算 1—100 的整数之和(包括 1 和 100)
上面已经用等价类的方法设计出来的测试用例,现在要使用边界值分析法补充用例。
首先分析边界值:1,100(有效等价类),其次是边界值两边的值:0,2,99,101(0 和 101 是无效等价类,2 和 99 是有效等价类)。
把有效等价类中的数值换为边界值,这里有 4 个有效等价类的值要取,分别是 1,2,99,100,那么这四个值两个输入框都需要取到。无效等价类中也要覆盖到 0 和 101 这两个值,同样的两个输入框都需要覆盖。
| 用例编号 | 所属等价类 | 输入框1 | 输入框2 | 预期结果 |
|---|---|---|---|---|
| 1 | 有效等价类 | 1 | 99 | 100 |
| 2 | 有效等价类 | 99 | 1 | 100 |
| 3 | 有效等价类 | 100 | 2 | 102 |
| 4 | 有效等价类 | 2 | 100 | 102 |
| 5 | 无效等价类 | 0 | 40 | 给出错误提示 |
| 6 | 无效等价类 | 40 | 0 | 给出错误提示 |
| 7 | 无效等价类 | 101 | 2 | 给出错误提示 |
| 8 | 无效等价类 | 2 | 101 | 给出错误示 |
边界值总结
用边界值法补充测试用例时,要注意确定边界情况(输入或输出等价类的边界),选取正好等于、刚刚好大于或刚刚好小于边界值作为测试数据以及确定各个值的等价类,明确边界值和等价类区别,即边界值分析不是从某等价类中随便挑一个作为代表,而是这个等价类的每个边界都要作为测试条件。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关文章:
软件测试|测试方法论—边界值
边界值分析法是一种很实用的黑盒测试用例方法,它具有很强的发现故障的能力。边界值分析法也是作为对等价类划分法的补充,测试用例来自等价类的边界。 这个方法其实是在测试实践当中发现,Bug 往往出现在定义域或值域的边界上,而不…...
OceanBase 笔记
目录 1. OceanBase 笔记1.1. 命令行 1. OceanBase 笔记 1.1. 命令行 # -usysoraclet#obcluster # -u用户名租户名#集群名...
ubuntu, nvidia driver, cuda, cudnn, pytorch-gpu版本安装
文章目录 1.常用指令1.1查看cpu是intel还是amd:1.2.查看ubuntu版本1.3.查看架构1.4.查看已安装的nvidia驱动1.5.进入tty模式 2.安装ubuntu22.04 和 nvidia 驱动3.ubuntu 安装 anaconda4.安装pytorch gpu版本5.安装完整版cuda 和 cudnn6.nvidia-driver, cuda-toolkit, cudnn 1.常…...
探索环保葡萄酒之生物动力
根据生物动力农业和园艺协会的说法,生物动力农业是“一种精神-伦理-生态的农业、园艺、食品生产和营养方法。”生物动力农民将他们的农场或葡萄园视为一个坚固的有机体,一个自我维持的生态系统。这些农业哲学和实践在整个农业周期中应用了一种整体方法。…...
【线上问题】服务器关机导致docker启动的mysql数据库消失了
目录 一、问题描述二、解决方式 一、问题描述 1. 服务器迁移断电导致docker启动的mysql数据库没有了数据 2. data目录是空的 3. mysql重启数据库消失了 二、解决方式 1. sudo -i切换root账号 2. 查找mysql的容器卷 find /var/lib/docker/volumes/ -name mysql3. 进入各个_dat…...
Win10 180天后怎么才能继续体验,自动保持续期,无需手动JH
环境: Win10 专业版 自制小程序 问题描述: Win10 180天后怎么才能继续体验,自动保持续期,无需手动JH 解决方案: 在执行本程序前需要以管理员身份运行!关闭杀毒软件,否则会失败,本方案只能在个人电脑测试体验, 只能用于学习测试体验 ,勿用与商业行为 1.先完全JH…...
RHCE8 资料整理(五)
RHCE8 资料整理 第五篇 系统管理第18章 进程管理18.1 进程介绍18.2 查看进程18.3 向进程发送信号18.4 进程优先级 第19章 日志19.1 rsyslog的配置19.2 查看日志 第20章 网络时间服务器20.1 时间同步必要性20.2 配置时间服务器20.3 配置客户端 第21章 计划任务21.1 at21.2 cront…...
CPU 飙高系统反应慢怎么排查
mic老师面试题摘选 面试过程中,场景类的问题更容易检测出一个开发人员的基本能力。 这不,一个小伙伴去阿里面试,第一面就遇到了关于“CPU 飙高系统反应慢怎么排查” 的问题? 对于这个问题,我们来看看普通人和高手…...
深度学习之基于YoloV5-Deepsort人物识别与追踪系统
欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 YoloV5-Deepsort是一种基于深度学习的人物识别与追踪系统,具有较高的准确率和实时性能。 YoloV5是一种…...
Spring Boot中配置多个数据源
配置数据源实际上就是配置多个数据库,在一个配置文件中配置多个数据库,这样做主要的好处有以下几点: 数据库隔离:通过配置多个数据源,可以将不同的业务数据存储在不同的数据库中,实现数据的隔离。这样可以…...
C++学习笔记---命名空间namespace
文章目录 前言简介定义命名空间using指令不连续&嵌套的命名空间 前言 wu 简介 C中的命名空间(Namespace)是一种用于组织和封装代码的机制,它允许你将一组相关的函数、类、变量和其他标识符放置在一个逻辑分组内,以便在不同的…...
缓存-Spring Cache 缓存抽象
缓存-Spring Cache 缓存抽象 Spring从版本3.1开始提供非侵入的将Cache集成到Spring应用的方式。Spring Cache提供Cache的统一抽象,支持集成各种不同的缓存解决方案。从4.1版本开始,提供了注解和更多的定制参数。 Spring Cache 抽象提供了对Java方法的缓存…...
Java修仙传之神奇的ES2(巧妙的查询及结果处理篇)
SDL语句查询 查询的基本语法 GET /indexName/_search {"query": {"查询类型": {"查询条件": "条件值"}} } 根据文档id查询 #查询文档 GET hotel/_doc/36934 查询所有 会弹出该索引库下所有文档// 查询所有 GET /indexName/_searc…...
架构设计的课程资料
架构设计课 枫叶云笔记...
数据结构与算法C语言版学习笔记(5)-串,匹配算法、KMP算法
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、串的定义二、串的存储结构1.顺序结构2.链式结构 三、串的朴素的模式匹配算法(暴力匹配算法)1.背景2.假设我们要从下面的主串 S"…...
新版HI3559AV100开发注意事项
新版HI3559AV100开发注意事项 一、在Hi3559A上使用openCV VideoCapture开启.mp4影像档, isOpened一直得到false 在Hi3559A上已经cross compile ffmepg 4.1openCV 3.4.4 但使用openCV VideoCapture开启.mp4影像档, isOpened一直得到false 请问要如何知道是什么原因无法开启影像…...
Django(一、简介,安装与使用)
文章目录 一、Django引入1.web应用程序什么是web?web引用程序的优点web应用程序的缺点什么是web框架 2.纯手写web框架1.web框架的本质2.HTTP协议的特性:3.编写基于wsgire模块搭建web框架代码封装优化代码封装 二、Django框架的学习1.Python中的主流框架2…...
【Linux C IO多路复用】多用户聊天系统
目录 Server-Client mutiplexingServer mutiplexingClient mutiplexing Server-Client 在Linux系统中,IO多路复用是一种机制,它允许一个进程能够监视多个文件描述符(sockets、pipes等)的可读、可写和异常等事件。这样…...
JSON——数组语法
一段JSON可能是以 ”{“ 开头 也可能仅包含一段JSON数组 如下 [ { "name" : "hello,world"}, {"name" : "SB JSON”}, {“name” : "SB互联网房地产CNM“}, ] 瞧,蛋疼不...CJSON过来还是得搜下网…...
运营商大数据精准获客:我们提供精准客源渠道的最大资源体?
运营商大数据精准营销 谈起精准获客,竞争对手永远是为我们提供精准客源渠道的最大资源体! 最新的获客方式,就是从竞争对手的手中把他们的精准客户资源变为自己的。 今年最火的运营商大数据精准营销是拒绝传统营销方式的烧钱推广࿰…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...
Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
快刀集(1): 一刀斩断视频片头广告
一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...
日常一水C
多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...
小智AI+MCP
什么是小智AI和MCP 如果还不清楚的先看往期文章 手搓小智AI聊天机器人 MCP 深度解析:AI 的USB接口 如何使用小智MCP 1.刷支持mcp的小智固件 2.下载官方MCP的示例代码 Github:https://github.com/78/mcp-calculator 安这个步骤执行 其中MCP_ENDPOI…...
【工具教程】多个条形码识别用条码内容对图片重命名,批量PDF条形码识别后用条码内容批量改名,使用教程及注意事项
一、条形码识别改名使用教程 打开软件并选择处理模式:打开软件后,根据要处理的文件类型,选择 “图片识别模式” 或 “PDF 识别模式”。如果是处理包含条形码的 PDF 文件,就选择 “PDF 识别模式”;若是处理图片文件&…...

