随着客户对软件产品质量的要求越来越高,软件测试的重要性也在逐步增加。然而,重视开发而轻视测试的现象依旧存在,其中存在的软件测试的一些误区,将会进一步影响软件测试活动的有效开展,并且阻碍测试质量和能力的提高。

本文将从软件测试的几个误区入手,对软件测试过程中的一些现象进行分析和梳理,以帮助测试人员更好定位和开展测试工作。

1) 软件测试只是开发过程中的一个阶段

在传统的瀑布软件开发模型中,软件测试只是开发过程中“编码和实现”阶段之后的一个阶段,是软件产品交付给用户之前的保证软件质量的一个手段。

但是,随着客户对软件质量的要求越来越高,以及软件测试行业的不断发展,软件测试在开发过程中扮演的角色越来越重要。人们逐步认识到软件测试不只是软件项目的收尾工作,而应该贯穿于整个软件开发生命周期。

软件测试过程应该并行与软件开发过程,具体的测试过程应该包括测试计划阶段、测试设计阶段、测试执行阶段、测试结束阶段,以及贯穿于整个过程的测试监控。在软件开发生命周期的每个阶段,都需要进行不同目的和内容的测试活动,以保证每个阶段软件工作产品的正确性。同时,软件测试的对象也不仅仅是代码,同时也包括需求规格说明、设计规格说明等工作产品,即软件测试不仅仅包括动态测试,也需要评审这样的静态测试。

2) 测试人员是软件质量的责任人

很多人认为测试人员需要对发布的软件产品质量负责,假如软件产品提交给客户之后发现问题,那就是测试人员的责任。这种认识误区非常打击测试人员的积极性,同时也给予了测试人员过高的产品质量方面的压力。

首先,穷尽测试是不可能的,因此通过测试只能证明软件中存在缺陷,但无法保证其中没有缺陷。因此,在用户现场发现缺陷是正常的,我们需要做的是分析为什么会遗漏这样的缺陷,是由于测试覆盖不全面,还是原来的需求定义和功能设计方面的错误引起的,避免在将来的项目中遗漏同样的错误。

其次,软件测试可以发现缺陷,开发人员修改缺陷之后可以提高软件产品的质量。但是光靠软件测试提高产品质量是远远不够的。产品质量的提升需要所有参与项目的成员参与,即质量保证活动应该贯穿于整个软件开发生命周期,包括开发活动、测试活动、项目管理等。同时,收集和分析各个开发阶段的经验和教训,可以帮助实施过程改进,不断提升产品质量。

3) 软件测试没有什么技术含量

软件测试没有什么技术含量,这好像是很多人潜意识中的观点。他们认为测试人员不需要具备什么技能,认为测试只是按照需求规格说明或者用户操作测试对象,并将发现的结果与期望结果进行比较,是没有技术含量的工作。因此,经常可以发现不适合开发工作的人员会转到工作岗位,其理由就是开发技能要求高,而测试不需要什么技能:人人都能做测试。这又是非常打击测试人员的论断。

首先,软件测试已经成为一门独立的技术学科,合格的测试人员需要掌握各种不同的知识和技能,例如:深入了解软件产品的背景知识、了解开发过程与测试过程中的不同活动与输出、掌握不同的软件测试技术与方法,以尽可能多的发现测试对象中的缺陷。

其次,测试活动贯穿于整个软件开发生命周期,测试人员不仅需要参与需求规格说明、设计规格说明等文档的评审,发现其中的问题和缺陷;同时测试过程中也需要开展制定测试计划、测试过程监控等重要测试活动,这也需要测试人员掌握各种相关技术,例如:如何有效估算测试工作量、如何有效应对测试风险、如何评估测试进度和测试质量等。

第三,测试工具和测试自动化重要性的不断提高,新工具、新的开发模型、新的测试方法和技术的不断更新,都要求测试人员不断学习和掌握这些知识和技能,也要求测试人员具备一定的编程经验。而对于测试管理而言,需要的测试理论知识、项目管理知识和实践经验的要求会更加高。

4) 时间多就多做点测试,少就少做点

测试进度由项目开发进度来确定,即离项目交付空余的时间多,就多做测试;反之,则少做测试。这个观念很大程度上是因为“测试是软件开发过程中的一个阶段”这个误区造成的。

这个误区常常会导致测试时间紧张,因为开发能够按照交付测试对象的可能性是很小的。由于开发的延期,为了按时交付软件产品给客户,导致测试时间一再压缩,从而使得测试人员疲于奔命,不得不经常加班,或者只能压缩测试范围,降低测试覆盖率。其结果是为了按时交付软件产品,不得不以牺牲产品质量为代价。

软件测试需要贯穿于整个软件开发生命周期,测试应该与开发是一个相对并行的关系。在制订软件项目计划的同时,就需要同步开始制订软件测试计划。测试计划的一个重要内容是确定测试的进度(简单的讲就是测试时间和测试资源等的安排)。因此,测试的工作量应该在项目早期根据项目的特点和风险分析结果来确定,而不仅仅是受制于项目开发进度。

5) 软件测试没有什么前途

与国外成熟软件企业相比,国内的开发成熟度相对降低,或者软件开发过程不规范。有时候项目的成功往往靠个别开发人员的能力,他们负责总体设计和程序详细设计,认为软件开发就是编写代码,给人的印象往往是程序员是真正的高手,受人崇拜,并具有很高的地位和待遇。因此,在这种环境下,软件测试并不受重视,软件测试人员的地位和待遇自然就偏低了,甚至软件测试变得可有可无。

随着客户对软件质量要求的不断提高,软件测试将变得越来越重要,相应的软件测试人员的地位和待遇将会逐渐提高。在软件开发过程比较规范的大公司,软件测试人员的数量和待遇与程序员没有多大差别,优秀测试人员的待遇甚至比程序员还要高。软件测试将会成为一个具有很大发展前景的行业,软件测试大有前途。软件市场需要更多具有丰富测试技术和管理经验的测试人员,他们同样是软件专家。