四、 测试的成本
测试成本的要素包含很多方面,是否写了测试代码只是其中一个重要部分,是否采用JUint以及Mock对象更加不是对其评价的决定性因素。对测试的更好评价应该是额外代码、测试可重复性、测试范围和边界值识别等综合构成(测试对设计的作用是更高级的判断)。
对于涉及到数据库持久方面的测试、涉及到UI(浏览器或者富客户端)交互的测试以及多对象多方法过程的测试(也可体现为UI交互,这里是指独立性质的)等,以及上面说到的一些问题(不再重复),是我们现实测试实践要面临的问题。
对这些问题的解决,就会更多的涉及到项目具体情况的选择和具体项目和团队的情况来做非常好的判断,这就是成本的意义。
在软件开发的早期,软件开发只是编码及部署。但随着软件行业的发展,开发企业开始在发布前进行测试。因此,这个意义上来说,软件测试是成本。但从更普遍的意义上来讲,软件测试其实是一种提供软件质量的投资。
软件测试看似成本,但其实可能就是一项可以减少将来若干不必要费用的投资,同时还可以为企业赢得良好的口碑。而达到这一目的解决方案,主要有:采用测试驱动开发方式;确保每个小功能的模块都得到很好的测试,并建立可持续的资源整合环境;进行可靠的整体测试。软件测试最终将转化成为节约成本的开支。不论它是产品开发、软件升级、或是软件维护。
许多统计资料表明,开发过程每前进一步,发现和修复一个缺陷的平均成本要提高10倍.那么是不是说找缺陷就不重要了呢?当然不是。软件测试的另一个经济目标是尽早发现缺陷,降低修复及售后服务成本。显然,每一个已发布产品中的缺陷除了会影响产品及企业的声誉外,还会直接增加产品的售后服务成本。无论是派人到现场调试,或研发、发布补丁程序都要远比在发布前的修复成本昂贵数十倍,甚至数百倍。
五、 小结
软件测试的必要性已经完全为业内决策人士所接受。这是因为软件工业已经发展到了与其他主要工业相当的规模。经过十几年的发展,少数天才们手工作坊的世界已经转化为大工业生产的天下。由于Java的流行,我们更看到了组装生产线的模式。
在工业生产的传统行业里,测试是生产的有机组成环节,各道工序的测试、组装测试、出厂测试及致破坏性试验是生产目的实现的重要保证。
可以肯定,软件开发面临很多的困难,诸如发布时间紧、市场压力大、投资过高等。这些不能成为挤压软件测试投入的借口。因为软件测试是软件开以生命周期一个非常重要的部分。笔者认为,对于一些基于产品的公司或组织,软件测试作为一种投资可能更加适合一些,因为这样可以节约销售成本及技术支持成本。