黑盒测试

测试用例选择

  1. 为每一个等价类规定一个唯一编号;
  2. 设计一个新的测试用例,使其尽可能多地覆盖 尚未被覆盖的有效等价类,重复这一步,直到 所有的有效等价类都被覆盖为止;
  3. 设计一个新的测试用例,使其仅覆盖一个尚未 被覆盖的无效等价类,重复这一步,直到所有 的无效等价类都被覆盖为止

image-20220309134921110

分类

是否是三角形的三条边

等价类

A>0

B>0

c>0

A+B>C

B+C>A

A+C>B

非等价类

A<=0

B<=0

C<=0

A+B<=C

是否等腰

等价类

A=B

B=C

C=A

非等价类

A!=B!=C

是否等边
等价类

A=B=C

非等价类

A!=B

B!=C

C!=A

边界值分析法(单缺陷假设)

比最大值稍微小一点,比最小值稍微大一点

image-20220309140314690

健壮性测试:(再多两个点)

比最大值稍微大一点,比最小值稍微小一点

image-20220309140305899

最坏情况测试:

多变量取极值的情况

image-20220309140255646

健壮最坏情况测试

最坏情况取超边界情况

image-20220309140405550

错误推测法

根据经验推测

简单有效,但系统性差,是其他的补充

判定表法

判定表是一种用来表示和分析复杂逻辑关系的工具,最适 合描述在多个逻辑条件取值的组合所构成的复杂情况下, 分别要执行哪些不同的动作。

条件桩(Condition Stub):列出了问题的所有条件。通常认为列出的条件的次序无关紧要。

动作桩(Action Stub):列出了问题规定可能采取的操作。这些操作的排列顺序没有约束。

条件项(Condition Entry):列出针对它所列条件的取值,在所有可能情况下的真假值。

动作项(Action Entry):列出在条件项的各种取值情况下应该采取的动作

例子

“……对于功率大于50马力的机器,并且维修记录不全或已运行 10年以上的机器,应给予优先的维修处理……

(1)列出所有的条件桩和动作桩

– 条件桩 C1:功率大于50马力吗? C2:维修记录不全吗? C3:运行超过10年吗?

– 动作桩 A1:进行优先处理 A2:做其他处理

(2)确定规则个数

– 输入条件个数:3

– 每个条件的取值:“是”或“否”

– 规则个数:222 =8

image-20220309143736908

image-20220309143751694

因果图法

从用自然语言书写的程序规格说明 的描述中找出因(输入条件)和果(输出或程序状态的改 变),通过因果图转换为判定表

基本步骤

  1. 分析软件规格说明描述中,哪些是原因(即输入条件或输入 条件的等价类),哪些是结果(即输出条件),并给每个原因和 结果赋予一个标识符。

  2. 分析软件规格说明描述中的语义,找出原因与结果之间,原 因与原因之间对应的关系,根据这些关系,画出因果图

  3. 由于语法或环境限制,有些原因与原因之间,结果与结果之 间的组合情况不可能出现。为表明这些特殊情况,在因果图上用 一些记号标明约束或限制条件

  4. 把因果图转换成判定表。

  5. 把判定表的每一列拿出来作为依据,设计测试用例

图形符号

image-20220311152714975

image-20220311152824009

白盒测试

白盒测试

定义

知道内部工作过程,可通过测试内部动作来测试

目标

通过测试来检测软件产品内部动作是否按照规格说明书的规定正常执行

重点

看软件内部各条通路是否按照规定工作

特点

黑盒可能存在负负得正的情况,而白盒不会

白盒能发现一些隐患:如内存泄漏,误差累积等

作用

主要想对程序模块进行如下的检查

对所有独立测试路径至少测试一次

对所有的逻辑判定,取真/假的两种至少测试一次

在循环的边界和运行界限内执行循环体

测试内部数据结构的有效性

局限

一个具有多重选择和循环嵌套的程序,不同的路径数目可能是天文数字。

比较

image-20220311162005086

如何安排白盒测试

单元测试

集成测试

  • 集成阶段,依据概要设计说明书

  • 静态结构分析

  • 代码质量度量

  • 功能确认与接口分析

  • 覆盖率分析

  • 性能分析

  • 内存分析

系统测试

到这步已经很少做白盒测试了

验收测试

白盒测试综合策略

  1. 在测试中,应尽量先用工具进行静态结构分析。

  2. 测试中可采取先静态后动态的组合方式:先进行静态结构分析、代码检查和静态质量度量,再进行覆盖率测试。

  3. 利用静态分析的结果作为引导,通过代码检查和动态测试的方式对静态结构分析结果进行进一步的确认,使测试工作更为有效

  4. 覆盖率测试是白盒测试的重点,一般可使用基本路径测试 法达到语句覆盖标准;对于软件的重点模块,应使用多种覆盖标准衡量代码的覆盖率。

  5. 在不同的测试阶段,测试的侧重点不同:在单元测试阶段 ,以代码检查、逻辑覆盖为主;在集成测试阶段,需要增加静态结构分析、静态质量度量;在系统测试阶段,应根据黑盒测试的结果,采取相应的白盒测试

白盒测试用例设计技术

静态

  • 代码检查(人工+工具)

  • 静态结构分析(主要由软件工具自动进行)

  • 软件质量度量(主要由软件工具自动进行

动态