【软件测试】黑盒测试、白盒测试、静态测试

一、黑盒测试

1.定义

不关心被测对象的内部实现,针对被测对象提供的外部各功能与规格来设计测试用例进行的测试

2.分类
  • 功能测试
    • 功能测试
    • 兼容性测试
    • 一致性测试
    • 配置测试
    • 安全性测试
  • 性能测试
  • 可用性测试
  • 可靠性测试
    • 故障输入测试
    • 长时间测试
    • 压力测试
    • 备份测试
  • 可服务性测试
    • 安全测试
    • 易用性测试
    • 可维护性测试
  • 组网解决方案测试
3.常见黑盒测试方法
1)功能测试方法(设计测试用例)

定义:根据产品特性、操作描述和用户方案,测试一个产品的特性和可操作行为以确保他们满足设计需求。

a.等价类划分

定义:将全部输入数据合理划分为若干等价类,在每一个等价类中选取一个数据作为测试输入条件,这样所取得的测试效果与选择等价类内所有数据作为测试的输入所取得的效果是一样的。

特点:典型,常用,有效提高测试效率

步骤:

  1. 划分等价类
  2. 边界值分析(可选)
  3. 多个输入间关系分析(可选)
  4. 生成测试用例

b.边界值分析

定义:经验告诉我们,大量的错误是发生在输入或输出范围的边界上,边界值分析就是在划分的等价类区域的边界及附近进行测试数据的选取。

特点:典型,常用测试方法,经常和等价类法配合使用

步骤:

  1. 确定输入的范围
  2. 确定范围的边界值
  3. 多个输入关系分析(可选)
  4. 生成测试用例

边界的定义:

上点:域边界上的点

离点:离上点最近的点

内点:域内的任一点

c.错误推测

定义:错误推测法是基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的进行测试的方法。

特点:分析过程简单,可操作性强,测试用例的设计更加具有针对性、有效性

大致步骤:

  1. 确定被测对象范围
  2. 在测试经验库中查找相关内容
  3. 根据测试经验库中查找出的相关内容设计测试用例

d.因果图分析方法

定义:等价类和边界值法这种考虑了对于一个输入条件的分析,但是没有考虑多个输入条件之间的组合与联系。因果图方法使用图的方法对多个输入间的组合以及输入、输出之间的因果关系进行了分析。

特点:通过分析输入输出之间的因果组合,高效的从众多组合中选出有效用例

步骤:

  1. 确定被测对象的输入与输出
  2. 分析输入与输出之间的因果关系
  3. 根据因果关系分析画出因果图
  4. 将因果图转换为判定表
  5. 根据判定表设计测试用例

优点:综合考虑了输入、输出条件的组合,使测试设计更加全面

缺点:方法过程比较复杂,方法本身比较难以掌握,输入与输出之间的因果关系比较难以从规格描述中得到,需要一个分析过程;如果被测对象本身比较复杂,那么分析过程以及最后得到的因果关系可能会非常复杂,得到的测试用例数量很庞大,需要耗费比较多的工作量。

基于以上原因,这种方法实际得到的应用不多

e.判定表方法

定义:采用表格的形式,列出所有条件和所有结果的组合,做到无遗漏的覆盖。

特点:判定表适合条件项各自独立,互不影响的情况,判定表使用的技巧在于,把条件项划分清晰,对条件进行合理的组合,使得到的规则数量小。

步骤:

  1. 确定规则个数,加入有N个条件,每个条件有两个取值,就有2的N次方个规则。
  2. 列出所有的条件桩和动作桩
  3. 填入条件项
  4. 填入动作项得到初始判定表
  5. 简化,合并相似规则和动作

f.正交试验设计方法

定义:正交试验设计发是从大量的试验点中,选取适量的有代表性的点,使用统计学中推导出的正交表,合理的安排试验的一种科学的实验设计方法,利用这种方法,可使所有的因子和因子的状态在试验中均匀的分配与搭配,均匀地有规律的变化。

特点:采用正交实验设计方法进行拟合测试用例的设计,能够有效地合理的减少测试的工时与费用,兼顾测试成本与测试充分性的均衡,提高测试效率。

