Skip to main content

第05章 功能性测试

第05章 功能性测试

一、概述

功能性测试包括如下三种测试:

  • 边界值测试
  • 等价类测试
  • 基于决策表的测试

这三类都是黑盒测试,不需要看源代码,只需要看输入、输出、从功能开始分析。会把功能分为一个一个用例来测试,并且补充用例说明,有完整的输入、输出信息,用来评判输出的正确性。不同的测试方法有优点也有缺点。

二、边界测试

对于函数$Y=f(x_1,x_2)$,要求$a\leq x_1 \leq b$,$c\leq x_2 \leq d$, 边界值测试的取值:最小值、略高于最小值、正常值、略高于最高值、最高值。因为边界测试在定义的时候就是基于单缺陷假设。

1)单缺陷假设

单缺陷假设:失效很少情况是由两个或者更多的缺陷同时引起的,大多数情况只是一个因素引起。公式:$N$个变量的测试用例的数量:$4N+1$

image-20230319214929133

2)健壮性测试

健壮性测试:除了五个边界值,我们再增加一个略小于最小值、一个略大于最大值(即要考虑无效值输入)

image-20230319215004674

公式:N个变量的测试用例的数量:$6N+1$

3)最坏情况

最坏情况测试:拒绝单缺陷假设, 考虑全部边界输入的组合。N个变量的测试用例:$5^N$(每个变量都要考虑:最小值、略高于最小值、正常值、略高于最高值、最高值,也就是每个变量都是五个情况)加入

  • 假如还要考虑健壮性,需要考虑无效数据的输入,那就需要$7^N$的输入。
  • 例如:三角形问题边界值测试,abc三个变量,一般法$4\times 3 + 1=13$,最坏情况$5^3=125$个

4)随机测试

随机测试:即便完成所有边界值测试,还可以用随机测试,用随机函数取出测试值,但是需要考虑随机生成的数据量

三、等价类测试

划分:互不相交的一组子集,这些子集的并集是全集。

1)弱(单缺陷)一般等价类

  • 对于函数$Y=f(x_1,x_2)$,
  • $a\leq x_1 \leq d$,等价区间:$[a,b), [b,c), [c,d], N=3$
  • $e\leq x_2 \leq g$,等价区间:$[e,f), [f,g],M=3$

image-20230319215833149

  • 考虑单缺陷假设覆盖,测试数为:$max(N,M)$中的最大者
  • 考虑多缺陷假设覆盖,测试的数量:$N\times M$
  • 假如我们在分类的时候,可以发现有很明显的分类划分(典型的就是三角形例子,比如等腰三角形、等边三角形、非等边三角形、非三角形)

2)强(多缺陷)一般等价类

  • 测试数量$M\times N$,考虑不同划分的笛卡尔积

image-20230319215938952

3)弱健壮等价类测试

  • 弱(单缺陷)健壮(考虑无效值)
  • 测试数量:$max(N,M) + 2$(2是变量的个数)

截屏2023-03-19 22.02.09

4)强健壮等价类测试

  • 强:多缺陷组合(笛卡尔积)
  • 健壮:考虑无效值
  • 所有的区域全部覆盖:$(M+2)\times (N+2)$

截屏2023-03-19 22.41.26

5)总结

  • 两种软件缺陷特征假设:单缺陷假设(弱)多缺陷假设(强)
  • 考虑无效输入:健壮性
  • 最坏情况:基于多缺陷假设

四、决策表的测试

决策表适用的软件的类型是什么?有比较复杂的一个逻辑关系,它的业务流很复杂,需要有很多的一些判断的一些这个场景,有不同的一些输入输出的这种逻辑关系,这种情况下的话,我们只用这种边界值也好,等价类很难达到一个比较好的测试效果。

决策表有四个部分,桩部分、条目部分、条件部分、行动部分

截屏2023-03-19 22.58.36

具体例子:

截屏2023-03-19 22.58.53

五、测试效率

截屏2023-03-19 23.03.24

六、测试的选择

  • 如果变量引用物理量,采用边界值分析和等价类测试
  • 如果变量是独立,采用边界值分析和等价类测试
  • 如果变量不是独立的,采用决策表测试
  • 如果可以保证单缺陷假设,采用边界值分析和健壮性测试
  • 如果可以保证多缺陷假设,采用最坏情况测试,健壮性最坏情况测试、决策表测试
  • 如果程序包含大量例外处理,采用健壮性测试和决策表测试
  • 如果变量引用的是逻辑量,采用等价类测试和决策表测试