论文部分内容阅读
摘要:“软件工程是一种工程形式,它运用计算机科学和数学原理,针对软件问题获得一种经济有效的解决方案。”“用系统的、规范的、可度量的方法,开发、运行和维护软件”。1991年,ACM和IEEE/CS的计算教程CC1991专题组将“软件工程”列为计算学科的九个知识领域之一。本文分析了软件工程的特点及测试,不足之处望大家斧正:
关键词:软件工程 特点 测试
一、软件工程的特点
当今的社会,信息技术飞速发展。软件在这样的背景下受到越来越多的重视。信息社会的发展必须有软件产业来推动。由于软件在日新月异,而且被大范围的应用在人们的日常生活中,所以人们开始积极的探究出新的工程的方法来满足开发、使用和维护软件的需要,由此来合理有效的处理好软件的故障。基于计算机网络技术、信息科学技术和工程等相关的学科,目前的软件工程已经不再是比较单一的学科而是作为是适应当前信息技术发展的新兴交叉学科。本文从软件工程的定义,特性和需求3个角度进行了阐述。
1 软件工程概念提起和定义
1960年代末期,计算机程序在复杂度、规模和应用领域等方面的增长引人注目,这导致上千亿资金花费在软件开发上,许多人的工作和生活依赖于软件开发的成果。软件产品帮助人们获得更高的工作和生产效率,同时也给人们提供一个更加安全、灵活和宽松的工作与生活环境。尽管有很多成功之处,许多软件产品在成本、工期、质量等方面存在严重问题。主要原因是:
软件产品是复杂的人造系统,具有复杂性、不可见性和易变性,难以处理。个人或小组开发小型软件非常有效的编程技术和过程,在开发大型、复杂系统时难以发挥同样的作用。计算机和软件技术的快速发展,提高了客户对软件的期望,促进了软件产品的演化,为软件产品提出了新的、更多的需求,因此增加了软件行业内的竞争,难以在可接受的开发进度内保证软件的质量。1968年在德国举行的NATO软件工程会议上,为应对“软件危机”的挑战,提出了“软件工程”的术语。这个时期有代表性的软件工程定义是“为了经济地获得在真实机器上可靠工作的软件而制定和使用的合理工程原则和方法”。
1972年IEEE学会的计算机协会第一次出版了“软件工程学报”。此后,“软件工程”这个术语被广泛用于工业、政府和学术界,众多的出版物、团体和组织、专业会议在它们的名称里使用“软件工程”这个术语,很多大学的计算机科学系先后设立软件工程课程。
软件工程发展至今还没有一个比较确切的定义,大多数的软件过程方面的学者和组织机构也只是根据自己对软件过程的理解做出解释:
BarryBoehm:采用当下比较先进的科学技术知识来对计算机程序做设计和构造工作,与此同时也可以实时的开发、运行和修缮这些程序所对应的文件资料;IEEE:在软件工程术语汇编中的定义:软件工程是:①软件的开发、使用和维护的这个过程中需采用一定的方式,对其进行归类、整理或加工。这样的方法是受严格约束的、可量化的。也就是说,把工程化应用于软件。②在1中所述方法的研究;FritzBauer:在北大西洋公约组织会议上做出了这样的定义:建立健全一个比较实用且完备的工程化原则,采取很合算的措施来获得可以在实际机器上运行得比较高效且稳定性很好的一系列方案。
2 软件工程特性
人们普遍认为软件工程是有自己的特性的。软件工程的不同的定义即便有各种各样的描述方式,其侧重点也存在着不同的地方,但是,软件的特性本质是非常明显的,并且有共同的本质,下面就此进行一个探讨:
2.1 软件工程关注于大型程度的构造 通常情况下的小型程序是在说个人在规定的时间内编出来的程序,反之,大型程序一般是指多数人耗费了半年以上才完成的程序。其实大和小没有那么明显的界限,传统的程序设计技术和工具是支持小型程序设计的,不能简单地把这些技术和工具用于开发大型程序。
实际上,在这里使用 “程序”这个术语并不十分恰当,现在的软件开发项目通常构造出包含若干个相关程序的“系统”。
2.2 软件工程的中心课题是控制复杂性 软件复杂性的存在不是仅仅由于其处理的问题纷繁复杂,其影响因素是多种多样的,要具体问题具体分析。通常情况下,软件待处理的问题都是极具复杂性的,如果没有考虑到这一点而是把它当作是单个的整体来分析的话就会加大处理的难度。所以说,人们习惯于将问题分为各个单一的部分,各个部分之间维持着比较普通的通信关系。该措施虽然不能系统的解决问题的复杂性,然而却能使得这种复杂性得到合理有效的控制。
2.3 软件经常变化 很大一部分的软件的设计都是以现实世界的相关条件作为参考的。现实中的各种事物都是在发展变化的,软件也必须适应现实的变化作出相应的调整,由此一来才能够在竞争中处于有利的地位。也就是说,在软件系统投入使用之后还要对其进行完善,完善过程中作出的投资是需要考虑好的。另外,开发的时候就应该对未来的变化作出预测。
2.4 开发软件的效率非常重要 现今的社会人力资源已无法满足新应用系统的需求。软件在市场上的需求很大,但是软件的供应比较滞后。也就是说,对于这个问题的的处理方法最好就是积极的寻求开发与维护软件的既高效又实用的方法和工具。
2.5 和谐地合作是开发软件的关键 软件处理的问题都是比较冗杂的,单个人根本不能够解决,需要很多人共同协作才能完成。想要使得协作能够高效一点,务必要将任务准确的分配到个人,努力的探索比较恰当的通信的措施。在实践操作的过程中只是具备上面的要求还不能够达到目的的,合作之中的每个人务必要按照相关的原则来完成任务。在现实中要适当的采取切实可行的标准和规程来保证大家能够按照规定办事。一般情况下,需要采用相关的工具来维护这些标准和规程。总的说来就是有纪律的管理是软件开发项目获得成效的关键步骤。
2.6 软件必须有效地支持它的用户 开发软件就是要达到支持用户的工作的目的。软件提供的功能对于用户有成效的做完工作是比较有帮助的。要是说用户对软件系统存在很多的疑问,就能够启动当前的系统,或者马上将相关的的要求提出来。所以说软件的成功开发是需要合理的方法构造系统和出正确系统构造两者的共同作用。 想要使得软件能够更加高校的帮助用户处理问题,首先就要从用户的需求研究出发,要明白客户需要什么样的功能的软件,有什么样的使用性要求和质量标准。在明确客户需求的基础上进行软件开发,为客户提供软件产品和相匹配的用户手册和培训材料,除此之外,务必要注重新系统的运行环境的建立和维护工作。举例来说,图书馆在采用一个自动化系统之前就应该把该系统对图书馆的工作流程造成的影响考虑在内。也就是说客户对于新的工作流程熟悉还需要一定程度上的培训。
2.7 在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品这个特性与前两个特性紧密相关。软件工程师通常并不是某些领域的专家,但是他们却为这些领域开发应用系统。缺乏应用领域的相关知识,是软件开发项目出现问题的常见原因。
3 软件工程的需求分析
这个阶段的任务仍然不是具体地解决问题,而主要是确定目标系统必须具备哪些功能。系统分析员在需求分析阶段必须和用户密切配合,充分交流信息,以得出经过用户确认的系统逻辑模型。在需求分析阶段确定的系统逻辑模型是以后设计和实现目标系统的基础,因此必须准确完整地体现用户的要求。软件工程使用的结构分析设计的方法为每个阶段都规定了特定的结束标准,需求分析阶段必须提供完整准确的系统逻辑模型,经过用户确认之后才能进入下一个阶段。
二、软件工程测试
我们知道,软件测试是一个知识密集型的活动,软件测试人员的工作不仅仅是依据测试计划对软件进行测试,与测试相关的知识、技巧、经验和灵感在测试过程中有着重要的作用,但是随着软件技术的快速发展,不断出现的新的待测软件产品,常使软件测试人员感到压力重重,力不从心,他们有探寻新的测试知识和技术的紧迫需求。而软件测试的自动化的出现为我们提供了一种新思路和解决问题的新方法,下面对软件测试几个方面进行探讨。
1 软件测试的目标
1.1 软件测试员的基本目标是发现软件缺陷。这个是软件测试的终极目标,之所以再次强调。是因为有时软件开发团队进行软件测试只是为了证实软件不存在错误的过程,证明该软件满足了用户的要求,而不是找缺陷。在这样的情况下,测试人员也就缺乏不懈努力发现缺陷的探索精神和热情,不会希望在软件测试中暴露软件中隐藏的错误和缺陷。所以做好测试的首要条件是明确软件测试员的基本目标是发现软件缺陷。
1.2 软件测试员追求的是尽可能早地找出软件缺陷。根据调查和实践,软件的修复费用,随着时间的推移,将数十倍的增长,所以软件测试员应尽可能早地找出软件缺陷。这样,在测试中,就不要选择那些导致程序失效概率小的测试用例,因为这样的测试对于完善和提高软件质量是没有任何价值的。同时,应当把软件测试贯穿到整个软件开发的过程中,因为很多预料不到的错误,往往只在特定的环境下才会暴露出来,不然一些隐藏的错误和问题查不出来,就可能会出现在运行阶段中去。
1.3 软件测试人员必需确保找出的软件缺陷得以关闭。在软件工程测试的过程中,主要目的是发现至今未发现的错误,从用户的角度出发,替用户着想,将更深层次可能的问题都测试出来。但是,因为各种原因并不是每个软件缺陷都是必须要修复的。如:没有足够时间、风险太大等。但是,测试人员必需确保找出的软件缺陷得以关闭,因为软件测试的目标就是揭示不同类型的错误,并且修正它,使得用户能够顺利使用软件。
2 软件测试的基本原则
2.1 软件开发人员应当避免测试自己的程序
软件测试时一项复杂、富有创造性和高度挑战性的工作,在软件测试中,如果让开发人员来测试自己的代码,那是一件非常不妥当的事情。因为开发和测试生来就是不同的活动。所以,不管是程序员还是开发团队都应当避免测试自己的程序或者本团队开发的功能模块。如果有条件的话,应当由独立于开发组和客户的第三方测试组或测试机构来进行软件测试。因为人类的活动具有高度的目的性,建立适当的目标具有重要的心理作用。如果我们的目的是要证明程序中没有错误,那我们就会不自觉地朝这个方向去做;也就是说,我们会倾向于挑选那些使程序出错的可能性较小的测试数据。或者由于程序员对问题的叙说和说明有误解而产生的错误,这种情况让程序员测试自己的程序是不可能发现问题的。
2.2 在软件测试中,确定预期输出或结果是测试必要的,不可缺少的一部分,如果事先无法肯定预期的测试结果,往往会把看起来似是而非的结果当成正确的。同时还要注意各种输入条件,无论合理与否。因为在实际使用中各种情况都有。
2.3 一定严格执行软件测试计划,禁止软件测试的随意性,这样就可以避免软件交付后出现问题,这样也可以改善测试的效率和有效性。
2.4 软件测试并不等于程序测试,软件测试贯穿于软件定义和开发的整个过程,因此,需求分析、概要设计和程序编码等各阶段所得到的文档都是软件测试的对象。
2.5 必须检查每一个测试结果,事实上在最终发现的错误中,有相当一部分在前边的测试中已经显露了出来,但是由于人们没有认真检查先前的测试结果而遗漏了。
2.6 为了提高对程序重新测试的效率,尤其是在对程序作了修改后,为了减少测试工作量和成本,除了对真正没有用的程序外,一定不要扔掉测试用例,测试用例代表了一定的价值投资。
3 软件测试自动化工具的选择
随着软件规模不断扩大,软件的复杂度不断加大,采用手工测试软件已经不能适应要求。采用电子自动化测试技术对于人工而言,能更好地保证测试的准确度,而且大大提高了测试的效率,加快软件的开发速度。因此,软件自动化测试应用越来越广泛,目前,自动测试是软件测试的一个重要组成部分,它能完成许多手工测试无法实现或难以实现的测试,从而提高软件质量,节省经费,缩短软件发布周期。在自动化测试中,首先我们要根据要求来合理选择测试工具,测试工具的价格在开发资金中占有较高的比例,从成本角度必须考虑,而且它参加了测试的大部分活动,影响测试的准确性和效率。根据测试方法不同,测试工具有黑盒和白盒两种;而从测试目的和对象的角度区分亦可分为:单元测试、性能测试、功能测试、负载测试等。
在测试中,对于测试工具的选择,并非测试功能越强大越好,有一个前提,那就是必须适用,而且必须满足兼容性,能够支持不同的运行平台,能对不同的脚本进行测试,同时对待测试的脚本具有追踪报道、错误定位的功能;再次,拥有测试结果总结功能,能够将测试结果以图表的形式展示出来,相对于一般的结果表述形式,图标表示更直观。更容易让人理解、信服,可以及时对测试结果进行分析。一般还要从功能、价格、测试工具的集成能力、测试工具的易用性、侧重点、技术支持等多方面考虑。
总之。软件测试有其自身的特点。软件测试的目的不是为了仅仅找出错误,而是通过它发现错误、分析错误,找到错误的分布特征和规律,从而帮助项目管理人员发现当前所采用的软件开发过程的缺陷,以便改进;同时也能够通过设计有针对性的检测方法,改善软件测试的有效性。即使测试没有发现任何错误,也是十分有价值的,因为完整的测试不仅可以给软件质量进行一个正确的评价,而且是提高软件质量的重要方法之一。并以此来最终提高软件产品的质量和企业的经济效益,加强软件企业的核心竞争力。
参考文献
[1]Stephen R.Schach Object-Oriented and ClassicalSoftware Engineering[M].Beijing:ChinaMachine Press,1998.
[2]郑人杰.using software engineering[M].No.2.Beijing:QING-
HUA UNIVERSITY,1996.
[3][美]Roger S.Pressman.软件工程实践者的研究方法[M].北京:机械工业出版社,2007,1.
[4]郑人杰,殷人昆,陶永雷.实用软件工程(第二版)[M].北京:清华大学出版社,1997.
[5]史济民.软件工程原理方法与应用[M].北京:高等教育出版社,2001.
[6]张海藩.软件工程导论[M].北京:清华大学出版社,1997.
关键词:软件工程 特点 测试
一、软件工程的特点
当今的社会,信息技术飞速发展。软件在这样的背景下受到越来越多的重视。信息社会的发展必须有软件产业来推动。由于软件在日新月异,而且被大范围的应用在人们的日常生活中,所以人们开始积极的探究出新的工程的方法来满足开发、使用和维护软件的需要,由此来合理有效的处理好软件的故障。基于计算机网络技术、信息科学技术和工程等相关的学科,目前的软件工程已经不再是比较单一的学科而是作为是适应当前信息技术发展的新兴交叉学科。本文从软件工程的定义,特性和需求3个角度进行了阐述。
1 软件工程概念提起和定义
1960年代末期,计算机程序在复杂度、规模和应用领域等方面的增长引人注目,这导致上千亿资金花费在软件开发上,许多人的工作和生活依赖于软件开发的成果。软件产品帮助人们获得更高的工作和生产效率,同时也给人们提供一个更加安全、灵活和宽松的工作与生活环境。尽管有很多成功之处,许多软件产品在成本、工期、质量等方面存在严重问题。主要原因是:
软件产品是复杂的人造系统,具有复杂性、不可见性和易变性,难以处理。个人或小组开发小型软件非常有效的编程技术和过程,在开发大型、复杂系统时难以发挥同样的作用。计算机和软件技术的快速发展,提高了客户对软件的期望,促进了软件产品的演化,为软件产品提出了新的、更多的需求,因此增加了软件行业内的竞争,难以在可接受的开发进度内保证软件的质量。1968年在德国举行的NATO软件工程会议上,为应对“软件危机”的挑战,提出了“软件工程”的术语。这个时期有代表性的软件工程定义是“为了经济地获得在真实机器上可靠工作的软件而制定和使用的合理工程原则和方法”。
1972年IEEE学会的计算机协会第一次出版了“软件工程学报”。此后,“软件工程”这个术语被广泛用于工业、政府和学术界,众多的出版物、团体和组织、专业会议在它们的名称里使用“软件工程”这个术语,很多大学的计算机科学系先后设立软件工程课程。
软件工程发展至今还没有一个比较确切的定义,大多数的软件过程方面的学者和组织机构也只是根据自己对软件过程的理解做出解释:
BarryBoehm:采用当下比较先进的科学技术知识来对计算机程序做设计和构造工作,与此同时也可以实时的开发、运行和修缮这些程序所对应的文件资料;IEEE:在软件工程术语汇编中的定义:软件工程是:①软件的开发、使用和维护的这个过程中需采用一定的方式,对其进行归类、整理或加工。这样的方法是受严格约束的、可量化的。也就是说,把工程化应用于软件。②在1中所述方法的研究;FritzBauer:在北大西洋公约组织会议上做出了这样的定义:建立健全一个比较实用且完备的工程化原则,采取很合算的措施来获得可以在实际机器上运行得比较高效且稳定性很好的一系列方案。
2 软件工程特性
人们普遍认为软件工程是有自己的特性的。软件工程的不同的定义即便有各种各样的描述方式,其侧重点也存在着不同的地方,但是,软件的特性本质是非常明显的,并且有共同的本质,下面就此进行一个探讨:
2.1 软件工程关注于大型程度的构造 通常情况下的小型程序是在说个人在规定的时间内编出来的程序,反之,大型程序一般是指多数人耗费了半年以上才完成的程序。其实大和小没有那么明显的界限,传统的程序设计技术和工具是支持小型程序设计的,不能简单地把这些技术和工具用于开发大型程序。
实际上,在这里使用 “程序”这个术语并不十分恰当,现在的软件开发项目通常构造出包含若干个相关程序的“系统”。
2.2 软件工程的中心课题是控制复杂性 软件复杂性的存在不是仅仅由于其处理的问题纷繁复杂,其影响因素是多种多样的,要具体问题具体分析。通常情况下,软件待处理的问题都是极具复杂性的,如果没有考虑到这一点而是把它当作是单个的整体来分析的话就会加大处理的难度。所以说,人们习惯于将问题分为各个单一的部分,各个部分之间维持着比较普通的通信关系。该措施虽然不能系统的解决问题的复杂性,然而却能使得这种复杂性得到合理有效的控制。
2.3 软件经常变化 很大一部分的软件的设计都是以现实世界的相关条件作为参考的。现实中的各种事物都是在发展变化的,软件也必须适应现实的变化作出相应的调整,由此一来才能够在竞争中处于有利的地位。也就是说,在软件系统投入使用之后还要对其进行完善,完善过程中作出的投资是需要考虑好的。另外,开发的时候就应该对未来的变化作出预测。
2.4 开发软件的效率非常重要 现今的社会人力资源已无法满足新应用系统的需求。软件在市场上的需求很大,但是软件的供应比较滞后。也就是说,对于这个问题的的处理方法最好就是积极的寻求开发与维护软件的既高效又实用的方法和工具。
2.5 和谐地合作是开发软件的关键 软件处理的问题都是比较冗杂的,单个人根本不能够解决,需要很多人共同协作才能完成。想要使得协作能够高效一点,务必要将任务准确的分配到个人,努力的探索比较恰当的通信的措施。在实践操作的过程中只是具备上面的要求还不能够达到目的的,合作之中的每个人务必要按照相关的原则来完成任务。在现实中要适当的采取切实可行的标准和规程来保证大家能够按照规定办事。一般情况下,需要采用相关的工具来维护这些标准和规程。总的说来就是有纪律的管理是软件开发项目获得成效的关键步骤。
2.6 软件必须有效地支持它的用户 开发软件就是要达到支持用户的工作的目的。软件提供的功能对于用户有成效的做完工作是比较有帮助的。要是说用户对软件系统存在很多的疑问,就能够启动当前的系统,或者马上将相关的的要求提出来。所以说软件的成功开发是需要合理的方法构造系统和出正确系统构造两者的共同作用。 想要使得软件能够更加高校的帮助用户处理问题,首先就要从用户的需求研究出发,要明白客户需要什么样的功能的软件,有什么样的使用性要求和质量标准。在明确客户需求的基础上进行软件开发,为客户提供软件产品和相匹配的用户手册和培训材料,除此之外,务必要注重新系统的运行环境的建立和维护工作。举例来说,图书馆在采用一个自动化系统之前就应该把该系统对图书馆的工作流程造成的影响考虑在内。也就是说客户对于新的工作流程熟悉还需要一定程度上的培训。
2.7 在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品这个特性与前两个特性紧密相关。软件工程师通常并不是某些领域的专家,但是他们却为这些领域开发应用系统。缺乏应用领域的相关知识,是软件开发项目出现问题的常见原因。
3 软件工程的需求分析
这个阶段的任务仍然不是具体地解决问题,而主要是确定目标系统必须具备哪些功能。系统分析员在需求分析阶段必须和用户密切配合,充分交流信息,以得出经过用户确认的系统逻辑模型。在需求分析阶段确定的系统逻辑模型是以后设计和实现目标系统的基础,因此必须准确完整地体现用户的要求。软件工程使用的结构分析设计的方法为每个阶段都规定了特定的结束标准,需求分析阶段必须提供完整准确的系统逻辑模型,经过用户确认之后才能进入下一个阶段。
二、软件工程测试
我们知道,软件测试是一个知识密集型的活动,软件测试人员的工作不仅仅是依据测试计划对软件进行测试,与测试相关的知识、技巧、经验和灵感在测试过程中有着重要的作用,但是随着软件技术的快速发展,不断出现的新的待测软件产品,常使软件测试人员感到压力重重,力不从心,他们有探寻新的测试知识和技术的紧迫需求。而软件测试的自动化的出现为我们提供了一种新思路和解决问题的新方法,下面对软件测试几个方面进行探讨。
1 软件测试的目标
1.1 软件测试员的基本目标是发现软件缺陷。这个是软件测试的终极目标,之所以再次强调。是因为有时软件开发团队进行软件测试只是为了证实软件不存在错误的过程,证明该软件满足了用户的要求,而不是找缺陷。在这样的情况下,测试人员也就缺乏不懈努力发现缺陷的探索精神和热情,不会希望在软件测试中暴露软件中隐藏的错误和缺陷。所以做好测试的首要条件是明确软件测试员的基本目标是发现软件缺陷。
1.2 软件测试员追求的是尽可能早地找出软件缺陷。根据调查和实践,软件的修复费用,随着时间的推移,将数十倍的增长,所以软件测试员应尽可能早地找出软件缺陷。这样,在测试中,就不要选择那些导致程序失效概率小的测试用例,因为这样的测试对于完善和提高软件质量是没有任何价值的。同时,应当把软件测试贯穿到整个软件开发的过程中,因为很多预料不到的错误,往往只在特定的环境下才会暴露出来,不然一些隐藏的错误和问题查不出来,就可能会出现在运行阶段中去。
1.3 软件测试人员必需确保找出的软件缺陷得以关闭。在软件工程测试的过程中,主要目的是发现至今未发现的错误,从用户的角度出发,替用户着想,将更深层次可能的问题都测试出来。但是,因为各种原因并不是每个软件缺陷都是必须要修复的。如:没有足够时间、风险太大等。但是,测试人员必需确保找出的软件缺陷得以关闭,因为软件测试的目标就是揭示不同类型的错误,并且修正它,使得用户能够顺利使用软件。
2 软件测试的基本原则
2.1 软件开发人员应当避免测试自己的程序
软件测试时一项复杂、富有创造性和高度挑战性的工作,在软件测试中,如果让开发人员来测试自己的代码,那是一件非常不妥当的事情。因为开发和测试生来就是不同的活动。所以,不管是程序员还是开发团队都应当避免测试自己的程序或者本团队开发的功能模块。如果有条件的话,应当由独立于开发组和客户的第三方测试组或测试机构来进行软件测试。因为人类的活动具有高度的目的性,建立适当的目标具有重要的心理作用。如果我们的目的是要证明程序中没有错误,那我们就会不自觉地朝这个方向去做;也就是说,我们会倾向于挑选那些使程序出错的可能性较小的测试数据。或者由于程序员对问题的叙说和说明有误解而产生的错误,这种情况让程序员测试自己的程序是不可能发现问题的。
2.2 在软件测试中,确定预期输出或结果是测试必要的,不可缺少的一部分,如果事先无法肯定预期的测试结果,往往会把看起来似是而非的结果当成正确的。同时还要注意各种输入条件,无论合理与否。因为在实际使用中各种情况都有。
2.3 一定严格执行软件测试计划,禁止软件测试的随意性,这样就可以避免软件交付后出现问题,这样也可以改善测试的效率和有效性。
2.4 软件测试并不等于程序测试,软件测试贯穿于软件定义和开发的整个过程,因此,需求分析、概要设计和程序编码等各阶段所得到的文档都是软件测试的对象。
2.5 必须检查每一个测试结果,事实上在最终发现的错误中,有相当一部分在前边的测试中已经显露了出来,但是由于人们没有认真检查先前的测试结果而遗漏了。
2.6 为了提高对程序重新测试的效率,尤其是在对程序作了修改后,为了减少测试工作量和成本,除了对真正没有用的程序外,一定不要扔掉测试用例,测试用例代表了一定的价值投资。
3 软件测试自动化工具的选择
随着软件规模不断扩大,软件的复杂度不断加大,采用手工测试软件已经不能适应要求。采用电子自动化测试技术对于人工而言,能更好地保证测试的准确度,而且大大提高了测试的效率,加快软件的开发速度。因此,软件自动化测试应用越来越广泛,目前,自动测试是软件测试的一个重要组成部分,它能完成许多手工测试无法实现或难以实现的测试,从而提高软件质量,节省经费,缩短软件发布周期。在自动化测试中,首先我们要根据要求来合理选择测试工具,测试工具的价格在开发资金中占有较高的比例,从成本角度必须考虑,而且它参加了测试的大部分活动,影响测试的准确性和效率。根据测试方法不同,测试工具有黑盒和白盒两种;而从测试目的和对象的角度区分亦可分为:单元测试、性能测试、功能测试、负载测试等。
在测试中,对于测试工具的选择,并非测试功能越强大越好,有一个前提,那就是必须适用,而且必须满足兼容性,能够支持不同的运行平台,能对不同的脚本进行测试,同时对待测试的脚本具有追踪报道、错误定位的功能;再次,拥有测试结果总结功能,能够将测试结果以图表的形式展示出来,相对于一般的结果表述形式,图标表示更直观。更容易让人理解、信服,可以及时对测试结果进行分析。一般还要从功能、价格、测试工具的集成能力、测试工具的易用性、侧重点、技术支持等多方面考虑。
总之。软件测试有其自身的特点。软件测试的目的不是为了仅仅找出错误,而是通过它发现错误、分析错误,找到错误的分布特征和规律,从而帮助项目管理人员发现当前所采用的软件开发过程的缺陷,以便改进;同时也能够通过设计有针对性的检测方法,改善软件测试的有效性。即使测试没有发现任何错误,也是十分有价值的,因为完整的测试不仅可以给软件质量进行一个正确的评价,而且是提高软件质量的重要方法之一。并以此来最终提高软件产品的质量和企业的经济效益,加强软件企业的核心竞争力。
参考文献
[1]Stephen R.Schach Object-Oriented and ClassicalSoftware Engineering[M].Beijing:ChinaMachine Press,1998.
[2]郑人杰.using software engineering[M].No.2.Beijing:QING-
HUA UNIVERSITY,1996.
[3][美]Roger S.Pressman.软件工程实践者的研究方法[M].北京:机械工业出版社,2007,1.
[4]郑人杰,殷人昆,陶永雷.实用软件工程(第二版)[M].北京:清华大学出版社,1997.
[5]史济民.软件工程原理方法与应用[M].北京:高等教育出版社,2001.
[6]张海藩.软件工程导论[M].北京:清华大学出版社,1997.