测试成就完美软件

IT商界

  一款很著名的英汉翻译词典软件把“Control”写成“Contorl”,至今未改。在Word中输入“此致”并回车后,会自动弹出让人匪夷所思的日文问候语(源自《电脑报》“查漏补缺”栏目)。这些软件中存在的错误虽小,但总是让用户啼笑皆非,对软件产品感到一丝失望。

  作为一个软件用户,最讨厌的莫过于在使用过程中遇到层出不穷的问题。有时,出现问题之后,很多用户被厂商告知是因为自己的系统无法满足软件的运行需求或设置的问题。实际上,这些软件作者和用户都没有意识到软件的衡量标准中稳定性的重要。

  开发Windows2000的过程中,除了1700多个开发人员外,其内部的测试人员就有3200人!开发和测试人员之比大约为3:5。很多专家认为,这才是一个成熟的软件产品在制造过程中人员的合理比例。

  软件测试很重要

  在很多情况下,软件开发人员同用户的思路是完全不同的。开发人员由于接近硬件底层,更多地是从机器的“思维”来考虑问题,而用户只是为了使用。很多软件开发人员抱有这样的思维,认为用户很笨,“你这样用就不会出现错误了!”但事实上,作为一种产品,必须要能够考虑到用户使用的方方面面,并考虑进行各种容错处理。为了记录下用户使用软件的习惯用来提供软件的易用性和发现潜在的问题,微软和国外的很多大型软件开发公司甚至会采用专门的测试房间,用仪器记录用户的使用过程来加以改善使用的界面和出现的问题。

  软件测试是软件质量保证的重要手段。有些研究数据显示,国外软件开发机构40%的工作量花在软件测试上,软件测试费用占软件开发总费用的30%至50%。对于一些要求高可靠、高安全的软件,测试费用可能相当于整个软件项目开发所有费用的3至5倍。由此可见,要成功开发出高质量的软件产品,必须重视并加强软件测试工作。

  国内很多企业还处在探索阶段,小企业的运作方式造成主要精力是要尽快完成初始资本积累。有些企业也了解软件测试的重要性,很努力、很认真地学,但因为很多原因而学不到精髓,不知道如何去做。于是只能局限于书本上学来的简单测试方法而已。即便有些人知道有压力测试和性能测试等测试方法,但如何针对产品实施并不清楚。

  软件测试有讲究

  一提到软件测试,很多人会想到反复使用软件,试图在频繁操作中寻找到错误发生的场景。其实这是一种错误的概念,软件测试早已超越了用户使用来发现Bug的初级测试阶段。

  微软亚洲研究院陈宏刚博士曾参与过微软多个重要产品的测试工作。他介绍说,微软的软件测试工程师中除了根据测试规范和测试案例进行测试,检查软件有没有错误,决定软件是否具有稳定性外,还有测试工具软件的开发工程师负责写测试工具代码,并利用测试工具对软件进行测试,或者开发测试工具为软件测试工程师服务。产品开发后的性能测试、提交测试等过程,都会用到各种测试工具。陈宏刚表示:“因为不同产品的特性不一样,对测试工具要求也是不同的,就像Windows的测试工具不能用于Office,Office的也不能用于SQL server。微软很多测试工程师就是负责专门为某个产品写测试程序的。”

  目前国内的软件测试一般有下列几种形式:一是软件公司内部进行的功能性测试,主要是验证设计的功能是否完成;二是用户进行的测试,大量的用户一起寻找使用中遇到的错误;还有就是第三方测试,就是专业软件测试人员运用一定的测试工具对软件的质量进行检测。在软件业较发达的国家,绝大多数软件产品的认定,需要第三方测试的介入。而在国内,仅有软件公司的自测是很不完善的。

  关键:标准化+人才

  最近,上海软件行业协会副理事长朱三元研究员还透露,关于软件测试的国家标准今年有望出台,在中国软件行业协会软件测评培训中心授权下,他将作为上海威迅教育讲师团的成员参与上海软件测评工程师的培训。他认为,国家标准的制定,将极大地促进软件测评业的发展。朱三元说:“尽管有些迟到,但终究还是来了”。

  要想真正重视软件测试,公司的开发体系就需要进行一些修改。以前在软件开发中,测试人员往往隶属于开发团队,这对测试非常不利。而根据国际惯例,测试和开发应该完全是并行的,就像“三权分立”那样达到相互制约。软件是否能够发布是参与测试的质量部门才能确定的。国外日立软件和富士通的一些部门,测试人员便可以行使有效的否决权。

  要更好地发展软件测试,就需要培养一批软件测试人才。不过,到现在为止,软件测试还没有正规的专业毕业生,而且没有评判的标准。陈宏刚博士建议,在软件学院中开设四个方面的软件测试专业基础课:软件测试基础、软件测试开发、高级软件测试案例和行业软件特色测试方法。陈博士介绍说,我们可以借鉴民间培训机构的课程。有一批专业的测试人才出现之后,人们会逐渐认识到软件测试人才的重要性。

  编后:无论多么成熟的软件都不会十全十美,在这里我们不是要求软件做到完美无缺。但一款优秀的软件总应该把自己的错误降到最低点,也会不断地在用户的反馈中完善自己的功能。软件里的一个小错误都可能会让用户失望,我们希望软件厂商能够重视自己的软件测试技术,把软件中的错误降到最低点。