正交实验设计方法步骤,

  1. 提取功能说明,构造因子–状态表影响试验指标的条件成为因子,而影响实验因子的条件叫因子的状态。
  2. 加权筛选,生成因素分析表,对因子与状态的选择可按其重要程度分别加权。可根据各个因子及状态的作用大小、出现频率的大小以及测试的重要,确定权值大小
  3. 利用正交表构造测试数据集,正交表的推导依据Galois理论

g.功能图方法

定义:功能图方法就是根据被测功能的状态迁移图以及逻辑功能图的覆盖进行测试用例设计的方法

特点:功能图方法借鉴了白盒测试方法的思想,功能图方法是一种常用的且实用的黑盒测试方法。

功能图方法步骤:

  1. 画出状态迁移图
  2. 在每个状态中生成局部测试用例
  3. 利用规则生成测试路径
  4. 测试用例合成
2)性能测试方法

测试指标:吞吐量,丢包率,延迟,背对背缓冲

性能指标测试方法

指标标测试的基本方法是给系统逐步增加压力,在压力达到一定程度并确认外围设备不构成性能瓶颈的情况下,满足下列条件之一者,可以认为达到了系统最大处理能力。

  • 被被测模块所在机器的CPU空闲低于30%。
  • 增加呼叫压力,呼叫成功率下降,如成功率由100%降低至99.9%以下。
  • 增加呼叫压力。呼叫平均响应时间超出了可接受的范围。

由于被测系统有一定的预热时间。因此基本性能指标测试的指标数据应该在测试稳定一段时间后获得比较准确,一般情况下,对于一个性能指标测试用例至少在执行30分钟后再去获取性能指标数据为宜。

稳定性的测试方法

系统稳定性测试的目的,是测试系统在一定的压力条件下,短期和长期运行的稳定性,压力条件可以考虑一般压力。满负荷压力,压力逐渐增递增,压力逐渐递减等情况。

由于稳定性测试需要根据系统运行的健康状况来得出结论。因此需要实时观察系统各进程内存使用、CPU占用、文件句柄使用、磁盘I/O使用,磁盘剩余空间,数据库剩余空间等资源以及是否有进程异常退出,进程死锁等异常,测试工具软件应能连续记录这些信息,便于测试结果进行稳定性分析。

同时稳定性测试中还必须关注测试响应的成功率,成功率至少在99.9%以上的稳定性测试才是有意义的。

系统稳定性测试时间应该较长,一般一个用例的执行时间应在24小时以上。

递增性能测试方法

递增性能测试的原理。是通过改变性能测试压力条件(如递增访问用户数),记录系统响应时间变化。错误率变化,TPS变化曲线。并和例行系统模型的变化曲线进行对比分析,从而评估被测系统性能或者发现被测系统性能缺陷的测试方法。

3)可用性测试方法

可用性测试,近来也将其称为体验测试,其目的是通过用户对产品原型或交付件的使用,来找出产品的可用性问题。其测试目标集中在:

  1. 系统完成功能的正确性。
  2. 系统的易学性。
  3. 受用系统的效率。
  4. 系统处理的一致性。
  5. 系统的容错性。
  6. 客户使用系统的满意度。

可用性测试基本步骤:

  1. 用户分析(还用户特征、背景、行为等的分析)
  2. 场景任务分析设计。
  3. 测试环境布置与测试引导。
  4. 用户绩效数据搜集。
  5. 访谈与问卷调查。
  6. 结果分析,得出可用性基线,及需改进问题。
4.黑盒测试方法的实际使用

等价类,边界值,错误推测这几种方法是最常用的。

黑盒测试方法主要应用在集成测试,系统测试阶段,也可用在单元测试阶段。

不同的黑盒测试方法具有不同的优点,注意根据实际情况选择不同的黑盒测试方法进行测试。

黑盒测试方法在实际应用往往不是孤立的,大部分情况下这些方法要结合起来使用。

