国内软件测试现状分析及对策作者:邓伟伟,管群来源:《电脑知识与技术》2009年第34期摘要:现代社会是一个信息化社会,而高质量的软件构成了信息化的基础。
我国加入WTO 后,面对全球信息化浪潮,国内软件测试行业的弊病逐步显露出来。
在引用51Testing软件测试网的一些调查数据的基础上,指出了国内软件测试的一些现状,对现状进行了分析,并给出了相应的解决之道,最后对我国的软件测试行业进行了总结和展望。
关键词:软件测试;软件质量;测试工具;规范化;能力成熟度模型中图分类号:TP311文献标识码:A文章编号:1009-3044(2009)34-9692-03Analysis and Solutions on the Status of the Domestic Software TestingDENG Wei-wei, GUAN Qun(Computer College, Sichuan University, Chengdu 610064, China)Abstract: Modern society is an information-based society, and high-quality software constitutes the basis of the information. Since China's accession to the WTO, in the face of the wave of global information, the drawbacks of the domestic industry of software testing gradually revealed. On the basis of survey data on the 51Testing software testing network, the author pointed out some of the status in domestic software testing, and analyzed the status, then got the corresponding solutions, finally summaried and outlooked the domestic industry of software testing.Key words: software testing; software quality; testing tools; standardized; capability maturity model(CMM)什么是软件测试[1]?IEEE在1983年是这样定义的:由人工或自动方法来执行或评价系统或系统部件的过程,以验证它是否满足规定的需求,或识别出期望的结果和实际结果之间的差别。
它是软件工程的一部分,它随着软件开发应运而生,并随着软件开发的产业化而受到重视。
简言之,软件测试就是不断发现Bug,并不断修正的过程。
世界上第一个计算机Bug如图1所示。
目前,我国的软件测试行业较欧美国家的差距还比较大,这里面原因很多。
我国的软件行业起步晚,这是一个不争的事实,所以在很多方面没有做到标准化和规范化;除此之外,软件质量低下也是一个重要的原因。
计算机和软件行业的发展日新月异,加入WTO后,我国的软件行业面临前所未有的挑战——如何进一步提升我国软件行业的生产水平和软件质量,与世界接轨?照理说,在这个大背景下,软件测试理应受到越来越多的重视。
然而在我国事实真的如此吗?或者说即使很多软件企业有了这样的意识,它们付诸行动了吗?1 国内软件测试的现状从总体上说,国内的软件行业的发展还很不成熟,软件测试更是处于弱势地位。
要说明现状,必须要有调查资料作为基础。
51Testing软件测试网是国内最大的软件测试网站,它在2008年发起了“中国首届企业软件测试现状调查活动[2]”,并在此基础上进行了全面、真实、有效的数据分析和整理,收到了较好的调查效果。
在此,将以此次调查中的一些数据为基础,说明一下国内软件测试的现状。
1.1 从公司软件测试部门的独立性来看如图2,图3所示。
1.2 从公司专职测试人员与开发人员的比例来看调查数据显示,公司测试人员与开发人员的比例集中在1:3-1:5 左右,19%的公司该比例达到甚至超过1:7,这与国外软件业1:1 的比例相差甚远。
如图4所示。
1.3 从公司是否为软件测试人员制定职业技能提升规划来看如图5所示。
1.4 从软件测试的规范化程度来看如图6,图7所示。
1.5 从是否使用相关的测试工具方面来看如图8,图9所示。
图7 公司是否建立了规范的评审流程图8 购买自动化测试工具的计划图9 购买性能测试工具的计划以上只是列出了调查中的一部分,除此以外,国内的软件测试还有不少的问题:1) 软件测试测试开始时间过晚,没有参与到整个开发流程中[3];2) 软件行业的软件测试工程师比较少,同时国内软件测试工程师的能力也不如国外;3) 国内软件开发人员与测试人员工沟通不够。
一些软件开发人员只顾自己的事情,对测试的事情漠不关心;4) 测试工具和测试人员的结合度不够。
一些软件测试人员认为在使用了自动化测试工具和性能测试工具之后,就是进行了有效的测试[4]。
2 对现状和问题的解析造成这种现状,产生以上问题的原因是比较多的,在此列出主要几个:2.1 国内的软件公司大多数为中小型的公司的小规模不足以成立专门的软件测试技术部门,另一方面也无法实现国外测试人员与开发人员的比例为1:1的国际标准[5];2.2 好多软件公司还停留在“作坊式”的开发状态这些公司一般是靠几个全能的程序员支撑起来的,他们是公司的“顶梁柱”。
负责软件需要分析、总体设计、详细设计、编码以及测试和维护,公司的技术过于集中,而没有进行离散化之后再系统化。
可以试想,开发人员测试自己开发的软件,结果可想而知;2.3 软件公司对测试的重视程度不够[6]在这里领导不重视是主要原因,好多项目经理没有项目开发的经验,不懂测试,对测试的投入资金过少。
他们认为:1) 软件测试没有开发重要;2) 由于时间的关系,有时就让时间充裕的员工,甚至是非测试人员去做测试;3) 在经过简单的测试之后,就认为是没有问题了,就交于用户了,让用户去“测试”;于是,软件产品在没有经过严格测试的情况下就发布了;4) 最重要的一点就是规范化。
国内软件公司中能达到ISO和CMM(能力成熟度模型)高级认证的很少,不规范的软件开发普遍存在。
没有按照CMM的“项目经理——系统分析——编程人员”进行;5) 软件开发过快,最后反而“欲速不达”。
根本没有足够的时间来进行软件测试4;6) 对国内消费类软件而言,经常出现一些已经推向市场的产品由于被发现有严重缺陷而导致大量退货的现象;定制的行业软件,常出现一再返工、无限期的修改和维护的现象,这样既拖垮软件提供商,也耽误客户的正常业务。
这些都是软件测试没有跟上的严重后果[7];3 研究与对策国内的软件测试还处于一个不成熟的阶段,还需要一个相当长时间的学习才能赶超国外水平。
但是,不可否认的是,国内软件测试作为一个崭新的行业发展还是很快的,大家对其发展也都抱着一个十分乐观的态度。
不过,应该冷静地思考发展中遇到的问题,在此,提出以下建议:3.1 首先就是软件测试的意识问题和测试思想软件测试过程[8]是质量保证和缺陷预防的过程,测试不再是软件产品质量的一个检测环节,而是融入到整个软件开发生命周期,它与软件开发相辅相成,不可分割。
图10[9]形象地表示了二者之间的关系。
3.2 软件开发企业最好能成立独立的测试部门,将测试部门与开发独立开来但是独立开来,并不表示就没有联系了,因为毕竟测试部门测试的是开发部的产品,所以应该加强这两个部门的紧密沟通与合作。
3.3 要尽早地制定出完整详尽的测试计划[10]凡事预则立,不预则废。
软件测试也是如此。
测试计划是项目计划的组成部分,它依赖于软件组织过程和方针;它是一系列测试活动的指导文件。
测试计划的主要内容有:1) 确认测试目标、范围和需求;2) 识别测试风险,制定相应的测试策略;3) 对测试任务和工作量进行估算;4) 确定所需的时间和资源;5) 确定进度安排和资源分派,其中包括团队角色、责任和培训;6) 测试阶段的划分,包括阶段性任务和成果;7) 确定测试中的跟踪与控制机制。
在项目开发的时间安排上,应该认识到软件测试的重要性,为计划、设计、测试、改错、再测试、变更、以及编制文档留出足够的时间。
一般为测试安排40% 到50% 左右的时间,这样开发完成的软件才会得到充分的测试,才能具有比较好的稳定性[5]。
3.4 牢记软件测试的基本理念[8]1) 质量第一;2) 尽早测试:缺陷发现越迟,影响范围越大,返工的工作量就越大,同时造成的危害也就越大;3) 持续测试:软件需要一个不断测试的过程,具体表现为:“发现缺陷——更正——发现缺陷”的循环;4) 自动化测试:软件测试活动的自动化管理, 包括测试定义,结果信息显示,测试库管理和回归测试的控制等[11];5) 将风险降至最低。
3.5 工欲善其事,必先利其器——使用软件配置管理工具和测试工具软件配置管理(SCM)是软件工程中用来管理软件开发的规范,也是CMM二级中的关键过程域,相应的工具主要应用于软件的开发过程中[12]。
开发人员写出规范的代码,软件的出错也就会降低,同时也会减轻测试人员的负担。
自动化测试工具与性能测试工具在软件测试中起着非常重要的作用,优秀的测试工具,能提高测试工作的效率,同时也能对整个测试过程进行有效地管理。
但是,也不要过分地依赖于测试工具,不要想当然地认为任何经过测试工具的测试都是有效的测试,或者经过测试工具测试之后的软件便不存在问题。
注意测试工具与测试人员的“无缝接合”,将测试效率升至最高。
3.6 要提高我国的软件测试行业的发展水平,还有一个关键,那就是人的问题一方面要提高国内企业对软件测试的重视程度,另一方面要壮大软件测试队伍,善于学习与吸收,提高测试人员的素质,争取将测试人员与开发人员的比例上升到期2:1甚至1:1。
3.7 大力发展第三方的专业测试公司,重视利用第三方的测试力量进行测试[13],这也是重视软件测试的一个表现当然这样的公司在国内还比较少,但这是一个趋势。
第三方的软件测试公司与国内的一些检测机构不同,相反,办事效率与质量会比较高,因为它们是依靠技术与服务来征服客户的。
企业性质的第三方的专业测试公司更让人信赖,更加注重测试方法与质量。
软件公司从头去建立测试部门,并完善测试体系,需要较大的资金投入,将研发出来的软件产品交给实力强劲的第三方的专业测试公司,不仅仅能大大地提高软件产品的质量,而且还能节约产品测试成本。