测试用例入门(三)-使用边界值分析法编写测试用例

2023-11-14

在《软件测试》一书中是这样描述边界值分析法的作用:如果在悬崖峭壁边可以自信、安全的行走而不掉下去,平地就不在话下了。
本篇文章中的演示代码均由Python编写

一、边界值分析法概述

  • 软件在边界上很容易产生问题,软件是很极端的,要么对,要么不对。
    对于软件来说,如果能在边界运行,那么正常情况下就应该不会有什么问题。
  • 边界值法也是用例常用的方法之一,它的运用步骤很简单:
    1.找到一个边界
    2.测试边界
    3.测试边界两边

二、边界条件的判断

在边界值方法的运用中,首先、也是最关键的就是找到那个边界。

  • 如果在读需求的时候,发现如下关键字——“首次”,“第{数字}天”、“第{数字}页”等等,这种明显的有一个数量、一个边界的描述,就应该敏感的感觉到“这是需要用到边界值法”。

示例
比如经常遇到的页面分页的问题,就是很典型的边界值问题

假设这是一个商城的需求:

  • 待测需求:一页只展示10个商品,超过10个时,页面展示“下一页”按钮。
  • 测试点:页面大于10条数据,只展示十条数据,并展示“下一页”按钮
  • 使用代码演示就是这样,naxt_page 为是否展示下一页按钮的方法,但传入的data_num大于10时,页面才会展示:
    def naxt_page(data_num):
        # 当页面数据大于10时,展示下一页按钮
        if data_num > 10:
            print("展示下一页按钮") # 达到按钮展示条件时打印日志
    
  • 显然当data_num=10的时候就是测试的关键点。所以此时10就是边界值。

三、边界两侧的判断

  • 找到边界两边。在确定边界之后,通常的做法是简单的对边界加一单位、减一单位来确定边界两边

示例
还是以上面那个示例来说明:

  • 当找到边界值后,再找边界两边的数值。

  • 在这个示例中页面的数据是一个个的商品,由此可知可知数量都是整数。所以边界两边的数据应该是9和11
    注意:如果此时待测的目标不是商品,而是价格,比如商品的价格达到10元则可以使用“满十元减一”的优惠券,那么边界值两边的数据应该是9.99和10.01。

  • 确定好边界两边的数据之后,现在可以针对这条测试点写出完整的用例:
    在这里插入图片描述

  • 其实边界不一定是数字, 比如按钮的UI测试上也可以使用边界值法设计测试用例——测试时正好处于按钮边缘点击会响应、处于按钮中间点击会响应、处于按钮之外点击不响应。这样就可以测出程序在写这个按钮的点击区域时是否正确

这是只有一个边界值的情况,而大多数情况下,不止有一个边界时。判断边界值的方式可以遵循如下规律:

  • 闭区间:范围为[1-10],左边边界取点 0、1,右边边界取点10、11,边界间再任意取一个点。
  • 闭区间和开区间:范围为(1-10],左边边界取点 1、2,右边边界取点10、11,边界间再任意取一个点。
  • 开区间:范围为(1-10),左边边界取点 1、2,右边边界取点9、10,边界间再任意取一个点。

四、次边界条件

  • 有明确数值的边界值是最容易找到的,它们会在需求文档中有描述,或是使用软件的过程中能明显发现(比如首次启动应用)。
  • 有些边界存在于软件内部,在使用过程中几乎是没有表现的。
  • 浮点数精度丢失问题:计算机存储数据是使用二进制,代码进行运算的时候使用的是十进制的,十进制一些数,十进制的一些小数并不能很好的被二进制表示,所以在转换的过程中会出现精度丢失。
  • 所以在测试时可能会遇到这种bug,一个商品价值9.99元,再加一个0.01元的商品一起结算,却不能使用“满十减一”的优惠券
  • 浮点数精度丢失问题就是典型的次边界条件,在设计有关的测试用例时就需要考虑到
  • 考虑这一类问题的时候,需要有一定的知识基础,一方面可以多与程序员交流,另一方面也需要平时的积累。

五、特殊边界条件:默认值、空值

  • 在考虑明显的边界条件的同时,也要考虑到空值、0、默认值的情况。
  • 就是当没有数据输入时、或输入的为空值时,应用应该有一个兜底的处理
  • 虽然这些情况可能在需求内不会有明确的描述,但这是在测试用例设计时必须要考虑到的。

六、等价类划分法与边界值法

  • 等价类划分法常常与边界值法同时使用。使用时边界值作为等价类划分的条件。

示例
还是以上面分页的例子来说明

  • 在这个例子中,对于测试是否展示“下一页”按钮而言,当页面总共有1条数据时和页面总共有9条数据时这两种情况是可以等价的,因为页面都是展示对应的1条和9条数据,且都是不展示“下一页”按钮。同理,当有11条数据与12条数据时也是一样。
    在这里插入图片描述

