论软件测试在软件质量中的作用1论软件质量保证与测试一:我对软件测试的认识:软件测试是为了发现程序中的错误而执行程序的过程。具体的说,软件测试是根据然间开发个阶段的规格说明和程序的内部结构而精心设计出一批测试用例,并利用测试用例来运行程序,依法向程序错误的过程。软件测试的目的和意义在于发现程序中的错误,有效定义和实现软件成分由低到高的组装过程,验证软件是否满足任务书和系统定义文档所规定的技术要求,为软件质量模型的建立提供依据,具体说来如下:1确认软件的质量。一方面是确认软件做了你所期望的事情,另一方面是确认软件以正确的方式来做了这个事件;2提供信息。比如提供给开发人员或程序经理的反馈信息,为风险评估所准备的信息;3软件测试不仅是在测试软件产品的本身,而且还包括软件开发的过程。如果一个软件产品开发完成之后发现了很多问题,这说明此软件开发过程很可能是有缺陷的。因此软件测试的第3个目的是保证整个软件开发过程是高质量的。作为软件测试人员,在软件开发过程中的任务就是寻找bug,避免软件开发过程中的缺陷,衡量软件的品质,关注用户的需求,而其最终目标就是:确保软件的质量。软件测试在软件生命周期中占据重要的地位,在传统的瀑布模布模型中,软件测试学仅处于运行维护阶段之前,是软件产品交付用户论软件测试在软件质量中的作用2使用之前保证软件质量的重要手段。近年来,软件工程界趋向于一种新的观点,即认为软件生命周期每一阶段中都应包含测试,从而检验本阶段的成果是否接近预期的目标,尽可能早的发现错误并加以修正,如果不在早期阶段进行测试,错误的演示扩散常常会导致最后成品测试的的最大困难。软件开发过程可分为:需求,实际,实现和测试4个阶段在开发大型软件系统的漫长过程中,面对纷繁复杂的各种现实情况,人的主观认识和客观现实是之间往往存在差距,开发过程中各类人员之间的交流和配合也往往并不是尽善尽美,所以,在软件生存周期的各个阶段都有可能产生差错。软件测试时对软件规格说明,设计和编码的最后复审,是软件质量保证的关键步骤,因此我们一定要重视软件测试工作。测试是所有工程学院的基本组成单元,是软件开发的重要部分。自由层序时记得那天起测试就一直伴随着。统计表明,在典型的软件开发项目中,软件测试工作量往往占软件开发总工作量的40%左右。而在软件开发的总成本中,用在测试上的开销要占30%-50%。如果把维护阶段也考虑在内,讨论整个软件生存周期时,测试的成本比例也许会有所降低,但实际上维护工作相当于二次开发,乃至多次开发,其中必定还包含有更多的测试工作。作为软件测试这个行业,最重要的一件事就是从客户的需求出发,系统的问题越早发现,改正的成本越低,破坏性越小,所以,在系统发布前,要尽量多的把系统的问题找出来,其手段就是有计划,有组论软件测试在软件质量中的作用3织的进行充分的测试。系统投产后发想的问题,其危害性被成倍的放大,直接损坏了客户的利益和声誉,同时客户将毫不留情的将板子打在开发商身上,这是开发商费钱费力也可能难以挽回失去的市场。软件测试是软件质量保证的重要手段。二,软件测试的具体方法与测试模型1、V模型在软件测试方面,V模型是最广为人知的模型。V模型已存在了很长时间,和瀑布开发模型有着一些共同的特性。V模型中的过程从左到右,描述了基本的开发过程和测试行为。V模型优点:在于它非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系。局限性:把测试作为编码之后的最后一个活动,需求分析等前期产生的错误直到后期的验收测试才能发现.2、W模型V模型的局限性在于没有明确地说明早期的测试,无法体现“尽早地和不断地进行软件测试”的原则。在V模型中增加软件各开发阶段应同步进行的测试,演化为W模型(如下图)。W模型由Evolutif公司提出,相对于V模型,W模型更科学。论软件测试在软件质量中的作用4优点:W模型是V模型的发展,强调的是测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、功能和设计同样要测试。测试与开发是同步进行的,从而有利于尽早地发现问题。缺点:W模型和V模型都把软件的开发视为需求、设计、编码等一系列串行的活动,无法支持迭代、自发性以及变更调整。3、X模型X模型也是对V模型的改进,X模型提出针对单独的程序片段进行相互分离的编码和测试,此后通过频繁的交接,通过集成最终合成为可执行的程序。X模型的左边描述的是针对单独程序片段所进行的相互分离的编码和测试,此后将进行频繁的交接,通过集成最终成为可执行的程序,然后再对这些可执行程序进行测试。己通过集成测试的成品可以进行封装并提交给用户,也可以作为更大规模和范围内集成的一部分。多根并行的曲线表示变更可以在各个部分发生。优点:X模型定位了探索性测试,这是不进行事先计划的特殊类型的测试,这一方式往往能帮助有经验的测试人员在测试计划之外发现更多的软件错误。论软件测试在软件质量中的作用5缺点:可能对测试造成人力、物力和财力的浪费,对测试员的熟练程度要求比较高。4、H模型H模型中,软件测试过程活动完全独立,贯穿于整个产品的周期,与其他流程并发地进行,某个测试点准备就绪时,就可以从测试准备阶段进行到测试执行阶段。软件测试可以尽早的进行,并且可以根据被测物的不同而分层次进行。这个示意图演示了在整个生产周期中某个层次上的一次测试“微循环”。图中标注的其它流程可以是任意的开发流程,例如设计流程或者编码流程。也就是说,只要测试条件成熟了,测试准备活动完成了,测试执行活动就可以进行了。H模型揭示了一个原理:软件测试是一个独立的流程,贯穿产品整个生命周期,与其他流程并发地进行。H模型指出软件测试要尽早准备,尽早执行。不同的测试活动可以是按照某个次序先论软件测试在软件质量中的作用6后进行的,但也可能是反复的,只要某个测试达到准备就绪点,测试执行活动就可以开展。三.软件测试的重要性及存在的误区软件测试很重要。在很多情况下,软件开发人员同用户的思路是完全不同的。开发人员由于接近硬件底层,更多的是从机器的“思维”来考虑问题,而用户只是为了使用。很多软件开发人员抱有这样的思维,认为用户很笨,“你这样用就不会出现错误了!”但事实上,作为一种产品,必须要能够考虑到用户使用的方方面面,并考虑进行各种容错处理。为了记录下用户使用软件的习惯用来提供软件的易用性和发现潜在的问题,微软和国外的很多大型软件开发公司甚至会采用专门的测试房间,用仪器记录用户的使用过程来加以改善使用的界面和出现的问题。软件测试是软件质量保证的重要手段。有些研究数据显示,国外软件开发机构40%的工作量花在软件测试上,软件测试费用占软件开论软件测试在软件质量中的作用7发总费用的30%至50%。对于一些要求高可靠、高安全的软件,测试费用可能相当于整个软件项目开发所有费用的3至5倍。由此可见,要成功开发出高质量的软件产品,必须重视并加强软件测试工作。国内很多企业还处在探索阶段,小企业的运作方式造成主要精力是要尽快完成初始资本积累。有些企业也了解软件测试的重要性,很努力、很认真地学,但因为很多原因而学不到精髓,不知道如何去做。于是只能局限于书本上学来的简单测试方法而已。即便有些人知道有压力测试和性能测试等测试方法,但如何针对产品实施并不清楚。软件测试存在的误区:(1)误区之一:软件开发完成后进行软件测试人们一般认为,软件项目要经过以下几个阶段:需求分析,概要设计,详细设计,软件编码,软件测试,软件发布。据此,认为软件测试只是软件编码后的一个过程。这是不了解软件测试周期的错误认识。软件测试是一个系列过程活动,包括软件测试需求分析,测试计划设计,测试用例设计,执行测试。因此,软件测试贯穿于软件项目的整个生命过程。在软件项目的每一个阶段都要进行不同目的和内容的测试活动,以保证各个阶段的正确性。软件测试的对象不仅仅是软件代码,还包括软件需求文档和设计文档。软件开发与软件测试应该是交互进行的,例如,单元编码需要单元测试,模块组合阶段需要集成测试。如果等到软件编码结束后才进行测试,那么,测试的时间将会很短,测试的覆盖面将很不全面,测试的效果也将大打折扣。更严重的是如果此时发现了软件需求阶段或概要设计阶段的错误,如果要修复该类错误,将会耗费大量的时间和人力。(2)误区之二:软件发布后如果发现质量问题,那是软件测试人员的错这种认识很打击软件测试人员的积极性。软件中的错误可能来自软件项目中的各个过程,软件测试只能确认软件存在错误,不能保证软件没有错误,因为从根本上讲,软件测试不可能发现全部的错误。从软件开发的角度看,软件的高质量不是软件测试人员测出来的,是靠软件生命周期的各个过程中设计出来的。出现软件错误,不能简单地归结为某一个人的责任,有些错误的产生可能不是技术原因,可能来自于混乱的项目管理。应该分析软件项目的各个过程,从过程改进方面寻找产生错误的原因和改进的措施。论软件测试在软件质量中的作用8(3)误区之三:软件测试要求不高,随便找个人做都行很多人都认为软件测试就是安装和运行程序,点点鼠标,按按键盘的工作。这是由于不了解软件测试的具体技术和方法造成的。随之软件工程学的发展和软件项目管理经验的提高,软件测试已经形成了一个独立的技术学科,演变成一个具有巨大市场需求的行业。软件测试技术不断更新和完善,新工具,新流程,新测试设计方法都在不断更新,需要掌握和学习很多测试知识。所以,具有编程经验的程序员不一定是一名优秀的测试工程师。软件测试包括测试技术和管理两个方面,完全掌握这两个方面的内容,需要很多测试实践经验和不断学习精神。(4)误区之四:软件测试是测试人员的事情,与程序员无关开发和测试是相辅相成的过程需要软件测试人员、程序员和系统分析师等保持密切的联系,需要更多的交流和协调,以便提高测试效率。另外,对于单元测试主要应该由程序员完成,必要时测试人员可以帮助设计测试样例。对于测试中发现的软件错误,很多需要程序员通过修改编码才能修复。程序员可以通过有目的的分析软件错误的类型、数量,找出产生错误的位置和原因,以便在今后的编程中避免同样的错误,积累编程经验,提高编程能力。(5)误区之五:项目进度吃紧时少做些测试,时间富裕时多做测试这是不重视软件测试的表现,也是软件项目过程管理混乱的表现,必然会降低软件测试的质量。一个软件项目的顺利实现需要有合理的项目进度计划,其中包括合理的测试计划,对项目实施过程中的任何问题,都要有风险分析和相应的对策,不要因为开发进度的延期而简单的缩短测试时间、人力和资源。因为缩短测试时间带来的测试不完整,对项目质量的下降引起的潜在风险,往往造成更大的浪费。克服这种现象的最好办法是加强软件过程的计划和控制,包括软件测试计划、测试设计、测试执行、测试度量和测试控制。(6)误区之六:软件测试是没有前途的工作,只有程序员才是软件高手由于我国软件整体开发能力比较低,软件过程很不规范,很多软件项目的开发都还停留在“作坊式”和“垒鸡窝”阶段。项目的成功往往靠个别全能程序员决定,他们负责总体设计和程序详细设计,认为软件开发就是编写代码,给人的印象往往是程序员是真正的牛人,具有很高的地位和待遇。因此,在这种环境下,软件测试很不受重视,软件测试人员的地位和待遇自然就很低了,甚至软件测试变得可有可无。随着市场对软件质量的不断提高,软件测试将变得越来越重要,相应的软件测试人员的地位和待遇将会逐渐提高。在微软等软件过程比较规范的大公司,软件测试人员的数量和待遇与程序员没有多大差别,优秀测试人员的待遇甚至比程序员还要高。软件测试将会成为一个具有很大发展前景的行业,软件测试大有论软件测试在软件质量中的作用9前途,市场需要更多具有丰富测试技术和管理经验的测试人员,他们同样是软件专家。这两年来国内软件测试人员的需求不断增大,越来越多的IT企业认识到了软件测试的重要性。四,软件质量保证与测试课程对我的帮助经过一个学期的学习,使我对软件质量保证与测试的方法和重要性及他的理论依据有了一定的认识。这是一门崭新的学科,目前在国内的发展仍处于婴儿阶段,特别感谢葛老师这个学期以来的辛勤教导,使我明白的了不仅要会