测试理论知识四:大型软件的测试技巧——单元测试

1. 模块测试/单元测试

模块测试也被称为单元测试,本文章称单元测试为主。

对于小的程序测试,我们可以在一定时间内完成,如果面对的是大型程序,等程序开发完成之后我们再进行测试,那会大大降低我们的效率。

单元测试是对程序中的单个子程序、子程序或过程进行测试的过程,也就是说,一开始并不是对整个程序进行测试,而是先将注意力集中在对构成程序的较小模块的测试上面。

2. 单元测试的测试用例设计

单元测试总体上是面向白盒测试。

所以我们在编写单元测试的用例时,所使用的测试策略需要偏向于白盒的测试策略。

白盒测试策略如下:

语句覆盖、判断覆盖、条件覆盖、判定/条件覆盖、多重条件覆盖。

语句覆盖:语句覆盖是指测试用例可以被测试的目标程序的每行代码都执行。

判断覆盖:测试用例编写应覆盖代码中的判断条件,包括成立与不成立。

条件覆盖:测试用例编写应覆盖代码中的条件,包括判断与循环条件的成立与不成立的情况。

判定/条件覆盖:判断覆盖与条件覆盖的综合情况。

多重条件覆盖:测试用例编写应覆盖代码中的多重条件判断,包括多重循环与判断嵌套等情况。

3. 增量测试

如同我们开头时问的问题,软件是否先独立的进行每个模块的测试,然后组合成一个完成的程序,还是组装成一个完整的程序后一次性测试?

针对以上两个问题,我们提出了增量测试和非增量测试。

非增量测试:每个单元进行独立的测试,测试完成之后组装起来。

增量测试:每个单元进行测试,测试后的每个单元进行组装,类似于盖高楼大厦。

3.1 增量测试与非增量测试的区别

  1. 非增量测试所需的工作量要多一些。

  2. 如果使用了增量测试,可以较早的发现模块中与不匹配接口、不正确假设相关的编程错误。

  3. 如果使用了增量测试,调试会进行的容易一些。

  4. 增量测试会将测试进行的更彻底。

  5. 非增量测试所占用的机器时间显得少一些。

  6. 模块测试阶段开始时,如果使用的是非增量测试,就会有更多的机会进行并行操作。

3.2 自顶向下测试与自底向上测试

自顶向下的测试是从程序的顶部或初始模块开始,当一个模块的要开始测试时,需要确保调用它的模块已经被测试了。

优点

  1. 如果主要的缺陷发生在程序的顶层将非常有利。

  2. 一旦引入I/O功能,提交测试用例会更容易

  3. 早期的程序框架可以进行演示,并可激发积极性

缺点:

  1. 必须开发桩模块

  2. 桩模块要比最初表现的更复杂

  3. 在引入I/O功能之前,向桩模块中引入测试用例比较困难

  4. 创建测试环境可能很难,甚至无法实现

  5. 观察测试输出很困难

  6. 使人误解设计和测试可以交迭进行

  7. 会导致特定模块测试的完成延后

自底向上测试开始于程序中的终端模块,当一个模块要开始测试时,需要确保他调用的模块都被测试完成。

优点

  1. 如果主要的缺陷发生在程序的底层将非常有利

  2. 测试环境比较容易建立

  3. 观察测试输出比较容易

缺点:

  1. 必须开发驱动模块。

  2. 直到最后一个模块添加进去,程序才形成一个整体。

你可能感兴趣的:(软件测试理论知识,可用性测试)