软件测试之黑盒测试

黑盒测试方法

等价类划分方法

将程序可能的输入数据分成若干个子集,从每个子集选取一个代表性的数据作为测试用例,等价类是某个输入域的子集,在该子集中每个输入数据的作用是等效的
分为有效等价类和无效等价类。有效等价类是有意义的、合理的输入数据,可检查程序是否实现了规格说明中所规定的功能和性能。无效等价类与有效等价类的意义相反
在分析需求规格说明的基础上划分等价类,列出等价类表
设计测试用例时,要同时考虑这两种等价类。因为软件不仅要能接收合理的数据,也要能经受意外的考验。
在这里插入图片描述

确定等价类的方法

在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类
在这里插入图片描述在这里插入图片描述在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可以确立一个有效等价类和一个无效等价类。

在这里插入图片描述

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

在这里插入图片描述

  • 在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。
  • 在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。

根据等价类创建测试用例的

步骤建立等价类表,列出所有划分出的等价类:在这里插入图片描述为每个等价类规定一个唯一的编号;
设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类
重复c),最后使得所有有效等价类均被测试用例所覆盖;
设计一个新的测试用例,使其只覆盖一个无效等价类。
重复e)使所有无效等价类均被覆盖。

边界值分析方法

BVA – Boundary Value Analysis

设计方法:

  1. 确定边界情况(输入或输出等价类的边界)
  2. 选取正好等于、刚刚大于或刚刚小于边界值作为测试数据

确定边界值的方法

  • 如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。
    在这里插入图片描述- 如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少一、比最大个数多一的数作为测试数据。
    在这里插入图片描述- 如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。
  • 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。
Test cases for ABS(x) :
class x < 0,  arbitrary value:	             x  =  -10
class x >= 0,  arbitrary value	             x  =  100
classes x < 0,  x >= 0,  on boundary :	x  =  0
classes  x < 0,  x >= 0,  below and above:	x  =  -1,  x = 1
BVA 示例2

测试 限制性用户输入:6位正整数

测试值类型测试数据
正常值(有效类)X1 = 123123
边界值:X2 = 12345
边界值:X3 = 1234567
无效类的值X6 = -123123
无效类的值X7 = asdasd
其它?
无效值X8 = 000123
X9 = asd123
X10 = Empty

判定表方法

  • 在实际应用中,许多输入是由多个因素构成,而不是单一因素,这时就需要多因素组合分析。
  • 对于多因素,有时可以直接对输入条件进行组合设计,不需要进行因果分析,即直接采用判定表方法。
  • 一个判定表由“条件和活动”两部分组成,也就是列出了一个测试活动执行所需的条件组合,所有可能的条件组合定义了一系列的选择,而测试活动需要考虑每一个选择。

判定表元素

条件桩,列出问题的所有条件
动作桩:列出可能针对问题所采取的操作
条件项:针对所列条件的具体赋值
动作项:列出在条件项(各种取值)组合情况下应该采取的动作。
规则:任何一个条件组合的特定取值及其相应要执行的操作。

判定表方法步骤

列出所有的条件桩和动作桩;
填入条件项;
填入动作项,制定初始判定表;
简化、合并相似规则或者相同动作

在这里插入图片描述

因果图法

多种输入条件的组合,产生多种结果设计测试用例。
设计方法:

  • 分析软件规格说明文档描述的哪些是原因(输入条件),哪些是结果(输出条件),给每个原因和结果赋予一个标示符。
  • 找出原因与结果,原因与原因之间的对应关系,划出因果图 在因果图上标上哪些不可能发生的因果关系,表明约束或限制条件
  • 根据因果图,创建判定表,将复杂的逻辑关系和多种条件组合很具体明确的表示出来 把判定表的每一行作为依据设计测试用例。
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

正交实验法

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

为什么要采用正交试验法?

在许多应用系统的测试工作中,不会象判断三角形那样简单,输入条件的因素很多,而且每个因素也不能简单用“是”和“否”来回答。

  • 打印范围分:全部、当前幻灯片、给定范围
  • 打印内容分:幻灯片、讲义、备注页、大纲视图
  • 打印颜色/灰度分: 彩色、灰度、黑白
  • 打印效果分:幻灯片加框和幻灯片不加框。
    测试组合会变得很多,如果按照传统的测试方法,会导致很大的测试工作量

实例

信息系统中,员工信息查询功能是常见的。例如,设有3个独立的查询条件,以获得特定员工的个人信息

  • 员工号(ID)。
  • 员工姓名(Name)。
  • 员工邮件地址(Mail Address)
    在这里插入图片描述

功能图法

  • 每个程序的功能通常由静态说明和动态说明组成
  • 静态说明描述了输入条件和输出条件之间的对应关系
  • 动态说明描述了输入数据的次序或者转移的次序。
  • 功能图法就是为了解决动态说明问题的一种测试用例的设计方法
  • 功能图由状态迁移图(state transition diagram,STD)逻辑功能模型(logic function model, LFM) 构成

状态迁移图

状态迁移图,描述系统状态变化的动态信息——动态说明,由状态和迁移来描述,状态指出数据输入的位置(或时间),而迁移则指明状态的改变
在这里插入图片描述

如何设计测试用例?

功能图法设计测试用例,就是如何覆盖软件所表现出来的所有状态,可以转化为两个层次的测试用例

  • 从功能逻辑模型(决策表或因果图)导出局部测试用例,覆盖各个状态的各种输入数据的组合
  • 从状态迁移图导出整体的测试用例,以覆盖系统(程序)控制的逻辑路径

