软件测试基础知识及研发全过程概述(PPT 137页).ppt_第1页
软件测试基础知识及研发全过程概述(PPT 137页).ppt_第2页
软件测试基础知识及研发全过程概述(PPT 137页).ppt_第3页
软件测试基础知识及研发全过程概述(PPT 137页).ppt_第4页
软件测试基础知识及研发全过程概述(PPT 137页).ppt_第5页
已阅读5页,还剩132页未读 继续免费阅读

下载本文档

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

文档简介

软件测试基础知识及研发全过程,1.1软件测试的基本概念1.2软件测试的依据与人员组织1.3软件测试的生命周期与模型1.4软件测试计划及其相关文档,第一章软件测试导论,1.1.1软件测试的定义1.1.2软件测试的必要性1.1.3软件缺陷1.1.4软件测试的原则1.1.5软件测试的误区1.1.6软件测试与软件质量保证的关系1.1.7软件测试技术的发展,1.1软件测试的基本概念,软件的质量是软件的生命。为了保证软件的质量,人们在长期的软件开发过程中积累了许多经验,形成了许多有效的方法(技术的和管理的)。但是借助这些方法,只能减少软件中的错误和不足,但不能完全避免错误。,1.1软件测试的基本概念,1.什么是软件测试软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。对软件测试的定义很多,但一般可描述如下:软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一组测试用例,利用测试用例去运行程序,以发现程序错误的过程。简言之,软件测试是为了发现错误而执行程序的过程。,1.1.1软件测试的定义,目前,根据侧重点的不同,主要有以下三种观点:1983年IEEE将软件测试定义为:“使用人工或自动手段运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别”。明确地提出了软件测试是以检验软件是否满足需求为目的。Myers认为:“是为了发现错误而执行程序的过程”。明确提出了软件测试是以对软件“寻找错误”为目的。多数软件开发商认为:软件测试是一种重要的软件质量保证活动,其动机是通过一些经济、高效的方法,捕捉软件中的错误,保证软件内在质量。明确提出了软件测试是以保证软件内在质量。,1.1.1软件测试的定义,2.软件测试与软件调试的区别概念不同:软件测试是一个在可控环境中执行软件的过程,以验证是否按预期运行。软件调试是一个分析和定位软件BUG的过程。作用不同:调试是测试的一个基础,调试支持测试,但不能完全替代测试。目的不同:调试使软件能正确运行,而测试是发现软件中的错误。对象不同:调试的对象是代码,测试的对象是开发过程中的所有的产品。,1.1.1软件测试的定义,3.软件测试的目的基于不同的立场,存在两种完全不同的测试目的。从用户的角度出发,希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑是否可以接受该产品。从软件开发者的角度出发,希望成为表明软件产品中不存在错误的过程,验证软件已正确地实现了用户的要求,确立人们对软件质量的信心。综合明来,测试的目的是通过对软件错误的原因和分布进行归纳,来发现并排除当前软件产品的缺陷,对在需求和设计过程中存在的问题查缺补漏,确保软件产品的质量。,4.软件测试的基本职责软件测试有两个基本职责:一是验证即前后阶段需求是否一致。二是确认即满足最终需求。,1.1.1软件测试的定义,1.为什么要进行软件测试软件由人开发,人会犯错误软件(程序+数据+文档)都有缺陷。无法避免人类犯错,但是可以通过努力寻找隐藏在软件中的缺陷。多、快、好、省软件测试是提高软件质量、保证软件质量的手段之一。,1.1.2软件测试的必要性,用户所说的,需求分析人员理解的,系统需求规格说明书,开发人员理解的,实际软件,人不是完美的,在设计和实现时会出错,信息传递的误差,1.1.2软件测试的必要性,工程硕士,12,没有软件工程和项目管理概念下,软件开发现象,1.1.2软件测试的必要性,2.软件缺陷案例软件缺陷将造成灾难性危害或对用户产生巨大的影响。2003年,软件问题造成美国东部及加拿大停电,导致5000万人受影响,3人丧生,60亿美元的损失。2000年,美国海军飞机控制软件问题导致飞机坠落,4人丧生。1997年韩国空难,导致225人丧生(雷达控制软件问题)2004年,北美银行已新安装的软件的缺陷,使数以百万计的客户受影响,缺陷修复花费两个星期,造成亿元损失。2003年,美国专门为学生贷款的公司由于软件出错,错误计算80万学生的贷款利率,导致800万元的损失,1.1.2软件测试的必要性,3.软件测试是软件开发的重要环节4.软件测试是保证软件质量的主要手段。,1.1.2软件测试的必要性,1.1.3软件缺陷,1软件缺陷的定义软件缺陷(bug)的定义也很多,综合说来是程序软件中存在一种破坏系统正常运行能力的问题、错误或瑕疵,导致软件产品在某种程度上不能满足用户的需要。软件缺陷是指软件产品中所存在的导致不能完全满足用户需求的错误。按IEEE729标准定义,软件缺陷的含义有2个方面:软件产品的内部:软件缺陷是软件产品开发或维护过程中所存在的错误、瑕疵等各种问题。软件产品的外部:软件缺陷是软件所需要实现的某种功能的失效或违背。,2.软件缺陷外部表现的判断规则软件未实现产品说明书要求的功能。软件出现了产品说明书指明不会出现的错误。软件超出实现了产品说明书提到的功能。软件未实现产品说明书虽未明确指出但应该实现的目标。软件难以理解,不易使用,运行缓慢或者终端用户认为不好。第条规则是全面的。如果软件测试员发现某些地方不对劲,无论什么原因,都要认定为缺陷。,1.1.3软件缺陷,以计算器为例说明判断规则。若产品说明书声称能够准确无误地进行加、减、乘、除运算,当你按下()键,结果什么反应也没有;根据第条规则,是一个缺陷。假如得到错误答案;根据第条规则,同样是一个缺陷。若产品说明书声称永远不会崩溃、锁死或者停止反应,当你任意敲键盘,计算器停止接受输入。根据第条规则,是一个缺陷。若在测试计算器过程中,发现除了加、减、乘、除之外它还可以求平方根,而产品说明书中没提到该功能。根据第条规则,是一个缺陷。若在测试计算器过程中,发现电池电量很少时,会导致计算不正确,但产品说明书未指出该问题。根据第条规则,是一个缺陷。若“”键布置的位置使其极不好按,或在明亮光下显示屏难以看清。根据第条规则,是一个缺陷。,1.1.3软件缺陷,3软件缺陷的种类从功能表现形式来分,软件缺陷有三种类型:完全没有实现的功能。例如用户需要实现A、B、C三个功能,但是系统只实现了A、B两个功能基本实现了用户需求的功能,运行时出现功能或性能上的问题。例如满足系统要求,但运行经常报错、死机,响应时间要求为5秒,实际为10秒。实现了用户不需要的功能。例如用户要求实现A、B、C三个功能,实际实现了A、B、C、D四个功能。,1.1.3软件缺陷,还表现在其他方面。如:特性没有实现或部分实现;设计不合理;实际结果和预期结果不一致;运行出错(运行中断、系统崩溃、界面混乱);数据结果不正确、精度不够;用户不能接受的其他问题(存取时间过长、界面不美观)。,1.1.3软件缺陷,4软件缺陷的级别软件测试员所发现的大多数缺陷是难以觉察的简单错误,不明显,也不严重;并且有些是真正的错误,有些不是。一般来说,问题越严重的,其优先级越高,越应得到及时的纠正。软件公司对缺陷后果的严重程度的定义不尽相同,但一般可以分为4种级别:,1.1.3软件缺陷,致命的:致命错误是指造成系统或应用程序崩溃、死机、悬挂,或造成数据丢失、主要功能完全失效等。严重的:严重错误是指功能或特性没有实现,主要功能部分丧失,次要功能完全丧失,或致命的错误声明。一般的:一般错误是指虽然不影响系统的基本使用,但没有很好地实现功能,没有达到预期效果。如次要功能丧失,提示信息不太准确,或用户界面差,操作时间长等。微小的:微小错误是指对功能几乎没有影响,产品及属性仍可使用,如有个别错别字、文字排列不整齐等。除了这4种之外,有时需要“建议”级别来处理测试人员所提出的建议或质疑,如建议程序做适当的修改,来改善程序运行状态,或对设计不合理、不明白的地方提出质疑。,1.1.3软件缺陷,轻微:词语拼写错误中等:误导或重复信息使人不悦:被截断的信息,0.00¥帐单影响使用:有些交易没有处理严重:丢失交易非常严重:不正确的交易处理极为严重:经常出现“非常严重”的错误无法忍受:数据库破坏灾难性:系统停机容易传染:扩展到其他系统的系统停机,缺陷类型的综合讨论参见软件异常IEEE标准分类(IEEE,1993),1.1.3软件缺陷,5.软件缺陷的状态为便于跟踪和管理软件的缺陷,可以定义不同的状态。软件缺陷的状态一般有4种:激活状态:问题还没有解决,测试人员新报的bug,或验证后bug仍然存在。已修正状态:开发人员针对所存在的缺陷,修改程序,认为已解决问题,或通过单元测试。关闭或非激活状态:测试人员验证已经修正的bug后,确认bug不存在以后的状态。,1.1.3软件缺陷,6软件缺陷产生的原因造成软件缺陷的原因归纳起来有3个方面:技术问题算法错误。语法错误。计算方法与精度要求不匹配或取值精度不够。结构不合理。接口参数不匹配。,1.1.3软件缺陷,团队工作问题与用户的沟通不够,对需求不是十分清楚。不同阶段的开发人员对同一问题理解不一致。设计或编程上的假定或依赖性,相互间沟通不充分。软件本身问题文档错误、内容不正确或拼写错误。数据考虑不周全,引起强度或负载不合理。对边界考虑不周全,如漏掉几个边界条件。对实时软件,同步不精确,引起时间上不协调、不一致。没有考虑系统崩溃后在安全性、可靠性的隐患。硬件或系统软件上存在的错误。软件开发标准或过程上的错误。,1.1.3软件缺陷,7软件缺陷的组成软件缺陷是由很多原因造成的,从按软件开发过程来看,不同阶段的工作,导致软件缺陷的差异性很大,如图所示。需求分析是软件缺陷出现最多的阶段。,图1-1软件缺陷构成示意图,1.1.3软件缺陷,27,8.与缺陷相关的概念软件错误(softwareerror):在软件生存期内的不希望或者不可接受的人为错误。软件故障(SoftwareFault):软件运行过程中出现的一种不希望或不可接受的内部状态。此时,如果没有适当(容错)加以及时处理,便会产生软件失效。软件失效(SoftwareFailure):软件运行时产生的一种不希望或不可接受的外部行为。,1.1.3软件缺陷,图1-5缺陷放大模型,因此,从需求开始,尽早制定测试计划,坚持在软件开发的各个阶段的技术评审,才能在开发过程中尽早发现和预防错误,把出现的错误克服在早期,杜绝某些隐患,提高软件质量。,1.尽早地和不断地进行软件测试IBM的研究结果表明,缺陷存在放大趋势。从图可见,问题发现越早,解决问题的代价就越小,这是软件开发过程中的黄金法则。,1.1.4软件测试的原则,2.不可能完全的测试对一个程序进行完全测试就是意味着在测试结束之后,再也不会发现其它的软件错误了。其实,这是不可能的,主要原因有以下几点:不可能测试程序对所有可能输入的响应。不可能测试到程序每一条可能的执行路径。无法找出所有的设计错误。不能采用逻辑来证明程序的正确性。,1.1.4软件测试的原则,如果测试一个计算器程序的功能,需要进行多少次输入?不计其数!整型:从1+1到999999999999999999999999999999+999999999999999999999999999999小数:1.0+0.1,1.0+0.2等等键盘上的任何一种组合乘法和除法运算重复上面的操作,1.1.4软件测试的原则,由小到大是指软件测试的粒度。无论是传统的软件测试还是面向对象的软件测试都要遵循该原则。多个单元组合过渡到集成测试,集成测试过渡到系统测试。虚线是各个测试阶段的发布基线,随着测试的逐步深入,范围的逐步扩大,测试时间、可用资源也随之增大。,3.由小到大,增量测试,测试过程关系图,1.1.4软件测试的原则,4.避免测试自己的程序避免程序员测试自己的代码的主要原因如下:程序员轻易不会承认自己写的程序有错误。程序员的测试思路有局限性,测试时容易受到编程思路的影响。多数程序员没有严格正规的职业训练,缺乏专业测试人员的意识。程序员没有养成错误跟踪和回归测试的习惯。由别人测试,会更客观,更有效。,1.1.4软件测试的原则,5.设计周密的测试用例。软件测试的本质就是针对要测试的内容确定一组测试用例。测试用例是测试工作的核心,应该尽量设计的周密细致,才能保证测试工作的质量。测试用例由测试输入数据和与之对应的预期输出结果两部分组成。如果对测试输入数据没有给出预期的程序输出结果,那么就缺少了检验实测结果的基准,就有可能把一个似是而非的错误结果当成正确结果。在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。合理的输入条件是指能验证程序正确的输入条件,而不合理的输入条件是指异常的、临界的、可能引起问题变异的输入条件。因此,软件系统处理非法命令的能力也必须在测试时受到检验。用不合理的输入条件测试程序时,往往比用合理的输入条件进行测试能发现更多的错误。,1.1.4软件测试的原则,测试用例至少应该包括如下几个基本信息:执行测试用例前,应满足的前提条件。输入(合理的、不合理的)。预期输出(包括后果和实际输出)。,典型的测试用例模版,1.1.4软件测试的原则,6.注意错误集中的现象充分注意测试中的群集现象。测试时不要以为找到了几个错误问题就已解决,不需继续测试。应当对错误群集的程序段进行重点测试,以提高测试投资的效益。软件缺陷的“扎堆”现象的常见形式:对话框的某个控件功能不起作用,可能其他控件的功能也不起作用。某个文本框不能正确显示双字节字符,则其他文本框也可能不支持双字节字符。联机帮助某段文字的翻译包含了很多错误,与其相邻的上下段的文字可能也包含很多的语言质量问题。安装文件某个对话框的“上一步”或“下一步”按钮被截断,则两个按钮在其他对话框中也可能被截断。,1.1.4软件测试的原则,7.确认BUG的有效性有时候测试人员提交的BUG并不是真正的BUG,无效BUG的来源如图所示。一般由A测试人员发现的BUG,一定要由B测试人员进行确认,如果发现严重的BUG可以召开评审会进行讨论和分析。,1.1.4软件测试的原则,无效BUG来源构成图,8.合理安排测试计划合理的测试计划有助于测试工作顺利有序地进行。测试计划应结合多种针对性强的测试方法,列出所有可使用资源,建立一个正确的测试目标。要有明确规定,不要随意解释。本着严谨、准确的原则,周到细致地做好测试前期的准备工作,避免测试的随意性。尤其是要尽量科学合理地安排测试时间。严格执行测试计划,排除测试的随意性。妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。,,,1.1.4软件测试的原则,错误依赖关系,9.回归测试,1.1.4软件测试的原则,错误之间存在单纯的依赖或者复杂的多重依赖关系。(a)图中:A错误依赖于B错误的关闭而关闭;(b)图中:A错误依赖于B错误和C错误的同时关闭而关闭;(c)图是(a)和(b)的复合方式。程序中的错误存在着一对多、多对多的复杂关系而变得难以处理,且有些依赖关系处于隐性状态。,10.测试结果的统计和分析只有对测试输出信息进行深入地统计、分析和比较,才能正确的鉴别测试输出的数据,给出清晰的错误分析报告。当输出的信息很庞大时,可以借助专业的测试工具。应对每一个测试结果做全面检查。必须对预期的输出结果明确定义,对实测的结果仔细分析检查,抓住关键,暴露错误。,1.1.4软件测试的原则,11.及时更新测试导致测试失败的原因有很多,大致有如下几点:1、测试团队管理者失职;2、测试团队中沟通不好;3、测试团队和项目团队沟通不良;4、测试过程中,执行角色无准确定义;5、测试团队缺乏良好的培训。,1.1.4软件测试的原则,误区1调试和测试是一样的误区2软件测试在软件开发过程中并不重要误区3在软件开发结束之后进行测试误区4过分依赖Beta测试误区5过分依赖自动化测试误区6测试是可穷尽的误区7测试是证明软件的正确性误区8可以忽略测试的设计,1.1.5软件测试的误区,软件=程序+数据+文档+服务软件质量:系统、组件或过程满足明确的需求。-IEEEStandardGlossaryofSoftwareEngineeringTechnology软件测试:挑毛病,发现Bug(缺陷)。软件测试是软件质量保证的手段。,1.1.6软件测试与软件质量保证的关系,44,SQA(SoftwareQualityAssurance):为确保软件开发过程和结果符合预期要求而建立的一系列规程,以及依照规程和计划采取的一系列活动及其结果评价。面向管理层,提供正确的信息,工作的对象是产品;促进和协调过程改进;预防问题。软件测试:使用人工或者自动手段来运行或测定某个系统的过程,检验其是否满足规定的需求或判定预期结果与实际结果之间的差别。工作的对象是开发的软件,寻找缺陷;强调书写正式的测试文档,实现可重复的结构化软件测试;发现问题。,1.1.6软件测试与软件质量保证的关系,1软件测试技术的发展历史在软件行业发展初期,就实施软件测试,但这一阶段不是真正意义上的软件测试,更多调试。测试没有计划和方法,测试用例的设计和选取也都是根据测试人员的经验随机进行的,大多数测试的目的是为了证明软件可以正常运行。20世纪5060年代,软件仍然处于次要位置,测试理论和方法的发展比较缓慢。随着高级语言诞生,程序的复杂性远远超过了以前,测试的重点也逐步转入到使用高级语言编写的软件中来。尽管如此,由于受到硬件的制约,在计算机系统中,软件仍然处于次要位置。软件正确性的把握仍然主要依赖于编程人员的技术水平。,1.1.7软件测试技术的发展,70年代以后,软件技术的成熟和完善使得软件测试的规模和复杂度加大,软件测试也逐渐形成了一套完整的体系,逐渐走向规范化。随着计算机处理速度的提高、存储容量的增加,软件的地位变得越来越重要。随着软件开发技术的成熟和完善,软件规模越来越大,复杂度也大大增加。因此,软件的可靠性面临着前所未有的危机,给软件测试工作带来了更大的挑战,进而培养和造就了一批批出色的测试人才。,1.1.7软件测试技术的发展,如今在软件产业化发展的大趋势下,人们对软件质量,成本和进度的要求也越来越高,质量的控制已经不仅仅是传统意义上的软件测试。传统软件的测试大多是基于代码运行的,并且常常是软件开发的后期才开始进行,但大量研究表明,设计活动引入的错误占软件开发过程中出现的所有错误数量的50%65%。因此,越来越多的声音呼吁,要求有一个规范的软件开发过程。而在整个软件开发过程中,测试已经不再只是基于程序代码进行的活动,而是一个基于整个软件生命周期的质量控制活动,贯穿于软件开发的各个阶段。,1.1.7软件测试技术的发展,2软件测试的现状国外现状软件测试在软件公司中占有重要地位软件测试理论研究蓬勃发展,每年举办各种各样的测试技术年会,发表了大量的软件测试研究论文,引领软件测试理论研究的国际潮流软件测试市场繁荣国内现状我国软件测试起步于“六五”期间,目前国家863、973以及大力支持软件测试的研究1990年,成立中国软件评测中心,测试服务开始发展软件测试正在逐步成为一个新兴的产业国家确定“软件评测师”的职业资格认证;“以测代评”正成为我国科技项目择优支持的一项重要举措;第三方测试机构繁荣发展,1.1.7软件测试技术的发展,与一些发达国家相比,国内测试工作还存在一定的差距。在我国,软件测试可能算不上一个真正的产业,软件开发企业对软件测试认识淡薄,软件测试人员与软件开发人员比例失调,而在发达国家和地区软件测试已经成了一个产业。但在软件测试实现方面并不比国外差,国际上优秀的测试工具,我们基本都有,这些工具所体现的思想我们也有深刻的理解,很多大型系统在国内都得到了很好的测试。,1.1.7软件测试技术的发展,1.2软件测试的依据与人员组织,1.2.1软件测试的依据1.2.2软件测试人员职责分配1.2.3软件测试人员必需的素质1.2.4软件测试的经验,51,1.软件质量标准ISO9000-3软件质量标准:考虑软件行业的特殊性制定,是ISO质量管理和质量保证标准在软件开发、供应和维护中的使用指南。核心内容包括:合同评审需求规格说明开发计划质量计划设计和实现测试和确认验收复制、交付和安装维护,1.2.1软件测试的依据,52,2.软件测试规范软件测试规范就是对软件测试的流程过程化并对每一个过程元素进行明确的界定,形成完整的规范体系,包括:规范目的、范围、文档结构、词汇表、参考信息、可追溯性、方针、过程/规范、指南、模板、检查表、培训、工具、参考资料等等。,1.2.1软件测试的依据,53,3.软件测试国家标准GB/T9386-1988计算机软件测试文件编制规范GB/T15532-1995计算机软件单元测试规范GB/T17544-1998信息技术软件包质量要求和测试GB/T16260.1-2003软件工程产品质量第1部分质量模型GB/T16260.2-200X软件工程产品质量第2部分外部度量GB/T16260.3-200X软件工程产品质量第3部分内部度量GB/T16260.4-200X软件工程产品质量第4部分使用质量度量GB/T18905.1-2002软件工程产品质量第1部分概述GB/T18905.2-2002软件工程产品质量第2部分策划和管理GB/T18905.3-2002软件工程产品质量第3部分开发者用的过程GB/T18905.4-2002软件工程产品质量第4部分需求方用的过程GB/T18905.5-2002软件工程产品质量第5部分评价者用的过程GB/T18905.6-2002软件工程产品质量第6部分评价模块文档编制,1.2.1软件测试的依据,1.软件测试的组织结构和人员结构软件测试在组织结构上一般分为功能测试组、性能测试组和文档工作组。软件测试在人员结构上一般需要有测试文档审核师、测试工程师和操作人员。,1.2.2软件测试人员的职责分配,工程硕士,55,2.测试职责分配,1.软件测试人员必需的基本素质三心二意一能力细心耐心责任心服务意识团队意识沟通能力,1.2.3软件测试人员必需的素质,2.软件测试人员必需的知识素养深入理解软件测试理论掌握各类软件测试技术接受专门的测试训练对软件缺陷警觉性高对缺陷出现的各种情况较熟悉掌握多种计算机语言掌握一般的软硬件、数据库及网络知识对所要测试的软件的功能、结构、要求有深入的认识。,1.2.3软件测试人员必需的素质,58,(1)心理素质最重要开发人员我不会犯错-任何人都可能犯错这种错误不能算作错误-质量是由用户来评价的发现我的错误是对我工作的否定-是对我的工作的帮助测试人员责任心不够,反正测试是不可能发现所有错误的职业教育+激励措施没有创造性、枯燥总结经验,培养敏锐度,提升个人价值和权威技术比开发人员差,自信心不足代表用户,决定成功的是用户满意,1.2.4软件测试的经验,59,(2)测试前必须明确预期的输出结果否则实际的输出结果很可能成为检验的标准,测试失去意义(3)必须检查每一个实际输出结果很可笑,但是却是事实:不认真检查输出结果(4)一段程序中存在错误的概率与这段程序中已经发现的错误数成正比编码规范、需求理解、技术能力、内部耦合性都会导致这种“虫子窝“现象,1.2.4软件测试的经验,工程硕士,60,(5)可能的情况下,避免测试自己的软件发现不了思路错误发现不了环境错误心理因素导致测试可能不够彻底和全面(6)依照用户的要求、配置环境和使用习惯进行测试并评价结果(7)测试设计决定了测试的有效性和效率,测试工具只能提高测试效率,1.2.4软件测试的经验,工程硕士,61,(8)注意保留测试设计,并注意测试设计的可重用性和说明文档(9)测试活动要有组织、有计划、有选择穷举测试是不可能的不充分的测试是不负责任,过度的测试是浪费资源有计划的活动能提高效率(10)不要放弃随机测试的方法测试的不成熟性和艺术性,1.2.4软件测试的经验,1.软件测试人员的工作内容根据软件需求规格说明书、设计说明书、代码等软件产物选取恰当的输入组合运行被测试对象输入数据执行操作查看输出结果是否和预期的结果一致,如果一致则认为被测对象没有问题,否则,则认为被测对象中可能存在缺陷缺陷修改完毕,验证缺陷修改,确认缺陷是否修改正确,是否引入新问题,1.2.5软件测试人员的工作流程,核心工作产品测试用例缺陷报告单其他重要的工作产品测试计划测试策略测试报告。,2.软件测试人员的工作流程,1.2.5软件测试人员的工作流程,3.软件测试人员的工作目标GMyers给出了关于测试的一些规则,可以把它看作是测试人员的工作目标:软件测试是为了发现错误而执行程序的过程。测试是为了证明程序有错,而不是证明程序无错。一个好的测试用例在于他能发现至今未发现的错误。一个成功的测试是发现了至今未发现的错误的测试。要强调的是软件测试不只是软件测试人员的工作,也是软件开发人员和软件使用者的工作。,1.2.5软件测试人员的工作流程,1.3软件测试的生命周期与模型,1.3.1软件的开发模型1.3.2软件测试的生命周期1.3.3软件测试与软件开发的关系,1.经典瀑布模型由美国WinstonRoyce向IEEEWESCON(Royce,Winston1970)提交的一篇名为管理大规模软件系统的开发的论文中首次提出的。由于方法的一个阶段成瀑布流入下一个阶段,所以为“瀑布模型或线性模型”。瀑布模型有很多的变化,但都包括以下的阶段:需求分析与定义,系统设计与软件设计,系统实施与单元测试,系统集成与系统测试,系统运行与系统维护,也是软件开发的基本过程。需求分析:可行性分析与软件需求分析软件需求分析:业务需求功能需求非功能需求,1.3.1软件的开发模型,该处测试仅指执行测试,1.3.1软件的开发模型,2.原型模型直观、形象,更多地遵循了人们认识事物的规律,因而更容易被人们接受。采用模拟的手段,缩短了用户和系统分析、设计人员之间的距离。在整个系统开发过程中反馈是及时的,标准是统一的,可及时地暴露问题,确保系统实现的正确性。充分利用了新一代的软件工具,使得系统开发和运行的效率都大大提高。,1.3.1软件的开发模型,1.3.1软件的开发模型,1.3.1软件的开发模型,1.3.1软件的开发模型,3.增量与迭代模型,Analysis,Design,Code,Test,Deliveryof1stincrement,Increment1,Analysis,Design,Code,Test,Analysis,Design,Code,Test,Deliveryof2ndincrement,Deliveryof3rdincrement,Increment2,Increment3,1.3.1软件的开发模型,4.螺旋模型(风险驱动的过程模型,增量模型与爆布模型相结合),1.3.1软件的开发模型,5.渐进模型,1.3.1软件的开发模型,软件测试的生命周期分为6个阶段,前个阶段是引入错误时期,也就是开发过程中的需求规格说明、设计、编码阶段,此时极易引入错误或者导致开发过程中其他阶段产生错误。后3个阶段是通过测试发现错误、时期,这需要通过使用一些适当的测试技术和方法来共同完成,主要任务是进行缺陷分类、缺陷隔离和解决缺陷。其中在修复旧缺陷的时候很可能引进新的错误,导致原来能够正确执行的程序出现新的缺陷。在软件测试生命周期的每个阶段都要完成一些确定的任务,在执行每个阶段的任务时,可以采用行之有效的结构分析设计技术和适当的辅助工具;在结束每个阶段的任务时都进行严格的技术审查和管理复审。最后提交最终软件配置的一个或几个成分(文档或程序)。,1.3.2软件测试的生命周期,图1-2软件测试生命周期,1.3.2软件测试的生命周期,1测试与开发各阶段的关系软件开发过程是一个自顶向下,逐步细化的过程。首先在软件计划阶段定义软件的作用域,进行软件需求分析,建立软件的数据域、功能和性能需求、约束和一些有效性准则。然后进入软件开发-软件设计和编写代码。测试过程则是依相反的顺序安排的自底向上,逐步集成的过程,低一级测试为上一级测试准备条件。首先对每一个程序模块进行单元测试,消除程序模块内部在逻辑上和功能上的错误和缺陷。再对照软件设计进行集成测试,检测和排除子系统(或系统)结构上的错误。随后再对照需求,进行确认测试。最后从系统全体出发,运行系统,看是否满足要求。,1.3.3软件测试与软件开发的关系,图1-3软件测试与软件开发过程的关系,1.3.3软件测试与软件开发的关系,2测试与开发的并行性在软件的需求得到确认并通过评审后,概要设计工作和测试计划制定设计工作就要并行进行。如果系统模块已经建立,对各个模块的详细设计、编码、单元测试等工作又可并行。待每个模块完成后,可以进行集成测试、系统测试。并行流程如图1-4所示。,1.3.3软件测试与软件开发的关系,图1-4软件测试与软件开发的并行性,1.3.3软件测试与软件开发的关系,3测试与开发模型软件测试不仅仅是执行测试,而是一个包含很多复杂活动的过程,并且这些活动贯穿于整个软件开发过程。在软件开发过程中,应该什么时候进行测试,如何更好地把软件开发和测试活动集成到一起?这是软件测试工作人员必须考虑的问题,因为只有这样,才能提高软件测试工作的效率,提高软件产品的质量,最大限度地降低软件开发与测试的成本,减少重复劳动。,1.3.3软件测试与软件开发的关系,(1)V模型在传统开发过程中,测试不受重视,仅把它作为在需求分析、概要设计、详细设计及编码之后的一个阶段。在V模型中,描述了一些不同的测试级别,并指出了这些级别所对应的软件生命周期中不同的阶段和测试活动和开发活动的对应关系。这是V模型的主要价值。V模型适用于所有类型的开发过程,但并不一定适用于开发和测试过程的所有方面。特别地,V模型并不是瀑布模型(线性关系)的变形。,1.3.3软件测试与软件开发的关系,软件测试与开发的V模型,1.3.3软件测试与软件开发的关系,(2)W模型由于各种原因,开发的每一个环节都可能产生错误,如果坚持各个阶段的技术评审,就可尽早发现和预防错误。软件开发与测试的W模型,形象地说明了软件测试与开发的同步性。应用W模型的优点在于:每个软件开发活动结束后就可以执行相应的测试。如在需求分析结束后,就可以进行需求分析测试。,1.3.3软件测试与软件开发的关系,W模型示意图,1.3.3软件测试与软件开发的关系,(3)H模型与前两种模型相比,H模型充分地体现了测试过程。H模型揭示了:软件测试不仅仅指测试的执行,还包括很多其他的活动。软件测试是一个独立的流程,贯穿软件开发周期,与其它流程并发进行。软件测试要尽早准备,尽早执行。软件测试根据被测物的不同是分层次的,不同层次的测试活动可以是按照某个次序先后进行的,但也可能是反复的。,1.3.3软件测试与软件开发的关系,H模型示意图,1.3.3软件测试与软件开发的关系,1.4软件测试计划及其相关文档,1.1.1软件测试计划1.1.2软件测试计划的制订1.1.3开发、测试及计划制定的并行关系1.1.4软件测试文档1.1.5软件测试总结报告1.1.6软件生命周期各阶段交付的测试文档,1.4.1软件测试计划,1测试计划的定义软件测试是一个有组织有计划的活动,应当给予充分的时间和资源制订测试计划,才能在合理的控制下正常进行。测试计划作为测试的起始步骤,是整个软件测试过程的关键管理者。测试计划规定了测试各个阶段所要使用的方法策略、测试环境、测试通过或失败的准则等内容。ANSI/IEEE软件测试文档标准829-1983将测试计划定义为:“一个叙述了预定的测试活动的范围、途径、资源及进度安排的文档。它确认了测试项、被测特征、测试任务、人员安排,以及任何偶发事件的风险。”,2测试计划的目的和作用测试计划的目的是明确测试活动的意图,规范软件测试内容、方法和过程,为有组织地完成测试任务提供保障。专业的测试必须以一个好的测试计划作为基础。尽管测试的每一个步骤都是独立的,但是必须要有一个起到框架结构作用的测试计划。软件测试计划是整个测试过程中最重要的部分,为实现可管理且高质量的测试过程提供基础。,1.4.1软件测试计划,3测试计划书测试计划文档化即是测试计划书,分为总体计划和分级计划,是可以更新改进的文档。测试计划书描述了软件测试预计达到的目标,确定测试过程所要采用的方法策略。从文档的角度看,测试计划书是最重要的测试文档,完整细致并具有远见性的计划书会使测试活动安全顺利地向前进行,从而确保所开发的软件产品的高质量。,1.4.1软件测试计划,4测试计划的内容测试计划包括测试目的、测试范围、测试对象、测试策略、测试任务、测试用例、资源配置、测试结果分析和度量以及测试风险评估等,测试计划应当足够完整但也不应当太详尽。实际的测试计划内容因不同的测试对象而灵活变化。,1.4.1软件测试计划,正规的测试计划应该包含以下几个项目(参考样本)。(1)测试的基本信息:包括测试目的、背景、测试范围等。(2)测试的具体目标:列出软件需要进行的测试部分和不需要进行的测试部分。(3)测试的策略:测试人员采用的测试方法,如回归测试、功能测试、自动测试等。(4)测试的通过标准:测试是否通过的界定标准以及没有通过情况的处理方法;(5)停测标准:给出每个测试阶段停止测试的标准。,1.4.1软件测试计划,(6)测试用例:详细描述测试用例,包括测试值、测试操作过程、测试期待值等。(7)测试的基本支持:测试所需硬件、自动测试软件等。(8)部门责任分工:明确所有参与软件管理、开发、测试、技术支持等部门的责任细则。(9)测试人力资源分配:列出测试所需人力资源以及软件测试人员的培训计划。(10)测试进度:制定每一个阶段的详细测试进度安排表。(11)风险估计和危机处理:估计测试过程中潜在的风险以及面临危机时的解决办法。,1.4.1软件测试计划,5测试计划的特点一个理想的测试计划应该体现以下几个特点:检测主要缺陷时有一个好的选择;具有灵活性;提供绝大部分代码的覆盖率;定义要执行测试的种类;易于执行、回归和自动化;没有测试冗余;明确说明期望的测试结果;确认测试风险;当缺陷被发现时提供缺陷核对;文档化确定测试的需求;明确定义测试目标;明确定义测试策略;明确定义测试通过标准;定义可交付的测试件。,1.4.1软件测试计划,6测试计划的应用借助软件测试计划,参与测试的项目成员,尤其是测试管理人员,明确了测试任务和测试方法,保持测试实施过程的顺畅沟通,跟踪和控制测试进度,应对测试过程中的各种变更。一份好的测试计划需要综合考虑各种影响测试的因素。测试计划是软件测试流程工作的基本依据,测试计划中所列条目在实际测试中必须一一执行。在测试的过程中,若发现新的测试用例,就要尽早补充到测试计划中。若预先制定的测试计划项目在实际测试中不适用或无法实现,那么也要尽快对计划进行修改,使计划具有可行性。,1.4.1软件测试计划,1测试计划制定的工作内容测试计划制定需要完成的主要工作内容有:拟定测试计划、论证在开发过程中难于管理和控制的因素,明确软件产品的最重要部分(风险评估)。,1.4.2测试计划的制订,(1)概要测试计划概要测试计划是在软件开发初期制定,其内容包括:定义被测试对象和测试目标;确定测试阶段和测试周期的划分;制定测试人员、软硬件资源和测试进度等方面的计划;明确任务与分配及责任划分;规定软件测试方法、测试标准,比如语句覆盖率达到98%,三级以上的错误改正率达98%等;不改正的错误必须经专门的质量评审组织同意;支持环境和测试工具等。,1.4.2测试计划的制订,(2)详细测试计划详细测试计划是测试者或测试小组的具体的测试实施计划,它规定了测试者负责测试的内容、测试强度和工作进度,是检查测试实际执行情况的重要标准。详细测试计划的主要内容有:计划进度和实际进度对照表、测试要点、测试策略、尚未解决的问题和障碍。,1.4.2测试计划的制订,(4)制定测试大纲从本质上看,测试大纲是从测试的角度对被测对象功能和特性的细化和展开,对于系统功能的测试大纲是基于软件质量保证人员对系统需求规格说明书中有关系统功能定义的理解,将其逐一细化展开后编制而成的。具体包括:测试项目、测试步骤、测试完成的标准以及测试方式(手动或自动)。测试大纲的作用在于:保证测试功能不被遗漏,使得软件功能不被重复测试,合理安排测试人员,使得软件测试不依赖于个人。无论是自动测试还是手动测试,都必须满足测试大纲的要求。,1.4.2测试计划的制订,(5)制定测试通过或失败的标准测试标准为可观的陈述,它指明了判断/确认测试在何时结束,以及所测试的应用程序的质量。测试标准可以是一系列的陈述或对另一文档(如测试过程指南或测试标准)的引用。测试标准应该指明:确切的测试目标、度量的尺度如何建立、使用了那些标准对度量进行评价。,1.4.2测试计划的制订,(6)制定测试挂起标准和恢复的必要条件指明挂起全部或部分测试项的标准,并指明恢复测试的标准及其必须重复的测试活动。,1.4.2测试计划的制订,(7)制定测试任务安排明确测试任务,对每项任务都必须明确7个主题。任务:用简洁的句子对任务加以说明方法和标准:指明执行该任务时,应该采用的方法以及所应遵守的标准。输入输出:给出该任务所必需的输入输出时间安排:给出任务的起始和持续时间资源:给出任务所需要的人力和物力资源风险和假设:指明任务启动应满足的假设及任务执行可能存在的风险角色和职责:指明由谁负责该任务的组织和执行,以及谁将担负怎样的职责,1.4.2测试计划的制订,(8)制定应交付的测试工作产品指明应交付的文档、测试代码和测试工具,一般包括这些文档:测试计划、测试方案、测试用例、测试规程、测试日志、测试总结报告、测试输入与输出数据、测试工具。(9)制定工作量估计给出前面定义任务的人力需求和总计(10)编写测试方案文档测试方案文档是设计测试阶段文档,指明为完成软件或软件集成的特性测试而进行的设计测试方法的细节文档。,1.4.2测试计划的制订,2、测试计划制定的活动在制定测试计划过程中,核心活动包括:(1)确定测试策:确定测试的范围与方法、确定测试标准和质量检查点、确定自动化测试策略。(2)确定测试系统(硬件和软件)测试架构:测试用例的组织结构;测试工具测试环境:物理测试设施,运行的操作系统与计算平台等。测试配置情况:排列配置的优先级,决定哪些配置需要全面测试,哪些可以进行部分测试。,1.4.2测试计划的制订,(3)预估测试工作量(资源和时间进度计划)对项目进行预估有5个准备步骤:确定需完成的任务。确定每项任务所需的工作量和整个测试过程的工作量。确定完成每项任务以及整个测试过程所需的时间。为测试工作建立详细的时间进度计划和里程碑表。评估时间进度风险并准备缓解风险计划。(4)准备并复查测试计划文档。,1.4.2测试计划的制订,测试计划制订活动,1.4.2测试计划的制订,软件开发、软件测试与测试计划制定的并行关系,1.4.3开发、测试及计划制定的并行关系,1软件测试文档的定义测试文档(TestingDocumentation)记录和描述了整个测试流程,是整个测试活动中非常重要的文件。测试文档是测试的产出物,优秀的测试经理应该具备良好的文档编写能力。一份详细的测试文档包含足够的信息。常见的测试文档包括测试计划、测试规范、测试用例(大纲)、缺陷报告和测试报告等。测试报告内容包括产品质量和测试过程的评价,测试报告基于测试中的数据采集以及对最终测试结果的分析。测试文档测试文档在测试过程中的作用在于:有助于测试任务的完成、更好的协调测试任务与测试过程、为测试项目的组织、规划与管理提供了一个架构。,1.4.4测试文档,2测试文档的类型测试文档一般分为两类:测试计划和测试分析报告。测试计划文档描述将要进行的测试活动的范围、方法、资源和时间进度及测试准则等。在软件的需求和设计阶段就要开始制定测试计划,不能在开始测试的时候才制定测试计划。测试计划的编写要从需求分析阶段开始,直到软件设计阶段结束时才完成。测试报告是执行测试的总结,对测试结果进行分析说明。软件经过测试以后,结论性的意见如何,软件的能力如何,存在哪些缺陷和限制等。测试报告既是对软件质量的评价,又是决定该软件能否交付用户使用的依据。,1.4.4测试文档,3.软件测试文档的规范计算机软件测试文档编制规范国家标准给出了的测试文档编制建议,具体包括以下几个内容。其中前4项属于测试计划类文档,后3项属于测试分析报告类文档。测试计划:描述测试活动的范围、方法、资源和进度,其中规定了被测试的对象,被测试的特性、应完成的测试任务、人员职责及风险等。测试设计规格说明:详细描述测试方法,测试用例设计以及测试通过的准则等。,1.4.4测试文档,测试用例规格说明:描述一个完整的测试用例所需要的必备因素,如输入、预期结果、测试执行条件以及对环境的要求、对测试规程的要求等。测试步骤规格说明:指明了测试所执行活动的次序,规定了实施测试的具体步骤。它包括测试规程清单和测试规程列表两部分。测试日志:日志是测试小组对测试过程所作的记录。测试事件报告:说明测试中发生的一些重要事件。测试总结报告:对测试活动所作的总结和结论。,1.4.4测试文档,测试总结报告主要包括测试结果统计表、测试问题表和问题统计表、测试进度表、测试总结表等。,1.4.5软件测试总结报告,1测试结果统计表测试结果统计表主要是对测试项目进行统计,统计计划测试项和实际测试项的数量以及测试项通过多少、失败多少等。,测试结果统计表,1.4.5软件测试总结报告,其中:【Y】表示测试结果全部通过,【P】表示测试结果部分通过,【N】表示测试结果绝大多数没通过,【N/A】表示无法测试或测试用例不适合。另外,根据表可以按照下列两个公式分别计算测试完成率和覆盖率,作为测试总结报告的重要数据指标。测试完成率实际测试项数量/计划测试项数量100%测试覆盖率【Y】项的数量/计划测试项数量100%,1.4.5软件测试总结报告,2测试问题表和问题统计表在测试问题表中,问题号是测试过程所发现的软件缺陷的唯一标号,问题描述是对问题的简要介绍,问题级别在问题统计表表中有具体分类,问题分析与策略是对问题的影响程度和应对的策略进行描述,避免措施是提出问题的预防措施。,测试问题表,1.4.5软件测试总结报告,问题统计表,从问题统计表得出,问题级别基本可分为严重问题、一般问题和微小问题。根据测试结果的具体情况,级别的划分可以有所更改。例如,若发现极其严重的软件缺陷,可以在严重问题级别的基础上,加入特殊严重问题级别。,1.4.5软件测试总结报告,第六章软件测试计划与相关文档,3测试进度表测试进度表用来描述关于测试时间、测试进度的问题。根据测试进度表,可以对测试计划中的时间安排和实际的执行时间状况进行比较,从而得到测试的整体进度情况。,测试进度表,1.4.5软件测试总结报告,4测试总结表测试总结表包括测试工作的人员参与情况和测试环境的搭建模式,并且对软件产品的质量状况做出评价,对测试工作进行总结。,1.4.5软件测试总结报告,测试总结表,1.4.5软件测试总结报告,软件生命周期可分为6个阶段:需求分析、功能设计、详细设计、编码、软件测试以及运行/维护,相邻两个阶段之间可能存在一定程度的重复以

温馨提示

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

评论

0/150

提交评论