软件测试技术基础-电子教案-苟英 第一章 测试基础概述

上传人:E**** 文档编号:89545246 上传时间:2019-05-27 格式:PPTX 页数:30 大小:122.29KB
返回 下载 相关 举报
软件测试技术基础-电子教案-苟英 第一章 测试基础概述_第1页
第1页 / 共30页
软件测试技术基础-电子教案-苟英 第一章 测试基础概述_第2页
第2页 / 共30页
软件测试技术基础-电子教案-苟英 第一章 测试基础概述_第3页
第3页 / 共30页
软件测试技术基础-电子教案-苟英 第一章 测试基础概述_第4页
第4页 / 共30页
软件测试技术基础-电子教案-苟英 第一章 测试基础概述_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《软件测试技术基础-电子教案-苟英 第一章 测试基础概述》由会员分享,可在线阅读,更多相关《软件测试技术基础-电子教案-苟英 第一章 测试基础概述(30页珍藏版)》请在金锄头文库上搜索。

1、第一章 测试基础的概述,宁华 ,本章要点,知识点: 了解软件测试的背景 掌握软件缺陷的定义及缺陷跟踪流程 熟悉软件测试的复杂性与经济性分析 掌握软件测试的定义 熟悉软件测试人员应具备的素质 目的 掌握缺陷跟踪流程,1、测试测试的背景,早期的软件开发过程中,那时软件规模都很小、复杂程度低,软件开发的过程混乱无序、相当随意,测试的含义比较狭窄,开发人员将测试等同于“调试”,目的是纠正软件中已经知道的故障,常常由开发人员自己完成这部分的工作。对测试的投入极少,测试介入也晚,常常是等到形成代码,产品已经基本完成时才进行测试。 直到1957年,软件测试才开始与调试区别开来,作为一种发现软件缺陷的活动。由

2、于一直存在着“为了让我们看到产品在工作,就得将测试工作往后推一点”的思想,潜意识里对测试的目的就理解为“使自己确信产品能工作”。测试活动始终后于开发的活动,测试通常被做为软件生命周期中最后一项活动而进行。当时也缺乏有效的测试方法,主要依靠“错误推测 Error Guessing”来寻找软件中的缺陷。因此,大量软件交付后,仍存在很多问题,软件产品的质量无法保证。,1、测试测试的背景,20世纪70年代,这个阶段开发的软件仍然不复杂,但人们已开始思考软件开发流程的问题,尽管对“软件测试”的真正含义还缺乏共识,但这一词条已经频繁出现,一些软件测试的探索者们建议在软件生命周期的开始阶段就根据需求制订测试

3、计划,这时也涌现出一批软件测试的宗师,Bill Hetzel 博士和Glenford J. Myers就是其中的领导者。 20世纪80年代初期,软件和IT行业进入了大发展,软件趋向大型化、高复杂度,软件的质量越来越重要。这个时候,一些软件测试的基础理论和实用技术开始形成,并且人们开始为软件开发设计了各种流程和管理方法,软件开发的方式也逐渐由混乱无序的开发过程过渡到结构化的开发过程,以结构化分析与设计、结构化评审、结构化程序设计以及结构化测试为特征。人们还将“质量”的概念融入其中,软件测试定义发生了改变,测试不单纯是一个发现错误的过程,而且将测试作为软件质量保证(SQA)的主要职能,包含软件质量

4、评价的内容。此时软件开发人员和测试人员开始坐在一起探讨软件工程和测试问题。软件测试已有了行业标准(IEEE/ANSI ),软件测试已成为一个专业,需要运用专门的方法和手段,需要专门人才和专家来承担。,2、什么是软件测试,软件测试下的定义是:“使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别”。这个定义明确指出:软件测试的目的是为了检验软件系统是否满足需求。它再也不是一个一次性的,而且只是开发后期的活动,而是与整个开发流程融合成一体。 扩展定义:软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软

5、件质量保证的关键步骤。,2、什么是软件测试,广义的软件测试是由确认、验证、测试3个方面组成。 确认:评估将要开发的软件产品是否正确无误、可行和有价值的。确认意味着确保一个待开发软件是正确无误的,是对软件开发构想的检测。主要体现在计划阶段、需求分析阶段,也会出现在测试阶段。 验证:检测软件开发的每个阶段、每个步骤结果是否正确无误,是否与软件开发各阶段的要求或期望的结果相一致。验证意味着确保软件会正确无误地实现软件的需求,开发过程是沿着正确的方向进行的。主要体现在设计阶段、编码阶段。 测试:与狭隘的测试概念统一。主要体现在编码阶段和测试阶段。 确认、验证与测试是相辅相成的。确认产生验证和测试的标准

