软件工程专业论文_第1页
软件工程专业论文_第2页
软件工程专业论文_第3页
软件工程专业论文_第4页
软件工程专业论文_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、.PAGE . 软件工程专业毕业论文 软件测试的概述及方法 摘要:从软件产业的开展初期到目前的大型软件开发过程,软件测试已成为其中一个不可分割的局部。随着软件规模的日益增大,软件测试问题也日益突出,现代社会对软件的依赖越来越强,高可信软件测试有着广泛的需求,基于缺陷模式的软件测试技术作为高可信软件的重要保证,可以大大降低软件的缺陷密度,提高软件的可信性。本文从测试的根本概念入手,深入剖析软件测试相关理论,软件测试在开展的几十年里面,逐渐形成了一些被广泛承受和应用的测试模型。选取了几个有代表性的测试模型进展阐述,其中V模型是最为被认可和广泛应用的,V模型最早提出测试并不是一个事后弥补行为,而是一

2、个同开发过程同样重要的过程。w模型是V模型的改良型,还属于V模型的畴,为了解决V模型的问题,*模型和H模型提出测试应该在准备好后马上进展,与开发反复迭代进展,并指出软件测试不仅仅指测试的执行过程本身,还应该包括测试准备活动。随着软件测试研究的进展,软件测试提出了一些比拟前沿的理论,如测试驱动开发理论提出先有测试,再写代码,以不断的测试推动代码的开发,既简化了代码,又保证了软件质量。自动化测试要求以各种自动化的测试工具取代测试人员进展一些重复的、机械的工作,它可以有效地提高测试效率,提高软件的被信任程度。探索性测试认为不必非要有设计好的测试用例,就可以进展一些灵感突发式的测试,探索性测试可以应用

3、在一些特定场合,与传统的测试相辅相成。面向对象的软件测试针对面向对象的几个新特点,提出了不同的测试方法。基于模型的测试是利用模型来生成相应的测试用例,然后根据实际结果和原先预想的结果的差异来测试系统。关键字:软件测试、白盒测试、黑盒测试、类测试 目 录1 软件测试的开展史4 2软件测试的相关背景53 软件测试概述6 3.1软件测试的定义6 3.2软件测试的描述6 3.3软件测试的目的7 3.4软件测试的原则84 软件测试的容9 4.1验证(verification)9 4.2确认(validation)95 软件测试的分类105.1常用分类10 PAGEREF _Toc506360272 h

4、5.2黑盒测试10 5.3白盒测试115.4静态测试14 5.5动态测试156 软件测试中的类测试15 6.1面向对象软件的类测试概念156.2.类测试技术167 参考文献178 致181软件测试的开展史软件测试的开展历史:20世纪60年代软件工程建立前,为说明程序正确而进展测试。. 1972年在北卡罗来纳大学举行了首届软件测试正式会议。. 1975年John Good Enough和Susan Gerhart在IEEE上发表了测试数据选择的原理的文章,软件测试被确定为一种研究方向。. 1979年,Glenford Myers的软件测试艺术,对测试做了定义:测试是为发现错误而执行的一个程序或者

5、系统的过程。. 20世纪80年代早期,质量的号角开场吹响。软件测试定义发生了改变,测试不单纯是一个发现错误的过程,而且包含软件质量评价的容。制定了各类标准。. 1983年,Bill Hetzel在软件测试完全指南中指出:测试是以评价一个程序或者系统属性为目标的任何一种活动,测试是对软件质量的度量。. 20世纪90年代,测试工具盛行起来。. 1996年提出的测试能力成熟度TCMMTesting Capability Maturity Model、测试支持度TSMTestability Support Model、测试成熟度TMMTesting Maturity Model。. 到了2002年,R

6、ick和Stefan在系统的软件测试一书中对软件测试做了进一步定义:测试是为了度量和提高被测软件的质量,对测试软件进展工程设计、实施和维护的整个生命过程。 2软件测试的相关背景相关背景:前段时间, 就是在我没有认真了解测试行业之前, 可能由于测试在中国的重视程度的问题, 我也一直认为测试应该是不重要的, 甚至认为有必要有专门的测试职业吗?认为软件主要是开发人员的事, 软件的成果也是由开发人员决定的, 当我在参加工作后, 真正从学校的学习环境中走上实际运用开发的时候, 事实上真的不是则一回事哦。软件无处不在, 软而, 软件是人编的所以不完美。臭名昭著的软件测试案例:1、迪士尼的狮子王199419

