边界值分析法是一种很实用的黑盒测试用例方法,它具有很强的发现故障的能力。边界值分析法也是作为对等价类划分法的补充,测试用例来自等价类的边界。

这个方法其实是在测试实践当中发现,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 个点的选择。

  • 上点:边界上的点
  • 离点:离上点最近的点。如果输入域是封闭的,则离点在域范围外;如果输入域是开区间,则离点在域的范围内。
  • 内点:在输入域内任意一个点

要选取正好等于、刚好大于或刚好小于边界值作为测试数据,一般来说要把上点、离点和内点都取到。所以选取正好等于、刚好大于或刚好小于边界值作为测试数据。

综上,题目中要选择的点有六个:正好等于边界值的 0、100,刚好小于边界值的 -1、99,刚好大于边界值的 1、101。

边界点划分规则

  1. 如果规定了输入域的取值范围,则选取刚好在范围边界的点,以及刚好超过边界的点,作为测试的输入数据。
  2. 如果规定了输入值的个数,则用最大个数,最小个数,比最小个数少 1,比最大个数多 1 的数作为测试数据。
  3. 如果规定了输入是一个有序的集合,则选取集合的第一个元素和最后一个元素作为测试数据。

实例

问题:计算 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 给出错误示

边界值总结

用边界值法补充测试用例时,要注意确定边界情况(输入或输出等价类的边界),选取正好等于、刚刚好大于或刚刚好小于边界值作为测试数据以及确定各个值的等价类,明确边界值和等价类区别,即边界值分析不是从某等价类中随便挑一个作为代表,而是这个等价类的每个边界都要作为测试条件。

喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

更多技术文章

技术分享 | 黑盒测试方法论—边界值相关推荐

  1. 技术分享 | 黑盒测试方法论—场景法

    场景法就是模拟用户操作软件时的场景,主要用于测试系统的业务流程. 测试不能只关注某个控件的边界值.等价类是否满足要求,也要关注它的主要功能和业务流程是否正确实现,这时就需要使用场景法来完成. 场景法 ...

  2. 一个研发团队是如何坚持7年技术分享的?

    --"所有分享都是有意义的" --"在PingCode,人人都可以成为分享者" 这是PingCode研发团队的分享精神,而这样的精神,在过去7年中已经闪耀了10 ...

  3. 2018 大湾区(深圳) .NET技术分享交流会 第一期

    .NET Core 2.1 已于2018年5月30日正式发布,邀请粤港澳大湾区.NET技术专家和从业人员,一起分享与交流.NET技术的发展方向,提高粤港澳大湾区.NET技术交流氛围,挖掘.NET高级人 ...

  4. 我是如何做技术分享的 ?

    1. 前言 一直想在 2021 年给大家做一期分享,以解决咱们客户端团队分享频次多,但质量上还有些参差不齐的问题,名字就叫:如何做一个优秀的技术分享? 于是我回顾了一下我过去的分享,大大小小分享了 3 ...

  5. 阿里技术分享:阿里自研金融级数据库OceanBase的艰辛成长之路

    本文原始内容由作者"阳振坤"整理发布于OceanBase技术公众号. 1.引言 OceanBase 是蚂蚁金服自研的分布式数据库,在其 9 年的发展历程里,从艰难上线到找不到业务场 ...

  6. 阿里技术分享:电商IM消息平台,在群聊、直播场景下的技术实践

    本文由淘宝消息业务团队李历岷(花名骨来)原创分享,首次发表于公众号"淘系技术",有修订和改动. 1.引言 本文来自淘宝消息业务团队的技术实践分享,分析了电商IM消息平台在非传统IM ...

  7. 知乎技术分享:从单机到2000万QPS并发的Redis高性能缓存实践之路

    本文来自知乎官方技术团队的"知乎技术专栏",感谢原作者陈鹏的无私分享. 1.引言 知乎存储平台团队基于开源Redis 组件打造的知乎 Redis 平台,经过不断的研发迭代,目前已经 ...

  8. 阿里技术分享:深度揭秘阿里数据库技术方案的10年变迁史

    本文原题"阿里数据库十年变迁,那些你不知道的二三事",来自阿里巴巴官方技术公号的分享. 1.引言 第十个双11即将来临之际,阿里技术推出<十年牧码记>系列,邀请参与历年 ...

  9. Inplayable技术分享

    Inplayable技术分享 运维 设计模式 Web 安全 工具 语言 python 运维 <aws lambda 通过codebuild上线踩坑指南之 lambda 进程被占用 status ...

最新文章

  1. 人工神经网络控制下的智能车
  2. 又一个高等级数据中心着火了!
  3. 阿里云 Serverless 再升级,从体验上拉开差距
  4. boost::spirit模块实现将由某个分隔符分隔的任意键/值对解析为 std::map的测试程序
  5. 家用电脑配置_家用电脑无需太高配置,不要听电脑店瞎忽悠,2500元机子够用了!...
  6. linux空格转义,如何在bash循环列表中转义空格?
  7. go install
  8. MyBatis学习(一):简单的运行
  9. 广州市出租车GPS数据(20210127)
  10. 11.4.2 内存映射的相关接口
  11. python xlsxwriter 画图_python xlsxwriter创建excel图表的方法
  12. 什么是前端工程师?前端工程师需要掌握什么技能?
  13. RabbitMQ 工作队列模型(任务队列)
  14. linux多网卡的路由模式和桥接模式设置方法
  15. 解决vim与外界的复制粘贴(不用安装插件)
  16. html 输入年份,判断是否是闰年
  17. Recorder︱一些图像识别初创公司产品及API搜集ing...
  18. 【数字图像处理】图像的几何变换之 图形平移与旋转
  19. 苹果平板哪款电容笔好用?超好用的苹果平板电容笔推荐
  20. 微信小程序引入WeUI组件库并使用组件

热门文章

  1. 苹果(maccms V10) Python 采集豆瓣评分直接入库。
  2. idea html有没有母版,多母版(三):建立子样
  3. SVM对于高斯核函数的理解
  4. PHP 如何优(zhuang)雅(bi)的使用魔术方法__call()
  5. ES6特性:箭头函数转换,闭包
  6. 2012年最有价值的Android开发精品文章荟萃【800篇】
  7. 使用基因组圈图表示变异在基因组内位置|R circlize包
  8. pyspark的聚合函数agg使用
  9. 基于CCE Kubernetes网络与持久化存储实战
  10. html数字数据走势图,利用HTML5实现数据曲线走势图表代码