现在的用户对软件的性能方面的要求越来越高,使用起来系统运行效率低(性能低)、或用户界面不友好、用户操作不方便(效率低)的产品市场空间肯定会越来越小。因此通过测试改善性能也是测试工作一个目标。实际上用户最关心的不是软件的技术有多先进、功能有多强大,而是能从这些技术、这些功能中得到多少好处。也就是说,用户关心的是他能从中取出多少,而不是你已经放进去多少。
随着信息技术在国内不同行业应用的开展,人们已经不再怀疑软件对于社会运转的巨大作用。但是,随着人们对软件作用期望值的提高,已经有越来越多人将关注点转移到软件的可靠性上,因此,国内软件测试公司或测评中心如雨后春笋般出现。
我们在进行软件测试市场开发的过程中,发现了这样的一个问题:不少企业认为软件测试确实很重要,于是提出:我将执行程序(或者还有没有写完整的用户手册)给你,你给我测吧(“对不起,代码不能给,因为涉及产权问题”);如果测完通过了,用户就不应该再可能提出问题了。如果最终用户提出了问题,企业就会找到软件测试公司:“看,你是怎么搞的,用户提出了问题,你们为什么不能通过测试找到问题?”。
我们也遇到这样的情况,某地软件开发商与用户多次出现因软件质量引发的纠纷。于是该公司找到我们说:“既然你们是软件测试的行家,你们来做测试吧,只要测试费用一个软件控制在2万元以内,我们给你们介绍生意。”最终我们没有敢承担这样的业务,因为我们担心会陷入进退维谷的境地。因此也可以看到,人们对软件测试的理解存在一些误区。
对于航空工业之中最高级别的软件,为了保障其可靠性,进行测试的工作内容包括语法规则检查和程序分析、条件覆盖、边界覆盖、语句分支覆盖、需求覆盖、强壮性、功能性及输入输出的测试,最终全部通过,也只能保证10-9的缺陷概率。
因此,软件测试是提高软件质量与可靠性的重要一环,但并不意味着有了软件测试,软件就不存在问题了。如果仅仅是模拟用户进行一下简单的试用,则对于软件质量的验证效用就更差了。
不妨做一个类比,如果一个工程验收时,外部装修极为符合标准,给人的感觉十分良好,我们是不是可以断定这个工作是质量优良的好工程呢?实际情况经常是,里面豆腐渣外面金钢玉。当然你打开水龙头、打开灯泡不会有问题,如果出现了火灾、大风,这个工程还行吗?不知道。为什么不知道?因为没有看到施工过程是否符合规范;施工过程即使合格,不知道材料是否合格。
因此,软件测试并不是保障软件可靠性的万能药。软件测试要分层如果仅凭用户手册,做出来的用户验收测试仅仅是以偏概全的特例测试。有经验的测试者不过是将测试用例设计得更科学些系统些,另外就是增加一些强壮性测试及压力测试。对于一个安全性可靠性要求不是很高的软件,这样做也许就够了。