七、最后

  • 边界值分析法与等价类划分法一样,是非常常见的设计用例方法,网上也有很多教程。
  • 但还是有很多人可能只是知道这两种方法,却没有系统的学习过,或是也没有跟工作内容结合起来。希望看过这篇文章之后能对你有帮助。

附录:【测试用例入门系列目录】

测试用例入门(一)-如何编写用例标题、前置条件、测试步骤和预期结果?
测试用例入门(二)-使用等价类划分法编写测试用例
测试用例入门(三)-使用边界值分析法编写测试用例
测试用例入门(四)-使用流程分析法、状态分析法编写测试用例
测试用例入门(五)-如何进行需求分析
测试用例入门(六) - 根据测试类型与颗粒度归纳测试点

————————————————————————————————————————————
本人运营的博客同名公众号【软件测试必备技能】不定期会上传测试相关资料,有需要可以前往领取。
在这里插入图片描述
在这里插入图片描述
有需要可点击文章下方二维码,前往领取~
在这里插入图片描述

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

测试用例入门(三)-使用边界值分析法编写测试用例 的相关文章

  • springboot 结合easyexcel实现动态表头的方法

    package com yili survey excel import com alibaba excel EasyExcel import org junit jupiter api Test import org springfram
  • vim三种模式

    vim有三种工作模式 一般模式 指令模式 命令模式 编辑模式 一 一般模式的工作模式 1 移动光标 2 复制和粘贴 3 删除字符 4 查找和替换 二 命令模式的工作模式 1 保存文件 2 退出vi 3 读入外部文件 4 显示行号 三 编辑模
  • vue样式穿透 ::v-deep的具体使用

    vue样式穿透 v deep的具体使用 更新时间 2020年06月04日 11 32 59 转载 作者 柳慕笙 这篇文章主要介绍了vue样式穿透 v deep的具体使用 文中通过示例代码介绍的非常详细 对大家的学习或者工作具有一定的参考学习
  • 学习笔记:近似推断(待完善)

    在很多概率模型中 很难训练的最重要的原因是 很难进行推断 所以书中 专门开了这章 来面临训练中最大而又 不能不解决的问题 近似推断 近似推断 可以视为优化问题 主要是 最大化下界 最大化下界 1 EM 期望最大化 2 MAP 最大后验推断
  • STM32 通过HAL库实现双机SPI程序烧录之一SPI双机通信

    一 实现SPI双机通信 主要功能 STM32F407VET6作为主机 STM32F103ZET6作为从机实现F4通过SPI接口发送数据给F1进行串口打印功能 主要是使用STM32cubemx进行相关配置 使用这个软件不能只用于生成代码 要学
  • kubeadm一键搭建kubernetes环境

    kubeadm一键搭建kubernetes环境 安装docker 按官网教程执行https docs docker com v17 09 engine installation linux docker ce centos install

