4 动态执行跟踪
动态执行测试通常分为黑盒测试与白盒测试。黑盒测试指已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。白盒测试指已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格的要求,所有内部成分是否已经经过检查。
对于单元测试来说主要应该采用白盒测试法对每个模块的内部作跟踪检查测试。对于单元白盒测试,应该对程序模块进行如下检查:
1. 对模块内所有独立的执行路径至少测试一次;
2. 对所有的逻辑判定,取“真”与“假”的两种情况都至少执行一次;
3. 在循环的边界和运行界限内执行循环体;
4. 测试内部数据的有效性等等。
单元白盒跟踪测试,通常需要做如下三项工作:
1. 设计测试用例;
2. 设计测试类模块;
3. 跟踪调试。
4.1 测试用例设计
通常动态执行跟踪调试是在编码阶段进行的。在对源程序作静态人工检查之后就可以开始进行单元测试的测试用例设计。利用设计文档,设计可以验证程序功能、找出程序错误的多个测试用例。
4.1.1 测试用例的设计基本原则
设计测试用例基本的原则是:
1. 一个好的测试用例在于能够发现至今没有发现的错误;
2. 测试用例应由测试输入数据和与之对应的预期输出结果这两部分组成;
3. 在测试用例设计时,应当包含合理的输入条件和不合理的输入条件。
4.1.2 白盒测试的测试用例设计
白盒测试测试用例一般采用逻辑覆盖法和基本路径法进行设计。
一、逻辑覆盖法
逻辑覆盖是以程序内部的逻辑结构为基础的测试用例设计技术,这一方法要求测试人员对程序的逻辑结构有清楚的了解。逻辑覆盖可分为:语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖与路径覆盖。
1. 语句覆盖就是设计若干个测试用例,运行所测程序,使得每一可执行语句至少执行一次。
2. 判定覆盖就是设计若干个测试用例,运行所测程序,使得程序中每个判断的取真分支和取假分支至少经历一次。
3. 条件覆盖就是设计若干个测试用例,运行所测程序,使得程序中每个判断的每个条件的可能取值至少执行一次。
4. 判定--条件覆盖就是设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断的所有可能判断结果也至少执行一次。
5. 条件组合覆盖就是设计足够的测试用例,运行所测程序,使得每个判断的所有可能的条件取值组合至少执行一次。
6. 路径测试就是设计足够的测试用例,覆盖程序中所有可能的路径。
每一种覆盖方法都有其优缺点,这6种覆盖方法关系,如图1:
图1
通常在设计测试用例时应该根据代码模块的复杂度,选择覆盖方法。一般的代码的复杂度与测试用例设计的复杂度成正比。因此,设计人员必须做到模块或方法功能 的单一性、高内聚性,使得方法或函数代码尽可能的简单;这样将可大大提高测试用例设计的容易度,提高测试用例的覆盖程度。