摘要:市场对软件质量重要性的认识逐渐增强,但是由于还存在部分公司软件项目过程不规范,导致重视编码和轻视测试的现象。本文重点介绍代表性的认识错觉,并作了剖析和相应的解释。

  关键词:软件测试

  随着软件规模的不断扩大,软件设计的复杂程度不断提高,软件开发中出现错误或缺陷的机会越来越多,而市场对软件质量重要性的认识逐渐增强,所以,软件测试在软件项目实施过程中的重要性日益突出,但是由于还存在部分公司软件项目过程不规范,导致重视编码和轻视测试的现象,对于软件测试的重要性,测试方法和流程等还存在很多错误的认识。这进一步影响了软件测试活动的发展和真正提高软件测试质量。一下列举了几种有代表性的认识错觉,并作了相应的解释:

  一、软件测试普遍被认为是在开发后开始执行

  软件测试是一个系列过程活动,包括软件测试需求分析,测试计划设计,测试用例设计执行测试。因此,软件测试贯穿于软件项目的整个生命过程。在软件项目的每一个阶段都要进行不同目的和内容的测试活动,以保证各个阶段的正确性。软件测试的对象不仅仅是软件代码,还包括软件需求文档和设计文档。软件开发与软件测试应该是交进行的,例如,单元编码需要单元测试,模块组合阶段需要集成测试。如果等到软件编码结束后才进行测试,那么,测试的时间将会很短,测试的覆盖将很不全面,测试的效果也将大打折扣。更严重的是如果此时发现了软件需求阶段或概要设计阶段的错误,如果要修复该类错误,将会耗费大量的时间和人力。

  二、软件测试人员承担发布后所有的质量问题

  这种认识很打击测试人员的积极性。软件中的错误可能来自软件项目中的各个过程,软件测试只能确认软件存在错误,不能保证软件没有错误,因为从根本上讲,软件测试不可能发现全部的错误。从软件开发的角度看,软件的高质量不是软件测试人员测出来的,是靠软件生命周期的各个过程中设计出来的。出现软件错误不能简单地归结为某一个人的责任,有些错误的产生可能不是技术原因,可能来自混乱的项目管理。应该分析软件项目的各个过程,从过程改进方面寻找产生错误的原因和改进的措施。

  三、公司和软件测试人员都不重视测试

  软件工程学的发展和软件项目管理经验的提高,软件测试已经形成了一个独立的技术学科,演变成一个具有巨大市场需求的行业。软件测试技术不断更新和完善,新工具,新流程,新测试设计方法都在不断更新,需要掌握和学习很多测试知识。所以,具有编程经验的程序员不一定是一名优秀的测试工程师。软件测试包括测试技术和管理两个方面,完全掌握这两个方面的内容,需要很多测试实践经验和不断学习精神。这是不重视软件测试的表现,也是软件项目过程管理混乱的表现,必然会降低软件测试的质量。一个软件项目的顺利实现需要有合理的项目进度计划,其中包括合理的测试计划对项目实施过程中任何问题,都要有风险分析和相应的对策,不要因为开发进度的延期而简单的缩短测试时间,人力和资源。

  四、程序员认为测试与我无关

  开发和测试是相辅相成的过程,需要软件测试人员,程序员和系统分析师等保持密切的联系,需要更多的交流和协调,以便提高测试效率。另外,对于单元测试主要应该由程序员完成,必要时测试人员可以帮助设计测试用例。

  五、软件测试不可能成为软件测试高手

  项目的成功往往靠个别全能程序员决定,他们负责总体设计和程序详细设计,认为软件开发就是编写代码。因此,在这种环境下,软件测试很不受重视,软件测试人员的地位和待遇自然就很低了,甚至软件测试变得可有可无。随着市场对软件质量的不断提高,软件测试将变得越来越重要,相应的软件测试人员的地位和待遇将会逐渐提高。在微软等软件过程比较规范的大公司,软件测试人员的数量和待遇与程序员没有多大差别,优秀测试人员的待遇甚至程序员还要高。

  由于软件系统越来越精密,越来越复杂,软件及系统的质量测试正在成为IT行业中一个新亮点,软件测试行业未来发展前景良好。对软件测试工作的发展方向有以下几点分析:

  1、BUG预防和早期检测,因为现在把重点放在产品交付的质量上来,预防实践和静态分析仪这样的检测工具将成为主流。

  2、仿真工具变的很普通,使得仿造计算机环境变得容易起来。在开发过程的早期就可以进行意外和错误流程的测试。代码稳定后,在用真实环境验证仿真是否准确无误。庞大的测试用例管理系统将成为昔日的东西,大量的测试用例生成了却没有使用。

  3、有用的方法,比如需求覆盖,模型覆盖,代码覆盖将驱动项目开发。机器将代替测试人员做大部分他们以往创建测试所做的繁琐工作,测试小组需要比以往更少的测试人员,留下来的测试人员将是经过更多高度培训过的。

  4、测试人员的角色更换,测试中界限模糊,在测试领域工作使得专职测试的人员和专职创建测试工具的人员界限模糊,一个既是通过程序破坏事物的测试员又是创建程序用于破坏事物的程序员的专业出现了,关于如何称呼这个新的专业,新闻圈内的人们在进行着无休止的争论。测试于开发界限模糊,测试人员与开发人员一前一后,共同创造可测试的,高质量的代码,测试人员帮助开发人员消除需求中的问题,使得开发人员的工作更易完成,同时,开发人员写出更清晰,可测性更高的代码,使得测试人员的工作更易完成。

  5、顾客反馈与测试合为一体,交付的产品质量更高。测试人员进行根本原因的分析,我们会问比如我们怎么会遗漏了这个BUG呢?或者我们将来如何防止这类BUG?这些问题,我们的工作就是使顾客满意。复杂的相互关联的计算机世界使得了测试安全这一类新的问题让测试人员不断努力工作,但这没有关系因为这些挑战使测试人员精力充沛。

  6、测试人员获得尊重测试人员将不再是在最后时刻才被叫来对产品狂轰烂炸,他们将在整个软件开发过程中提供一个可见的,重要的,增值服务。人们意识到,测试是有益的,有趣的甚至富有乐趣。软件测试人员开始扬眉吐气,而且,由于破坏事物至少可以带来创建事物一样的乐趣,人们开始在开发和测试角色之间转换,所有的人将学到更多如何得到良好代码的知识。

本文转载自51Testing软件测试网,查看更多:http://www.51testing.com/html/news.html