在信息化建设当中,软件功能薄弱、 漏洞众多等问题频频出现,软件质量理所当然地成为了关注焦点。业界专家认为,不成熟的软件产品是国内信息化项目失败的一个重要原因,同时,产品质量问题也将成为软件企业能否继续发展壮大的关键所在。纵观国内和国外的软件产业, 技术上的差距当然是存在的,但更为明显的也是致命的差距就在于产品质量和过程当中的质量控制 。
“什么叫成熟产品?只要有一个成功案例的产品就是成熟产品!”某国内大型软件公司CEO的这个经典观点广为流传,但其中的逻辑错误将风险带给了客户也带给了软件企业本身。国内一些软件企业居然一夜间成了万能公司,ERP ? CRM ?OA?WorkFlow?我们都行!然而这些企业对软件测试的重要性大多认识不足,重开发轻测试的现象过于严重,很多公司没有专门的测试部门,测试工程师太少,开发人员兼作测试工作的现象十分普遍,在这种状况下推出的缺少严格测试等环节的软件产品只能给客户带来悲剧。
近年来,我国的软件企业已越来越意识到软件测试的重要性,逐渐加大软件测试在整个软件开发的系统工程中的比重。据调查统计,在成本上一般来说是“需求分析”和“规划确定”各占3%,“设计”占5%,“编程”占7%,“测试”占15%,“投产和维护”占67%。近些年来,测试成本的比例更有上升趋势 。
不成熟软件带来的风险
不成熟的软件产品是把测试成本交给了用户:企业往往是出于项目周期安排不当,或者根本没有安排专门测试,匆匆完成编码设计就将产品交付使用了。这样的后果自然是用户觉得产品漏洞百出,项目执行过程也遥遥无期,最后,项目双方都筋疲力尽,用户觉得受骗,而软件商则毁了声誉,追加了大量项目实施费用,可谓是“赔了夫人又折兵”。
企业逻辑的软件实现高于计算机技术:很多软件企业在没有做透前期调研的前提下就匆匆开始建设自己想象中的“大厦”,结果可想而知。当用户建立起真正的企业应用。才发现软件违背了企业逻辑,不得不进行修改。这样闭门造车无疑会给“大厦”带来致命伤害。
注重软件产品的质量和成熟度才会良性循环:有人把不成熟的软件产品比作是焦油坑中垂死挣扎的猛兽,布鲁克斯《人月神话》展示的可怕一幕在软件研发过程中屡见不鲜。很多软件企业常常将软件质量视为一种奢侈,如果有必要的话,为了更多功能、更快速开发或者更低成本,测试就可以被牺牲掉。然而,在实践中,如果软件开发组织对质量有一个坚定承诺,实际上可以加快开发,减少成本,并更容易地增加新的特性。在“已完成”的产品缺陷修复上花费的代价要比从一开始就修复高出很多倍。相反,一个从开始就加强产品质量的组织,是有远见和创新精神的,市场中的高质量软件将更具竞争力。
找出测试管理中的误区
笔者曾经从事专业的软件项目管理与实施,项目管理感受很深刻。有一些切身体会与读者分享。
吸取“前辈”经验。IBM在软件自动化测试技术核心的三个最佳成功经验是:尽早测试、连续测试、自动化测试,并在此基础上提供了完整的软件测试流程和一整套的软件自动化测试工具,组建一个测试团队,基于一套完整的软件测试流程,使用一套完整的自动化软件测试工具,完成全方位的软件质量验证。
别去“挖东墙补西墙”。由于项目研发期的“缺斤短两”,使项目实施和投入运行的初期 漏洞百出,时间一长用户会发疯,项目实施者也会发疯,国内前几年的众多的ERP项目失败的原因多出于此。项目实施的遥遥无期,将严重挫伤用户的耐性和信心。
代码与文档哪个值钱?多数项目管理者忽视了文档的重要性。对于大型软件的研发项目,还需要专业的测试过程管理软件来支撑大规模的信息交流和自动测试、代码的更新和版本的提交。这些文档和信息的价值从某种意义上甚至超出了程序代码本身。
全程还是后期?软件的设计阶段往往没有软件测试人员的参与,事实上设计上的缺陷往往是耗用成本最高,也是最难在开发后期修复的缺陷。而一个软件的质量与它有多大的设计缺陷有着密不可分的联系。而有经验的测试人员的质量意识,安全意识,对用户需求的了解及分析能力,对于打造高品质的软件设计都有着不可忽视的作用。
专职还是兼职?在传统的开发方式中,由于缺乏必要的配置管理和变更控制,测试工作根本无法提出具体的测试要求,加之开发人员的遮丑,测试工作往往是走走过场,测试结果既无法考核又无法量化,当然就无法对以后的开发工作起指导作用。事实上,每个软件项目都需要专业的测试人员进行相对独立的测试工作,从而保证软件项目的质量。
居安思危,控制风险。需求变更给测试带来的问题可能是灾难性的,客户需求不是变动的唯一来源。有时团队自身也能引起范围变动。团队的成员可能听说或“假设”解决方案因客户的实际要求而发生了变动。加强沟通和协作,随时了解变更的状态。
谁为产品质量买单?质量和质量控制应该是软件项目的的一项重要内容。但是,无论在消费类软件还是大型软件的测试领域,国内软件产品的质量掌控体系和标准都很模糊。质量控制越来越依托于公司在产品交付用户之前的测试工作的成败。
没有厚度就没有重心。软件测试过程的历史数据缺失是大多数软件项目失败的关键所在,这样的结论也许使很多人感到吃惊,但事实就是如此。因为这些历史数据是反映软件项目实施轨迹的第一手资料,是项目延续和反馈的基石。
省钱还是费钱?事实上,作为软件开发企业来说,投入人力,资金搞软件测试的最终目的还是离不开经济效益。而对与测试项目的管理也不能离开这个大前提。软件测试的经济效益主要来自以下两个方面。一是满足用户需求,提高产品的竞争力,最终提高产品的销售量。二是尽早发现缺陷,降低售后服务成本。而软件测试的最终目的就是使它带来的经济效益最大化。有一些专业的测试工具的购买、测试人员的配备和培训还需要一定的经济投入,项目决策者们可以选择适合自己的配置,但决不能没有这些方面的投入。
沟通还是对立?沟通是开发和测试人员必备的素质。但传统的思想认为,测试人员是找麻烦,是开发的“克星”。其实,项目管理者应该清楚,为软件的质量和品质努力的工作目标是一致的。沟通和建立沟通渠道是项目管理者的重要工作。
如何提高软件测试水平
要提高我国的软件测试行业的发展水平,首当其冲要解决软件测试队伍的问题。某著名国际软件企业的软件测试人员与软件开发人员的比率达到了3:5左右,并且在实践过程已经证明了这种人员结构的合理性。但国内公司显然一时很难达到,但更重要的是重视程度,在这个基础上壮大软件测试队伍,提高测试人员的素质。
其次是要学习借鉴国外完善的测试机制,包括丰富的软件测试经验,强大的测试工具,优秀的测试管理水平。真正解决测试手段落后、测试方法单一和测试工具欠缺的问题,在企业内部形成一个严密有效的纠错系统,使国内的测试工作流程、 技术水平接近国外先进水平,这样才能提高国内软件开发与测试的整体管理水平,增加软件产品的竞争力。
此外,要重视第三方的测试力量。第三方的专业测试企业是靠技术与服务来赢得客户信任的,也因此更加注重测试方法与质量。对于软件企业来说,从无到有地去建立测试部门,并完善测试体系,需要较大投入,将研发出来的软件产品交给实力强劲的第三方专业测试公司,在提高软件产品的质量问题同时,还节约了产品测试成本。
知识库
专用测试软件集锦
单元测试工具: IBM Rational PurifyPlus,适合要在短期内快速提升单元测试能力和运行分析能力的团队。
系统负荷测试工具:IBM Rational Performance Tester,适合测试和验证基于互联网的应用系统;Mercury 公司的LoadRunner。
实时检测工具: IBM Rational PurifyPlus ,完整的运行时分析工具,提高应用程序的可靠性和性能;IBM Rational Test RealTime,用于实时/嵌入式产品的全面测试和运行时检测工具。
软件性能检查与优化:EcoScope,adview公司的WebLoad、Microsoft公司的WebStress, Numega中的truetime,Rational的Quantify,Mercury公司的LoadRunner
客户端功能测试:Mercury公司的winrunner;compuware的qarun;IBM Rational的SQA robot等。
服务器端压力性能测试: Mercury公司的winload;compuware的qaload;IBM Rational的SQA load
WEB系统测试工具:TEST;Workberch;Web Appication Stress Tool
嵌入式测试工具:Logiscope(静态测试工具);CodeTest
测试管理工具:Mercury公司的TestDirector;IBM Rational公司的Test Manager、ClearQuest;Compureware公司的TrackRecord