文章目录

  • 测试用例
  • 黑盒测试
  • 等价类划分法
  • 边界值分析法(BVA)
  • 判定表法
  • 因果图法
  • 组合覆盖法
  • 正交实验法
  • 对比pairwise和OTDM
  • 因果图、决策表和pairwise选用建议
  • 功能图法(黑白盒混合)
  • 场景设计法
  • 错误推测法

测试用例

  1. 组成
    测试用例 = 输入(测试步骤和测试数据)+输出(期望结果)+ 测试环境(系统环境设置)
  2. 编写时机
    通常在测试设计阶段来写,即在《需求规格说明书》和《测试计划》都已完成之后
  3. 编写标准
    唯一标准:用户需求
  4. 参考资料
    《需求规格说明书》和软件原型。
  5. 作用
    测试过程中的重要参考依据,好的用例被重复使用使得测试过程事半功倍。

黑盒测试

  1. 来由
    任何程序都可以看作是从输入定义域到输出值域的映射,将被测程序看作一个打不开的黑盒,黑盒里面的内容(实现)是完全不知道的,只知道软件要做什么。即不关心结构,只关心输入输出。
  2. 定义
    现代黑盒测试是从一种从软件外部对软件实施的测试,也称基于规格说明的测试。
    黑盒测试是从用户观点出发的测试,其目的是尽可能发现软件的外部行为错误。
  3. 检测内容
    检测软件功能能否按照需求规格说明书的规定正常工作,是否有功能遗漏;
    检测是否有人机交互错误,是否有数据结构和外部数据库访问错误,是否能恰当地接收数据并保持外部信息(如数据库或文件)等的完整性;
    检测行为、性能等特性是否满足要求等;
    检测程序初始化和终止方面的错误等。
  4. 优点
    软件实现发生了变化,测试用例仍然可以使用;
    可以和软件实现同时进行,因此可以压缩项目总的开发时间。

下面介绍黑盒测试常用的9种方法。

等价类划分法

  1. 定义
    根据程序规格说明书把所有可能的输入数据,即程序输入域划分为若干个互不相交的子集,称为等价类,然后从每个等价类中选取少数具有代表性的数据作为测试用例,进行测试。
  2. 等价类
    等价类是某个输入域的子集,在该子集中每个输入数据的作用是等效的
    分为有效等价类和无效等价类
    有效等价类:对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可以检验程序是否实现了规格说明中所规定的功能和性能。
    无效等价类:与有效等价类的定义恰巧相反。
    设计测试用例时,要同时考虑这两种等价类。因为软件不仅要能接收合理的数据,也要能经受异常数
    据的考验。经过正反的测试才能确保软件具有更高的可靠性
  3. 确定等价类的6个原则
    ①输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。

    ②在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可以确立一个有效等价类和一个无效等价类。

    ③在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。

    ④多输入的或关系
    在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。
    ⑤多输入的且关系
    在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。
    ⑥细分等价类
    在确知已划分的等价类中,各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步地划分为更小的等价类。
  4. 根据等价类创建测试用例的步骤
    (a) 建立等价类表,列出所有划分出的等价类:

    (b) 为每个等价类规定一个唯一的编号;
    © 设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类
    (d) 重复©,最后使得所有有效等价类均被测试用例所覆盖;
    (e) 设计一个新的测试用例,使其只覆盖一个无效等价类。
    (f) 重复(e)使所有无效等价类均被覆盖。
    tips:有效等价类和无效等价类都要被覆盖,但覆盖原则不同。
  5. 进一步理解等价类划分法
    规格说明往往没有定义无效测试用例期望输出应该是什么样的。因此,测试人员需要花费大量时间来定义这些测试用例的期望输出。
    等价分类的目标是把可能的测试用例组合缩减到仍然足以满足软件测试需求为止。选择了不完全测试,就要冒一定的风险,所以必须仔细选择分类。
    测试同一个复杂程序的两个软件测试人员,可能会指定出两组不同的等价区间。只要审查认为足以覆盖测试对象就可以了。
  6. 小试牛刀(作业)


    参考答案

边界值分析法(BVA)

