单元测试还是功能测试?

Cedric Beust,  TestNG 测试框架的作者, 在他最近的一篇blog" Unit or functional? "说,

尽管在过去的几年里单元测试得到了大量的注意,但功能性测试却是让你的应用程序按照客户的期望运转的最终保证.

Beust 通过一个例子解释了这个观点,这个例子中程序在单元测试中获得通过,但在功能测试中却显示有个错误. 因为最终用户只关心程序功能,Beust说,

理想状况下,你希望你的程序既能被单元测试覆盖,也能被功能测试检测,但如果工期紧张,你只能选择其中之一,我...还是推荐后一种(因为它是为用户服务的),然后顺着走下去,在你认为合适的地方实现一些单元测试.

Beust同时指出,在一个测试套件里需要由功能测试和单元测试两部分共同组成,单元测试经常服务于功能性能测试失败的精确定位:也就是说,单元测试主要是对开发人员有用,但功能性测试却是测试用户们所关心的.

根据Beust所说,一个由功能测试和单元测试共同组成的测试套件本质上会具有超过100%的测试覆盖率:

超过100%? 可能吗? 我知道这个听起来有点怪,它却很简单的表明在这个类中运行所有的这些测试也许会让你的主程序里的某部分多跑好几次,但却不是一件没有价值的事情. 从另外一种方式考虑,只进行[功能性测试]也会得到100%的覆盖率,等价于只运行[单元测试].

当你的项目进度压力大时,什么样的测试你认为可以先放弃? 什么样的测试在你发布程序前必要要进行?

本文由 外刊IT评论   奉献

----

相关推荐