7、95软件在少数系统中能正常工作, 但在群众使用的常见系统中不行。后来证实, 迪士尼公司没有对市场上投入实用的各种pc机型进展正确的测试。2、英特尔奔腾浮点除法软件缺陷1994英特尔为自己处理软件缺陷拿出4亿美元支付更换坏芯片的费用。导致付出如此昂贵的代价, 其主要原因是发现了软件缺陷没有正确的处理。3、美国航天局火星极地登陆1999该工程使用前有经过测试, 两个测试小组双方独立工作都很好, 但从未走在一起。4、爱国者导弹防御系统1991一枚导弹在多哈击毙28名美国士兵, 症结在于一个软件缺陷:一个很小的系统时钟错误累积起来就可能拖延14小时, 造成跟踪系统失去准确度。在多哈袭击战中系统被拖延1

8、00小时。5、千年虫大约1974估计世界各地更换或升级该系统程序解决原有2000年错误的费用已经超过数亿美元。 3软件测试的概述3.1软件测试的定义软件测试使用人工或者自动手段来运行或测试*个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差异。它是帮助识别开发完成中间或最终的版本的计算机软件整体或局部的正确度(correctness) 完全度(pleteness)和质量(quality)的软件过程;是SQA(software quality assurance)的重要子域。(1)测试并不仅仅是为了找出错误.通过分析错误产生的原因和错误的发生趋势,可以帮助工程管理者

9、发现当前软件开发过程中的缺陷,以便及时改良; (2)这种分析也能帮助测试人员设计出有针对性的测试方法,改善测试的效率和有效性; (3)没有发现错误的测试也是有价值的,完整的测试是评定软件质量的一种方法。3.2软件测试的描述测试是软件开发过程的重要组成局部, 是用来确认一个程序的品质或性能是否符合开发之前所提出的一些要求。软件测试的目的, 第一是确认软件的质量, 其一方面是确认软件做了你所期望的事情Do the right thing, 另一方面是确认软件以正确的方式来做了这个事件Do it right;第二是提供信息, 比方提供应开发人员或程序经理的反应信息, 为风险评估所准备的信息;第三软件

10、测试不仅是在测试软件产品的本身, 而且还包括软件开发的过程。如果一个软件产品开发完成之后发现了很多问题, 这说明此软件开发过程很可能是有缺陷的。3.3软件测试的目的如果测试的目的是为了尽可能多地找出错误,则测试就应该直接针对软件比拟复杂的局部或是以前出错比拟多的位置。如果测试目的是为了给最终用户提供具有一定可信度的质量评价,则测试就应该直接针对在实际应用中会经常用到的商业假设。 在谈到软件测试时,引用Grenford J. Myers在The Art of Software Testing一书中的观点: (1)软件测试是为了发现错误而执行程序的过程; (2)测试是为了证明程序有错,而不是证明程

11、序无错误; (3)一个好的测试用例是在于它能发现至今未发现的错误; (4)一个成功的测试是发现了至今未发现的错误的测试。 这种观点可以提醒人们测试要以查找错误为中心,而不是为了演示软件的正确功能。但是仅凭字面意思理解这一观点可能会产生误导,认为发现错误是软件测试的唯一目,查找不出错误的测试就是没有价值的,事实并非如此。 首先,测试并不仅仅是为了要找出错误。通过分析错误产生的原因和错误的分布特征,可以帮助工程管理者发现当前所采用的软件过程的缺陷,以便改良。同时,这种分析也能帮助我们设计出有针对性地检测方法,改善测试的有效性。其次,没有发现错误的测试也是有价值的,完整的测试是评定测试质量的一种方法

