软件开发生命周期与测试生命周期   毕业论文_第1页
软件开发生命周期与测试生命周期   毕业论文_第2页
软件开发生命周期与测试生命周期   毕业论文_第3页
软件开发生命周期与测试生命周期   毕业论文_第4页
软件开发生命周期与测试生命周期   毕业论文_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业论文论文题目软件开发生命周期与测试生命周期内容摘要软件设计思路和方法的一般过程,包括设计软件的功能和实现的算法和方法、软件的总体结构设计和模块设计、编程和调试、程序联调和测试以及编写、提交程序。从软件产业的发展初期到目前的大型软件开发过程,软件测试已成为其中一个不可分割的部分。随着软件规模的日益增大,软件测试问题也日益突出,现代社会对软件的依赖越来越强,高可信软件测试有着广泛的需求,基于缺陷模式的软件测试技术作为高可信软件的重要保证,可以大大降低软件的缺陷密度,提高软件的可信性。本文从测试的基本概念入手,深入剖析软件测试相关理论。关键词软件设计软件测试程序联调缺陷密度ABSTRACTTHEGENERALPROCESSOFDESIGNIDEAANDMETHODOFTHESOFTWARE,INCLUDINGSOFTWAREDESIGN,SOFTWAREFUNCTIONSANDTHEIMPLEMENTATIONOFTHEALGORITHMANDTHEMETHOD,ARCHITECTUREDESIGNANDMODULEDESIGN,PROGRAMMINGANDDEBUGGING,PROGRAMDEBUGGINGANDTESTING,ANDSUBMITWRITTENPROCEDURESFROMTHEEARLYDEVELOPMENTOFTHESOFTWAREINDUSTRYTOTHECURRENTLARGESCALESOFTWAREDEVELOPMENTPROCESS,SOFTWARETESTINGHASBECOMEANINSEPARABLEPARTOFWITHTHEINCREASINGSCALEOFSOFTWARE,SOFTWARETESTINGISBECOMINGINCREASINGLYPROMINENT,THEMODERNSOCIETYISMOREANDMOREDEPENDENTONSOFTWARE,SOFTWARETESTINGHASAWIDERANGEOFNEEDS,BASEDONTHESOFTWARETESTINGTECHNOLOGYOFDEFECTMODESASANIMPORTANTGUARANTEEFORHIGHASSURANCESOFTWARE,DEFECTDENSITYCANGREATLYREDUCETHESOFTWARE,IMPROVESOFTWARERELIABILITYTHISPAPERSTARTSFROMTHEBASICCONCEPTOFTEST,ANALYZETHETHEORYOFSOFTWARETESTINGKEYWORDSSOFTWAREDESIGNSOFTWARETESTINGPROGRAMDEBUGGINGDEFECTDENSITY目录引言11软件开发生命周期思想概述111“生命周期法“的起源112生命周期划分的原则213生命周期的划分214生命周期法的特点22软件开发生命周期概述221可行性分析222需求分析与说明223程序编码324软件测试325运行维护43软件测试概述54软件测试生命周期概述541软件测试过程5411动态测试6412软件可靠性测试定义9413软件可靠性测过程9结论11注释12参考文献13致谢14引言有很多种不同的生命周期模型用于软件的开发。软件开发的生命周期是以对软件的需求定义为起点,以对软件的正式验收作为终点。它并不是独立存在的,而是一个完整产品生命周期实实在在的一部分。在产品生命周期之中,软件的开发会不断改正其自身的错误并且时常针对软件的需求而进行调整。软件产品最简单的形式只不过是一个程序软件,但实际上确没有那么简单,由于软件产品是由开发出的不同软件部分所构成的一个完整的系统,这将会使产品变的非常复杂有许多不同的软件开发生命周期模型,但是它们都有一个共同的特点,那就是在生命周期中的某一时刻,软件都会被测试。这篇文章概述了一些常用的软件生命周期模型,并重点强调了在各个模型中的测试工作每一个软件的发布都会经过验收测试以证明软件的各个部分所构成的整体确实实现了需求。但是每个阶段的测试和集成将会耗费大量的时间和精力。由于过多的开发周期会增加成本,耗费时间,所以应该经过认真估算,尽早地规划好到底应该使用多少个周期来进行软件的开发。在早期开发出来的产品没有任何的实用价值,只是作为下一步开发的一个原型。这些原型仅仅是用来满足、核对用户关键需求所走的一个捷径。可是如果其中缩减了文档的书写和对软件的测试,那么就有必要将这些将这个原型抛弃并从下一个阶段开始重新设计。因为一个缺乏质量的原形不可能给下一步的开发打下一个好基础。1软件开发生命周期思想概述软件工程是指导计算机软件开发和维护的工程学科,采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验证明正确的原理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。软件工程借助工程的理论来指导软件开发,大量软件开发实例证明了采用软件工程方法进行开发,可以消除或缓解软件危机,提高软件开发的成功率和生产率。111“生命周期法“的起源人类解决复杂问题时普遍采用的一个策略是“各个击破“,也就是对问题进行分解,然后再分别解决各个子问题的策略软件工程采用的“生命周期法“,就是从时间角度对软件开发和维护的复杂问题进行分解,把软件生存的漫长周期依次划分为若干个阶段,每个阶段有相对独立的任务,然后再逐步完成每个阶段的任务12生命周期划分的原则各阶段的任务彼此间尽可能相对独立,同一个阶段各项任务的性质尽可能相同,从而降低每个阶段任务的复杂性,简化不同阶段之间的联系,有利于软件开发过程的组织管理13生命周期的划分软件生命周期一般分为软件定义问题定义,可行性研究,需求分析,软件开发总体设计,详细设计,编码和单元测试,综合测试,软件使用与维护等三个时期214生命周期法的特点1阶段具有顺序性和依赖性2推迟实现的观点3质量保证的观点4每个阶段都必须完成规定的文档5每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误。2软件开发生命周期概述21可行性分析根据输入数据与期望输出分析项目需求,输入值输出转换处理,成本效益分析以及项目的安排。可行性分析还包括根据可使用的软件工程、硬件和软件技术人员,分析项目技术的可行性。在这个项目结束时将创建整个项目的可行性报告。22需求分析与说明主要集中于描述系统目的。需求提出和分析仅仅集中在使用者对系统的观点上。开发人员和用户确定一个问题领域,并定义一个描述该问题的系统。这样的定义称作系统规格说明,并且它在用户和开发人员之间充当合同。在问题分析阶段分析人员的主要任务是对用户的需求进行鉴别、综合和建模,清除用户需求的模糊性、歧义性和不一致性,分析系统的数据要求,为原始问题及目标软件建立逻辑模型。分析人员要将对原始问题的理解与软件开发经验结合起来,以便发现哪些要求是由于用户的片面性或短期行为所导致的不合理要求,哪些是用户尚未提出但具有真正价值的潜在需求。3在需求评审阶段,分析人员要在用户和软件设计人员的配合下对自己生成的需求规格说明和初步的用户手册进行复核,以确保软件需求的完整、准确、清晰、具体,并使用户和软件设计人员对需求规格说明和初步的用户手册的理解达成一致。一旦发现遗漏或模糊点,必须尽快更正,再行检查。软件需求分析所要做的工作是深入描述软件的功能和性能,确定软件设计的限制和软件同其它系统元素的接口细节,定义软件的其它有效性需求。进行需求分析时,应注意一切信息与需求都是站在用户的角度上。尽量避免分析员的主观想象,并尽量将分析进度提交给用户。在不进行直接指导的前提下,让用户进行检查与评价。从而达到需求分析的准确性。分析员通过需求分析,逐步细化对软件的要求,描述软件要处理的数据域,并给软件开发提供一种可转化为数据设计、结构设计和过程设计的数据和功能表示。在软件完成后,制定的软件规格说明还要为评价软件质量提供依据。4软件设计1设计应该展现层次结构使得软件各部分之间的控制更明智。2设计应当模块化;这就是说,软件应在逻辑上分割为实现特定的功能和子功能的部分。3设计应当由清晰且可分离的数据和过程表达来构成。4设计应使得模块展现独立的功能特性。5设计应使得界面能降低模块之间及其与外部环境的连接复杂性。6设计应源自于软件需求分析期间获得的信息所定之可重复方法的使用。要拥有良好的设计特征不是靠碰运气,而在设计过程中通过综合运用基础设计原理、系统方法论、彻底的评定回顾可以有助于良好的设计。软件设计方法每天都在进化,作为已经经过测试和细化的方法,良好的设计应具有以下的四种特性,并在所有这些特性之间保持一致。523程序编码程序编码是将上一阶段的详细设计得到的处理过程的描述转换为基于某种计算机语言的程序,即源程序代码。包括将涉及文档中确定的设计,实现成为可执行的编程语言代码。编码阶段将输出软件的源代码,用作测试与维护简短的输入。24软件测试工程师理解产品的功能要求,并对其进行测试,检查软件有没有错误,决定软件是否具有稳定性,写出相应的测试规范和测试用例的专门工作人员。简而言之,软件测试工程师在一家软件企业中担当的是“质量管理”角色,及时纠错及时更正,确保产品的正常运作。据介绍,按其级别和职位的不同,软件测试工程师可分为初级软件测试工程师、中级软件测试工程师、高级软件测试工程师三类。初级软件测试工程师通常都是按照软件测试方案和流程对产品进行功能测验,检察产品是否有缺陷;中级软件测试工程师则编写软件测试方案、测试文档,与项目组一起制定软件测试阶段的工作计划,能够在项目运行中合理利用测试工具完成测试任务;而高级软件测试工程师则要熟练掌握软件测试与开发技术,且对所测试软件对口行业非常了解,能够对可能出现的问题进行分析评估。据了解,软件测试人员必须具有创新性和综合分析能力,必须具备判断准确、追求完美、执着认真、善于合作的品质,以及具有丰富的编程经验与查检故障的能力。使用人工或者自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。1测试应该尽早进行,最好在需求阶段就开始介入,因为最严重的错误不外乎是系统不能满足用户的需求。2程序员应该避免检查自己的程序,软件测试应该由第三方来负责。3设计测试用例时应考虑到合法的输入和不合法的输入以及各种边界条件,特殊情况下不要制造极端状态和意外状态。4应该充分注意测试中的群集现象。65对策就错误结果进行地一个确认过程。一般由A测试出来的错误,一定要由B来确认。严重的错误可以召开评审会议进行讨论和分析,对测试结果要进行严格的确认,是否真的存在这个问题以及严重程度等。6制定严格的测试计划。一定要制定测试计划,并且要有指导性。测试时间安排尽量宽松,不要希望在极短的时间内完成也有一个高水平的测试。7妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。软件测试主要工作内容是验证和确认,下面分别给出其概念验证是保证软件正确地实现了一些特定功能的一系列活动,即保证软件以正确的方式来做了这个事件1确定软件生命周期中的一个给定阶段的产品是否达到前阶段确立的需求的过程2程序正确性的形式证明,即采用形式理论证明程序符合设计规约规定的过程3评市、审查、测试、检查、审计等各类活动,或对某些项处理、服务或文件等是否和规定的需求相一致进行判断和提出报告。确认是一系列的活动和过程,目的是想证实在一个给定的外部环境中软件的逻辑正确性。即保证软件做了你所期望的事情。1静态确认,不在计算机上实际执行程序,通过人工或程序分析来证明软件的正确性2动态确认,通过执行程序做分析,测试程序的动态行为,以证实软件是否存在问题。软件测试的对象不仅仅是程序测试,软件测试应该包括整个软件开发期间各个阶段所产生的文档,如需求规格说明、概要设计文档、详细设计文档,当然软件测试的主要对象还是源程序。725运行维护对软件的研制(分析、设计、编码和测试)工作并交付使用以后,对软件产品所进行的一些软件工程的活动。即根据软件运行的情况,对软件进行适当修改,以适应新的要求,以及纠正运行中发现的错误。编写软件问题报告、软件修改报告。一个中等规模的软件,如果研制阶段需要一年至二年的时间,在它投入使用以后,其运行或工作时间可能持续五年至十年。那么它的维护阶段也是运行的这五年至十年期间。在这段时间,人们几乎需要着手解决研制阶段所遇到的各种问题,同时还要解决某些维护工作本身特有的问题。做好软件维护工作,不仅能排除障碍,使软件能正常工作,而且还可以使它扩展功能,提高性能,为用户带来明显的经济效益。然而遗憾的是,对软件维护工作的重视往往远不如对软件研制工作的重视。而事实上,和软件研制工作相比,软件维护的工作量和成本都要大得多。在实际开发过程中,软件开发并不是从第一步进行到最后一步,而是在任何阶段,在进入下一阶段前一般都有一步或几步的回溯。在测试过程中的问题可能要求修改设计,用户可能会提出一些需要来修改需求说明书等。83软件测试概述软件测试的发展历史20世纪60年代(软件工程建立前),为表明程序正确而进行测试。1972年在北卡罗来纳大学举行了首届软件测试正式会议。1975年JOHNGOODENOUGH和SUSANGERHART在IEEE上发表了测试数据选择的原理的文章,软件测试被确定为一种研究方向。1979年,GLENFORDMYERS的软件测试艺术,对测试做了定义测试是为发现错误而执行的一个程序或者系统的过程。软件测试使用人工或者自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。它是帮助识别开发完成的计算机软件的正确度,完全度,和质量的软件过程软件开发过程、开发技术水平、软件测试等多方面进行保障。而软件测试又是保障软件质量的最重要的手段之一。软件可靠性测试是软件开发过程中的一个环节,软件可靠性测试的目的是对软件的可靠性进行验证。是软件生命周期的一个重要阶段和关键步骤。通过排除软件测试中发现的错误和缺陷。随着软件规模的不断扩大,软件功能的不断增加,软件测试的难度进一步提高,软件产品的可靠性也更加难以度量。由于目前在软件可靠性方面还没有建立起权威性的管理体系和规范,建立的许多软件可靠性模型在一定程度上描述了软件可靠性,但均存在局限性,至今尚无哪一个模型能够适合广泛的应用。因此从事软件可靠性测试与评估研究是一个具有理论价值和实际意义的工作。94软件测试生命周期概述41软件测试过程软件测试指为了发现错误而执行程序的过程。它是根据软件开发各阶段的规格说明和程序的内部结构精心设计一批测试用例,用这些测试用例去执行程序,以发现程序错误的过程。软件测试追求的是通过系统的测试方法,发现软件中的错误。软件测试是软件开发过程中一个非常重要的阶段。其目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定。静态分析静态分析的基本特征是在对软件进行分析、审查和测试时不实际运行被测程序。而是采用其它手段达到检测的目的。由专用的软件测试工具评审软件文档或程序,度量程序静态复杂度,检查软件是否符合编程标准,借以发现编写的程序的不足之处,减少错误出现的概率。静态分析是对被测程序进行特性分析的一些方法的总称。这些方法本身各有自己的目标和步骤。比如,有的是要收集一些程序信息,以利于查找程序中的各种欠缺和可疑的程序构造有的只是从程序中提出语义的或结构要点,供进一步分析。静态分析只是对代码进行扫描分析,检测它的语法规则等是否规范,以发现程序的不足之处。它主要是为软件的质量保证提供依据,以提高软件的可靠性和易维护性。10静态分析包含对软件开发过程中的软件需求、设计和编码所生成的文档的检验。1需求分析阶段检验需求分析文档与用户要求是否一致检验所有参加项目人员对需求分析文档和用户要求的理解是否正确。2设计阶段检验设计概要设计和详细设计是否与需求分析文档一致;设计的结构化程序及每个模块是否合理;检验每个模块是否符合系统规范要求;检验模块与系统间的组合,特别重要的输入及边界条件下的组合。3编码阶段逐行地阅读、校验书面程序是否正确,以便发现代码中的错误,及对计算机环境规范方面的差错。411动态测试“动态测试”也就是要经过程序运行测试用例而进行的测试,所以动态测试常称“程序测试”。程序测试通常有“黑盒测试”和“白盒测试”之分。如果软件产品具备的功能已经知道,测试软件产品的每一个功能是否达到了预期的要求,这种测试称为黑盒测试;如果知道软件程序的内部活动方式,测试程序内部活动是否符合设计要求,这种测试称为“白盒测试”。黑盒测试BLACKBOXTESTING又称功能测试,数据驱动测试或基于规格说明的测试。在进行黑盒测试时,仅把软件当作一个黑盒,只需知道程序输出和输入之间的关系或者程序的功能。因此,黑盒测试是从用户的观点出发的测试。它是从软件需求出发,根据软件需求规格说明设计测试用例,并根据测试用例的要求运行被测程序的测试方法。它较少关心程序内部的实现过程,侧重于程序的执行结果,将被测程序看成是不可见的黑盒子,因此被称为黑盒测试。黑盒测试着重于验证软件功能和性能的正确性,其典型测试项目包括功能测试、性能测试、边界测试、强度测试等。白盒测试WHITEBOXTESTING又称结构测试,逻辑驱动测试或基于程序的测试。采用这一测试方法,测试者必须看到被测的源程序,分析程序的内部结构,并根据其内部构造设计测试用例。白盒测试是一种按照程序内部的逻辑结构和编码结构设计并执行测试用例的测试方法。采用这种测试方法,测试者需要掌握被测程序的内部结构。白盒测试通常根据覆盖准则设计测试用例,使程序中的每个语句、每个条件分支、每个控制路径都在程序测试中受到检验。白盒测试需要运行程序,并能在运行过程中跟踪程序的执行路径。黑盒测试是以用户的角度来看待软件的质量,从输入数据与输出数据的对应关系,也就是根据程序外部表现特性进行的测试,而不考虑程序内部的逻辑结构和工作状况。黑盒测试技术依赖软件的规格说明书,假设软件的规格说明书是正确的,通过划分程序的输入和输出域来确定测试用例。如果软件规格说明的规定有误,用黑盒测试方法是发现不了的。反之,白盒测试只根据程序的内部结构进行测试,测试用例的设计要保证测试时程序的所有语句至少执行一次,而且要检查所有的逻辑条件。如果程序结构本身有问题,比如说程序逻辑有错误,或是有遗漏,那就无法发现。黑盒测试和白盒测试各自有各自得优缺点,相互之间构成互补关系,在规划测试时需要把黑盒测试与白盒测试结合起来。11软件测试过程软件测试过程,可分为五个步骤单元测试、子系统测试、系统测试、验收测试和平行运行。单元测试在设计好的软件系统中,每个模块完成一个清晰定义的子功能,而且每个模块又是相对独立的。因此,每个模块可以作为一个单独的测试单元,而且也比较容易设计测试用例。单元测试的目的,是保证每个模块作为一个单元能正确运行。在这个测试中所发现的错误,往往是编码和详细设计的错误。集成测试把软件单元逐步组装成一个计算机软件配置项的过程叫“软件集成“。把软件逐步组装,同时一并进行测试,直到整个系统成为一体的有序进行的测试叫“集成测试”,也叫“计算机软件部件测试”、“组装测试”或“综合测试”。确认测试集成测试完成后,软件接口缺陷已经发现并纠正,这时可以对软件进行确认测试。确认测试是通过黑盒测试来验证软件功能及性能与要求规范是否一致。当发现与需求规范有差别,要列出一个缺陷表。系统测试将已经集成好的软件系统,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行使用环境下,对计算机系统进行一系列的组装测试和确认测试。系统测试的目的在于通过与系统的需求定义做比较,发现软件与系统定义不符合或与之矛盾的地方,以验证软件系统的功能和性能等满足其规约所指定的要求。系统测试的测试用例应根据需求分析说明书来设计,并在实际使用环境下来进行。121验证是保证软件正确地实现了一些特定功能的一系列活动,即保证软件做了你所期望的事情。2确定软件生存周期中的一个给定阶段的产品是否达到前阶段确立的需求的过程;3程序正确性的形式证明,即采用形式理论证明程序符号设计规约规定的过程;4评市、审查、测试、检查、审计等各类活动,或对某些项处理、服务或文件等是否和规定的需求相一致进行判断和提出报告。确认是一系列的活动和过程,目的是想证实在一个给定的外部环境中软件的逻辑正确性。即保证软件以正确的方式来做了这个事件。1静态确认,不在计算机上实际执行程序,通过人工或程序分析来证明软件的正确性;2动态确认,通过执行程序做分析,测试程序的动态行为,以证实软件是否存在问题。软件测试的对象不仅仅是程序测试,软件测试应该包括整个软件开发期问各个阶段所产生的文档,如需求规格说明、概要设计文档、详细设计文档,当然软件测试的主要对象还是源程序。42软件可靠性测试421软件可靠性定义软件可靠性是软件质量因素中最基本、最重要的因素。1983年,IEEE计算机学会对“软件可靠性”这一术语作了专门的定义在规定的条件下,在规定的时间内,软件不引起系统失效的概率,该概率是系统输入和输出的函数,也是软件中存在的缺陷的函数;系统输入将确定是否会遇到已存在的错误如果错误存在的话在规定的时间周期内,在规定的条件下程序执行所要求的功能的能力。根据定义,软件可靠性包含了以下3个要素规定的时间、规定的条件、所要求的功能。规定的时间软件可靠性只是体现在其运行阶段,所以将“运行时间”作为“规定时间“的度量。“运行时间”包括软件系统运行后工作与挂起开启但空闲的累计时间。由于软件运行的环境与程序路径选取的随机性,软件的失效为随机事件,所以运行时间属于随机变量。规定的条件条件指软件的运行环境。它涉及软件系统运行时所需的各种支持要素,如支持硬件、操作系统、其他支持软件、输入数据格式和范围以及操作规程等。不同的环境条件下软件的可靠性是不同的。具体地说,规定的环境条件主要是描述软件系统运行时计算机的配置情况以及对输入数据的要求,并假定其他一切因素都是理想的。有了明确规定的环境条件,还可以有效判断软件失效的责任在用户方还是研制方。所要求的功能软件可靠性还与规定的任务和功能有关。由于要完成的任务不同,软件的运行剖面会有所区别,则调用的子模块就不同即程序路径选择不同,其可靠性也就可能不同。所以要准确度量软件系统的可靠性必须首先明确它的任务和功能。13软件可靠性度量软件可靠性度量是指对软件产品具有可靠性程度的定量评价。软件可靠性度量参数是描述软件可靠性的依据,确定其指标要求是评估软件可靠性的必要步骤,一般的软件可靠性参数有可靠度是指软件在规定的条件下、规定的时间段内完成预定的功能的概率。或者说是软件在规定时间内无失效发生的概率。该参数是关于软件失效行为的概率描述,是软件可靠性的基本定义。失效概率失效概率是失效时间少于或等于T的概率。失效强度失效强度是失效概率的密度函数。失效率失效率是指在T时刻尚未发生失效的条件下,在T时刻后单位时间内发生失效的概率。失效率是失效概率FT的条件概率密度,又称条件失效强度。平均失效时间平均失效时间次失效时间的均值。平均失效间隔时间平均失效间隔时间是指2次相邻失效时间间隔的均值。412软件可靠性测试定义软件可靠性测试是指在预期的使用环境中,为检出软件缺陷,验证和评估是否达到用户对软件可靠性需求而组织实施的一种软件测试。软件可靠性测试是面向故障的测试,每一次测试均代表用户将要完成的一组操作,使得测试成为最终软件产品运行的预演。软件可靠性测试包括可靠性增长测试和可靠性验证测试。可靠性增长测试和可靠性验证测试从不同的角度理解、分析和处理故障数据。在可靠性增长测试中,测试以迭代方式进行,根据测试过程中所检出和跟踪到的故障,使用基于软件可靠性增长模型和统计推理的可靠性评估方法进行故障强度估计和测试进展跟踪。可靠性验证测试是软件产品发放前进行的最后测试,它是最终检验而不是调试。可靠性验证测试的目标是确定一个软件产品在风险限度之内的可接收程度。软件可靠性测试是在预期的使用环境中或仿真环境下,按照运行剖面组织实施的测试。在使用中发生概率高的缺陷通常最先得以暴露,而实际高发生概率的缺陷即是影响软件可靠性的主要缺陷,排除这些缺陷可以有效地实现可靠性增长,提高软件可靠性。软件可靠性测试过程中,可以根据用户给定的可靠性要求确定测试方案,生成测试用例,进行可靠性验证测试。软件可靠性测试及其失效数据分析,不仅可以验证软件可靠性是否满足给定需求,跟踪软件可靠性的增长情况,指导软件测试和交付,而且可以预测未来可能达到的可靠性水平,从而为软件开发及其管理提供决策依据。软件可靠性测试是指为了保证和验证软件的可靠性要求而对软件进行的测试。其采用的是按照软件运行剖面对软件实际使用情况的统计规律的描述对软件进行随机测试的测试方法。通过软件可靠性测试可以达到以下目的1有效地发现程序中影响软件可靠性的缺陷,从而实现可靠性增长软件可靠性是指“在规定的时间内,规定的条件下,软件不引起系统失效的能力,其概率度量称为软件可靠度。软件的“规定的条件”主要包括相对不变的条件和相对变化的条件,相对不变的条件如计算机及其操作系统相对变化的条件是指输入的分布,用软件的运行剖面来描述。按照软件的运行剖面对软件进行测试一般先暴露在使用中发生概率高的缺陷,然后是发生概率低的缺陷。而高发生概率的缺陷是影响产品可靠性的主要缺陷,通过排除这些缺陷可以有效地实现软件可靠性的增长。2验证软件可靠性满足一定的要求通过对软件可靠性测试中观测到的失效情况进行分析,可以验证软件可靠性的定量要求是否得到满足。3估计、预计软件可靠性水平通过对软件可靠性测试中观测到的失效数据进行分析,可以评估当前软件可靠性的水平,预测未来可能达到的水平,从而为开发管理提供决策依据。软件可靠性测试中暴露的缺陷既可以是影响功能需求的缺陷也可以是影响性能需求的缺陷。软件可靠性测试方法从概念上讲是一种黑盒测试方法,因为它是面向需求、面向使用的测试,它不需要了解程序的结构以及如何实现等问题。14413软件可靠性测过程软件可靠性测试活动包括测试数据、测试环境的准备、测试运行、可靠性数据收集、可靠性数据分析和失效纠正。1构造运行剖面软件的运行剖面“是指对系统使用条件的定义。即系统的输入值用其按时间的分布或按它们在可能输入范围内的出现概率的分布来定义”。粗略地说,运行剖面是用来描述软件的实际使用情况的。运行剖面是否能代表、刻画软件的实际使用取决于可靠性工程人员对软件的系统模式、功能、任务需求及相应的输入激励的分析,取决于他们对用户使用这些系统模式、功能、任务的概率的了解。运行剖面构造的质量将对测试、分析的结果是否可信产生最直接的影响。2选取测试用例软件可靠性测试采用的是按照运行剖面对软件进行可靠性测试的方法。因此,可靠性测试所用的测试用例是根据运行剖面随机选取得到的。3测试环境的准备为了得到尽可能真实的可靠性测试结果,可靠性测试应尽量在真实的环境下进行,但是在许多情况下,在真实的环境下进行软件的可靠性测试很不实际,因此需要开发软件可靠性仿真测试环境。比如,对于多数嵌入式软件,由于与之交联的环境的开发常常与软件的开发是同步甚至是滞后的,因此无法及时进行软件可靠性测试有些系统中,由于交联的环境非常昂贵而无法用于需要进行大量运行的可靠性测试。4可靠性测试运行即在真实的测试环境中或可靠性仿真测试环境中,用按照运行剖面生成的测试用例对软件进行测试。5数据收集收集的数据包括软件的输入数据、输出结果,以便进行失效分析和进行回归测试软件运行时间数据,可以是CPU执行时间、日历时间、时钟时间等可靠性失效数据包括每次失效发生的时间或一段时间内发生的失效数,失效数据可以实时分析得到,也可以事后分析得到。数据收集的质量对于最终的可靠性分析结果有着很大的影响,应尽可能采用自动化手段进行数据的收集,以提高效率、准确性和完整性。6数据分析主要包括失效分析和可靠性分析。失效分析是根据运行结果判断软件是否失效,以及失效的后果、原因等而可靠性分析主要是指根据失效数据,估计软件的可靠性水平,预计可能达到的水平,评价产品是否已经达到要求的可靠性水平。为管理决策提供依据。7失效纠正如果软件的运行结果与需求不一致,则称软件发生失效。通过失效分析,找到并纠正引起失效的程序中的缺陷,从而实现软件可靠性的增长。软件可靠性增长测试是为了满足用户对软件的可靠性要求、提高软件可靠性水平而对软件进行的测试。是为了满足软件的可靠性指标要求,对软件进行测试一可靠性分析一修改一再测试再分析一再修改的循环过程。15结论软件开发是一项系统工程,需要各类人员的积极参与合作。用户、系统分析员、程序员、开发管理人员在整个软件开发过程中都起到举足轻重的作用。因此,软件工程原理在软件开发中的运用是必须的,也是必然的。我们要在软件开发中引进软件工程的一些思想,并结合软件自身的特点,以此提高软件开发效率,保证软件质量。从软件测试和软件可靠性理论入手,对现有的软件可靠性技术进行了系统的研究。总结出现有可靠性模型的特点并分析出现有可靠性模型所存在的局限性与不足。在对已有的软

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论