单元测试的一些疑问 单元测试
对于现在国内的软件开发,相信每一个单位都知道软件测试的重要性,并且都或多或少的在做测试,可是对于单元测试这个部分又有多少的软件公司在做呢?10%?还是更少?反正我了解的软件公司里面在有意识的做单元测试绝无仅有啊,可能一些大的公司里面在做吧。单元测试是代码编写质量的第一步,可以说是软件质量的基石,照例来说应该得到更多公司的重视才对,可是现实中不尽如人意一定有其问题所在,这些问题可能也是我的疑问。
我们先来看看单元测试的定义:单元测试是程序员编写的一段代码,用于执行另一段代码并确定那段代码的行为是否和程序员的期望一致。这个定义我是从书上面抄的(单元测试之道C#版),希望不会错的太离谱了。
一、由程序员编写单元测试代码适合吗?
从这个定义上面来看,单元测试是程序员编写的,而不是测试人员编写的。虽然我同意这个观点,对于单元测试来说,最了解程序的人就是编写代码的人,他来编写单元测试自然最合适不过了;但是问题也在这里了,一个程序员是要对自己的代码负责的,因此他编写代码的质量在测试代码编写之前可能就已经经过自己确认的,而且程序员的工作是很繁忙的,完成功能代码的时间都不够用,是否有时间去编写测试代码,考虑各种方面的测试用例确认代码就很值得怀疑了。我想这大概也是大多数软件公司不能够实行单元测试的原因吧。
二、单元测试代码的管理成本有多高?
每一个公司都是追求利润的,那单元测试的好处和它的实行成本成比例吗?我们使用昂贵的程序员资源来编写单元测试的代码,本身就是很高的一个成本。毕竟现在大多数的测试人员都是一些不会编写代码的“软件使用人员”,通过点击鼠标来完成的,双方的成本差距是比较高的。比如拿我所在城市的水平来说,一个合格的程序员的工资在4k-8k之间,一个测试人员的工资在1.5k-4k之间,成本要高一倍以上。其次就是测试人员的鼠标点击测试的效率可能比单元测试的代码编写效率要高不少,那可能成本差距更多了(当然精细程度和准确程度差距还是有的)。而且我们现在还没有考虑测试代码也会出现错误的,系统的规模会因为添加上了测试的一块儿增大,自然管理成本也增加了,软件的修改是不可避免的,要管理测试版本和软件版本的同步将是管理上的一个难点阿,无形当中管理成本成倍的增长了。如果你作为一个软件公司的老总,你会认为单元测试的成本增长能够得到多少软件质量的提高呢?
三、单元测试的使用范围有那些?
现在大多数软件公司开发的是基于数据库开发的项目型软件。里面包含两个层面,一个是数据库驱动的软件、一个是项目型软件;很显然从项目管理来说,项目是每一个都不相同的,尤其自身特点的,因此从这个层面来说,使用单元测试还存在其价值吗?数据库驱动的软件项目如何来做测试呢?特别是数据集的正确与否很难测试吧。因此单元测试一定有其使用的范围,如何正确的判定其使用将显得很重要了。那些函数是需要进行单元测试的?那些是无法进行单元测试的,需要有一定明确的界定。
四、单元测试的作用有多大?
对于现在的系统,特别是web网站其业务逻辑相对于一些商业软件而言,更注重的是吸引眼球的外观和方便。而这些内容是不能使用单元测试来检测的,因此这种类型的程序单元测试的内容比重将会降低到一个很少的限度。
最近在查看一些单元测试的书籍,对于里面的说明不以为然,因此有了上面疑问,当然我对于单元测试的大部分内容还是认可的,希望有熟悉单元测试的人员给我一些解答。
文章来源于领测软件测试网 https://www.ltesting.net/