黑盒测试

也称为功能测试或数据驱动测试。通过软件的外部表现来发现其缺陷和错误。在测试时,把被测程序视为一个不能打开的盒子,在完全不考虑程序内部逻辑结构和内部特性的情况下进行。它是在已知产品所应具有的功能前提下,通过测试来检测每个功能是否都能正常使用,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能够适当地接收输入数据而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。

黑盒测试主要用于软件确认测试。

等价类划分法

定义

等价类测试是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。它是一种重要的,常用的黑盒测试用例设计方法,适用范围广,可以适用于单元测试、集成测试。系统测试等,且容易扩展。

等价类划分分类

等价类划分有两种不同的情况:有效等价类和无效等价类。在设计测试用例时,要同时考虑这两种等价类。软件不仅要能接受合理的数据,也要能经受意外的考验,这样的测试才能确保软件具有更高的可靠性。

等价类划分原则

  • 如果某个输入条件规定了取值范围或值的个数。则可确定一个合理的等价类(输入值在此范围内)和两个不合理的等价类(输入值或个数小于这个范围的最小值或大于这个范围的最大值)
  • 如果规定了输入数据的一组值,而且程序对不同输入值做不同的处理,则每个允许输入值是一个合理的等价类,此外还有一个不合理的等价类,即任何一个不允许输入的值。
  • 如果规定了输入数据必须遵循的规则,可确定一个合理的等价类(符合规则)和若干个不合理的等价类(从各种角度违反规则)
  • 如果输入是布尔表达式,可以分为一个有效的等价类和一个无效的等价类
  • 如果已划分的等价类中各元素在程序中的处理方式不同,则应将此等价类进一步划分为更小的等价类
  • 等价类划分还应特别注意默认值、空值、Null、0等的情形

实例

【例】电话号码测试。某城市电话号码由三部分组成,分别是

地区码——空白或4位数字

前缀——为三位数字,但不能为“1”或“0”

后缀——4位数字

假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的电话号码。请用等价类方法进行测试,设计测试用例

边界值分析法

常见边界条件

1.数值的边界值

计算机是基于二进制进行工作的,因此,软件的任何数值运算都有一定的范围限制。比如一个字节由8位组成,一个字节所能表达的数值范围是[0,255]。下表列出了计算机中常用的数值范围。

2.字符的边界值

3.其他边界条件

边界值选择遵循的原则

  1. 如果输入条件规定了值的范围,可选择正好等于边界值的数据作为合理的测试用例,同时还要选择刚好越过边界值的数据作为不合理的测试用例。如输入值的取值范围是[0,99],可取-1,0,99,100等值作为测试数据。
  2. 如果输入的条件指出了输入数据的个数,则按最大个数。最小个数、比最小个数少1、比最大个数多1等情况分别设计测试用例。如,一个输入文件可包括1~255个记录。则分别设计有1个记录,255个记录,以及0个记录、266个记录的输入文件来作为测试用例
  3. 如果程序的规格说明给出的输入域或输出域是有序集合(如有序列表、顺序文件等),则应选取集合的第一个元素和最后一个元素作为测试数据。例如,输出的表最多有99行,每50行为一页,则输出0行、1行、50行、51行、99行。
  4. 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试数据

实例

【例】NextDate函数边界值测试

程序有三个变量month、day、year(month、day和year均为整数值,并且满足1<=month<=12、1<=day<=31、1900<=year<=2050),分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上下一天的日期。例如,输入为2005年11月29日,则该程序的输出为2005年11月30日。请用边界值分析法设计测试用例,分析各变量的取值。

边界值分析测试时,各变量分别取:略小于最小值、最小值、正常值、最大值和略最大于最大值。具体取值如下:

month:-1,1,6,12,13;

day:-1,1,15,31,32;

year:1899,1900,1975,2050,2051;

在NextDate函数中有两种复杂性的输入来源,一是输入域的复杂性(即输入变量之间逻辑关系的复杂性),而是确定闰年的规则。

决策表

考虑输入与输出变量取值之间的关系,比较复杂,需要更多的规则。

