软件测试之单元测试

对于一般的大型程序,我们一般都会先进行单元测试,一个单元一般是一个子程序、一个类、一个函数、一个模块等等,根据具体情况划分。单元测试将注意力放在各个小的单元上,使得测试人员能够相对容易的定位到错误的地方,同时由于把程序进行了模块化,所以可以多个单元模块同时测试。

单元测试过程主要需要考虑两个大点:设计测试用例执行测试

一、设计测试用例

对于单元测试,在设计测试用例时,单元测试主要是使用白盒测试,因为对于一个单元,主要是需要检查程序内部的逻辑结构。当然也需要根据情况结合黑盒测试,因为在规格说明中可能会有定位的这个模块的说明,因此需要使用黑盒测试来根据规格说明进行测试。

二、执行测试

在执行测试的时候,又需要选择具体的测试方法策略,因为我们虽然测试了各个单元,但是我们最终的目的还是要将各个单元模块组装在一起,即:由点到面的过程。测试方法主要分为增量测试非增量测试,而增量测试又可分为自顶向下测试自底向上测试

1.非增量测试

非增量测试主要是先单独测试每个单元模块,当所有的单元模块都测试完了之后,再将这些模块组合成完整的程序。举一个具体的例子,如图:

假设这是一个程序,共有5个模块A,B,C,D,E,它们之间的关系是:A模块调用了B模块和C模块,B模块和C模块又分别调用了D模块和E模块,A模块是这个程序的最上层,D模块和E模块是最下层。

对于这个例子,如果是使用非增量测试的话,那么是应该先对A,B,C,D,E这5个模块先单独测试,单独编写测试用例,当测试完成后,直接将这5个模块组装在一起。这就是非增量测试的整体流程。然而事实上并没有这么简单,假如我们现在正在测试A模块,但是在A模块中却调用了B模块和C模块,这应该怎么办呢?显然是不可能将B模块和C模块拿过来用的。这里就需要用到驱动模块桩模块,驱动模块就是测试人员编写的小模块,用来将测试用例传入被测模块,并返回结果,这个可以看成是一个函数,这个函数调用了被测模块,然后向被测模块传入测试用例(参数),然后接受被测模块返回结果。桩模块主要是用来模拟被测模块中调用的其他模块的功能,比如A模块中调用了B模块和C模块,那么这里就需要添加两个桩模块来模拟B模块和C模块的功能。

2.增量测试

增量测试是将下一个需要测试的模块先组装到已经测试过的模块集合中去,然后再编写测试用例,再进行测试。还是以上个例子为例,A模块是最上层,D模块和E模块是最下层,根据是从上层开始测试还是先从下层开始测试将增量测试分为了自顶向下测试自底向上测试

a.自顶向下测试

自顶向下测试是从程序的顶部或者初始模块开始,比如上例中的A模块。当A模块测试完毕后,就可以选择B模块或者C模块与A模块组合,然后再进行测试,就这样逐步向下组合进行测试,直到组合成最终的程序。

对于组合模块的序列,没有具体的序列,需要根据情况去选择合适的组合序列。这有两项指南:

  • 如果程序中存在很关键的模块,需要尽早将这些模块组合进去。
  • 应该将I/O模块尽早组合进去。

自顶向下测试的优点:

  • 若主要缺陷发生在顶层会非常有利。
  • 一旦引入I/O功能,提交测试用例会更加容易。
  • 早期的程序框架可以进行演示,并激发积极性。

自顶向下测试的缺点:

  • 必须开发桩模块。
  • 桩模块要比最初表现的更复杂。
  • 引入I/O之前,向桩模块中引入测试用例比较困难。
  • 创建测试环境可能会很难,甚至无法实现。
  • 观察测试输出很困难。
  • 使人误解设计和测试可以交迭进行。(当正在设计D模块时,可能会认为A、B模块设计好了,就开始编码和测试,但是有时可能再设计较低层次的模块(D)时,可能会对较高层次的模块(B)的设计进行合理修改)
  • 会导致特定模块测试的完成延后。

b.自底向上测试

自底向上测试是从程序的底部(终端)模块开始,比如上例中的D模块或者E模块。自底向上测试弥补了自顶向下测试的不足,但是也有一些缺点。关于自底向上测试的组合序列,和自顶向下测试相同。

自底向上测试的优点:

  • 若主要缺陷发生在底层会非常有利。
  • 测试环境比较容易建立。
  • 观察测试输出比较容易。

自底向上测试的缺点:

  • 必须开发驱动模块。
  • 直到最后一个模块添加进去,程序才形成一个整体。

3.增量测试和非增量测试对比

通过对比,得到了以下几个结论:

  • 非增量测试所需的工作量要多一些。
  • 使用增量测试可以尽早的发现模块中接口不匹配等错误。
  • 使用增量测试,调试会进行得容易一些。
  • 增量测试会将测试进行得更加彻底。
  • 非增量测试所占用的机器时间显得少一些。
  • 使用非增量测试可以有更多的机会进行并行测试。

综上:增量测试优于非增量测试,但是在具体的项目中,需要根据项目的实际情况选择合适单元测试方法。

发布了49 篇原创文章 · 获赞 10 · 访问量 9259

猜你喜欢

转载自blog.csdn.net/heibuliuqiu_gk/article/details/102248056