一边是人才缺口几十万,测试工程师招聘、培训红红火火;一边是看不清职业发展、“成功没我份,失败全我错”的测试岗位从业者,软件测试工程师该何去何从?

  一边是软件开发、测试谨小慎微,一边是系统宕机、瘫痪事故频发。供应商、用户、第三方应如何做好测试管理,提升软件质量?

  中国软件测试市场究竟有多大?互相矛盾的现象让人难以看明白。

  借助对1066家企业IT应用质量的一手调查,对10位业内人士的采访,我们来分析如何细化测试岗位和行业的专业分工、提升复合的测试技能、化解测试与开发亦敌亦友难题、消除测试考核评估的掣肘……

  让我们一层层揭开软件测试的迷局。

  2010 年世界杯足球赛期间,Twitter的多次大规模宕机事件让用户无法忍受;2007年,奥运票务系统因无法承受瞬间每小时800万次的流量而宕机;2006年,英国伦敦希思罗机场航站楼因应用缺陷致行李处理系统故障,积压行李达万件;近期,国内某银行核心业务系统发生故障,导致该银行包括柜台、网银、ATM机在内的所有渠道的业务停止4.5小时……

  重开发、轻测试,让软件系统故障频发。

  为什么经过测试的软件系统还是会出现问题?测试与业务有着怎样错综复杂的关系?软件测试的瓶颈究竟是什么?国内软件测试将呈现怎样的发展趋势?

  借助中国测试平台网对1066家企业的一手调查,以及中国计算机报记者对10位业内人士的采访,让我们层层揭开软件测试的迷局。

  测试软件不能承受之轻

  捷克作家米兰·昆德拉告诉我们,生命中有太多事情看似轻如鸿毛,却让人难以承受。在IT应用中,软件测试是如此。

  2007 年10月30日,奥运票务系统因无法承受瞬间达到每小时800万次的流量而宕机,这也许是美国票务系统提供商史上没面子的时刻。这家公司是2004年雅典奥运会票务供应商,其系统技术已经经过市场的考验。据说在2008年奥运会的票务系统中,他们已经提高了峰值流量的预设值,可是没想到还是估计不足,才出了大问题。

  2009年11月22日,eBay网站长时间宕机,造成卖家蒙受相当于当天销售额80%的损失。已经不止一次的宕机事件让eBayCEO脸面无光,不得不对eBay的系统负载能力重视起来。

  另据业内人士透露,拥有600多家分店、18家配送中心,每天向全球180万客户提供种类繁多的设备维护、修理和运作产品的工业品分销商固安捷(Grainger)曾在SAP系统实施过程中,由于系统功能性故障损失了2300万美元,使其无法完成当季收入指标。

  “测试时候不把好关,后期上线后应用会出现大的问题。”清华大学教授、中国软件行业协会系统与软件过程改进分会常务副会长郑人杰在接受中国计算机报记者采访时表示,近20年来他一直在关注软件质量的问题。

  通过剪报等方式,郑人杰收集了这方面的诸多新闻素材,其中包括:上世纪90年代海湾战争时期美国部队由于导弹系统故障炸了自己军营;2003年美国出现史上严重的大面积停电,影响1/4国土面积的居民;2008年英国航站楼系统故障,导致15000件行李积压;2006年ATM机故障,造成轰动一时的许霆案;近期不断出现的ATM“双倍吐钱”等问题还不断出现。

  相信这些系统上线前是经过了测试的。那么,为什么经过测试的系统还是会出现问题呢?

  “业务需求不清楚,以及现有软件测试能力有限,导致了上述问题的发生。”中国惠普企业业务集团软件及解决方案部技术总监于志伟在接受记者采访时表示,软件测试已经不只是一个IT问题,它和业务息息相关。

  软件质量问题不只造成了上述有特别恶劣影响事件出现,中国软件评测中心金融电信测试部总经理罗文兵向《中国计算机报》记者介绍说,众多项目的上马时间一推再推,以及软件产品面临层出不穷的更新,背后都是软件质量的问题,而软件测试问题是矛头所指。

  现在,软件测试已经不是传统意义上软件产品交付前单一的“找错”过程,而是软件正常交付、应用提升的一大利器。它贯穿于软件生产过程的始终,是一个科学的质量控制过程。从一个软件项目的需求调研、设计、编码、验收,直到运行维护,整个过程都需要有软件测试工程师的介入和把关。

  罗文兵介绍说,根据执行体的不同,目前他们把测试分为三类:第一方测试,指的是软件开发商、系统集成商内部的测试;第二方测试,指的是用户单位的测试,即用户委托他人开发了一套系统或者购买了软件产品后,需要对系统或产品进行验收测试;第三方测试,指的是独立的机构或者单位进行的测试,像中国软件评测中心这样的第三方检测实验室,以及惠普等IT巨头,都有独立测试部门为客户提供测试服务。测试外包本质上等同于第一方测试,因为整个测试的要求和管理都是由第一方负责的。

  从被测内容角度看,软件测试涵盖了单元测试、集成测试、系统测试等不同内容。罗文兵介绍,从软件生命周期来看,单元测试、集成测试更偏重于代码级测试,一般主要是由第一方测试来实现,少量依靠第三方。用户测试和第三方测试做的更多的是系统级测试,主要是从业务执行角度,来看软件能不能完成业务要求。系统测试层次更高,全面的系统测试包括系统的功能测试、性能测试、安全测试等。

  “软件测试的重要性不言而喻。微软做Windows产品开发时,测试人员与开发人员的比例是1∶1,甚至达到了2∶1。他们边开发边测试,测试是贯穿整个开发过程的。”某IT领域人士对记者说。

  罗文兵强调,现在对于电子商务、金融、电信等行业企业而言,系统和业务是一体的,因为其信息化依赖程度很高,信息系统的质量直接决定着经营能力,它们的产品创新都是依赖后台的信息系统来实现出来。如果它们的软件测试做得不好,对业务的影响是显而易见的。

  那么,测试工作怎么才能更贴近业务?细化行业分工和提升测试能力是两条关键的途径。

  三方测试一个都不能少

  “第一方、第二方、第三方,三方测试都是必要的,一个都不能少。”罗文兵说,“软件测试链条中的各个角色,必须各司其职:软件开发商和系统集成商必须自己做好严格的测试,为用户提供高质量、可信的软件产品;用户要根据自己的需求,做好自开发和所购买产品的验收测试;第三方测试机构则更是要一丝不苟地为第一方的产品质量把关,让用户方放心。”

  阜外心血管病医院信息中心主任赵?对此有相同的看法。他认为,软件测试应该做到谁的东西谁负责:软件供应商应该做好测试,保证自己的产品质量;阜外心血管病医院也要根据自身的需求,做好自行开发系统以及所购买产品和系统的测试。赵?介绍说,阜外心血管病医院有80多个系统,有自己开发的,也有直接购买的标准产品,各系统之间需要进行很好的集成。赵?指出,金融、电信等行业因为拥有巨大的并发用户数和数据量,实时性要求很高,而对测试环境要求非常高,但对于软件测试而言,医院属于小行业,因此测试环境的要求也不那么高。他介绍说,阜外心血管病医院信息中心的测试部门有4人,他们应用的基本是虚拟机,甚至用一些旧机器,可以搭出测试环境,完成产品、系统的测试。虽然,对测试环境要求不高,但医院的软件测试却有自己的特点,那是要求测试人员必须对医院业务非常熟悉。鉴于目前第三方测试机构的行业积累还比较低,赵?认为,目前医院还是自己来测试比较靠谱。

  某金融机构的测试工程师朱倩在接受记者采访时表示,她所在公司的主要业务是从纽交所等国外金融机构购买金融信息,提供给国内的一些诸如像大智慧这样的金融市场行情软件提供商。他们每天要保障海量金融数据的准确性,必须做好数据库系统的测试,因为行情软件提供商也要用他们的软件来进行数据分析和发布。“我们必须不断地测试,以保障我们的数据库数据的准确性。”朱倩说。

  对于任何类型的测试执行主体而言,无论是产品级还是系统级的测试,都是需要衡量成本收益的。测试团队的建立、测试环境的搭建、测试工具的选择、测试过程的管理、外包与否,企业都要根据自己需求和实际情况来衡量后再做决定。

  北京中原地产信息技术部经理王雨在接受记者采访时表示,他们现在没有独立的测试部门,测试基本是由开发人员与业务人员组队完成,或者是通过内部用户小范围试用来完成测试,“如有需要,我们会考虑将软件测试外包给第三方,因为这样对我们来说投入产出合适。”

  于志伟介绍,软件测试与开发同样重要,必须从测试需求、测试工具、测试环境等方面提升软件测试的专业性,更好地保证软件质量。另外,于志伟强调,测试具有非常强的行业特征,比如同样是客户关系管理系统,电信行业和金融行业测试的重点是不一样的。因此,于伟认为,第三方测试将走向更独立、更专业、更细化的行业分工是必然的趋势。

  罗文兵也强调,第三方测试机构必须专注于行业。“与软件开发一个道理,做金融开发的集成商是相对固定的,不会随意跳转行业,因为只有通过更多的积累才能对行业需求了解得更透彻。中国软件评测中心之所以成立金融电信测试部,是顺应这种市场需求。这样,我们天天做金融或者电信业务的测试,会更加熟悉被测软件的业务特点。如果对业务的了解不到位,会出现漏测等问题,会终影响业务的正常开展。”罗文兵说。