全称Boundary Value Analysis
首先明确,需要在等价类划分的基础上进行

  1. 来由
    边界值和等价类密切相关,输入等价类和输出等价类的边界是要着重测试的边界情况。在等价类的划分过程中就产生了许多等价类边界。边界是最容易出错的地方,所以,从等价类中选取测试数据时应该关注边界值。
    做个类比,如果两个接壤的国家要互派间谍,是不是派生活在边界的人去更容易蒙混过关?
  2. 基本思想
    选取正好等于刚刚大于刚刚小于等价类边界的值作为测试数据,而不是选取等价类中的典型值或任意值做为测试数据。
  3. 边界
    边界是指相对于输入等价类和输出等价类而言,稍高于边界值及稍低于其边界值的一些特定情况。

具体有以下几种情况(我觉得这很白痴,ppt上还说是确定边界值的原则):
a. 如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。
b. 如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少、比最大个数多1的数作为测试数据。
c. 很多如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。
d. 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。
一些可能与边界有关的数据类型:数值,速度,字符,地址,位置,尺寸,数量等。
考虑数据类型的下述特征

4. 次边界条件
普通边界条件最容易找到,在产品说明书中有定义,或者在使用软件的过程中确定。
有些边界在软件的内部,最终用户几乎看不到,但是软件测试仍有必要检查。这种边界条件称为次边界条件或者内部边界条件
寻找这样的边界不要求软件测试人员具有程序员那样阅读源代码的能力,但要求大体了解软件的工作方式。

5. 单故障假设

如图,有x1和x2两个输入域,每次只让一个出故障,取值不在矩形的四个角,而在边上。
对于一个n变量的程序,BVA测试会产生4n+1个测试用例。
4的来由:min,min+,max,max-
1的来由:各个维度都取正常值的那个测试用例

健壮性BVA测试会产生6n+1个测试用例,多出的是min-与max+

  1. 实例
    以下实例同时用上了等价类和BVA测试方法



    评价:该测试方法的涉及违反了单故障假设,并不好。

背景:当输入之间有了关联,如:约束关系和组合关系,等价类划分和BVA将不再适用,必须考虑使用一种适合于描述对于多种条件的组合,产生多个相应动作的测试方法(指先因果图后判定表)。

判定表法

判定表方法是借助表格方法完成对输入条件的组合设计,以达到完全组合覆盖的测试效果。
在所有的黑盒测试方法中,基于判定表的测试是最严格,最具有逻辑性的测试方法。又称决策表法。
它能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。

  1. 判定表
    判定表是把作为条件的所有输入的各种组合值以及对应输出值都罗列出来而形成的表格。
    条件(作为输入)和活动(作为输出)两部分组成。
    组成元素

  2. 判定表的制定

  3. 适合使用判定表设计测试用例的条件
    a. 规则说明以判定表的形式给出,或很容易转换成判定表。
    b. 条件和规则的排列顺序不影响执行哪些操作。
    c. 当某一条规则的条件已经满足,并确定要执行的操作后,不必检验别的规则。
    d. 如果某一规则要执行多个操作,这些操作的执行顺序无关紧要。

  4. 示例

因果图法

  1. 定义
    借助图形,着重分析输入条件的各种组合,每种组合条件就是“因”,输出的结果就是“果”。
    因果图是一种形式化的图形语言,实质上是使用简化记号表示数字逻辑图,不仅能发现输入、输出中的错误,还能指出程序规范中的不完全性和二义性。
  2. 因果图法生成测试用例的步骤

①分析软件规格说明文档描述的哪些是原因(输入条件),哪些是结果(输出条件)。
原因常是输入条件或输入条件的等价类,结果是输出条件。
②分析程序规格说明的描述中的语义内容,将其表示成连接各个原因与各个结果的“因果图”。
③标明约束条件。在因果图上标上哪些不可能发生的因果关系,表明约束或限制条件。
④根据因果图,创建判定表,将复杂的逻辑关系和多种条件组合很具体明确的表示出来。
⑤把判定表的每一列作为依据设计测试用例。

  1. 符号分析
    分为基本符号(即输入和输出之间)和约束符号(即输入之间、输出之间)两大类
    基本符号有:恒等、非、或、与四类,图形都很好记
    约束符号有:
    互斥(Exclusion)
    或(不知道为啥写成I)
    唯一(Only)
    要求(Require)
    屏蔽(Mask)

    背景:实际中每个条件不只有“是”“否”两个值,当输入条件的个数和输入条件的取值可能都很多,组合数就是很大的数字,决策表已经无能为力。

