1 概述

    动态测试是建立在程序的执行过程中,根据对被被测对象内部情况的了解与否、分为黑盒测试盒白盒测试。

    黑盒测试又称为功能测试、数据驱动测试或基于规格说明的测试,这种测试不必了解被测试对象的内部情况,而依靠需求规格说明中的功能来设计测试用例。

    白盒测试又称结构测试、逻辑测试或基于程序的测试,这种测试应了解程序的内部构造,并且根据内部构造设计测试用例

    在单元测试时一般采用白盒测试,在配置项测试或系统测试时一般采用黑盒测试。

2 黑盒测试方法

    (1)功能分解

    将需求规格说明中每一个功能加以分解,确保各个功能被全面地测试。功能分解是一种较常用的方法。

  • 使用程序设计中的功能抽象方法把程序分解为功能单元;

  • 使用数据抽象方法产生测试每一个功能单元的数据

    功能抽象中程序被看成一种抽象的功能层次,每个层次可标识被测试的功能,层次结构中的某一功能由其下一层功能定义。按照功能层次进行分解,可以得到众多的最低层次的子功能,以这些子功能为对象,进行测试用例设计。

    数据抽象中,数据结构可以由抽象数据类型的层次图来描述。每个抽象数据类型有其取值集合。程序的每一个输入和输出量的取值集合用数据抽象来描述。

    (2)等价类划分

    在分析需求规格说明的基础上,把程序的输入域划分成若干部分,然后在每部分选取代表性数据形成测试用例。

  • 划分有效等价类:对规格说明是有意义,合理的输入数据所构成的集合

  • 划分无效等价类:对规格说明是无意义、不合理的输入数据所构成的集合

  • 为每一个等价类定义一个唯一的编号

  • 为每一个等价类设计一组测试用例,确保覆盖相应的等价类。

    (3)边界值分析

    边界值分析是针对边界值进行测试的,使用等于,小于或大于边界值得数据对程序进行测试的方法就是边界值分析方法

  • 通过分析规格说明,找出所有可能的边界条件;

  • 对每一个边界条件,给出满足和不满足边界值得输入数据;

  • 设计相应的测试用例

    对满足边界值输入可以发现计算差错,对不满足的输入可以发现域差错

    (4)判定表

    由四部分组成:条件桩、条件条目、动作条目。任何一个条件组合的取值及其相应要执行的操作构成规则,条目中每一列是一条规则。

    条件引用输入的等价类,动作引用被测试软件的主要功能处理部分,规则就是测试用例。该方法的使用有以下要求:

  • 规格说明以判定表形式给出,或是很容易转换成判定表

  • 条件的排列顺序不影响执行哪些操作

  • 规则的排列顺序不会影响执行哪些操作

  • 每当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则

  • 如果某一规则的条件得到满足,将执行多个操作,这些操作的执行与顺序无关

    (5)因果图

    通过画图,把用自然语言描述的功能说明转换为判定表,然后为判定表每一列设计一个测试用例。

  • 分析程序规格说明,引出原因(输入条件)和结果(输出结果),并给每个原因和结果赋予一个标识符。

  • 分析程序规格说明中语义的内容,并将其表示或连接各个原因和各个结果的“因果图”

  • 在因果图上标识约束条件

  • 通过跟踪因果图中的状态条件,把因果图转换成有限项的判定表;

  • 把判定表中每一列表示的情况生成测试用例

    如果需求规格说明中含有输入条件的组合,宜采用本方法

    (6)随机测试

    指测试输入数据是在所有可能输入值中随机选取的。测试人员只需规定输入变量的取证区间,在需要时提供必要的变换机制,使产生的随机数服从预期的概率分布。该方法或得预期输出比较困难,多用于可靠性测试盒系统强度测试。

    (7)猜错法

    (8)正交实验法

    从大量的试验中挑出适量的,有代表性的点,应用正交表,合理地安排实验的一种科学的实验设计方法。

3 白盒测试方法

    (1)控制流测试

  • 语句覆盖

  • 分支覆盖

  • 条件覆盖

  • 条件组合覆盖

  • 路径覆盖

    覆盖控制流测试步骤

  • 将程序流程图转换成控制流图

  • 经过语法分析求得路径表达式

  • 生成路径树

  • 进行路径编码

  • 经过编译得到执行的路径

  • 通路径枚举产生特定路径的测试用例

    (2)数据流测试

    是用控制流程图对变量的定义和引用进行分析、查找出未定义的变量或定义了而未使用的变量,这些变量可能是拼错的变量、变量混淆或丢失了语句。

    (3)程序变异

    一种差错驱动测试,为了查出被测试软件在做过其他测试后还剩余一些的小差错,本方法一般用测试工具进行。

    (4)程序插装

    (5)域测试

    (6)符合求值