12、。3.4软件测试的原则1应当把尽早和不断的测试作为开发者的座右铭。 2程序员应该防止检查自己的程序, 测试工作应该由独立的专业的软件测试机构来完成。 3设计测试用例时应该考虑到合法的输入和不合法的输入以及各种边界条件, 特殊情况下要制造极端状态和意外状态, 比方网络异常中断、电源断电等情况。 4一定要注意测试中的错误集中发生现象, 这和程序员的编程水平和习惯有很大的关系。 5对测试错误结果一定要有一个确认的过程, 一般有A测试出来的错误, 一定要有一个B来确认, 严重的错误可以召开评审会进展讨论和分析。 6制定严格的测试方案, 并把测试时间安排的尽量宽松, 不要希望在极短的时间完成一个高水平的

13、测试。 7回归测试的关联性一定要引起充分的注意, 修改一个错误而引起更多的错误出现的现象并不少见。 8妥善保存一切测试过程文档, 意义是不言而喻的, 测试的重现性往往要靠测试文档4软件测试的容4.1验证(verification)验证(verification)是保证软件正确地实现了一些特定功能的一系列活动, 即保证软件做了你所期望的事情。(Do the right thing) 1.确定软件生存周期中的一个给定阶段的产品是否到达前阶段确立的需求的过程;2.程序正确性的形式证明, 即采用形式理论证明程序符号设计规约规定的过程;3.评市、审查、测试、检查、审计等各类活动, 或对*些项处理、效劳或

14、文件等是否和规定的需求相一致进展判断和提出报告。4.2确认(validation)确认(validation)是一系列的活动和过程, 目的是想证实在一个给定的外部环境中软件的逻辑正确性。即保证软件以正确的方式来做了这个事件(Do it right)1.静态确认, 不在计算机上实际执行程序, 通过人工或程序分析来证明软件的正确性;2.动态确认, 通过执行程序做分析, 测试程序的动态行为, 以证实软件是否存在问题。软件测试的对象不仅仅是程序测试, 软件测试应该包括整个软件开发期问各个阶段所产生的文档, 如需求规格说明、概要设计文档、详细设计文档, 当然软件测试的主要对象还是源程序。 5软件测试的分

15、类5.1常用分类从是否需要执行被测软件的角度, 可分为: 静态测试 和动态测试 从测试是否针对系统的部构造和具体实现算法的角度来看, 可分为 : 白盒测试 和黑盒测试5.2黑盒测试黑盒测试指的是把被测软件看作是一个黑盒子, 我们不去关心盒子里面的构造是什么样子, 只关心软件的输入数据和输出结果。黑盒测试方法是在程序接口上进展测试, 主要是为了发现以下错误: 是否有不正确或遗漏了的功能 在接口上, 输入能否正确地承受 能否输出正确的结果 是否有数据构造错误或外部信息(例如数据文件)访问错误 性能上是否能够满足要求 是否有初始化或终止性错误 用黑盒测试发现程序中的错误, 必须在所有可能的输入条件和

16、输出条件中确定测试数据, 来检查程序是否都能产生正确的输出。 但这是不可能的。n假设一个程序P有输入量*和Y及输出量Z。在字长为32位的计算机上运行。假设*、Y取整数, 按黑盒方法进展穷举测试:n可能采用的 测试数据组: 232232 264 n如果测试一组数据需要1毫秒, 一年工作365 24小时, 完成所有测试需5亿年。黑盒测试的测试用例设计等价划分法边界值法错误推测法因果图法5.3白盒测试白盒测试指的是把盒子盖翻开, 去研究里面的源代码和程序构造。白盒测试也称构造测试或逻辑驱动测试, 它是知道产品部工作过程, 可通过测试来检测产品部动作是否按照规格说明书的规定正常进展, 按照程序部的构造

17、测试程序, 检验程序中的每条通路是否都有能按预定要求正确工作, 而不顾它的功能。 使用被测单元部如何工作的信息, 允许测试人员对程序部逻辑构造及有关信息来设计和选择测试用例, 对程序的逻辑路径进展测试。基于一个应用代码的部逻辑知识, 测试是基于覆盖全部代码、分支、路径、条件。 白盒测试的主要方法: 逻辑驱动测试 根本路径测试 主要用于软件验证。 使用程序设计的控制构造导出测试用例。 逻辑驱动测试:主要是测试覆盖率, 以程序在逻辑构造为根底的测试。包括以下6种类型: 语句覆盖 判断覆盖 条件覆盖 判定-条件覆盖 条件组合覆盖 路径覆盖 白盒测试的主要目的 保证一个模块中的所有独立路径至少被执行一

