软件测试迷航

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

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

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

  测试软件不能承受之轻

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

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

  2009 年11 月22 日,eBay 网站长时间宕机,造成卖家蒙受相当于当天销售额80%的损失。已经不止一次的宕机事件让eBay CEO脸面无光,不得不对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人,他们应用的基本是虚拟机,甚至用一些旧机器,就可以搭出测试环境,完成产品、系统的测试。虽然,对测试环境要求不高,但医院的软件测试却有自己的特点,那就是要求测试人员必须对医院业务非常熟悉。鉴于目前第三方测试机构的行业积累还比较低,赵韡认为,目前医院还是自己来测试比较靠谱。

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

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

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

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

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

  高端人才不只是找BUG高手

  葛优在《天下无贼》里那句话说得好,“21 世纪最缺的是什么?人才!”

  君不见“我国软件测试人才缺口已达20万、30 万、40 万”之类的新闻频频见于报端,各类测试工程师培训机构如雨后春笋般冒出,测试工程师已经成为各大招聘网站中最热门、活跃的职业之一。

  测试工程师的进入门槛看似很低,实际上要做一名合格的、高层次的测试工程师并非易事。而目前国内的测试领域最缺的就是高端测试人才。那么,到底什么是高端的测试人才呢?

  于志伟用围棋中的段位形象地向记者做了说明。“10个测试工程师中有5 个可能是业余级别的最高段位。他们不是专业级别的。”于志伟进一步描述说,“类似业余级别的一般测试人员更关注‘测’,对测试工具运用得淋漓尽致。如果发现了BUG,该测试人员会兴高采烈地跟开发人员说有一个BUG,但是开发人员也不知道应该怎么修改处理。为什么呢?因为该测试人员有本事把BUG找出来,但对BUG 的描述不到位,也就是不能告诉开发人员这个BUG具体是什么,究竟是什么原因造成的等细节。他们不能提供一个合适的路径让开发人员直接找到BUG。开发人员还得来回测才能确定BUG。可见,这样的测试人员只是一个找BUG的高手,但是他不能解决问题。”

  “要做好软件测试并不容易。软件测试是一个终生的职业,越老越吃香。”郑人杰认为,行业业务经验的积累和专业测试能力的提升,是成就一个出色的软件测试工程师的两个同等重要的条件。

  于志伟认为,目前,软件测试领域最受关注的都是工具的应用等具体测试问题,而高端测试人才更应该关注如何做好从测试需求、测试计划、测试流程、测试执行,到将测试结果很好地展现在报告上,进而追踪问题,并最终解决问题的全过程。

  同时,高端测试人才还要有更先进的理念,即不只是关注测试,而是要更加关注软件质量。“也许有时候及时发现了BUG 也不应改动,因为它对客户体验没有影响,而改动后会带来更大的影响,并增加成本。但怎么判定这个BUG 该不该动呢?现在市场上缺的就是能够做出正确判断的高端测试人才。他们具有先进的理念,掌握科学的方法论。”于志伟分析说。

  怎样才能培养出大量的高端测试人才呢?通过第三方的测试平台,把先进测试的理念、更专业的测试方法和工具传达给喜欢测试的fans(热衷者),让他们吸收更多的最佳实践,不断提升自身的测试技能,借此来实现对高端测试人才的培育和储备,这是中国惠普培育软件测试市场的一条尝试途径,也是它们与中国信息主管网合作建立中国测试平台网的初衷所在。

  中国测试平台网

  测试fans的资源池

  “当前,信息化正在改变IT角色,IT已成为企业发展的重要支撑元素。企业在IT 建设中,必须缩短开发周期,快速响应业务需求。然而,IT项目愈是‘短、平、快’,愈是容易在一定程度上降低系统的可靠性。IT 链条的牢固程度取决于其最薄弱环节———软件测试的疏漏。”作为中国测试平台网项目负责人,中国信息主管网副总编杨春晖介绍,“当软件质量成为软件产业新的核心竞争力时,作为软件质量‘把门人’———软件测试人才自然成为企业争抢的稀缺资源。软件测试人才已成为2010 年IT业就业的主力,其职业具有极大发展潜力。”

  正是在这样的背景下,中国信息主管网联姻软件质量管理领域的龙头企业———中国惠普,共同建立了软件测试领域的专业技术网站———中国测试平台网。“中国测试平台网坚持以报道软件测试专业技术为核心,关注软件测试领域的前沿技术和管理思想,定期举办各种在线活动以推动软件测试相关领域的交流,力求为中国广大软件厂商、系统集成商、IT渠道,以及IT 专家、测评专业人士、热心网友等提供一个软件测试、专家问询、交流沟通的在线互动平台。”杨春晖说。

  “中国测试平台网也会为软件测试爱好者提供很多职业发展的机会。惠普现在就很需要高端的测试人才。”于志伟向记者透露。

  除了用中国测试平台网这个平台网聚、培育软件测试人才,惠普也在逐渐向其大量的高端客户渗透软件测试的一些先进理念,以得到他们的认同并付诸实践,从而带动上下游的公司形成良好的市场环境,促进产业内软件测试工作的进步。当记者提到现在由于企业没有成套考核体系来评估软件测试人员,所以没有足够动力推进软件测试工作更上一层楼时,于志伟笑了笑说:“这确实是目前大家迷茫的地方,大家都不知道软件测试的评估、考核该怎么做,但这也恰恰是体现惠普优势的地方。”

  于志伟介绍说,惠普拥有先进的测试生命周期管理、应用生命周期管理的方法和最佳实践,并且在这个领域完成了很多成功项目,能够明确测试的定位、测试与开发的关系,知道哪些指标应该分给开发,明白不同的测试项目中这些指标应该怎么调整,从而帮助企业一步步走向更高水平的软件测试,或者更准确地说是保障软件质量。“这需要一个过程。要通过先进的理念和经验的积累,才能慢慢摸索出测试的考核、评估办法。”

  中国惠普企业业务集团软件及解决方案部华东、华南售前经理,测试专家王慧慧向记者介绍了惠普的应用质量管理(AQM)的质量成熟度模型。王慧慧说,该模型不仅参考了已有IS09000、ITIL、CMM 等行业标准,而且总结了惠普客户的实践经验,将企业软件质量保障情况从最基础的第一步到最高级的最后一步CoE(Center of Excellence),分为5个阶段,模型中涉及测试人员的素质,外界对测试人员的认可度,测试人员自身的定位,测试的组织架构、流程、绩效考核等制度问题,还涵盖了测试的先进方法。

  “对用户而言,这个成熟度模型是其衡量自己软件测试水平的一个标杆。通过比对,并且在惠普的专家、产品和服务的帮助下,企业可以在现有状态的基础上一步一步提升,最终走向CoE。”王慧慧说,“这个模型不是静止的,而是在不断充实、改进中。每个用户在改进的投入、时间、步骤等方面都会不同。对于某一用户,惠普专家会为其做出评估,量身定制出一条适合用户自身情况的改进路径。”
关注读览天下微信, 100万篇深度好文, 等你来看……