功能图法是综合运用黑盒方法和白盒方法来设计测试用例,即整体上选用白盒方法——路径覆盖、分支和条件覆盖等,而局部上选用的是黑盒方法——决策表或因果图方法

错误推测法

基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性地设计测试用例。
发现程序经常出现的错误的方法:

  • 单元测试中发现的模块错误;
  • 产品的以前版本曾经发现的错误;
  • 输入数据为0或字符为空;
  • 当软件要求输入时(比如在文本框中),不是没= 有输入正确的信息,而是根本没有输入任何内容,单单按了Enter键;

静态测试和动态测试

将需求和设计的评审也纳入测试的范畴,可以看作是广义测试
静态测试包括对软件产品的需求和设计规格说明书的评审、对程序代码的复审等
静态分析的查错和分析功能是其他方法所不能替代的,可以采用人工检测和计算机辅助静态分析手段进行检测
动态测试是通过真正运行程序发现错误,通过观察代码运行过程,来获取系统信息,对系统行为进行验证。

主动测试和被动测试

  • 主动测试方法:测试人员主动向被测试对象发送请求、或借助数据、事件驱动被测试对象的行为,从而验证被测试对象的反应或输出结果
  • 被动测试方法:测试人员不干预产品的运行,而是被动地监控产品在实际环境中运行,通过一定的被动机制来获得系统运行的数据,包括输入、输出数据.
    在这里插入图片描述

形式化测试方法

形式化方法

  • 形式化方法实际上就是基于数学的方法来描述目标软件系统属性的一种技术
  • 凡是采用严格的数学语言、具有精确的数学语义的方法,都称为形式化方法。形式化规范说明语言,一般由3个主要的成分构成:语法、语义和一组关系
  • 形式化方法更大作用是体现在软件规格和验证之上,这包括软件系统的精确建模和软件规格特性的具体描述,即可以看作是面向模型的形式化方法和面向属性的形式化方法

形式化的具体方法

  • 基于模型的方法,如Z语言、B语言等
  • 代数方法,如OBJ、CLEAR、ASL、ACT等
  • 过程代数方法,如CSP、CCS、ACP、LOTOS、TPCCS等
  • 基于逻辑的方法,如区间时序逻)、Hoare 逻辑、模态逻辑、时序逻辑、时序代理模型等。
  • 基于网络的方法

形式化验证

  • 形式化验证,就是根据某些形式规范或属性,使用形式逻辑方法证明其正确性或非正确性。
  • 一般通过形式化规范进行分析和推理,研究它的各种静态和动态性质,验证是否一致、完整,从而找出所存在的错误和缺陷。
  • 无法证明某个系统没有缺陷,因为不能定义 “没有缺陷”。只能证明一个系统不存在我们可以想得到的缺陷,以及验证满足系统质量要求的属性

形式化验证的一些具体方法

  • 有限状态机(FSM)或扩展有限状态机(EFSM)
  • SPIN和线性时态语言
  • UML 语义转换
  • 标准RBAC模型
  • 扩展的RBAC模型和基于粒计算的RBAC模型
  • 符号模型检验
  • BAN逻辑模型

基于模型的软件测试

  • 基于模型的测试(Model-based testing,MBT)是利用模型来生成相应的测试用例,然后根据实际结果和原先预想的结果的差异来测试系统
  • 先从概念上形成模型,然后试图用数学的方法来描述这个模型,形成仿真模型,完成所需的测试
    在这里插入图片描述

MBT的优缺点

优点

测试效率高
对逻辑复杂故障测试效果好
容易实现自动化测试

缺点

误报问题
漏报问题
模型机理

软件测试模型

故障模型。
安全漏洞模型
差性能模型
并发故障模型
不良习惯模型
代码国际化模型
易诱骗代码模型

检测步骤

预处理/预编译
词法分析(Lexical Analysis)
语法分析( Parsing) 和语义处理( Semantic Analysis)
抽象语法树生成
控制流图生成
IP 扫描
人工确认。

扩展有限状态机方法

有限状态机是一种用来进行对象行为建模的工具,其作用主要是描述对象在它的生命周期内所经历的状态序列,以及如何响应来自外界的各种事件

在这里插入图片描述

EFSM实例-1

在这里插入图片描述

EFSM示例-2

在这里插入图片描述

EFSM工具 - FSME

http://fsme.sourceforge.net/

基于风险的测试

风险度量

在这里插入图片描述

风险测试步骤

列出软件的所有功能和特性;
确定每个功能出错的可能性;
如果某个功能出错或欠缺某个特征,需要评估对用户使用软件产品的影响程度;
根据上面两个步骤,计算风险度;
根据可能出错的迹象,来修改风险度;
决定测试的范围,编写测试方案

模糊测试方法

模糊测试(Fuzz testing)方法,简单的说,就是构造大量的随机数据作为系统的输入,从而检验系统在各种数据情况下是否会出现问题
模糊测试方法可模拟黑客对系统发动攻击测试,完成安全性测试,并能应用于服务器的容错性测试
参考网站:
http://www.cs.wisc.edu/~bart/fuzz/fuzz.html
http://sourceforge.net/projects/taof/
www.genexx.org/dfuz
www.fuzzing.org
书中两个示例

ALAC测试和随机测试方法

ALAC,是Act-like-a-customer(象客户那样做)的简写,ALAC测试方法是一种基于客户使用产品的知识开发出来的测试方法,它的出发点是著名的Pareto 80/20规律

在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈勇劲

你的鼓励实我最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值