当今,如何加强软件测试提高质量已成为业界关心而又必需解决的热点问题。为此,本文将通过国内外软件测试状况的比较 ,对如何改变现况加强测试力量提高质量等问题作探测简述。
软件作为一种纯数字化商品,在没有权威的第三方进行监督认证的情况下,软件供应商和用户在软件产品是否达到目标需求的问题上,往往各执一词。
关于软件质量标准和认证,国内虽然制定了有限的软件技术标准,但无法从根本上对软件这种特殊商品实施有效的质量监督和认证。在国际上通行的做法是,软件的质量标准和认证工作,由独立的软件测试机构来完成。这些测试机构的行为是市场化的,但因为测试能力和权威性将直接关系到它们的市场影响力,所以他们的测试行为极其严格,力求将垃圾软件扼杀在摇篮中。
值此 , 对软件测试以第三方的视角探讨制约国内软件发展的瓶颈和如何拓宽与加强软件测试等有关问题,作以下探讨。
1、 软件测试势在必行
从有关资料获悉 ,金融和电信行业,他们买的硬件设备都是顶级的,可惜软件应用这一块跟不上,导致了硬件功能得不到充分的发挥。硬件设备低下的运行效率,造成了资源与资金的隐性浪费,实际上是国内软件在拖硬件的后腿。国内的软件开发普遍存在“重开发,轻测试”的现象,常常是在项目开发完成之后,才发现软件有严重缺陷问题,不得不全部推倒从头再来。推倒重来则意味着前期人、财、物的投入全部浪费了,既大大增加了软件的开发成本,又会因为超出了客户的委托时间,付出的代价就更高了。
实践经验证明,软件测试是软件开发过程中的一个重要步骤,或者说测试应该贯穿在软件开发过程的每一个阶段。软件测试所起到的作用就是:能够确保在软件开发的过程中,随时发现问题,方便开发人员及时修改。
在国内对于消费类软件来说,经常出现一些已经推向市场的产品由于被发现有严重缺陷而导致大量退货的局面。而对于定制的行业软件来说,则是一再的返工、绵绵无绝期的修改和维护,既拖死了软件提供商,也耽误了客户的正常业务。这一系列现状会导致使用户对国内软件提供商失去信心,这对于正在成长的国内软件市场来说,无疑是当头一捧。
由于国外软件的成熟度高,开发商对软件质量的控制力度很强,所以国外软件测试外包的不是太多;不过在国外有些软件需要比较专业的质量认证,例如软件的本地化测试,就必须借助第三方机构来完成了。如微软公司,微软的产品要翻译成欧洲的 6种文字,如果是自己来做这些本地化测试工作,成本就会很大,所以外包给别的公司来做就很合适;另外还有一种情况也会外包的,例如对一些大型软件的测试,不一定每家开发商都有专业的测试队伍和测试的工具。从成本上来说,某些软件测试工作外包是经济的。相反,国内软件的成熟度比较低,软件开发商基本没有能力来做测试,这指的是专业的、职业的测试,所以从目前来说,国内软件测试的市场空间很大。”
软件产品日趋复杂,这就需要相当程度的技术来安装、升级、检测和维护。因此,终端用户必须更多地依赖来自供应商的售后服务。在一些情况中,用户不仅购买产品,而且接受由卖方提供的支持服务作为一整套服务。随着中国加入 WTO,中国生产和服务领域需要更多的IT应用软件以加强他们的同外国竞争对手的竞争力。例如,制造商可利用实例推理技术、神经网络或模糊逻辑来加强其设计能力。服务领域也需要更多的IT应用和多媒体技术,使服务的提供更具弹性,且更节约成本,例如,银行和股票经纪人的在线处理能力,运输领域的电子物流安排,电信收敛和IT服务业等等。而且,政府各部门的计算机化也提供了巨大的商机。
出于对软件测试行业的理解,意识到要解决国内软件应用滞后于硬件的问题,就必须提高国内软件的质量,而要提高软件质量,就必须加强软件开发过程中的测试力量,而独立的第三方测试机构正是一个市场空白点,故专业从事软件测试的机构的产生是发展的必然。
2、 软件测试现状与提高
目前国内做软件测试的机构,还没有发现完全商业化操作的机构 ,只是有某些政府部门下属的机构做一些软件产品验收工作;要么就是开发商临时承接的一些软件测试项目。应该说实施软件测试时遇到的最大障碍是: 一是客户的意识,二是派出的项目实施人员的素质问题。
实施软件评测项目时,客户要有接受管理软件开发流程的意识。
客户交给开发商一个项目,通过测试等质量掌控流程,可以将产品的质量保证在一个相对较高的水准,减少后续工作的成本。但是现在很多开发商和客户很短视,觉得只要现在没有出问题,就可以了,不愿意在软件开发过程中,让测试介入的程度不深,这导致测试不完全,埋下了隐患。
无论是对软件开发商还是对客户来说,忽视软件测试,必将导致上的软件开发项目越多,将来会被这些有问题的项目给拖死的概率越高。
而有独立的软件测试第三方的出现,好处就是严格地掌控软件质量,减少维护成本。这不光对客户有好处,对开发商也有好处。所以一个项目,在我们实施很长一段时间,大约是半年至两年后,客户才意识到这样做是有用的。这很正常,因为软件开发一定会有大大小小的问题,包括我们评测也有一些问题查不出来。
特别需要说明的是对派出的项目实施人员的标准很高,要求既有综合素质,又要有专业素质,目前国内这种复合型的人才太少了,除引进外可以自己培养。
但人才培训需要加大力度,因人才培养是要在资金和力量上投入最大的一块。其中专业素质的培训最难,因为需要实践 ,这如同医生需要临床实践一样。项目实施管理者也一样,既要有理论基础,更要有经验积累,而一个优秀的项目实施管理者重要的素质是,能在按流程做的基础上,发挥个人的主观能动性,这个要求就太高了,但这又是项目实施成功的关键。
国内软件业和国外相比,最大的差异就在:质量和质量控制应该是最重要的一项内容。但是,无论在消费类软件还是大型软件的测试领域,与国外相比,国内软件产品的质量掌控体系和标准都是模糊的。国内软件提供商的质量承诺,既没有相应机构的监督,质量水平也没有第三方来认证,承诺显得极其苍白而无力。
可喜的是,软件测试机构在我国正逐渐成长起来,并且,它们在软件市场上的影响力正逐步得到提升。因缺乏游戏规则导致整个软件行业的市场行为不规范,并且严重制约软件行业健康成长的局面,一定会有所改善。
3、 软件测试如何做
从事后测试,向质量控制上转型。
起初往往是受客户委托,测试已经开发完毕的软件,更多的是事后验收工作;以后逐步介入软件开发前的需求评审,以及开发时的文档评审、代码走查等等;最终发展方向就是做软件监理,但是不能不承认,目前我们与国际上通行的软件监理还有一定的距离。这样实现了从事后测试,向质量控制上转型。
而美国实际是在软件规模的扩大和结构的不断复杂的情况下,开始建立软件测试制度和规矩的。美国在软件开发的起步阶段,也不会自己主动去做,是在现实的压力下,才去实施这些流程规范的。国内一定要有这种意识,意识到软件开发过程中一定要引进这些规章制度。另外,意识到了还不行,一定要实践。
那软件测试如何做?
为此,应构建完整的软件测试平台。
该完整的解决方案,包括以下几方面:
* 软件设计中的代码安全性检测;
*软件实施过程中的软件配量管理;
*软件质量的度量和评估、提供各种质量模型,提供软件验收依据;
*自动化单元测试;
*增式和非增式测试;
*汇编语言的静态分析和动态测试;
*基于消息的分布式系统的自动测试(支持通信协议TCP/IP、X.25、GSM、Socket OSI…)
*系统级的验收测试;
*嵌入式系统实时测试,支持各种和操作环境(OSE/Nucleus+/VxWorks)。
4、 结束语
软件评测只是用技术手段来监控软件产品的质量,并不能从根本上提高我国软件产品的水平。目前,国内最缺的是软件项目实施的高级管理人才和软件结构分析的专业人才。这种高级人才的培育制度才是最重要的,缺乏高级人才培养的后果,会影响国内软件的进程。与培养软件蓝领相比,虽然高级人才培育的时间周期长,资金投入大,但是我们一定不能急功近利,要有这种忧患意识,去做这项有长远影响的工作。这种工作不是非得要谁去做,但是我们一定要有这种意识去投入去做。
日本在软件开发中分得很细,国内接日本软件外包的业务很多,但大部分只是负责一个模块。软件是个创造性的工作,变成流水线工业化生产也许有问题。在我们的软件开发中,往往技术是不成问题的,但是管理是个大问题。我们的软件企业中,各个员工意识不一样,在不同的阶段理解不一样,管理人员的素质也不一样。软件管理和测试是一个需要反复实践的过程,要通过反复的实践才能解决问题。这些问题根本不是培训大量的软件蓝领就能解决的。