测试方法

黑盒测试的常用方法

等价类划分法

等价类

等价类是某个输入域的子集,在该子集中每个输入数据的作用是等效的。

分为有效等价类和无效等价类

  • 有效等价类对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可以检验程序是否实现了规格说明中所规定的功能和性能。
  • 无效等价类:与有效等价类的定义恰巧相反。

设计测试用例时,要同时考虑这两种等价类。因为软件不仅要能接收合理的数据,也要能经受异常数

据的考验。经过正反的测试才能确保软件具有更高的可靠性

确定等价类的6个原则

①输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。

 

 

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

 

 

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

 

 

④多输入的或关系

在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。

⑤多输入的且关系

在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。

⑥细分等价类

在确知已划分的等价类中,各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步地划分为更小的等价类。

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

(a) 建立等价类表,列出所有划分出的等价类:

(b) 为每个等价类规定一个唯一的编号;

(c)设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类

(d) 重复(c),最后使得所有有效等价类均被测试用例所覆盖;

(e) 设计一个新的测试用例,使其只覆盖一个无效等价类。

(f) 重复(e)使所有无效等价类均被覆盖。

tips:有效等价类和无效等价类都要被覆盖,但覆盖原则不同

注意无效等价类中可以使用其他类型字符

边界值分析法(BVA)

全称Boundary Value Analysis

首先明确,需要在等价类划分的基础上进行。

1.来由

边界值和等价类密切相关,输入等价类和输出等价类的边界是要着重测试的边界情况。在等价类的划分过程中就产生了许多等价类边界。边界是最容易出错的地方,所以,从等价类中选取测试数据时应该关注边界值。

2.基本思想

选取正好等于、刚刚大于或刚刚小于等价类边界的值作为测试数据,而不是选取等价类中的典型值或任意值做为测试数据。

3.边界

边界是指相对于输入等价类和输出等价类而言,稍高于边界值及稍低于其边界值的一些特定情况。

 

4.单故障假设

上点:就是指得边界上得点,开区间的话,上点就是在域外,闭区间得话,上点就是在域内。

离点:指得就是离上点最近得点,如果是开区间,那么离点就在域内,如果是闭区间,那么离点就在域外。

内点:域内得任意点都是内点。

 

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

判定表法

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

判定表

1.定义


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

2.判定表的制定

3.适合使用判定表设计测试用例的条件


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

4.示例

因果图法

1.定义

借助图形,着重分析输入条件的各种组合,每种组合条件就是“因”,输出的结果就是“果”。

因果图是一种形式化的图形语言,实质上是使用简化记号表示数字逻辑图,不仅能发现输入、输出中的错误,还能指出程序规范中的不完全性和二义性。

2.因果图法生成测试用例的步骤

 

①分析软件规格说明文档描述的哪些是原因(输入条件),哪些是结果(输出条件)。

原因常是输入条件或输入条件的等价类,结果是输出条件

②分析程序规格说明的描述中的语义内容,将其表示成连接各个原因与各个结果的“因果图”。

③标明约束条件。在因果图上标上哪些不可能发生的因果关系,表明约束或限制条件。

④根据因果图,创建判定表,将复杂的逻辑关系和多种条件组合很具体明确的表示出来。

⑤把判定表的每一列作为依据设计测试用例。

3.符号分析

分为基本符号(即输入和输出之间)和约束符号(即输入之间、输出之间)两大类

基本符号有:恒等、非、或、与四类,图形都很好记

约束符号有:

互斥(Exclusion)

或(I)

唯一(Only)

要求(Require)

屏蔽(Mask)

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

组合覆盖法(Pair-wise

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

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

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

https://blog.csdn.net/qq_22003641/article/details/84957448

正交实验法(OTDM

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只适合于描述静态说明,输出数据仅由输入数据决定。

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

场景设计法

多数软件系统都是用事件触发来控制业务流程,事件触发时的情景便形成了场景,场景的不同触发顺序构成了用例。

  • 特点:测试人员要充分发挥对用户实际业务场景的想象,关心用户做什么,而不是关心产品做什么。
  • 优点:实用性强,有效,设计出来的用例有价值。
  • 缺点:可能使用的场景不一定能对事件系列进行全面的分析,设计出来的用例不完整。

错误推测法

定义:测试者根据经验、知识和直觉来发现软件的错误,来推测程序中可能存在的各种错误,从而有针对性地进行测试。

  • 特点:没有依据,只能靠测试者自身实力;
  • 优点:快速切入体会到程序易用与否;
  • 缺点:难以准确知道测试覆盖率。

地位:作为辅助方法(不像BVA是必用的黑盒测试方法)

基本思想:软件测试的原则5-错误存在集群现象

白盒测试的常用方法(动态)

https://blog.csdn.net/qq_42944594/article/details/121907540?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-121907540-blog-109504773.pc_relevant_multi_platform_whitelistv2&spm=1001.2101.3001.4242.1&utm_relevant_index=3

逻辑覆盖测试法

SC-语句覆盖

sentence coverage 语句覆盖

设计若干测试用例,运行被测程序,使程序中的每个可执行语句至少被执行一次。

DC-判定覆盖/分支覆盖

decision coverage 判定覆盖/分支覆盖

使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假值均曾被满足。

CC-条件覆盖

condition coverage 条件覆盖

使每个判断中每个条件的可能取值至少满足一次。

CDC-条件-判定覆盖

condition-decision coverage 条件-判定覆盖(条件的粒度比判定小)

判断条件中的所有条件可能取值至少执行一次,同时,所有判断的可能结果至少执行一次

MCC-条件组合覆盖/多重条件覆盖

multiple condition coverage 条件组合覆盖/多重条件覆盖

得判断中每个条件的所有可能组合至少出现一次,并且每个判断本身的判定结果也至少出现一次。

满足条件组合覆盖,一定满足判定覆盖、条件覆盖、条件判定组合覆盖

问题:

①效率不高,有些测试没必要

②条件/判定还不够强,有些路径仍未覆盖

MCDC-修正条件-判定覆盖

modified condition decision coverage 修正条件-判定覆盖

①每个判定的所有可能结果至少能取值一次;

②判定中的每个条件的所有可能结果至少取值一次;

③一个判定中的每个条件曾经独立地对判定的结果产生影响;

④每个入口和出口至少执行一次

主要改进之处在于加了这样一条约束:

一个判定中的每个条件曾经独立地对判定的结果产生影响

基本路径测试法

BPC测试的四个步骤

  1. 依据代码画出流程图/控制流图
  2. 确定控制流图的圈复杂度

圈复杂度V(G)是基本路径的上限,起参考作用。有三种计算方式

其中第二种慎用,因为简单判断不好确定。

  1. 确定线性独立路径的基本集合(基本路径集)

独立路径: 至少引入一系列新的处理语句或条件的任何路径
基本集: 由独立路径构成的集合

  1. 设计测试用例覆盖每条基本路径
    小结以上覆盖的关系

posted @ 2022-07-05 17:36  测试木可  阅读(778)  评论(0编辑  收藏  举报