组合覆盖法

最常用的是Pair-wise方法,即将众多因素的值两两组合起来而大大减少测试用例组合,该方法经济有效。
Pair-wise方法基本原理:
不要测试所有的组合,测试所有的“Pairwise ”即可。(覆盖任意2个因素所有状态的测试用例集合)


如果完全组合,其组合数是3 x 4 x 4 x 3 = 144种,但如果采用两两组合,其组合数只有17项

可以靠工具自动生成组合,典型有微软的PICT。

正交实验法

Orthogonal Test Design Method, OTDM
正交测试法使用已经构造好了的正交表格来安排试验并进行数据分析。
正交表的两大优越性,即“均匀分散,整齐可比”。

其中9是实验次数,4是因子的个数,3是因子的水平数(即状态数)。
试验次数 = m*(n-1)+1 m是因子个数 ,n是水平数。
步骤

  1. 确定影响功能的因子与状态
  2. 选择一个合适的正交表
  3. 利用正交表构造测试数据集

对比pairwise和OTDM

共同点
两者使用频率最高的均是两两组合,前提也都是基于“缺陷大部分发生在参数两两组合的情况下,三个参数组合导致的缺陷并不多见”。
两者的父集均是笛卡尔集。
不同点
两者采用的筛选方式稍显不同,配对测试选择的是所有的两两组合所构成的测试用例;
正交表在此基础上做了更进一步的筛选,使得结果更加精炼。
选择建议
在因子水平数比较少的情况下,采用配对测试方法。因为测试组合数更加全面一些,当然在某些因子水平数时,两者最后筛选出的结果可能是一致的。
在因子水平数比较多的情况下,采用正交表测试,因为可以得到更加精炼的测试组合,从而使测试效率得到提升。

因果图、决策表和pairwise选用建议

如果程序的功能说明中含有输入条件的组合情况,则一开始就可选用因果图法和判定表法。
对于配置参数类软件,用正交试验法选择较好的组合方式达到最佳效果。

功能图法(黑白盒混合)

功能图法就是使用功能图形式化地表示程序的功能说明,并机械地生成功能图地测试用例。

功能图的两个组成部分——状态迁移图(state transition diagram STD)和逻辑功能模型(logic function model LFM)。

STD用于表示输入数据序列以及相应的输出数据,由输入和当前地状态决定输出数据和后续状态。

LFM用于表示在状态输入条件和输出条件之间的对应关系。LFM只适合于描述静态说明,输出数据仅由输入数据决定。

后续要用到基本路径覆盖法。

场景设计法

多数软件系统都是用事件触发来控制业务流程,事件触发时的情景便形成了场景,场景的不同触发顺序构成了用例。
特点:测试人员要充分发挥对用户实际业务场景的想象,关心用户做什么,而不是关心产品做什么。
优点:实用性强,有效,设计出来的用例有价值。
缺点:可能使用的场景不一定能对事件系列进行全面的分析,设计出来的用例不完整。

错误推测法

  1. 定义
    测试者根据经验、知识和直觉来发现软件的错误,来推测程序中可能存在的各种错误,从而有针对性地进行测试。
  2. 特点
    没有依据,只能靠测试者自身实力;
  3. 优点
    快速切入体会到程序易用与否;
  4. 缺点
    难以准确知道测试覆盖率。
  5. 地位
    作为辅助方法(不像BVA是必用的黑盒测试方法)
  6. 基本思想
    软件测试的原则5-错误存在集群现象