6、,验证和测试帮助完成确认。,3.1、软件缺陷的定义,名词解释: 软件错误(software error):指在软件生存期内的不希望或不可接受的人为错误,其结果是导致软件缺陷的产生; 软件缺陷(software defeat):存在于软件之中的那些不希望或不可接受的偏差,如少一个逗点、多一个语句等; 软件故障(software fault):软件运行过程中出现的一种不希望或不可接受的内部状态; 软件失效(software failure):指软件运行时产生的一种不希望或不可接受的外部行为结果。,3.2、缺陷跟踪,缺陷跟踪管理是软件测试工作的一个重要部分,软件测试的目的是为了尽早发现软件系统中的缺

7、陷,因此,对缺陷进行跟踪管理,确保每个被发现的缺陷都能够及时得到处理是测试工作的一项重要内容。 3.2.1、缺陷跟踪的目的 缺陷能够引起软件运行时产生的一种不希望或不可接受的外部行为结果,软件测试过程简单说就是围绕缺陷进行的,对缺陷的跟踪管理一般而言需要达到以下的目标:,3.2.1、缺陷跟踪的目的,确保每个被发现的缺陷都能够被解决;这里解决的意思不一定是被修正,也可能是其他处理方式(例如,在下一个版本中修正或是不修正),总之,对每个被发现的BUG的处理方式必须能够在开发组织中达到一致。 收集缺陷数据并根据缺陷趋势曲线识别测试过程的阶段;决定测试过程是否结束有很多种方式,通过缺陷趋势曲线来确定测

8、试过程是否结束是常用并且较为有效的一种方式。 收集缺陷数据并在其上进行数据分析,作为组织的过程财富。,3.2.2、缺陷的来源,按照一般的定义,只要软件出现的问题符合下列5种情况的任何一种,就叫做软件缺陷: 软件未达到产品说明书标明的功能。 软件出现了产品说明书指明不会出现的错误。 软件功能超出产品说明书指明范围。 软件未达到产品说明书虽未指出但应达到的目标。 软件测试员认为软件难以理解、不易使用、运行缓慢,或者最终用户认为不好。 实践表明,大多数软件缺陷产生的原因并非源自编程错误,主要来自产品说明书的编写和产品方案设计 软件缺陷的第二大来源是设计方案,3.2.3、错误与缺陷的分布,4.1、软件

9、测试的复杂性,认识误区: 人们在对软件工程开发的常规认识中,认为开发程序是一个复杂而困难的过程,需要花费大量的人力、物力和时间,而测试一个程序则比较容易,不需要花费太多的精力。 在实际的软件开发过程中,作为现代软件开发工业一个非常重要的组成部分,软件测试正扮演着越来越重要的角色。随着软件规模的不断扩大,如何在有限的条件下对被开发软件进行有效的测试正成为软件工程中一个非常关键的课题。 设计测试用例是一项细致并且需要具备高度技巧的工作,稍有不慎就会顾此失彼,发生不应有的疏漏。下面分析了容易出现问题的根源。,4.1、软件测试的复杂性,(1) 完全测试是不现实的 在实际的软件测试工作中,不论采用什么方

10、法,由于软件测试情况数量极其巨大,都不可能进行完全彻底的测试。所谓彻底测试,就是让被测程序在一切可能的输入情况下全部执行一遍。通常也称这种测试为“穷举测试”。 穷举测试会引起以下几种问题: a.输入量太大; b.输出结果太多; c.软件执行路径太多; d.说明书存在主观性。设计测试用例是一项细致并且需要具备高度技巧的工作,稍有不慎就会顾此失彼,发生不应有的疏漏。下面分析了容易出现问题的根源。 “程序测试只能证明错误的存在,但不能证明错误的不存在”。由于穷举测试工作量太大,实践上行不通,这就注定了一切实际测试都是不彻底的,也就不能够保证被测试程序在理论上不存在遗留的错误。,4.1、软件测试的复杂

11、性,(2) 软件测试是有风险的 软件测试员不能做到完全的测试,不完全测试又不能证明软件的百分之百的可靠。那么如何在这两者的矛盾中找到一个相对的平衡点呢? 如图所示的最优测试量示意图可以观察到,当软件缺陷降低到某一数值后,随着测试从量的不断上升软件缺陷并没有明显地下降。这是软件测试工作中需要注意的重要问题。如何把测试数据量巨大的软件测试减少到可以控制的范围,如何针对风险做出最明智的选择是软件测试人员必须能够把握的关键问题。,图上的最优测试量示意图说明了发现软件缺陷数量和测试量之间的关系,随着测试量的增加,测试成本将呈几何数级上升,而软件缺陷降低到某一数值之后将没有明显的变化,最优测量值就是这两条

