软件测试第01章.ppt_第1页
软件测试第01章.ppt_第2页
软件测试第01章.ppt_第3页
软件测试第01章.ppt_第4页
软件测试第01章.ppt_第5页
免费预览已结束,剩余116页可下载查看

下载本文档

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

文档简介

软件测试技术,教材,软件测试佟伟光主编人民邮电出版社,2008-5软件测试(原书第二版):RonPatton著,张小松等译机械工业出版社,2006-4,关于职业,毕业后,你的理想职业是什么?,2007中国软件测试从业人员调查报告,2007中国软件测试从业人员调查报告,2007中国软件测试从业人员调查报告,测试人员与开发人员比例“调研数据显示,2007年软件测试从业人员所在公司测试人员与开发人员的平均比例为1:41:5,与国外软件业1:1相差甚远,表明国内软件测试人才需求和职业发展潜力巨大”。,2007中国软件测试从业人员调查报告,2007中国软件测试从业人员调查报告,2007中国软件测试从业人员调查报告,2007中国软件测试从业人员调查报告,2007中国软件测试从业人员调查报告,2007中国软件测试从业人员调查报告,第1章软件测试概述,1.1软件、软件危机、软件工程1.2软件缺陷与软件故障1.3软件质量与质量模型1.4软件测试1.5软件测试人员的基本素质,软件测试是软件工程的一个重要部分,是确保软件工程质量的重要手段。最近几年来,由于软件工程的复杂度的不断增强,更由于软件的工业化发展趋势,软件测试得到广泛的重视。,软件的四个发展阶段,(1)早期阶段计算机的主要用途是快速计算,软件编程简单,不存在什么系统化的方法,开发没有任何管理,程序的质量完全依赖于程序员个人的技巧。(2)第二阶段多用户系统引入了人机交互的新概念,实时系统需要从多个源收集、处理数据,从而使得进程以毫秒而不是分钟来进行,在线存储的发展产生了第一代数据库管理系统。在这个时期,出现了软件产品和软件作坊的概念,设计人员开发程序是为了用户更好地使用计算机,人们开始采用软件工程的方法来解决软件危机问题。,软件的四个发展阶段,(3)第三阶段分布式系统极大地提高了计算机系统的复杂性,特别是微处理器的出现和广泛应用,孕育了一系列的智能产品。软件开发技术的度量问题受到重视,著名的有软件能力成熟度模型CMM等。(4)第四阶段是强大的桌面系统和计算机网络迅速发展的时期,面向对象技术在许多领域迅速取代了传统软件开发方法,专家系统和人工智能软件终于走出实验室进入了实际应用,虚拟现实和多媒体系统改变了与最终用户的通讯方式,出现了并行计算和网络计算的研究。软件下一个阶段是什么样子?,?,1.1软件、软件危机、软件工程,1.1.1软件、软件危机、软件工程的基本概念1.1.2软件工程的目标及其一般开发过程1.1.3可供选择的软件过程模型,1.1.1软件、软件危机、软件工程的基本概念,计算机软件:是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合软件危机:在计算机软件的开发和维护过程中所遇到的一系列严重问题,软件生产与市场需求出现极不适应的严重现象软件工程:应用计算机科学、数学及管理科学等原理开发软件的工程,软件的特点,软件是逻辑的,而不是物理的产品。软件没有明显的制造过程。软件在运行和使用期间,存在退化问题。,软件产品,硬件产品,软件的特点,大多数软件是自定的,而不是通过已有构件组装而成的。软件成本相当昂贵。IBM360研制人员最多时可达1000多人,耗时四年,费用为5亿美元。Vista耗时近六年,费用60亿美元。软件本身是复杂的。软件比任何其他人类制造的结构更复杂,这使得软件产品难以理解和维护。,软件危机,软件危机爆发于20世纪60年代末期,至今依然困绕着我们,软件危机的具体表现如下:软件开发的进度难以控制,经常出现经费超预算、完成期限一再拖延的现象。软件需求在开发初期不明确,导致矛盾在后期集中暴露,从而对整个开发过程带来灾难性的后果。由于缺乏完整规范的资料,加之软件测试不充分,从而造成软件质量低下,运行中出现大量问题。,软件工程的概念,1983年,IEEE的定义:软件工程是研究和应用如何以系统化的、规范的、可度量的方法去开发、运行和维护软件,即把工程化应用到软件上。,一个软件产品从形成概念开始,经过开发、测试、使用和维护,直到最后退出使用的全过程称为软件生存周期。软件生存周期根据软件所处的状态,以及软件开发活动的目的和任务,可划分为若干个阶段。一般软件生存周期包括软件定义、软件开发、软件测试、软件使用与维护等几个部分。,1.1.2软件工程的目标及其一般开发过程,软件生存周期,软件生存周期是指软件产品从考虑其概念开始到该软件产品交付使用,直至最终退役为止的整个过程,一般包括:计划分析设计实现测试运行与维护,可行性分析的任务是了解用户的要求及实现环境,从技术、经济和社会等几个方面研究并论证软件系统的可行性。需求分析的任务是确定所要开发软件的功能需求、性能需求和运行环境约束,编制软件需求规格说明、软件系统的确认测试准则。软件的性能需求包括软件的适应性、安全性、可靠性、可维护性错误处理等。,1软件定义,软件开发是按照需求规格说明的要求,由抽象到具体,逐步生成软件的过程。软件开发一般由设计、实现和测试等阶段组成。,2软件开发,软件需经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。整个测试过程分单元测试、集成测试、系统测试以及验收测试四个阶段进行。测试的方法主要有白盒测试和黑盒测试。,3软件测试,软件的使用是在软件通过测试后,将软件安装在用户确定的运行环境中移交给用户使用。软件的维护是对软件系统进行修改或对软件需求变化做出反应的过程。,4软件使用和维护,软件开发过程中存在各种复杂因素,为了解决由此而带来的种种问题,软件开发者们经过多年的摸索,给出了多种实现软件工程的方式软件过程模型,如瀑布过程模型、螺旋过程模型和增量过程模型等。,1.1.3可供选择的软件过程模型,瀑布过程模型反映了人们早期对软件工程的认识水平,是人们所熟悉的一种线性思维的体现。瀑布过程模型强调阶段的划分及其顺序性、各阶段工作及其文档的完备性,是一种严格线性的、按阶段顺序的、逐步细化的开发模式,如图1-1所示。,1瀑布过程模型,软件开发模型,大棒模式边写边改模式流水模式(瀑布模式)螺旋过程模式增量过程模式快速原型过程模式,边做边改模型,(Build-and-FixModel)在这种模型中,既没有规格说明,也没有经过设计,软件随着客户的需要一次又一次地不断被修改,如图所示:,图1-1瀑布过程模型,螺旋过程模型的基本思路是,依据前一个版本的结果构造新的版本,这个不断重复迭代的过程形成了一个螺旋上升的路径,如图1-2所示。,2螺旋过程模型,图1-2螺旋过程模型,有些时候可能会用一种几乎连续的过程小幅度地推进项目,这就是增量过程模型,如图1-3所示。,3增量过程模型,图1-3增量过程模型,快速原型过程模型首先是快速进行系统分析,在设计人员和用户的紧密配合下,快速确定软件系统的基本要求,尽快实现一个可运行的、功能简单的原型系统,然后通过对原型系统逐步求精,不断扩充完善得到最终的软件系统。,4快速原型过程模型,1.2软件缺陷与软件故障,1.什么是软件缺陷和软件故障软件缺陷是存在于软件(文档、数据、程序)之中的那些不希望或不可接受的偏差。其结果是软件运行于某一特定条件时出现软件故障,这时称软件缺陷被激活。软件故障是指软件运行过程中出现的一种不希望或不可接受的内部状态,此时若无适当措施(容错)加以及时处理,便产生软件失效。,2.软件缺陷和软件故障案例,1.美国迪斯尼公司狮子王游戏软件兼容性问题2.美国航天局火星登陆事故3.跨世纪“千年虫”问题4.爱国者导弹防御系统5.“冲击波”计算机病毒6.Windows2000中文输入法漏洞7.金山词霸出现的错误,软件缺陷产生的原因,软件缺陷的修复费用,¥1,¥10,¥100,¥1000+,费用,开发阶段,说明书设计编码测试发布,软件复杂性交流不够、交流上有误解或者根本不进行交流程序设计错误需求变化时间压力代码文档贫乏软件开发工具,3.软件产生错误的原因,1.3软件质量与质量模型,软件质量是软件的生命,它直接影响软件的使用与维护。通常软件质量由以下几方面进行评价。,软件需求是衡量软件质量的基础,不符合需求的软件就不具备质量。设计的软件应在功能、性能等方面都符合要求,并能可靠地运行。软件结构良好,易读、易于理解,并易于修改、维护。软件系统具有友好的用户界面,便于用户使用。软件生存周期中各阶段文档齐全、规范,便于配置、管理。,软件的质量因素很多,如正确性、精确性、可靠性、容错性、性能、效率、易用性、可理解性、简洁性、可复用性、可扩充性、兼容性等。软件质量因素也称为软件质量特性,反映了质量的本质。讨论一个软件的质量,问题最终要归结到定义软件的质量特性。,面对众多的质量因素如何取折衷,这实际上就是区分质量因素对软件质量影响程度轻重的问题,这个问题已经有了解决方案,即软件质量模型。图1-4所示为McCall软件质量模型,质量模型中的质量概念基于11个特性之上,这11个特性分别面向软件产品的运行、修正、转移。,图1-4McCall质量模型,图1-5所示为ISO/IEC91261991标准规定的软件质量度量模型。它由3层组成,其中第1层称为质量特性,第2层称为质量子特性,第3层称为度量。,图1-5ISO软件质量度量模型,图1-6所示为新的ISO/IEC9126软件质量模型,软件质量包括“内部质量”、“外部质量”和“使用质量”三部分。,图1-6新的ISO/IEC9126软件质量模型,所谓的内部质量是从内部观点出发的软件产品特性的总体,是针对内部质量需求被测量和评价的质量。内部质量特征主要包括:可维护性、灵活性、可移植性、可重用性、可读性、可测试性、可理解性。,外部质量的定义是:软件产品在规定条件下使用时满足需求的程度。外部质量是从外部观点出发的软件产品特性的总体,它是当软件执行时,更典型地是使用外部度量在模拟环境中,用模拟数据测试时,所被测量和评价的质量,即在预定的系统环境中运行时可能达到的质量水平。外部质量特征主要包括:正确性、可用性、效率、可靠性、完整性、适应性、精确性、坚固性。,使用质量的定义是:在规定的使用环境下软件产品使特定用户在达到规定目标方面的能力。它是从用户观点出发,来看待软件产品用于特定环境和条件下的质量,反映的是从用户角度看到的软件产品在适当系统环境下满足其需求的程度。使用质量用以下质量特征表述:有效性、生产率、安全性、满意程度等。,1.4软件测试,1.4.1软件测试的定义及目的简单地说,软件测试就是为了发现错误而执行程序的过程。,在IEEE提出的软件工程标准术语中,软件测试被定义为:“使用人工和自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清楚预期结果与实际结果之间的差别。”软件测试是与软件质量密切联系在一起的,归根结底,软件测试是为了保证软件质量。,软件测试是一个找错的过程。软件测试的过程亦是程序运行的过程。程序运行需要数据,为测试设计的数据称为测试用例。测试用例的设计原则是尽可能暴露程序中的错误。,软件是由人来完成的,所有由人做的工作都不会是完美无缺的。软件开发是个很复杂的过程,期间很容易产生错误。无论是软件从业人员、专家和学者做了多大的努力,软件错误仍然存在。因而大家也得到了一种共识:软件中残存着错误,这是软件的一种属性,是无法改变的。所以通常说软件测试的目的就是为了发现尽可能多的缺陷,并期望通过改错来把缺陷统统消灭,以期提高软件的质量。一个成功的测试用例在于发现了至今尚未发现的缺陷。,软件测试的目的是以最少的人力、物力和时间找出软件中潜在的各种错误和缺陷,通过修正各种错误和缺陷提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患所带来的商业风险。,1.4.2软件测试的原则,1.所有的测试都应追溯到用户需求2.把“尽早和不断地测试”作为开发者的座右铭3.程序员应该避免检查自己的程序,测试工作应该由独立的专业的软件测试机构来完成4.pareto原则5.设计测试用例时,应该考虑各种情况,6.对测试错误结果一定要有一个确认的过程7.制定严格的测试计划8.完全测试是不可能的,测试需要终止9.注意回归测试的关联性10.妥善保存一切测试过程文档,不可能对程序进行完全测试无法显示潜伏的软件缺陷软件测试的风险难以描述的软件缺陷产品说明书不断变化杀虫剂现象软件缺陷不能得到修复,不可能对程序进行完全测试,输入量太大输出结果太多软件实现途径太多软件说明没有客观标准,不可能测试到程序对任何可能输入的响应,要对所有有效的输入进行响应要对所有无效的输入进行测试要对所有编辑过的输入进行测试要对所有输入时机的变化进行测试,要对所有有效的输入进行响应,以一个完成两个一位或两位数相加的小程序为例有效输入数对:199*199=39601,要对所有无效的输入进行测试,字母,控制字符,数字与字母组合过长的数,问号等所有能敲得出来的,要对所有编辑过的输入进行测试,如果允许对数据进行编辑确保能够将每一个数,字母或别的任何东西修改成其他任何数检验重复的编辑操作,系统是否会崩溃,要对所有输入时机的变化进行测试,要对任何时间点上往程序中输入数据时产生的效果进行测试(不是在要求输入时才输入)在系统忙时输入敲特殊键,不可能测试到程序每一条可能的执行路径,程序路径可以通过在代码中从程序开始到结束进行跟踪,路径测试举例,电话接线1(空闲)2(响铃)2(响铃)3(接通)5(挂机-断线)3(接通)4(保持通话)5(挂机-断线)4(在线)5(挂机-断线)6(等待信号),执行的路径,在线等待存储到“堆栈”(接通)取出删除电话空闲清空堆栈以防某一操作忘记清除自身信息例外:在线等待挂断消息未删除挂断次数30次堆栈发生溢出接线员电话停止服务,无法找出所有的设计错误,如果一个程序能够准确地实现规格说明的要求,不再做其他任何事情,程序就是符合规格说明的规格说明本身包含着错误如:2+2=5,不能采用逻辑来证明程序的正确性,计算机根据逻辑规则进行操作,程序是以精确语言来表达的。如果程序组织得好,你就能够判断程序在不同条件下的状态,并能够通过跟踪程序的逻辑结构来证明这些判断是正确的。这样仅能确认程序内部的一致性。,软件测试是有风险的行为,无法完全测试,就是选择了风险每一个软件项目都有一个最优的测试,测试无法显示潜在的软件缺陷,软件测试可以报告已经发现的软件缺陷,却无法报告潜伏的软件缺陷唯一的方法是继续测试,尽可能找到新的错误,软件缺陷越找越多,软件缺陷有聚集或集中的特点,找到一个就有可能找到一群。原因如下:程序员怠倦程序员往往犯同样的错误某些软件缺陷其实上是大灾难的灾难,杀虫剂现象,软件测试要经过多个测试周期,该发现的软件缺陷都被发现了,在测试下去也不会有新的发现了解决方法就是不断编写新的不同的测试用例,并非所有的软件缺陷都能修复,没有足够的时间不算是真正的软件缺陷修复的风险太大不值得修复,难以说清的软件缺陷,软件的缺陷没有人发现判断是否为软件缺陷的依据就是软件缺陷的定义,软件测试过程模型是对测试过程一种抽象,用于定义软件测试的流程和方法。随着测试过程管理的发展,软件测试专家通过实践总结出了很多很好的测试过程模型。这些模型将测试活动进行了抽象,并与开发活动有机的进行了结合,是测试过程管理的重要参考依据。,1.4.3软件测试模型,V模型是最具有代表意义的测试模型,反映出了测试活动与分析设计活动的关系。V模型指出,单元和集成测试应检测程序的执行是否满足软件设计的要求;系统测试应检测系统功能、性能的质量特性是否达到系统要求的指标;验收测试确定软件的实现是否满足用户需要或合同的要求。,1模型,图1-7软件测试V模型,2模型,W模型由两个V字型模型组成,分别代表测试与开发过程。W模型强调:测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、设计等同样要测试,也就是说,测试与开发是同步进行的。,图1-8软件测试W模型,3模型,H模型将测试活动完全独立出来,形成了一个完全独立的流程,将测试准备活动和测试执行活动清晰地体现出来。H模型揭示了软件测试是一个独立的流程,贯穿产品整个生命周期,与其他流程并发地进行。,图1-9软件测试H模型,4其他模型,除上述几种常见模型外,还流传着其他几种模型,例如X模型、前置测试模型等。X模型提出针对单独的程序片段进行相互分离的编码和测试,此后通过频繁的交接,通过集成最综合成为可执行的程序。前置测试模型体现了开发与测试的结合,要求对每一个交付内容进行测试。,1.4.4软件测试的分类,1按测试方式分类静态测试动态测试2按测试方法分类白盒测试黑盒测试,3按测试过程分类,单元测试集成测试系统测试验收测试,4按测试目的分类,功能测试健壮性测试接口测试性能测试强度测试压力测试用户界面测试,安全测试可靠性测试安装/反安装测试文档测试恢复测试兼容性测试,1.4.5软件测试流程,1.制订测试计划2.测试设计3.测试准备和建立环境4.执行测试5.测试评估6.测试总结,1.4.6软件测试发展历程和趋势,在早期的软件开发过程中,测试的含义比较窄,将测试等同于“调试”。直到1957年,软件测试才开始与调试区别开来,成为一种发现软件缺陷的活动。直到20世纪80年代早期,软件测试不再单纯是一个发现错误的过程,而且包含软件质量评价的内容。软件开发人员和测试人员开始坐在一起探讨软件工程和测试问题。,1.4.6软件测试发展历程和趋势,20世纪90年代,测试工具终于盛行起来。到了2002年,Rich和Stefan在系统的软件测试一书中对软件测试做了进一步定义:“测试是为了度量和提高被测软件的质量,对测试软件进行工程设计、实施和维护的整个生命周期过程”。这些经典论著对软件测试研究的理论化和体系化产生了巨大的影响。近20年来,随着计算机和软件技术的飞速发展,软件测试技术的研究也取得了很大的突破,1.5软件测试人员的基本素质,软件测试人员应具备下列基本素质:1具有良好的计算机编程基础2具有创新精神和超前意识3不懈努力,追求完美4具有很强的沟通和交流能力5具有整体观念,对细节敏感6团队合作精神,一个样例测试系列,假设程序及其描述将输入的两个数相加,每个数包含一位或两位数字,程序对输入产生回应,并打印相加的结果。每输入一个数后,按键;要运行程序,键入ADDER。,第一个测试周期,第一步,从一个显而易见的简单测试开始仅把2和3相加,你所做的系统的反应输入ADDER并按下屏幕空白。在屏幕顶部看到一个问号输入2在问号后出现2按下在下一行出现一个问号按下3在第二个问号后出现3按下在第三行出现5。在其下两行出现另一个问号,第一次测试后屏幕的显示,?2?35?,第一次测试后测试的问题报告,尽管2+3=运行正确但仍有问题设计错误:没有说明这是什么程序。如何得知采用的是正确的程序呢?设计错误:没有任何屏幕提示。如何得知将要做什么?如果输入一个错误的数字会怎样?提示应当在屏幕的显著位置显示,如简短的指令指示一样。,第一次测试后测试的问题报告,设计错误:怎样终止程序的运行?有关的提示也应当显示在屏幕上编码错误:相加的和5没有与其他显示的数字排出一列。注:为每个错误提交一个问题报告,第二步对还需要测试什么做一些记录,寻找边界条件,如果预计两个测试具有相同的结果,那么只用一个就行了在选择一类测试的代表用例时,总选择那些认为程序最有可能失败的用例。规则最佳测试:总在一类测试的边界处,一旦超出边界,程序的运行将发生变化边界设定:非故意设定、不正确、绝大部分的缺陷所在和程序运行行为改变的地方通过经验、阅读代码分析出边界,并在边界两侧都进行测试,第三步检查有效用例并观察发生了什么,测试结果正数工作正常0也工作正常使用负数的测试都不能正常工作输入第二位数字时宕机,第四步做一些“快速的”测试,凭直觉,不停的测试正式、非正式的测试可能的结果:意外发现错误,系统崩溃注意:为每次测试做记录,内容包括作了什么,结果如何,产生什么问题。最终为每个问题写一份报告,进一步的探索测试,测

温馨提示

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

评论

0/150

提交评论