18、次; 对所有的逻辑值均需要测试真、假两个分支; 在上下边界及可操作围运行所有循环;检查部数据构造以确保其有效性 白盒测试的实施方案 在开发阶段要保证产品的质量, 产品的生产过程应该遵循一定的行业标准。软件产品也是同样, 没有标准可依自然谈不上质量的好坏。所有关心软件开发质量的组织、单位, 都要定义或了解软件的质量标准、模型。其好处是保证公司实践的均匀性, 产品的可维护性、可靠性以及可移植性等。 在测试阶段与软件产品的开发过程一样, 测试过程也需要有一定的准则, 来指导、度量、评价软件测试过程的质量。定义测试准则为控制测试的有效性以及完成程度, 必须定义准则和策略, 以判断何时完毕测试阶段。准则

19、必须是客观的, 可量化的元素, 而不能是经历或感觉。 根据应用的准则和工程相关的约束, 工程领导可以定义使用的度量方法, 和要到达的覆盖率。 度量测试的有效性、完整性对每个测试的测试覆盖信息和累计信息, 用图形方式显示覆盖比率, 并根据测试运行情况实时更新, 随时显示新的测试所反映的测试覆盖情况。允许所有的测试运行依据其有效性进展管理, 用户可以减少不适用于非回归测试的测试的过程。 概念: 1.语句覆盖:语句覆盖就是设计假设干个测试用例, 运行被测试程序, 使得每一条可执行语句至少执行一次; 2.判定覆盖也称为分支覆盖:设计假设干个测试用例, 运行所测程序, 使程序中每个判断的取真分支和取假分

20、支至少执行一次;3.条件覆盖:设计足够多的测试用例, 运行所测程序, 使程序中每个判断的每个条件的每个可能取值至少执行一次; 4.判定-条件覆盖:设计足够多的测试用例, 运行所测程序, 使程序中每个判断的每个条件的所有可能取值至少执行一次, 并且每个可能的判断结果也至少执行一次, 换句话说, 即是要求各个判断的所有可能的条件取值组合至少执行一次; 5.条件组合测试:设计足够多的测试用例, 运行所测程序, 使程序中每个判断的所有可能的条件取值组合至少执行一次; 6.路径测试:设计足够多的测试用例, 运行所测程序, 要覆盖程序中所有可能的路径。5.4静态测试是指不实际运行被测软件, 而只是静态的检

21、查程序代码、界面或文档中可能存在的错误的过程。其中包括代码测试、界面测试和文档测试3个方面。对于代码测试, 主要测试代码是否符合相应的标准和规。对于界面测试, 主要测试软件的实际界面与需求中的说明是否相符。对于文档测试, 主要测试用户手册和需求说明是否符合用户的实际要求。5.5动态测试是指实际运行被测程序, 输入相应的测试数据, 检查实际输出结果和预期结果是否相符的过程。所以, 我们判断一个测试属于动态还是静态测试 , 唯一的标准就是看是否运行程序。 6软件测试中的类测试6.1面向对象软件从宏观上来看是各个类之间的相互作用。在面向对象系统中,系统的根本构造模块是封装了的数据和方法的类和对象,而

22、不再是一个个能完成特定功能的功能模块。每个对象有自己的生存周期,有自己的状态。消息是对象之间相互请求或协作的途径,是外界使用对象方法及获取对象状态的唯一方式。对象的功能是在消息的触发下,由对象所属类中定义的方法与相关对象的合作共同完成,且在不同状态下对消息的响应可能完全不同。对象中的数据和方法是一个有机的整体,测试过程中不能仅仅检查输入数据产生的输出结果是否与预期的吻合,还要考虑对象的状态。模块测试的概念已不适用于对象的测试类测试将是整个测试过程的一个重要步骤。6.2类测试技术 6.2.1基于效劳的类测试技术 基于效劳的类测试主要考察封装在类中的一个方法对数据进展的操作,它可以采用传统的白盒测试方法。为克制软件测试的盲目性和局限性,保证测试的质量,提高软件的可靠性,下

温馨提示

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

评论

0/150

提交评论