热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

边界值法设计测试用例

大量的测试实践表明,很多错误是发生在输入或输出数据范围的边界上,因此针对各种边界情况设计测试用例,有利于揭露程序中的错误。边界值分析法是对等价类分析法的补充。边界值分析法利用各输入等价类的最小值、略大

大量的测试实践表明,很多错误是发生在输入或输出数据范围的边界上,因此针对各种边界情况设计测试用例,有利于揭露程序中的错误。

边界值分析法是对等价类分析法的补充。边界值分析法利用各输入等价类的最小值、略大于最小值的值、正常值、略小于最大值的值和最大值处进行取值。

1.“单故障”假设

边界值分析的另外一个要点基于一个十分重要的假设“单故障”假设,即失效问题通常不会由两个(或多个)故障同时引发。因此,构造边界值测试用例的方法是,尽让一个变量取边界值,其余变量取正常值。

例如有函数F(x1,x2) a ≤x1≤ b,c ≤x2≤ d,那么边界值取值情况应如下图:

因此,对于一个n个变量的函数,将会吃产生4n+1个不同的测试用例。

2.健壮性测试

健壮性测试是对边界值分析的一种简单扩展,在对变量的5个边界值进行分析之外,近一步考虑略大最大值和略小于最小值的情况。那么函数F(x1,x2)边界值取值情况应如下图:

边界值分析的大部分属性都直接适用于健壮性测试,对健壮性测试来说,最重要的不是输入而是期望输出。

3.最坏情况测试

如前所述,边界值分析是基于可靠性理论中的单故障假设的。如果抛开这个假设,就意味着要考察多个变量同时取极值的情况。这在电路分析中叫“最坏情况分析”,这里也利用这种思想来构造最坏情况测试用例。对于每个变量先构造最小值、略大于最小值的值、正常值、略小于最大值的值和最大值5个边界值的集合,然后计算这些集合的笛卡尔积。对于有n个变量的函数来说,最坏情况测试将会构造出5n个测试用例。

那么函数F(x1,x2)边界值取值情况应如下图:

 

最坏情况测试适用于各个物理量之间存在大量的相互作用,而且函数失效代价极高的情况。

在对测试有特别极端的要求时应采用健壮性最坏情况测试,这就是要用健壮性测试的7个值的集合做笛卡尔积,得到7n个测试用例。函数F(x1,x2)边界值取值情况应如下图:

 

4.特殊值测试

特殊值测试可能是采用最广泛的一种功能测试方法,也是最直观、最难统一的。在特殊值测试这种,测试人员利用其背景知识、在类似程序方面积累的经验以及对软件“软肋”的了解来设计测试用例。

5.边界值分析法设计测试用例应遵循的原则

1)如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。

2)如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据。

3)将规则1)和2)应用于输出条件,即设计测试用例使输出值达到边界值及其左右的值。

     例如,某程序的规格说明要求计算出"每月保险金扣除额为0至1165.25元",其测试用例可取0.00及1165.24、还可取一0.01及1165.26等。

     再如一程序属于情报检索系统,要求每次"最少显示1条、最多显示4条情报摘要",这时我们应考虑的测试用例包括1和4,还应包括0和5等。

4)如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。

 5)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。

6.实例

NextDate函数包含三个变量:month(月份)、day(日期)、和年(year),函数的输出为输入日期的后一天的日期。例如输入为2007年9月9日,则函数的输出为2007年9月10日。要求输入变量month、day、year均为整数值,并且满足下列条件:

1)1 ≤month≤ 12

2)1 ≤day≤ 31

3)1812 ≤year≤ 2012

最坏情况测试用例:

7.边界值分析法的局限性

边界值分析法非常适用于多个变量相互独立又都代表实际物理量的情况。例如:NextDate函数中并没有针对2月和闰年的测试,实际上month、day和year这几个变量之间存在特殊的依赖关系。边界值分析假定各个变量之间应该是完全独立的。

变量的物理指标同样重要。如果某个变量代表具体的物理量,比如温度、压力、速度等,这个量的物理边界就非常重要。

 


推荐阅读
  • 使用M函数轻松处理Excel中的多分隔符分列问题
    在处理Excel数据时,经常会遇到需要根据不同的分隔符来拆分单元格中的内容。本文介绍了一种利用M函数在Power Query中实现这一需求的方法,即使面对多种分隔符也能轻松应对。 ... [详细]
  • 探索古典密码学:凯撒密码、维吉尼亚密码与培根密码
    本文深入探讨古典密码学的基本概念及其主要类型,包括替换式密码和移位式密码。文章详细介绍了凯撒密码、维吉尼亚密码和培根密码的工作原理及加密解密方法。 ... [详细]
  • WinSCP: 跨Windows与Linux系统的高效文件传输解决方案
    本文详细介绍了一款名为WinSCP的开源图形化SFTP客户端,该工具支持SSH协议,适用于Windows操作系统,能够实现与Linux系统之间的文件传输。对于从事嵌入式开发的技术人员来说,掌握WinSCP的使用方法将极大提高工作效率。 ... [详细]
  • 本文详细介绍了 Kubernetes 集群管理工具 kubectl 的基本使用方法,涵盖了一系列常用的命令及其应用场景,旨在帮助初学者快速掌握 kubectl 的基本操作。 ... [详细]
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • 小度科技完成B轮融资,估值突破330亿
    8月24日,百度宣布其智能生活事业群组业务——小度科技成功完成B轮融资,估值达到330亿元人民币。此次融资的具体投资方尚未公布。 ... [详细]
  • Python基础教程:条件语句与函数进阶
    本文深入探讨了Python中的基本操作与函数特性,包括条件语句的扩展使用及函数的多种定义方式。 ... [详细]
  • 本文将详细介绍如何在ThinkPHP6框架中实现多数据库的部署,包括读写分离的策略,以及如何通过负载均衡和MySQL同步技术优化数据库性能。 ... [详细]
  • 本文介绍了一种利用WMI类Win32_SystemEnclosure中的ChassisTypes属性来识别计算机类型的简单方法,并提供了详细的脚本示例。 ... [详细]
  • XWiki 数据模型开发指南
    本文档不仅介绍XWiki作为一个增强版的wiki引擎,还深入探讨了其数据模型,该模型可在用户界面层面被充分利用。借助其强大的脚本能力,XWiki的数据模型支持从简单的应用到复杂的系统构建,几乎无需直接接触XWiki的核心组件。 ... [详细]
  • 深入解析MySQL查询优化:特定类型查询的高级策略
    本文详细探讨了MySQL中特定类型查询的优化方法,包括COUNT()查询、关联查询、LIMIT分页及UNION查询的优化技巧,旨在提高数据库查询效率。 ... [详细]
  • 本文详细探讨了JavaScript中new操作符的内部机制及其在对象实例化过程中的作用,帮助开发者更好地理解和应用这一核心概念。 ... [详细]
  • 深入分析十大PHP开发框架
    随着PHP技术的发展,各类开发框架层出不穷,成为了开发者们热议的话题。本文将详细介绍并对比十款主流的PHP开发框架,旨在帮助开发者根据自身需求选择最合适的工具。 ... [详细]
  • 本文详细介绍如何在Windows 7操作系统中安装Python,并在IIS (Internet Information Services) 中配置Python脚本的运行环境。步骤包括安装必要的组件、配置IIS处理程序映射以及测试Python脚本的执行。 ... [详细]
  • 本文详细介绍了重新安装智能手机操作系统的方法,包括恢复出厂设置和刷机两种方式,帮助用户了解正确的操作步骤和注意事项。 ... [详细]
author-avatar
梦幻星之海洋1997_643
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有