1、毕业论文论文题目论述软件开发生命周期与测试生命周期内容摘要本文在介绍软件开发与软件测试的关系,阐述了软件开发生命周期的过程,详细论述了软件开发和软件测试两者之间的联系。软件开发前期基本分为问题的定义及规划、需求分析、软件设计、程序编码、软件测试、运行维护几部分,软件测试方法基本分为等价类法、静态测试、动态测试、黑盒测试、白盒测试。测试流程测试技术书、测试计划评审、测试用例、测试技术相关文档、执行测试、测试报告、确认测试报告、用户手册。保证与客户的原始需求一致,而在需求规格说明书编写完毕后,相应的测试工程师又需要对规格说明书进行评审。关键词软件开发生命周期软件测试方法ABSTRACTINTHIS
2、PAPERTHERELATIONSHIPBETWEENSOFTWAREDEVELOPMENTANDSOFTWARETESTING,DESCRIBESTHEPROCESSOFTHESOFTWAREDEVELOPMENTLIFECYCLE,DISCUSSESINDETAILBETWEENSOFTWAREDEVELOPMENTANDSOFTWARETESTINGTHELINKBETWEENTHETWOTHEEARLYDEVELOPMENTOFTHESOFTWAREISDIVIDEDINTOPROBLEMDEFINITIONANDPLANNING,NEEDSANALYSIS,SOFTWAREDESIG
3、N,CODING,SOFTWARETESTING,OPERATIONANDMAINTENANCEOFSEVERALPARTS,SOFTWARETESTINGMETHODISDIVIDEDINTOTHEEQUIVALENCECLASSMETHOD,STATICTEST,DYNAMICTEST,THEHEIHETEST,WHITEBOXTESTINGTESTTESTTECHNOLOGYBOOKS,TESTPLAN,TESTCASE,TESTTECHNOLOGYREVIEWRELEVANTDOCUMENTS,TESTEXECUTION,TESTREPORT,TESTREPORT,USERMANUAL
4、ENSURECUSTOMERORIGINALCONFORMANCETOREQUIREMENTS,ANDISWRITTENINTHEREQUIREMENTSSPECIFICATION,THETESTENGINEERCORRESPONDINGNEEDTOREVIEWSPECIFICATIONSKEYWORDSTHESOFTWAREDEVELOPMENTLIFECYCLE,SOFTWARETESTINGMETHOD目录引言11软件生命周期的六个阶段111问题的定义及规划112需求分析113软件设计114程序编码115软件测试216运行维护2161测试分为2162测试过程2163软件测试流程31631
5、程序员应避免测试自己的程序41632程序设计组织不应测试自己的程序42测试方法621等价类法622划分等价类623划分等价类的标准62316232623362346235724划分等价类的方法725静态测试725172527253726动态测试726172627结束语9注释10参考文献11致谢121引言目前,软件开发与测试应该是并行的一个阶段,测试与开发其实可以并行开展工作。不必等开发工作完成后,再开展相关的测试工作。软件生命周期是软件的产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,这种按时间分程的思想方法是软件工
6、程中的一种思想原则,即按部就班、逐步推进,每个阶段都要有定义、工作、审查、形成文档以供交流或备查,以提高软件的质量。但随着新的面向对象的设计方法和技术的成熟,软件生命周期设计方法的指导意义正在逐步减少。同任何事物一样,一个软件产品或软件系统也要经历孕育、诞生、成长、成熟、衰亡等阶段,一般称为软件生存周期(软件生命周期)。软件生命周期把整个软件生存周期划分为若干阶段,使得每个阶段有明确的任务,使规模大,结构复杂和管理复杂的软件开发变的容易控制和管理。通常,软件生存周期包括1软件生命周期的六个阶段11问题的定义及规划此阶段是软件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性。12需求分析
7、在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。需求分析阶段是一个很重要的阶段,这一阶段做得好,将为整个软件开发项目的成功打下良好的基础。“唯一不变的是变化本身。“,同样需求也是在整个软件开发过程中不断变化和深入的,因此我们必须制定需求变更计划来应付这种变化,以保护整个项目的顺利进行。13软件设计此阶段主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计,数据库设计等等。软件设计一般分为总体设计和详细设计。好的软件设计将为软件程序编写打下良好的基础。14程序编码此阶段是将软件设计的结果转换成计算机可运行的程序代码。在程序编码中必须要制2定统一,符合标准的编写规范。以
8、保证程序的可读性,易维护性,提高程序的运行效率。15软件测试在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。整个测试过程分单元测试、组装测试以及系统测试三个阶段进行。测试的方法主要有白盒测试和黑盒测试两种。在测试过程中需要建立详细的测试计划并严格按照测试计划进行测试,以减少测试的随意性。16运行维护软件生命周期同任何事物一样,一个软件产品或软件系统也要经历孕育、诞生、成长、成熟、衰亡等阶段,一般称为软件生存周期(软件生命周期)。把整个软件生存周期划分为若干阶段,使得每个阶段有明确的任务,使规模大,结构复杂和管理复杂的软件开发变的容易控制和管理。通常,软件生存周
9、期包括可行性分析与开发项计划、需求分析、设计(概要设计和详细设计)、编码、测试、维护等活动,可以将这些活动以适当的方式分配到不同的阶段去完成。软件测试的一般原则中,有这么一条应当把“尽早地和不断地进行软件测试”作为软件测试者的座右铭,越晚测试,修正BUG的成本越大。由于软件的复杂性和抽象性,在软件生命周期各个阶段都可能产生错误,所以不应把软件测试仅仅看作是软件开发的一个独立阶段的工作,而应当把它贯穿到软件开发的各个阶段中。在软件开发的需求分析和设计阶段就应开始测试工作,编写相应的测试文档。同时,坚持在软件开发的各个阶段进行技术评审与验证,这样才能在开发过程中尽早发现和预防错误,杜绝某些缺陷和隐
10、患,提高软件质量。只要测试在生命周期中进行得足够早,就能够提高被测软件的质量,这就是预防性测试的基本原则。软件生命周期和软件测试生命周期的区别是软件生命周期是指从软件的产生直到报废的整个周期,包括可行性分析与项目计划,需求分析,概要设计和详细设计,编码,调试,维护。软件测试生命周期是指从测试项目计划建立到BUG提交的整个测试过程,包括软件项目测试计划,测试需求分析,测试用例设计,测试用例执行,BUG提交五个阶段。另外其联系如下软件测试生命周期并行与软件生命周期,存在于软件生命周期的各个阶段。161测试分为单元测试、集成测试、系统测试、确认测试、验证测试对应的开发阶段编码、详细设计、概要设计、需
11、求分析、客户需求。162测试过程3制定测试计划、编写测试用例(不同阶段)、测试及BUG管理;测试计划是在项目立项之后,理论是和需求分析同时完成,但实际情况要等需求分析完成了,才能制定测试计划;根据测试计划,做好需要分析后,要开始设计确认测试用的测试用例;然后按开发的不同阶段做相应的测试用例;编码完成时开始进行测试,一直到最后的验证测试结束,并修改好BUG,发表版本就可以结项了。163软件测试流程1需求阅读需求,理解需求,与客户、开发、架构多方交流,深入了解需求。2测试计划根据需求估算测试所需资源(人力、设备等)、所需时间、功能点划分、如何合理分配安排资源等。3用例设计根据测试计划、任务分配、功
12、能点划分,设计合理的测试用例。4执行测试根据测试用例的详细步骤,执行测试用例。5执行结果记录和BUG记录对每个CASE记录测试的结果,有BUG的在测试管理工具中编写BUG记录。6DEFECTTRACKING追踪LEADER分配给你追踪的BUG直到BUGFIXED。7测试报告通过不断测试、追踪,直到被测软件达到测试需求要求,并没有重大BUG8用户体验、软件发布等每当测试一个程序时,人们总希望为程序增加一些价值。利用测试来增加程序的价值,是指通过测试,找出并修改尽可能多的程序缺陷,从而提高程序的可靠性或质量。因此,不要只是为了证明程序能够正确运行而去测试程序。相反,应该一开始就假设程序中隐藏着错误
13、(这种假设几乎对所有的程序都成立),然后测试程序,发现尽可能多的错误。事实上,如果把测试目标定位于要证明程序中没有缺陷,那么就会在潜意识中倾向于实现这个目标。也就是说,测试人员会倾向于挑选那些使程序失效的可能性较小的测试数据。另一方面,如果把测试目标定位于要证明程序中存在缺陷,那么就会选择一些容易发现程序缺陷的测试数据。而后一种态度会比前者给程序增加更多的价值。4图1,V型周期图事实上,如果在测试某个程序段时发现了可以纠正的缺陷,或者测试最终确定再没有其他缺陷,则应将这次合理设计并得到有效执行的测试称作是“成功的”。而所谓“不成功的”测试,仅指未能适当地对程序进行检查,未能找出程序中潜藏缺陷的
14、测试。因为软件中不可能没有缺陷,没有找出它们,当然测试是“不成功的”。“软件测试就是证明软件不存在错误的过程”。对几乎所有的程序而言,甚至是非常小的程序,这个目标实际上是无法达到的。因为即使程序完全实现预期要求,仍可能包含有缺陷。也就是说,如果程序不按要求工作,它显然有缺陷,但如果程序做了不要它做的事,它也有缺陷。心理学研究告诉我们,当人们在干一件已经知道是不合适的或不可能做到的事时,往往他们的表现就相当糟糕。把程序测试定义为在程序中找出错误的过程,就使测试成了可以做到的任务,从而克服了心理上存在的问题。虽然这看起来像是个微妙的文字游戏,但对成功地进行软件测试有很大的影响。总之,软件测试更适宜
15、被视为试图发现程序中错误(假设其存在)的破坏性的过程。一个成功的测试,通过诱发程序发生错误,可以在这个方向上促进软件质量的改进。当然最终人们还是要通过软件测试来建立某种程度的信心软件做了其应该做的,而没有做其不应该做的。1631程序员应避免测试自己的程序由开发人员来测试自己的代码是一件很不妥当的事情。开发和测试生来就是不同的活动。开发是创造或者建立某种事物的行为,如一个功能模块或整个系统。而测试的重要目的是证实一个模块或者一个系统工作不正常。这两个活动之间有着本质的矛盾。一个人不太可能把两个截然对立的角色都扮演地很好,因此应当限制开发人员在测试中的参与,给他们比较合适的任务是进行最底层的测试单
16、元测试。当一个程序员完成了设计与编写程序的建设性工作后,要一夜之间突然改变他的观点,设法对程序形成一个完全否定的态度,那是非常困难的。所以,大部分程序员都由于不能使自己进入必要的精神状态(不是抱着要揭露出自己程序中错误的态度),就不能有效的测试自己的程序。除了这个心理学问题之外,还有一个重要的问题程序中可能包含由于程序员对问题的叙述或说明的误解而产生了错误。如果是这种情况,当程序员测试自己的程序时,往往还会带着同样的误解致使问题难以发现。1632程序设计组织不应测试自己的程序在宏观意义上,一个程序设计组织或一个工程项目是个有生命的有机体,它同样有心5理学问题。在大多数情况下,人们都以“在给定日
17、期内,以一定代价完成程序编制任务的能力”来衡量程序设计组织和项目管理人员的。这样做的理由是时间和成本指标便于衡量,而程序的质量很难度量。要程序设计组织在测试自己的程序时持客观态度是很困难的,因为如果用正确的定义看待测试,就不大可能按预定计划完成测试,也不大可能把耗费的代价限制在要求的范围以内。软件生产的三个最重要的因素是质量、进度和费用。由于费用和进度的限制,要开发一种高质量、快速交付和低成本的软件产品并不容易。也就是说要同时达到三个目标是困难的。因此在软件产品的开发中要权衡它们之间的关系,是软件的特性能满足用户的要求,这意味着软件产品的特性的度量和预计是必要的。软件测试由独立测试机构承担有很
18、多好处。独立测试是指软件测试工作由在经济上和管理上独立于开发机构的组织进行。独立测试可以避免软件开发者测试自己开发的软件,由于心理学上的问题,软件开发者难以客观、有效的测试自己的软件,要找出那些因为对问题的误解而产生的错误就更加困难。独立测试还可以避免软件开发机构测试自己的软件,软件产品的开发过程受到时间、成本和质量三者的制约,在软件开发的过程中,当时间、成本和质量三者发生矛盾时,质量最容易被忽视,如果测试组织与开发组织来自相同的机构,测试过程就会面临来自于开发组织同一来源的管理方面的压力,使测试过程受到干扰。采用独立测试方式,无论在技术上还是管理上,对提高软件测试的有效性都具有重要意义。客观
19、性对软件测试和软件中的错误抱着客观的态度,这种客观的态度可以解决测试中的心理学问题,既能以揭露软件中错误的态度工作,也能不受发现的错误的影响。经济上的独立性使测试有更充分的条件按测试要求去完成。专业性独立测试作为一种专业工作,在长期的工作过程中势必能够积累大量实践经验,形成自己的专业知识。同时软件测试也是技术含量很高的工作,需要有专业队伍加以研究,并进行工程实践。专业化分工是提高测试水平、保证测试质量、充分发挥测试效应的必然途径。权威性由于专业优势,独立测试工作形成的测试结果更具信服力,而测试结果常常和对软件的质量评价联系在一起,专业化的独立测试机构的评价,更客观、公正和具有权威性。资源有保证
20、独立测试机构的主要任务是进行独立测试工作,这使得测试工作在经费、人力和计划方面更有保证,不会因为开发的压力减少对测试的投入,降低测试的有效性可以避免开发单位侧重软件开发而对测试工作产生不利的影响。软件测试主要工作内容是验证和确认,下面分别给出其概念验证是保证软件正确地实现了一些特定功能的一系列活动,即保证软件以正确的方式来做了这个事件1确定软件生存周期中的一个给定阶段的产品是否达到前阶段确立的需求的过程。2程序正确性的形式证明,即采用形式理论证明程序符合设计规约规定的过程。3评市、审查、测试、检查、审计等各类活动,或对某些项处理、服务或文件等是否和规定的需求相一致进行判断和提出报告。确认VAL
21、IDATION是一系列的活动和过程,目的是想证实在一个给定的外部环境中软6件的逻辑正确性。即保证软件做了你所期望的事情。1静态确认,不在计算机上实际执行程序,通过人工或程序分析来证明软件的正确性2动态确认,通过执行程序做分析,测试程序的动态行为,以证实软件是否存在问题。软件测试的对象不仅仅是程序测试,软件测试应该包括整个软件开发期间各个阶段所产生的文档,如需求规格说明、概要设计文档、详细设计文档,当然软件测试的主要对象还是源程序。2测试方法21等价类法是把所有可能的输入数据,即程序的输入域划分成若干部分子集,然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒
22、测试用例设计方法。22划分等价类等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定测试某等价类的代表值就等于对这一类其它值的测试,因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件就可以用少量代表性的测试数据取得较好的测试结果。等价类划分可有两种不同的情况有效等价类和无效等价类。1有效等价类是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。2无效等价类与有效等价类的定义恰巧相反。无效等价类指对程序的规格说明是不合理的或无意义的输
23、入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能有多个。设计测试用例时,要同时考虑这两种等价类。因为软件不仅要能接收合理的数据,也要能经受意外的考验,这样的测试才能确保软件具有更高的可靠性。23划分等价类的标准231完备测试、避免冗余;232划分等价类重要的是集合的划分,划分为互不相交的一组子集,而子集的并是整个集合;233并是整个集合完备性;234子集互不相交保证一种形式的无冗余性;7235同一类中标识选择一个测试用例,同一等价类中,往往处理相同,相同处理映射到“相同的执行路径“。24划分等价类的方法在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个
24、无效等价类。如输入值是学生成绩,范围是0100在输入条件规定了输入值的集合或者规定了“必须如何“的条件的情况下,可确立一个有效等价类和一个无效等价类。25静态测试251代码检查代码会审、代码走查、桌面检查;252静态结构分析;253代码质量度量。26动态测试261黑盒测试又称功能测试。这种方法把被测软件看成黑盒,在不考虑软件内部结构和特性的情况下测试软件的外部特性。262白盒测试又称结构测试。这种方法把被测软件看成白盒,根据程序的内部结构和逻辑设计来设计测试实例,对程序的路径和过程进行测试。软件测试的意义软件测试为了发现错误而执行程序的过程,成功的测试是发现了至今尚未发现的错误的测试。测试的目
25、的就是为了能以最少的人力和时间发现潜在的各种错误和缺陷。使用人工或者自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别它是帮助识别开发完成(中间或最终的版本)的计算机软件(整体或部分)的正确度、完全度和质量的软件过程;曾有人对软件测试的目的提出过以下观点1测试是为了发现程序中的错误而执行程序的过程。2好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。3成功的测试是发现了至今为止尚未发现的错误的测试。然而,这种观点指出测试是以查找错误为中心,而不是为了演示软件的正确功能但是只从字面意思理解,可能会产生误导,认为发现错误是软件测试的唯一
26、目的,查找不出错误的测试就是没有价值的测试,实际上并非如此1测试并不仅仅是为了找出错误通过分析错误产生的原因和错误的发生趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷以便及时改进。82这种分析也能帮助测试人员设计出有针对性的测试方法,改善测试的效率和有效性。3没有发现错误的测试也是有价值的,完整的测试是评定软件质量的一种方法。4另外根据测试目的的不同,还有回归测试、压力测试、性能测试等,分别为了检验修改或优化过程是否引发新的问题、软件所能达到处理能力和是否达到预期的处理能力等。9结束语由于时间的紧迫性,网站设计也存在着许多的问题,分析主要有以下几点(1)开发的软件的许多功能因为资源的缺乏
27、而没能实现,需要以后不断充实。(2)软件测试操作过程也存在着一些改进的地方。(3)软件开发与软件测试并行开展的过程需要进一步的加强。经过一个学期的毕业设计,我所定的毕业设计题目“论述软件开发生命周期与测试生命周期”如期完成了。在整个设计过程中让我感慨颇多,在大学这几年内我学习了很多的软件测试的方法,但始终处于理论知识的掌握阶段,并没有真正应用于实践,所以对知识的掌握还不够全面和熟练。通过这次设计我感觉到软件测试是在实践过程中不断积累起来的。这次设计中最大的收获就是深入学习了软件开发与测试的有关知识,为以后的工作与学习打下了良好的基础。总体说来,在这次一个学期的毕业设计中,我学到了很多在课堂内学
28、不到的知识。整个开发的过程对我来说是一次能力真正提高的过程;是将以前所学知识充分利用的过程;是一次将理论应用于实践的过程。我觉得这次毕业设计是一次很有收获的实践10注释1苏惠祥中国当代合同法论,吉林大学出版社,1992年4月第1版,第231页。2、3同上,第300页。4郑玉波民法实用,中国法制出版社,1969年3月第1版,第109111页。5王纬IEEESTD1074对软件生存周期的分析J质量与可靠性1993年01期。6杨明华从国际档案大会看档案学研究的重点及发展趋势J档案学研究1997年01期。7ROGERSPRESSMAN软件工程实践者的研究方法M梅宏,译北京机械工业出版社,2002,91
29、。8陈雄飞论博物馆引力J中国博物馆1997年01期。91997年05期肖良杨根兴蔡立志计算机应用与软件2010第6期。10文件中心与生命周期理论关系质疑J北京档案1999年12期。11王凭慧北京9702信箱19号北京100101,张浩北京9702信箱19号北京100101,酆明北京9702信箱19号北京100101现代项目管理的知识体系J科学学研究1999年03期。12林清澄030045文件生命周期理论与文件中心没有必然联系J山西档案1999年06期。13报刊集萃J北京档案2000年09期。14于英香从电子文件生命周期看“电子文件管理危机”J上海档案2000年06期。15彭浩贾国柱中国科技信息
30、2007第4期。10谢晓园许蕾徐宝文聂长海史亮计算机科学与探索2008年第5期449466页。12琚小明姚庆栋计算机应用2005第7期。13王苏喜,弥俊莲,许建礼管理中的“生命周期理论”J科技人才市场。14美ELFRIEDEDUSTIN有效软件测试M新语,译北京清华大学出版社,2003,81。15管海波,黄敬前项目生命周期对于项目管理的重要性,引进与咨询,2004。11参考文献杨明华从国际档案大会看档案学研究的重点及发展趋势J档案学研究1997年01期。陈雄飞论博物馆引力J中国博物馆1997年01期。报刊集萃J北京档案2000年09期。彭浩贾国柱中国科技信息2007第4期。谢晓园许蕾徐宝文聂长
31、海史亮计算机科学与探索2008年第5期449466页。琚小明姚庆栋计算机应用2005第7期。王苏喜,弥俊莲,许建礼管理中的“生命周期理论”J科技人才市场。美ELFRIEDEDUSTIN有效软件测试M新语,译北京清华大学出版社,2003,81。管海波,黄敬前项目生命周期对于项目管理的重要性,引进与咨询,2004。12致谢我要感谢我的导师和其他任课教师的教诲,特别是本文涉及的专业教师的教导表示感谢,老师们的严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;指导老师她循循善诱的教导和不拘一格的思路给予我无尽的启迪。论文中的每一点成果以及工作中的每一丝进展都是和老师的悉心指导分不开的。在老师的指导下,我不仅完成了论文,学会了怎样有条不紊的完成自己的工作。在此我首先向老师表示深深的谢意。领导和老师们,三年来在我的学习上和生活上多方面给予了支持和帮助,使我得以顺利的完成学业,在此向他们表示衷心的感谢。在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意