12、曲线的交点。,4.1、软件测试的复杂性,(3) 杀虫剂现象 同一种测试工具或方法用于测试同一类软件越多,则被测试软件对测试的免疫力就越强。这与农药杀虫是一样的,老用一种农药,则害虫就有了免疫力,农药就失去了作用。 由于软件开发人员在开发过程中可能碰见各种各样的主客观因素,再加上不可预见的突发性事件,所以再优秀的软件测试员采用一种测试方法或者工具也不可能检测出所有的缺陷。为了克服被测试软件的免疫力,软件测试员必须不断编写新的测试程序,对程序的各个部分进行不断地测试,以避免被测试软件对单一的测试程序具有免疫力而使软件缺陷不被发现。这就对软件测试人员的素质提出了很高的要求。,4.1、软件测试的复杂性

13、,(4) 缺陷的不确定性 在软件测试中还有一个让人不容易判断的现象是缺陷的不确定性。即并不是所有的软件缺陷都需要被修复。对于究竟什么才算是软件缺陷是一个很难把握的标准,在任何一本软件测试的书中都只能给出一个笼统的定义。实际测试中需要把这一定义根据具体的被测对象明确化。即使这样,具体的测试人员对软件系统的理解不同,还是会出现不同的标准。,4.1、软件测试的复杂性,软件测试的经济性有两方面体现: 一是体现在测试工作在整个项目开发过程中的重要地位; 二是体现在应该按照什么样的原则进行测试,以实现测试成本与测试效果的统一。 软件工程的总目标是充分利用有限的人力和物力资源,高效率、高质量地完成测试,4.

14、2、软件测试的经济性分析,5、软件测试人员应具备的素质,计算机领域的专业技能是测试工程师应该必备的一项素质,是做好测试工作的前提条件。尽管没有任何IT背景的人也可以从事测试工作,但是一名要想获得更大发展空间或者持久竞争力的测试工程师,则计算机专业技能是必不可少的。一个有竞争力的测试人员要具有下面三个方面的专业技能: 测试专业技能 : 现在软件测试已经成为一个很有潜力的专业。要想成为一名优秀的测试工程师,首先应该具有扎实的专业基础。因此,测试工程师应该努力学习测试专业知识,告别简单的“点击”之类的测试工作,让测试工作以自己的专业知识为依托。 测试专业知识很多,本书内容主要以测试人员应该掌握的基础

15、专业技能为主。,软件编程技能 : “测试人员是否需要编程?”可以说是测试人员最常提出的问题之一。实际上,由于在我国开发人员待遇普遍高于测试人员,因此能写代码的几乎都去做开发了,而很多人则是因为做不了开发或者不能从事其它工作才“被迫”从事测试工作。最终的结果则是很多测试人员只能从事相对简单的功能测试,能力强一点的则可以借助测试工具进行简单的自动化测试(主要录制、修改、回放测试脚本)。 软件编程技能实际应该是测试人员的必备技能之一,在微软,很多测试人员都拥有多年的开发经验。 此外,对软件测试人员的编程技能要求也有别于开发人员:测试人员编写的程序应着眼于运行正确,同时兼顾高效率,尤其体现在与性能测试

16、相关的测试代码编写上。,5、软件测试人员应具备的素质,网络、操作系统、数据库、中间件等知识: 与开发人员相比,测试人员掌握的知识具有“博而不精”的特点,“艺多不压身”是个非常形象的比喻。由于测试中经常需要配置、调试各种测试环境,而且在性能测试中还要对各种系统平台进行分析与调优,因此测试人员需要掌握更多网络、操作系统、数据库等知识。 作为一名测试人员,尽管不能精通所有的知识,但要想做好测试工作,应该尽可能地去学习更多的与测试工作相关的知识,5、软件测试人员应具备的素质,6、缺陷跟踪管理流程,测试人员发现一个新bug,则将其状态置为New,由项目经理或者测试经理审核该bug是否为真正的缺陷,如果是则将bug状态置为open,并将该bug进行评级,分配给相应的开发人员,开发人员在接到该bug后对其进行修复(如果项目经理没有进行审核就直接分配,此时开发人员可以拒绝修复该bug),修复完成后则提交给测试人员做相应的验证,如果验证通过则关闭该bug,如果没有通过则重新打开给bug。 图1-2缺陷跟踪流程图,在bug的跟踪管理过程中有很多的关键字,下面就对这些关键字进

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号