在一些数据处理问题中,某些操作是否实施依赖于多个逻辑条件的取值,在这些逻辑条件取值的组合构成的多种情况下,分别执行不同的操作。处理这类问题的一个非常有力的分析和表达工具是判定表(决策表)。决策表能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用决策表能够设计出完整的测试用例集合。在所有的功能测试方法中,基于决策表的测试方法是最严格的

决策表通常由四个部分组成:

(1)条件桩(Condition Stub):列出了问题的所有条件。通常认为列出的条件的次序无关紧要

(2)动作桩(Action Stub):列出了问题规定可能采取的操作。这些操作的排列顺序没有约束

(3)条件项(Condition Entry):列出了针对它左列条件的取值。在所有可能的情况下,给出真假值。

(4)动作项(Action Entry):列出在条件项的各种取值情况下应该采取的动作

建立判定表可遵循的步骤

1)列出条件桩和动作桩

2)确定规则的个数,用来为规则编号

若有n个原因,且每个原因的可取值为0或者1,那么将会有2n个规则

3)完成所有条件项的填写

4)完成所有的动作项的填写(得到初始判定表)

5)合并相似规则,用以对初始判断表进行简化

有两个或者多条规则具有相同的动作,并且条件项之间存在极为相似的关系就可以进行合并。

实例

问题描述: “……对于功率大于50马力的机器,并且维修记录不全或已运行10年以上的机器,应给予优先的维修处理……”

条件桩:

C1:功率大于50马力吗?

C2:维修记录不全吗?

C3:运行超过10年吗?

动作桩:

A1:进行优先处理

A2:作其他处理

生成判定表:

简化判定表:

1,2合并,5,7合并,6,8合并

因果图

等价类划分和边界值分析方法都只是孤立地考虑各个输入数据的测试功能,而没有考虑多个输入条件的各种组合和输入条件之间的相互制约关系引起的错误。因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来设计测试用例,这就需要利用因果图(逻辑模型),因果图方法最终生成的就是判定表,它适合于检查程序输入条件的各种组合情况

因果图中的基本符号:通常在因果图中用Ci表示原因,用Ei表示结果,各结点表示状态,可取值“0”或“1”。“0”表示某状态不出现,“1”表示某状态出现。

因果图法基本步骤:

  • 找出所有的原因,原因即输入条件或输入条件的等价类
  • 找出所有的结果,结果即输出条件
  • 明确所有输入条件之间的制约关系以及组合关系
  • 明确所有输出条件之间的制约关系以及组合关系
  • 找出什么样的输入条件组合会产生哪种输出结果
  • 把因果图转换成判定表/决策表
  • 为判定表/决策表中的每一列表示的情况设计测试用例

实例:

某软件规格说明书中需求描述为:第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件修改,但如果第一列字符不正确,则给出信息L,如果第二列字符不是数字,则给出信息M。

根据以上说明书需求分析出原因和结果

原因:

x、第一列字符是A;

y、第一列字符是B

z、第二列字符是数字

结果:

a、修改文件(即成功)

b、给出信息L

c、给出信息M

分析:

原因:

x、y、z不能同时出现(对应表规则号1)

x和y不能同时出现(对应表规则号2)

x、z可以组合(对应表规则号3)

y、z可以组合(对应表规则号5)

x、y、z可以单独出现(对应序号4、6、7)

x、y、z可以都不出现(对应表规则号1)

结果:

ab不能组合

ac不能组合

bc不能组合

a、b、c可以单独出现

根据以上分析建立判定表

软件规格说明书判定表

注意,规则1、2列是不可能同时出现的,排除,简化后即为测试用例