随机推荐

  • Tauri打包windows应用配置中文界面

    使用 Tauri Rust 开发桌面应用 在 windows 系统上 打包后安装包名称后缀 安装界面 相关说明默认都是英文的 如果要默认显示为中文 则需要在 tauri conf json 中配置相应参数 前言 默认情况下 在 window
  • Multi-exit Network

    关键词 Multi exit 动态网络 Anytime prediction budgeted batch classification 参考 https blog csdn net c9Yv2cf9I06K2A9E article det
  • TAS-LR 论文辅助笔记 & 图拉普拉斯正则项推导

    1 图拉普拉斯正则项的直观目标函数 我们已知一张图G的邻接矩阵A 和度矩阵D 那么我们就知道他的拉普拉斯矩阵L D A 在使用矩阵分解的时空数据补全问题中 有一些文献使用图拉普拉斯正则化项来对空间特征矩阵进行约束 我们假设低秩的空间特征矩阵
  • 2021-12-23 工作记录--LayUI-单击行内容展示子表(手风琴效果),堪称yyds

    LayUI 单击行内容展示子表 手风琴效果 百度了好多办法 都不能达到这种效果 所以记录一下 最开始使用layui soul table 但是它不能实现单击行内容展示子表 而是单击行最左列展示子表 所以与项目不符 则放弃了 但是感兴趣的小萝
  • 幼儿园里面有科技设备么

    现代社会 幼儿园是孩子们是快乐且有意义的生涯起点 他们从这里认识世间万物 格物斯坦心系每位的热爱人工智能的孩子们 祖国的未来就靠你们了 幼儿园的核心工作是保证幼儿健康成长 同时需要为幼儿提供良好的学习和生活环境 随着现代技术正朝着智能化的方
  • Rocketmq Filter 消息过滤(TAGS、SQL92)原理详解 & 源码解析

    1 背景 1 1 Rocketmq 支持的过滤方式 Rocketmq 作为金融级的业务消息中间件 拥有强大的消息过滤能力 其支持多种消息过滤方式 表达式过滤 通过设置过滤表达式的方式进行过滤 TAG 根据消息的 tag 进行过滤 SQL92
  • 【 ROS 入门 2】tf 入门学习教程总结(缺少系统整理)

    ROS官网 tf 教程 http wiki ros org tf Tutorials 参考博客 三维旋转矩阵 包括任意轴的通用旋转矩阵 Euler角 单位四元数 的计算 视觉SLAM中的数学基础 第二篇 四元数 ROS学习 轻松使用tf t
  • PIL,cv2,plt的使用与区别

    PIL cv2 plt的使用与区别 1 比较三者的打开图片 显示图片 打开的图片的类型 2 图像类型的转换 PIL与numpy 3 PIL cv2 plt混用 3 1 cv2 plt读PIL打开的图像 3 2 PIL plt读cv2打开的图
  • https 是如何保护数据传输的

    为什么需要 https https 是 http ssl 也就是加密的 http 数据传输 我们都知道 https 的最主要的作用在于保证数据的安全 但具体来说 https 的安全性主要体现在以下两点 保证数据传输不被中间人盗用和信息的泄漏
  • GitHub开源协议

    开源协议 有名开源许可证 很多 经过Open Source Initiative组织 OSI批准 通过批准的开源协议目前有58种 常见的开源许可证包括 MIT MIT License GPL GNU General Public Licen
  • 预览word文件,支持下载(微软提供)

    预览打印 file 文件对象 url 接口地址 filepath 文件路径 filetype 文件类型 PS 兼容docx pdf后缀文件 export const filePreview file gt if file filepath
  • 三层架构:软件设计架构

    1 界面层 表示层 用户看的得界面 用户可以通过界面上的组件和服务器进行交互 2 业务逻辑层 处理业务逻辑的 3 数据访问层 操作数据存储文件
  • ---复位现象---GD32 MCU插入SD卡MCU立刻复位

    问题描述 程序运行正常 但是在插入SD卡的瞬间 单片机硬件复位 程序重新运行 之后状态一切正常 可以读取到SD卡 如果上电前插入SD卡 则一切正常 原因 使用示波器测试MCU电源 在SD卡插入瞬间 MCU电源电压跌落到2 5V以下 正常GD
  • 重载输入<<,输出>>,前置和后置++,--运算符

    由于系统给定的输入 lt lt 输出 gt gt 前置和后置 运算符只能处理类似于int float等系统已经定义好的类型的变量 为了能对我们自己定义的类的对象也能进行这些操作 我们就要重载这些运算符 定义一个复数类的对象 class Co
  • 基于OPENCV4的火焰烟雾检测

    现在目标检测主要采用深度学习训练模型 然后采用OPENCV4调用 烟雾火焰检测 采用CAFFE训练一个模型 采用OPENCV4调用 C PYTHON都可以调用 可以加Q 2830025146进行讨论 效果测试在 https download
  • 前端安全

    有哪些可能引起前端安全的问题 跨站脚本攻击 Cross Site Scripting XSS 一种代码注入方式 为了与 CSS 区分所以被称为 XSS 早期常见于网络论坛 起因是网站没有对用户的输入进行严格的限制 使得攻击者可以将脚本上传到
  • 行人重识别数据集汇总

    最近一段时间在做行人重识别方向的研究 行人重识别 Person Re Identification 作为图像识别领域的一个分支 在实际生活中具有极其重要的意义 目前 城市里的用于公共治安领域的摄像头已经大量部署 几乎到了几十米到几百米一个覆
  • Android 11(targetSdkVersion 30)不能获得存储权限的问题和适配指南

    虽然原文说的比较详细了 但我补充一两点 也为了方便自己总结和避坑 Android权限大致可分为三类 普通权限 只需要在清单文件中注册即可 危险权限 需要在代码中动态申请 以弹系统 Dialog 的形式进行请求 特殊权限 需要在代码中动态申请
  • 苹果新iPad创新乏力,中国发售遇冷失宠

    7月20日清晨 北京三里屯苹果店外有点冷清 十几个顾客在门口安静地排着队 曾经活跃的黄牛党没了踪影 守候在一旁的工作人员正在拆除原本打算维持秩序的护栏 如果不是店面上巨大的苹果标志 你恐怕很难把这个场景和苹果新品首发联系在一起 要知道在半年
  • 测试用例入门(三)-使用边界值分析法编写测试用例

    在 软件测试 一书中是这样描述边界值分析法的作用 如果在悬崖峭壁边可以自信 安全的行走而不掉下去 平地就不在话下了 本篇文章中的演示代码均由Python编写 目录 一 边界值分析法概述 二 边界条件的判断 三 边界两侧的判断 四 次边界条件