孔波 李瑛
摘要:软件测试是系统工程,作者结合自己在测试工作中的经验,给出了对于软件测试目标的理解和认知。
关键词:软件测试 目标 软件工程 软件危机
中图分类号:TP31 文献标识码:A 文章编号:1672-3791(2012)10(b)-0013-01
电子计算机被认为是20世纪以来最伟大的工业革命成果之一,自1946年第一台通用电子数字计算机ENIAC诞生以来,计算机已经广泛应用于科学计算、数据处理、工程设计等领域。随着计算机技术日新月异的发展,软件产品更是应用到了众多领域。
但计算机软件的发展道路崎岖婉转,特别是20世纪60年代出现的“软件危机”,让我们记忆犹新。软件技术的发展远远落后于高性能硬件的发展,由于缺乏大型软件开发的经验和软件开发数据的积累,很难及早制定准确的开发工作计划;在开发初期对软件开发需求不能准确的表达;开发过程中没有规范可循,开发人员交流配合不顺畅;缺乏有效的软件质量检测手段,将质量差的软件交付最终用户使用,致使后期的使用维护工作大大增加。
按照工程化的原则和方法组织软件开发是摆脱上述软件危机所带来种种问题的主要途径。将计算机软件生存期分为计划、需求分析、设计、程序编写、测试、运行和维护六个步骤。在这里软件开发被视为一项工程,以工程化的方法来进行规划和管理软件的开发。
软件测试是保证软件质量的重要手段,在软件生存期中占有举足轻重的。
1 软件测试的定义
研究表明,在软件开发过程中,花在测试上的工作量和用在测试上的开销都接近软件开发工作量和开销的50%。对于软件测试的定义,历来有着众多争议。1983年IEEE的定义是:“使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别”。而Myers则认为:“程序测试是为了发现错误而执行程序的过程”。心理学对人的行为有着重要的影响,人的心理指引着人的行为。对软件测试定义的认识,决定了测试人员对测试目标的确立,进而影响到整个软件测试过程,而软件测试的最终结果必将反过来影响整个软件的质量。
2 软件测试目标
软件测试目标是尽可能多地发现软件中存在错误,通过不断修改软件错误,保证最终软件产品的质量。从这个角度看,测试人员要有团队合作意识,注意与开发人员、需求人员及客户的良好沟通是圆满完成测试任务的关键。
由于软件的复杂性和测试人员知识结构缺陷,致使测试人员对测试目标存在很多认识上的误区。
误区1:测试就是证明软件和程序能够正确运行,满足设计要求的功能。心理学告诉我们,人们愿意看到想要看到的事物。既然是证明正确性,设计测试用例时,自然会寻找容易使程序通过的测试数据,回避那些易于暴露程序错误的数据,致使程序错误得不到排除。
误区2:测试具有破坏性,容易得罪开发人员。软件测试同样具有创造性,需要测试人员综合自己的智慧,快速有效地查找定位软件错误,如果通过测试人员设计的测试用例,使软件程序产品出现了故障和错误,那就说明测试人员进行了一个成功的测试。作为测试人员,此时应该心里充斥着满足和成就感,因为通过自己的努力工作帮助设计人员找到了程序的错误,有了这个认识,应该对开发人员下一步完善设计起到了举足轻重的作用。所以,从这个角度看,测试人员和开发人员应该精诚协作,尽管工作不同,总的目标是一致的。
误区3:软件测试不需要专门知识和人员。持有这种观点的人实际上是对软件的质量非常不付负责,最终不可能做好测试工作。因为软件测试已经成为一门独立的学科,包括测试技术和管理等诸多方面,要完全掌握需要坚持不断地努力和实践。一名优秀的程序设计人员不一定能成为出色的软件测试人员。
误区4:软件测试没有前途,不如设计人员受人重视。近几年全国各地陆续成立了国家级、地区级的软件测评中心,软件测试的人员也达到数10万。随着市场对软件质量要求的不断提高,国内软件测试人员的需求不断增大,软件测试已引起越来越多的重视,软件测试人员的地位和待遇也逐渐提高。在一些世界著名软件公司,软件测试人员的数量和待遇与程序员相当。软件测试将会成为一个具有很大发展前景的行业,软件测试大有前途,市场需要更多具有丰富测试技术和管理经验的测试人员,测试人员同样是受人尊重的软件专家。测试人员和程序人员只是分工不同,其目标是一致的,就是为了向用户提供优质的软件程序。
误区5:经过软件测试,软件程序中不存在任何错误了。正确的认识是:测试可以帮助人们发现程序中的错误,但却不能证明程序中没有错误。一个成功的测试就是发现了以前从未发现的错误。采用合适的测试技术和进行优质的测试用例设计,可以高效地发现程序中存在的错误。以最少的人力、资源投入,在最短的时间内完成测试,发现软件系统的缺陷,保证软件的质量,是软件公司一直追寻的目标。
作为测试人员对以上所列举问题一定要铭记在心。对于一个非常重要的软件,特别是一些人命关天的软件,无论如何强调测试的重要性都不为过。有一个明确的测试目标,遵循测试原则,采用合适的测试工具和方法,再加以测试人员的大量投入,与设计人员保持良好的沟通,会比较顺利地完成测试。
3 结语
软件测试的真正目标是寻找错误。不要试图去猜想软件中没有错误,无论测试人员如何优秀,付出了多大的努力,软件中照样存在错误。作为测试人员就是不惜一切代价定位查找软件中存在的尽可能多地错误。如果有充足的时间设计和进行测试,我们总是可以找到更多的错误。当然,还要讲究测试的效率。如果错误好像对最终客户影响不大,那就不值得花时间和精力,可能藏有真正有影响的错误的地方更需要我们投入精力和时间。
参考文献
[1] 郑人杰,许静,于波.软件测试[M].人民邮电出版社,2011,3.