测试用例设计方法_黑盒测试——测试用例设计方法相关推荐

  1. HTML5期末大作业:甜品店网站设计——美食甜品店铺加盟企业(1页) HTML+CSS+JavaScript web期末作业设计网页_美食网页设计作业成品

    HTML5期末大作业:甜品店网站设计--美食甜品店铺加盟企业(1页) HTML+CSS+JavaScript web期末作业设计网页_美食网页设计作业成品 常见网页设计作业题材有 个人. 美食. 公司 ...

  2. python测试用例设计方法_功能测试用例设计方法分享

    本文首发于:行者AI 测试用例可以用来衡量一个项目测试质量,因此在平时的测试流程中,编写测试用例就是测试过程中很重要的一步,每一个测试工程师都需要并且非常熟练的编写测试用例,能在编写测试用例中尽可能的 ...

  3. 软件测试用例优秀例子_功能测试用例设计方法分享

    测试用例可以用来衡量一个项目测试质量,因此在平时的测试流程中,编写测试用例就是测试过程中很重要的一步,每一个测试工程师都需要并且非常熟练的编写测试用例,能在编写测试用例中尽可能的覆盖任何异常的测试点: ...

  4. 功能测试常用6种方法_画册封面设计的6种常用形式

    阅前叨逼叨:如果你能做好画册封面设计,那么你的设计功底应该不会差. 画册设计是平面设计师会经常遇到的工作,而画册的封面又是画册最为重要的部分,它起着概括画册内容.奠定画册调性.彰显画册品质,以及吸引读 ...

  5. 精美网页设计案例_用户体验设计的精美艺术

    精美网页设计案例 There are interactive experiences that simply blow you away. You know it's been a positive ...

  6. ui设计入门书籍_书籍封面设计入门指南

    坦白说,我们大多数时候都根据本书的封面来判断一本书(并且有许多博客专门讨论消遣). 具有良好图形 ,醒目的字体和高质量封面的 书籍 比没有 书籍的书籍 出售更多的副本 –这是事实. 尽管有人说,书的封 ...

  7. 优秀logo设计解析_优秀logo设计作品及寓意解析,国外精品logo设计图片分享

    文/辛晨旭 标志作为一种以视觉传达信息的图形符号,与文字有着内在的联系.在设计中一般采用与标志内容相符的一些自然形态,经过提炼.概括和变化,以突出对象的典型特征的形象作为标志图形. 在标志设计中,一般 ...

  8. 背包系统 设计要点_建立新设计系统的要点和要点

    背包系统 设计要点 重点 (Top highlight) When I first sat down with my company's CEO and CRO to pitch them on a ...

  9. 工业设计中一般运用计算机,计算机辅助工业设计知识点_计算机辅助工业设计中的人机交互...

    摘要:随着科技的发展,工业设计行业也在不断发展,而与此同时,工业市场对工业设计中的产品的品种多样化.趣味化的要求也变得越发的严格.为了确保工业设计在质量和数量上能够更好的发展,计算机辅助工业设计中的建 ...

最新文章

  1. linux 入门-1
  2. Python多进程之构建进程池
  3. Mybatis中强大的功能元素:resultMap
  4. think-in-java(21)并发
  5. 如何分辨PoE工业交换机是否标准供电
  6. c .net ajax,Asp.net mvc 2中使用Ajax的三种方式
  7. zookeeper 学习笔记1(转)
  8. c语言设计底层,【学习小总结】C语言的底层开发
  9. ROS学习笔记六:理解ROS服务和参数
  10. 蓝桥杯BASIC-28 基础练习 Huffuman树
  11. j2ee核心模式_Java设计模式是什么?
  12. 邮件中html格式转换,如何在宏中将邮件格式更改为html?
  13. 抓虫记之八:每天崩溃的服务器
  14. 双人对战的球类游戏ios源码
  15. ​VC深思考:在商还得言商!
  16. 单调队列(P3088 Crowded Cows S)
  17. 药师帮正式冲刺港交所上市:业绩增长迅猛,亏损规模逐渐收窄
  18. Shopee选品:三个错误的逻辑思维,你犯了吗?
  19. 中国采购行业出现W形复苏迹象
  20. 国密算法(SM3)java语言的实现:利用bcprov和huttol库来实现SM3算法,国产哈希算法

热门文章

  1. np.radians_带有Python示例的math.radians()方法
  2. python dataframe切片_python pandas dataframe 行列选择,切片操作方法
  3. html placehonlder属性,HTML input placeholder 属性
  4. C语言打印彩色字符——以(枚举法+字符串查找)为例展示
  5. 进程通信:匿名管道和命名管道
  6. 图论模型迪杰斯特拉算法
  7. 自适应阈值算法(大津阈值法)
  8. 人脸检测算法_腾讯已开源高精度人脸检测算法DSFD
  9. 学java交学费包分配_java 学生缴学费案例:
  10. 电脑开机显示服务器启动失败是什么原因,请问我的电脑在启动时显示NTDETECT失败是什么意思? 爱问知识人...