黑盒测试9种常用方法相关推荐

  1. 黑盒测试简介和常用方法

    黑盒测试简介和常用方法 定义 黑盒测试俗称功能测试,它站在用户的角度上主要是对系统或软件的界面.功能上进行测试.它把程序当成不能打开的盒子,这样不用考虑系统内部的逻辑和内部特性,只需要在程序的外部接口 ...

  2. vue——props的两种常用方法

    vue--props的两种常用方法 1.实现父-->子的通信 举例如下: 父组件 parent.vue <children :channel="object1"> ...

  3. python电脑下载方法-python 获取机器snpython下载文件的几种常用方法

    python中下载文件常用的几个模块有urllib,urllib2,requests,方法也很简单,代码如下: 002pc.com从python 获取机器snpython下载文件的几种常用方法分析来看 ...

  4. python下载方法-python下载文件的几种常用方法

    本文信息本文由方法SEO顾问发表于2016-10-1814:34:30,共 506 字,转载请注明:python下载文件的几种常用方法_[方法SEO顾问],如果我网站的文章对你有所帮助的话,来百度口碑 ...

  5. python timer使用-Python timer定时器两种常用方法解析

    这篇文章主要介绍了Python timer定时器两种常用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 方法一,使用线程中现成的: 这种一般 ...

  6. Java更新XML的四种常用方法简介

    http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=393702 本文简要的讨论了Java语言编程中更新XML文档的四种常用方法,并且分 ...

  7. vue方法传值到data_Vue 组件传值几种常用方法【总结】

    使用vue也有很多年了,一直都没有整理一下相关知识,给大家总结下开发过程中所遇到的一些坑,主要给大家总结一下vue组件传值的几种常用方法: 1.通过路由带参数传值 ① A组件通过query把id传给B ...

  8. asp mysql insert_用asp把表单数据插入数据库的2种常用方法

    用asp把表单数据插入数据库的2种常用方法: 1.直接使用sql语句的 优点:速度快,不耗资源 缺点:不能传递太长的字段内容,字段比较多时不易排错. 推荐有经验的编程者优先考虑. 具体操作: 假设表单 ...

  9. NSString的几种常用方法

    NSString的几种常用方法 要把 "2011-11-29" 改写成 "2011/11/29"一开始想用ios的时间格式,后来用NSString的方法搞定. ...

  10. python定时器的使用方法_Python timer定时器两种常用方法解析

    这篇文章主要介绍了Python timer定时器两种常用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 方法一,使用线程中现成的: 这种一般 ...

最新文章

  1. 要在 create-react-app 脚手架里使用 less 的方法
  2. BusinessFrameWork
  3. 控件不支持html5,javascript – HTML5视频控件不起作用
  4. android自带中文字体,Android更换系统默认显示的字体使用自定义字体
  5. 地球化学图解系统GCDPlot 0.33
  6. bellman ford 算法 判断是否存在负环
  7. 发布npm包时遇到的问题及解决方法
  8. C语言下,获取文件信息
  9. Linux查看和修改IP地址
  10. 密码协议(一)协议概述
  11. (15) 常用管理类软件需求征集 -- 通用菜单模块管理
  12. shark恒破解笔记6-摆脱NAG
  13. Trance — Aura NFT 合集
  14. jpeg怎么转换成jpg格式?三步学会在线jpeg转jpg
  15. pug在vue中的序列写法
  16. 人生无意义,才更值得过,推石上山的搏斗本身,足以充实一颗人心,认清生活的荒诞,对它报之以微笑,就是对抗荒诞的最好方式
  17. Sping学习笔记(附实例,超详细)
  18. 1.4 裸机实验GPIO与LED DNW驱动无法安装问题解决
  19. 单页应用和多页应用的区别
  20. 多元函数的极限与连续

热门文章

  1. 高级操作系统——XV6进程管理
  2. DCMTK 查询 WorkList
  3. Unity加载GIf动画
  4. SQL 日期函数的使用方法
  5. mariadb10 java包_编译安装MariaDB-10.0.21
  6. c语言编译器masm,汇编环境搭建 -- MASM32
  7. 基于情感词典进行情感态度分析
  8. Java实现学生管理系统代码
  9. android webview 百度地图,Android WebView显示地图
  10. 工业路由器和家用路由器有什么区别?