2011最新软件测试教程.ppt_第1页
2011最新软件测试教程.ppt_第2页
2011最新软件测试教程.ppt_第3页
2011最新软件测试教程.ppt_第4页
2011最新软件测试教程.ppt_第5页
已阅读5页,还剩130页未读 继续免费阅读

下载本文档

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

文档简介

1、第7章软件测试技术,7.1软件测试的基础7.2白盒测试技术7.4软件测试计划和测试分析报告7.5软件测试策略7.6总结2,7.1软件测试的基础,7.1.1软件测试的概念背景:在软件开发过程中,以保证软件质量的方式对软件进行了分析、设计和实现,但在工作中不可避免地出错。 这样,软件产品隐藏了很多错误和缺陷。 尤其是在大规模且复杂的软件的情况下更是如此。 这些错误中,有致命的错误。 如果不排除,就会导致生命和财产的重大损失。 软件测试是一个运行程序以发现错误的过程. 或者,软件测试是基于软件开发的各阶段的规格说明和程序内部结构精心设计的一系列测试用例(数据和预计输出结果),利用这些测试用例来运行程序,发现程序错误的过程。 软件测试是指3、测试工具的软件开发工程师(SDE/T )、软件测试人员、软件测试人员(STE )、4、SDE/T、测试工具的代码,用测试工具来测试软件5、了解产品的功能要求,对其进行测试,检查软件是否有错误,判断软件是否具有稳定性,写适当的测试规范和测试用例。 STE,6,7,2 .软件测试的目的GlenMyers在其软件测试书中就软件测试的目的提出了以下观点: (1)测试是运行程序寻找错误的过程。 (2)所谓良好的测试案例,是发现至今为止没有发现的错误的可能性很高的测试案例。 (3)所谓成功的测试,是指明了至今为止没有发现的错误的测试。 7.1.1软件测试的概念、目的和原则、8、测试的目标是用最少的时间和最少的精力在软件系统中发现各种潜在的错误和缺陷。 另外,应该认识到测试只能证明程序中的错误的存在,但不能证明程序中没有错误。 即使进行最严格的测试,程序中也可能存在尚未发现的错误或缺陷,因此测试无法证明程序中没有错误,但可能会检测出程序中的错误。 7.1.1软件测试的概念、目的和原则,软件测试人员的任务是明确的,站在用户的角度,不断使用和攻击刚开发的软件产品,尽可能地发现产品中存在的问题,即我们所说的错误。 9,3 .软件测试的基本原则人们为了提高测试效率,在长期测试实验中积累了很多经验,下面给出了人们在实践中总结的基本原则: (1)尽快持续进行软件测试。 (2)程序员或编程机构不得测试自己设计的程序。 (3)测试用例中不仅有输入数据,还有与之对应的期待结果。 (4)测试用例的设计不仅需要合法的输入数据,还需要非法的输入数据。 (5)在修改程序后进行回归测试。 7.1.1软件测试的概念、目的和原则,10,(6)程序中未发现的错误的数量通常与该程序中发现的错误的数量成比例。 (7)妥善保存测试计划、所有测试用例、错误统计和最终分析报告,将其作为软件的组成部分之一,便于维护。 (8)必须全面检查各测试结果。 (9)严格执行测试计划,排除测试随意性。 测试计划的内容包括测定的软件功能、输入和输出、测试内容、各测试的日程、资源要求、测试资料、测试工具、测试用例的选择、测试的控制方式和过程、系统组装方式、跟踪规程、调试规程、回归测试的规定和评价标准等、7.1.1软件测试的概念、目的和原则、11、7.1.1软件测试的过程、图7.1测试的过程、12、软件测试与程序测试不相同。软件测试必须在软件定义和开发的整个期间内进行. 因此,由需求分析、概要设计、详细设计及程序代码等得到的文件资料,包括需求规格说明、概要设计说明、详细设计规格说明及源程序在内,应该成为软件测试的对象。 软件测试对象,13,测试流程说明: (1)软件配置:软件要求规格书、软件设计说明书、源程序列表等文件。 (2)测试构成:测试计划、测试计划、测试用例、测试驱动程序等文档。 (3)测试工具:支持为提高测试效率而设计的软件测试的软件。 例如,测试数据自动生成程序、静态分析程序、动态分析程序、测试结果分析程序、驱动测试的测试数据库等。 (4)测试评估:测试中检测出的错误迹象,是为了纠正和积累软件设计的经验,分析和发现错误的原因和位置。 7.1.2软件测试过程,14,(5)纠错(调试):包括通过找到错误的原因和位置并纠正错误,将文件修改到软件正确为止。 纠错本身具有的不确定性,往往很难正确地制定测试日程。 (6)可靠性模型:通过对测试软件错误率的分析,建立模型,获得可靠数据,指导软件的设计和维护。 7.1.2软件测试的过程,15,软件测试的目的是用最小限度的测试用例集合来测试更多程序中潜在的错误。 如何彻底测试,如何设计测试用例是测试的重要技术。 根据测试过程是否处于实际应用环境,软件测试技术分为静态分析技术和动态测试技术。 测试方法有分析方法(包括静态分析法和白箱法)和非分析方法(称为黑箱法)。 7.1.3软件测试的方法,16,1 .静态分析技术静态分析技术:不运行被测试软件,对需求分析说明书、软件设计说明书、源程序进行结构检查、流程图分析、符号执行等发现软件错误(1)结构检查是一种手工分析技术,由一系列人员评价程序设计、需求分析、代码测试的工作,虚拟运行程序,在评价中进行错误检查。 这个方法可以找到典型程序的30%70%的逻辑设计和编码方面的错误。 7.1.3软件测试的方法,17,(2)流程图分析通过分析程序的流程图的代码结构,检查程序的语法错误信息、句子中的识别符参照状况、子例程和函数调用状况、不能执行的代码段。 此方法有助于代码实现和分析测试结果。 (3)符号执行是编码定义数据,其为对程序的各路径赋予符号形式,将符号输入到特定的路径中来处理输出符号,判断程序的行为是否错误,并完成分析错误的目的。 该方法比数值计算复杂得多,容易出错,而且不是数值计算,因此很少使用。 7.1.3软件测试的方法,18,2 .动态测试技术的动态分析是运行被实验者程序,运行结果分析程序时可能发生的错误。 您可以手动设计程序测试用例,也可以使用动态测试工具分析器进行检测和分析。 动态测试包括功能测试和结构测试。 将程序看作一个函数,整个输入描述函数的定义域,整个输出描述函数的值域,并且函数描述输入的定义域与输出值域之间的关系。 这种动态测试的算法可以归纳为以下5点:7.1.3软件测试的方法,19,(1)选择定义域的有效值,或选择定义域以外的无效值。 (2)针对选定值确定预期结果。 (3)用选择的值执行程序。 (4)观察程序的行为,记录执行结果。 (5)比较(4)的结果和(2)的结果,如果不一致,程序就会错误。 动态测试既可以使用白盒法进行模块逻辑结构测试,也可以使用黑盒法进行功能结构测试。 又称7.1.3软件测试的方法、20、7.2白盒测试技术、7.2.1白盒测试概念、玻璃盒测试。 仔细检查软件的过程细节。此方法可将测试对象视为开放框,从而测试人员可利用程序内部的逻辑结构和相关信息设计或选择测试用例并测试程序的所有逻辑路径。 白盒测试,21,理论上白盒测试可以完全测试。 但是,在实际的测试中,这种包罗性的方法是不能实现的。 因为即使是小程序,也有可能出现很多惊人的逻辑路径。 图7-2是小程序的流程图。7.2.1白箱测试的概念、白箱测试的内容、22、图7.2白箱测试中的贫穷测试、7.2.1白箱测试的概念、23,1 )说明:图中,圆圈代码的一行(或句子块)。 其中有五个路径,左边的曲线箭头表示执行次数不超过20个循环。 这样的执行路径有520条,并且接近1014的可能路径。 如果在1毫秒内完成测试,此测试过程将花费3170年。 2 )结论:即使实现了正确的白盒测试,测试的程序也不能断言全部正确。 因为实行贫困测试,工作量太大,花费太多时间,实施起来是不现实的。 为了节约时间和资源,提高测试效率,必须精心设计测试用例。 因为需要从大量可用测试用例中选择少量测试数据,所以使用这些测试数据能有效地发现尽可能多的隐藏错误。 测试只是发现错误,并不保证程序没有错误. 7.2.1白盒测试的概念,24,测试用例设计的基本目的是确定最有可能发现某些错误或某种错误的测试数据。 7.2.2白箱测试的测试用例设计、逻辑垄断测试方法通常用流程图来设计测试用例,其考察的重点是图中的判断框。 这些判定通常与选择结构相关或与循环结构相关,所以是决定程序结构的重要因素。 另一方面,逻辑垄断法、路径测试通过设计充分的测试用例,在垄断程序中至少测试一次可能的程序执行路径,如果程序中含有循环(在程序图中表示为循环),就按每个循环至少执行一次。 二、传球测试法,25,1 .句子垄断的意思是选择足够的测试用例,使被实验者程序中的各句至少执行一次。 图7.3是与测试的一系列程序的流程图相对应的c源程序(用c语言记述)。 浮动、b、x; if(A1,7.2.2白箱测试的测试用例设计,26,图7.3文件垄断,7.2.2白箱测试的测试用例设计,应该在sacbed路径上运行程序,以便每句执行一次。 为了实现这一通路,选择下一组输入数据:A=2,B=0,x=2,27 (实际上x可以是任何实数),该数据说明仅在条件为真时测试,而实际输入的条件为假时不明显测试错误实际上,句子的垄断程序的逻辑垄断很少,句子的垄断只对判定式的值感兴趣,不会根据判定式的条件分别测试不同的值。 在上述示例中,为了执行sacbed过程并测试每个语句,只有两个判定表示(A1)AND(B=0)和(a=2) or 但是,如果将程序中的第一判定式中的逻辑运算符“AND”错误为“OR”,或者将第二判定式中的条件“X1”错误为“X1误记为X1、a1、B=0和B0的b点,有时A=2、A2、X1和x1。 因此,只要使用以下2组测试数据,就能够满足上述垄断标准。 7.2.2白盒测试用例设计,31,图7.3句垄断,7.2.2白盒测试用例设计,(1)A=2,B=0,x=3(满足X1,B=0,A=2和X1的条件,执行根sacbed )。 (2)A=0,B=1,x=0(满足a1,B0,A2和x1的条件的执行路径sabd )。 32、说明:条件垄断一般比判定垄断强。 因为条件垄断对判定式中的各条件赋予了两个不同的结果,所以判定垄断只关心判定式整体的值。 上例两组测试数据也同时符合垄断标准。 然而,尽管按各条件获得了两个不同的结果,判定公式却总是仅取一个值,这是相反的情况。 例如,使用接下来的两组测试数据,仅满足条件而不满足复盖标准。 (1)满足A=2,B=0,x=1(a1,B=0,A=2和x1的条件,并执行备用路径) (2)满足a=1,B=1,x=2(a1,B0,A2和X1的条件,并执行备用路径上述例子的第二个判定式的值总是真,不满足判定垄断的要求。 为了解决这个矛盾,需要兼顾条件和分支。 7.2.2白箱测试的测试用例设计、33,4 .判定/条件垄断判定/条件垄断设计成在判定中执行至少一次各条件的全部可能值的足够的测试用例,同时执行至少一次各判定的全部可能判定结果。7.2.2白箱测试的测试案例设计,34,图7.3文霸复盖,7.2.2白箱测试的测试案例设计,在图7.3的例子中,下述两组测试数据满足判定/条件霸复盖标准。 (1)A=2,B=0,X=4; (2)A=1,B=1,X=1。 35、说明:判定/条件垄断也有缺陷。 表面上,测试了所有条件的值。 但是实际情况并非如此。 因为有些条件掩盖了其他条件。 在条件式(A1)AND(B=0)的情况下,只要(A1)的测试为真,就需要测试(B=0)的值来确定该公式的值,而在(A1)的测试值为假的情况下,不再次测量(B=0)的值,而是判断该公式的值为假同样,在(A=2)OR(X1)的式中,如果(A=2)的结果为真,就不需要测试(X1)的结果,而能够判断出式的值为真。 因此,判定/条件垄断不一定能检测出逻辑公式中的错误。 7.2.2白箱测试的测试

温馨提示

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

评论

0/150

提交评论