5.黑盒测试经验
  • 充分熟悉被测对象

    • 了解特性的由来
    • 了解特性的应用场景
    • 了解特性的相互关联
    • 了解实际的组网方式
    • 了解接口的信息交互
    • 了解接口的协议内容
    • 了解内部的状态变迁
  • 对测试进行详细分类,有助于避免遗漏。

    功能性测试,一致性测试,性能测试,安全性测试,压力测试,配置测试,安装测试,易用性测试,备份测试,兼容性测试,互操作测试,QoS测试,长时间测试。

  • 测试点确认

    • 测试点是在对测试对象分析的基础上得出测试重点,可以将其看成测试用例的标题。
    • 测试点能够清晰的反应,测试用例,设计者的思路,便于进行评审。
    • 测试点能够清晰的反应,对版本特性的覆盖,便于发现遗漏。

二、白盒测试

1.定义

根据被测程序的内部结构设计测试用例的一种测试方法,多应用于单元测试。

2.程序结构分析

程序的结构形式是白盒测试的主要依据,对程序结构的分析包括如下:

  1. 控制流分析

​ 通过控制流图矩阵来表示程序的控制流程图,分析程序的控制流是为了使编写出的程序有好的结构。对于程序结构提出以下四点基本要求,这些要求是写出的程序不应包含:

  • 转向并不存在的标号
  • 没有用的语句标号
  • 从程序入口进入后无法达到的语句
  • 不能达到停机语句的语句

目前主要是通过编译器和程序分析工具来实现程序控制流分析。

  1. 数据流分析

数据流分析是分析程序中未定义变量的使用和未曾使用的变量定义

目前通过编译器或程序分析工具,通过数据流分析

利用数据流分析的结果可以进行代码编译优化

  1. 信息流分析

目前信息流分析主要用在验证程序变量间信息的传输遵循保密要求。

分析主要分析输出值跟输入值之间的影响关系,也就是说,看哪个输入值会直接或间接的影响到输出结果。

程序的信息流关系,为软件开发和确认提供了十分有益的工具。

3.逻辑覆盖

结构测试是依据测试程序的逻辑结构设计测试用例,驱动被测程序运行完成的测试。结构测试中的一个重要问题是,测试进行到什么地步就达到要求,可以结束测试了。这就是说需要给出结构测试的覆盖准则。

  • 语句覆盖:设计若干测试用例,运行被测程序,使得每一个可执行语句至少执行一次。这时所谓的“若干个”,自然是越少越好。缺陷:不能判别没有else 分支的if语句的条件为假时的错误,不能判别带有break跳转的while条件的退出条件是否正确,不能判别Do-while循环的条件错误
  • 判定覆盖:也叫分支覆盖。设计若干个测试用例,运行被测程序,使得程序中。每个判断的取真分支和取假分支至少执行一次。即判断的真假值均被满足。缺陷:判定覆盖不能对判断条件进行检查。
  • 条件覆盖:设计足够多的测试用例,运行被测程序,使得程序中每个判断的每个条件的可能取值至少执行一次。
  • 判定-条件覆盖:设计足够多的测试用例,运行被测程序,使得程序中每个判断的每个条件的可能取值至少执行一次,并且每个可能的判断结果也至少执行一次。
  • 多重条件覆盖:也叫条件组合覆盖。设计足够多的测试用例,运行被测程序,使程序中每个判断的所有可能的条件取值组合至少执行一次。
  • 路径覆盖:设计足够多的测试用例,运行被测程序。要覆盖程序中所有可能的路径。
4.程序插装

借助被测程序中插入操作来实现测试目的的方法。在程序的特定部位插入记录动态特性的语句。最终是为了把程序执行过程中发生的一些重要历史事件记录下来。(相当于打断点)

语句断言

在程序中的特定部位插入某些用以判断变量特性的语句,使得程序执行中这些语句得以证实,从而使程序的运行特性得到证实,我们把插入这些语句称为断言,这一做法是程序正确性证明的初等步骤。尽管算不上严格的证明,但方法本身仍然是很实用的。

