广义的软件测试和检验包括了软件生产全过程的测试,包括对用户需求、概要设计的测试,例如产品是否符合用户需求,是否符合用户的使用习惯;而不仅仅是一些人认为的从代码阶段才开始进行测试。所以,需求指标等等都需要进行检验,以确保在各个环节上产品质量都有一个体系作保证,俗称“ 一步三回头”。如同制造业企业有专门的质量检验部门,需要在各个工序和阶段使用各种手段、按照规格进行检验,这些都是发现问题的过程,正是这些手段保证了不合格的产品被降级使用,或者根本不能转到下一道工序。
郑人杰教授说:“我们还发现,一个产品是否在市场上成功,还和产品最开始的市场定位、用户需求分析相关。任何一个环节出现问题,都会严重损害整个产品质量。所以,我们谈软件测试,应该在更高的高度认识这个问题。我们是在讨论如何在整个产品开发周期控制和保证产品的质量。”
在产品开发过程中每个环节都要采取相关的检测、控制手段(QC),这是软件检测例行的工作。检测管理负责人需要回答下列问题:软件测试人员所采用的检测手段是否充分、步骤是否合理、是否必要和高效、检验人员技术是否达标,质量管理者最终要向企业最高管理者负责,这保证了企业的测试手段是充分必要的,这就是我们经常说的质量保证(QA)。
第三方评测和软件测试的区别
可以看到,软件测试是在企业内部的质量控制和保证体系,而不是第三方软件评测。
评测是公正的机构对软件产品功能和性能等的证实,为了评价产品功能而测试,目的不是为了发现和定位软件内部的问题,对软件进行压力考验。郑人杰教授认为,我们不能把软件企业的质量控制寄托在成品的一次评审上面。
而软件测试正是为了检验开发过程中的错误而检测,它可能延续到用户购买试用,或者买软件之后,用户使用过程中发现问题以后反馈到开发商,这些都属于软件测试范畴,由此可见它与评测的区别。
第一,在代码完成后,就对单元进行测试,然后有集成测试、验收测试等等,相当于对零件、部件和整机都分别进行检测。
第二种方法是,在概要设计、详细设计和编码每个步骤都要进行检测。尽量把问题及时发现、及时消灭。
如果问题不能及时被发现,这些隐含的问题也被带到下一个工序,正确的设计被编码,错误的设计也同时被编码。
开发人员的一个建议是:在工作的每个步骤都要考虑测试,千万不要认为,反正最后有人测,最后有人修正,形象地说,病情严重再去医院就晚了。不断地意识到可能存在的问题,及时发现。自始至终开发人员都要有这个观念,才能成为成熟的软件工程师。
目前,作为计算机本科学生,可能没有选修软件测试课程,这样容易造成从业人员对于软件测试问题没有足够重视,或者没有足够的背景知识。但是由于IT技术发展迅猛,不能指望学校课程能够提供学生毕业以后五年十年的劳动技能。在软件测试、质量控制方面同样需要各方面人的关注,特别是企业界的关注。