5.其他白盒测试方法
  1. 预测试

    一种基于程序结构的测试方法。域测试的“域”指的是程序的输入空间,测试的理想结果就是检验输入空间的。每一个输入元素是否都产生正确的结果,分析输入域的基础上,选择适当的测试点以后进行测试的。

    致命缺点:

    • 为进行“域”测试对过程提出的限制过多
    • 当程序存在很多路径时,所需的测试点也就很多
  2. 符号测试

    日本思想是允许程序的输入,不仅仅是具体的数值数据,而且包括符号值。符号值可以是基本的符号变量值,也可以是这些符号变量值的一个表达式。可以看作是程序测试和程序验证的一个折中方法。一方面,他沿用了传统的程序测试方法,通过运行被测程序来验证它的可靠性。另一方面,由于一字符号测试的结果代表了一大类普通测试的运行结果,实际上是证明了程序接受此类输入,所得出是正确的还是错误的。

    存在问题。:

    • 分支问题。
    • 二义性问题。
    • 大程序问题。
  3. 程序变异。

    舍掉一些次要因素,对循环机制进行简化,极大地减少路径的数量,实现简化循环意义下的路径覆盖。无论循环的形式和实际执行循环体的次数多少,只考虑循环一次和零次的情况。

三、静态测试

1、定义

静态测试不要求实际执行被测代码,而是以静态分析或者人工检查被测系统的方法对系统进行测试。由于静态测试不需要编写测试代码进行执行,所以它更适合于在开发早期进行,该工作更适合在编码早期进行,通过发现典型问题反馈给开发,从而在编码早期采取规范编程等方式规避问题。

2、静态分析

静态分析主要是对源程序进行静态分析,从而发现被测代码的缺陷以及潜在的“危险”结构。静态分析的很多分析方法往往都可以借助工具进行,目前Logiscope Audit,PC-Lint,Telelogic Tau等工具都可以作为静态分析的工具。

方法:

  • 构思分析素材:根据以往经验、当前项目要求确定该分析什么。
  • 生成分析素材:根据源代码生成能够辅助发现开发代码问题的各种引用表等分析素材信息。
  • 静态错误分析:利用已经生成的各种引用表,源代码等分析素材。寻找代码中的缺陷以及潜在的“危险”结构。

分析素材

分析素材是静态分析的核心,一般根据代码中常见的问题,我们会确定一些分析素材,根据这些分析素材就可以比较快速简单的发现此类常见问题。对于一个组织来说应该是逐渐积累的,随着这方面工作进行的增多,就会积累下来很多有效的分析素材。而且有些分析素材本身还可以直接转换成编码规范来影响开发团队的日常开发,从而减少用于静态分析的工作量。

常用方法

  • 变量交叉引用表:在表中标明各变量的属性,引用次数(读引用次数、写引用次数)、是否初始化、类型等。
  • 函数引用表:在该表中,标明各个函数的属性:是否定义、引用次数、扇入数、扇出数;参数表:输入参数的个数、顺序、类型;输出参数的个数、顺序、类型。
  • 代码度量表:在该表中列出各个文件、各个函数的代码量等,可以用于判断哪些函数、模块的代码复杂度比较高,就集中分析哪里。
  • pc-lint分析结果:根据我们自己的分析目的,往往可以确定一些分析选项,最后可以分析出相应的信息用于发现问题。

构思分析素材

在静态分析之前,需要确定想要发现哪些类型的问题,针对不同类型的问题。设计不同的分析素材,尽量提供足以发现问题所需的分析素材。

生成分析素材

生成分析素材一般就是运行相应的工具,输出分析结果,这些结果就是下一步进行错误分析的分析素材。

静态错误分析

对于一些分析素材,可以直接发现问题,但是还有很多情况需要在分析素材基础上再分析才能发现问题。

镜静态错误分析方法:

  • 类型和单位分析:为了发现源程序中数据类型、单位上的不一致性,建立程序语言的预处理程序。
  • 引用分析:沿着程序的控制路径,核查程序变量的引用异常问题。
  • 表达式分析:对表达式进行分析,以发现和纠正表达式中出现的错误。
  • 接口分析:接口的一致性错误
3、软件审查

软件审查是一种针对需求文档、开发过程文档、代码、测试文档等的集体评审技术,靠集体的智慧发现上述问题

方法简介

软件审查是多个测试人员或者开发人员组成的一个评审小组,通过阅读、讨论和争议,对需求文档、开发过程文档、代码、测试文档等进行分析并发现问题的过程。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值