软件工程实用教程6-软件测试课件_第1页
软件工程实用教程6-软件测试课件_第2页
软件工程实用教程6-软件测试课件_第3页
软件工程实用教程6-软件测试课件_第4页
软件工程实用教程6-软件测试课件_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

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

文档简介

1、软 件 工 程第六章 软件测试第六章 软件测试任务1 进行静态测试软件测试概述软件测试的目的和原则软件测试与软件开发各阶段的关系软件测试的过程软件测试方法任务2 进行白盒测试白盒测试逻辑覆盖基本路径覆盖2任务3 进行黑盒测试黑盒测试等价类划分边界值分析法错误推断法因果图法3任务1 进行静态测试代码在编写过程是与软件测试并发执行的。一般我们对测试的理解认为必须让程序跑起来才能够查看程序是否存在问题。实际上,静止状态下的源代码也可以暴露出一些问题。下面给出一段程序,大家看看能不能直接找出问题呢?451 软件测试概述软件测试的重要性在整个软件开发中,测试工作量一般占30%40%,甚至50%。 在人命

2、关天的软件(如飞机控制、核反应堆等)测试所花费的时间往往是其它软件工程活动时间之和的三到五倍二、软件测试的目的和原则G.Myers给出了关于测试的目的测试是为了发现程序中的错误而执行程序的过程;好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;成功的测试是发现了至今为止尚未发现的错误的测试。软件测试的原则所有的测试都应追溯到用户需求最严重的错误(从用户角度)是那些导致软件无法满足需求的错误。程序中的问题根源可能在开发前期的各阶段解决、纠正错误也必须追溯到前期工作。测试与软件开发个阶段之间的关系可用V模型描述所有测试可以在任何代码被产生前就被计划和设计应该在测试开始之前的相当长时间,就制

3、定出测试计划。测试计划可以在需求模型一完成就开始详细的测试方案定义可以在设计模型被确定后立即开始软件测试不等于程序测试,软件测试应贯穿于软件定义与开发的整个期间;据美国一家公司统计,查出的软件错误中,属于需求分析和软件设计的错误约占 64%,属于程序编写的错误仅占 36%。程序编写的许多错误是“先天的”。pareto原则测试发现的错误中80%很可能起源于20%的模块中。测试应该从“小规模”开始,并逐步进行“大规模”测试。穷举测试是不可能的。为了达到最佳的测试效果,应该由独立的第三方来从事测试工作。3 软件测试与软件开发个阶段的关系4 软件测试的过程软件测试的步骤单元测试又称为模块测试,是最小单

4、位的测试,其目的在于发现各模块内部可能存在的各种错误。在单元测试活动中,各独立单元模块将在于系统的其它部分相隔离的情况下进行测试,单元测试集中对源代码实现的每一个程序单元进行测试,检查各模块是否正确实现了规定的功能。多个模块可以并行进行单元测试。集成测试在集成各个模块时有两种方式一次性集成方式首先对每个模块进行单元测试,然后将这些模块组装在一起进行测试,最终得到要求的软件系统增值式集成方式首先对每个模块进行单元测试,然后将其逐步组装成较大的系统,在组装过程中一边连接一边测试,已发现连接过程中产生的问题,最后组装成要求的软件系统。增值式集成方式有三种实现方式自顶向下、自底向上和混合增值方式。确认

5、测试也称为有效性测试。基于需求规格说明书和用户信息,验证软件的功能和性能及其它特性。确认测试的步骤进行有效性测试在模拟的环境下,应用黑盒测试方法,验证所测试的软件是否满足需求规格说明属列出的需求软件配置的复查测试和测试系统测试把已经通过确认测试的软件,与计算机硬件、外设、某些支持软件、数据和人员等系统元素结合起来,进行组装和测试。系统测试用理应根据需求规格说明书来设计,并在模拟环境下运行。验收测试以用户为主,由开发人员,测试人员,QA人员参加的测试5 软件测试方法17软件测试的策略和方法静态测试方法动态测试方法人工测试方法计算机辅助静态分析方法白盒测试方法黑盒测试方法任务2 进行白盒测试目前图

6、书管理系统代码已经编写完身份验证部分的代码。如何设计合理的测试数据,才能让这个函数中的所有代码都跑一遍,并能够验证其逻辑实现的合理性,检验程序中是否存在问题。181 白盒测试白盒测试把程序看成装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作。白盒测试又称为结构测试。19典型的白盒测试方法逻辑覆盖基本路径测试条件测试数据流测试循环测试控制结构测试2 逻辑覆盖方法逻辑覆盖是设计白盒测试方案的一种技术,是对一系列测试过程的总称,这组测试过程逐渐进行越来越完整的通路测试。逻辑覆盖方法(1)语句覆盖(2)判定覆

7、盖(3)条件覆盖(4)判定/条件覆盖(5)条件组合覆盖举例PROCEDURE SAMPAL (A,B:REAL; VAR X:REAL); BEGIN IF (A1) AND (B=0) THEN X:=X/A IF (A=2) OR (X1) THEN X:=X+1 END; 开始(A1) AND (B=0)(A=2) OR (X1)返回X=X/AX=X+1FFTTabdce(1)语句覆盖使程序中每个语句至少执行一次只需设计一个测试用例,覆盖ace 路径:A1 and B=0 and A=2A1 and B=0 and X/A 1 输入数据: A=2, B=0, X=4 即达到了语句覆盖。语

8、句覆盖是最弱的逻辑覆盖 (2)判定覆盖使每个判定的真假分支都至少执行一次。可设计两组测试用例:第一个判定表达式为真并且第二个判定表达式为假:P1TP2F A=3,B=0 ,X=0 可覆盖acd分支 第一个判定表达式为假并且第二个判定表达式为真:P1FP2T A=2,B=1 ,X=1 可覆盖abe分支 两组测试用例可覆盖所有判定的真假分支 判定覆盖仍是弱的逻辑覆盖(3)条件覆盖使每个判定的每个条件的可能取值至少执行一次。例子中共有两处判定表达式,每个表达式中有两个条件,为了做到条件覆盖应该选取测试数据使得:在第一个判断表达式中有下述结果出现: A1,A 1,B=0,B 0 在第二个判定表达式中有

9、下述结果出现: A=2,A 2,X1,X 1使用下面两组数据就可以满足上述覆盖标准:T1T2F3F4 A=2,B=0,X=4 可覆盖c、e分支 F1F2T3T4 A=1,B=1,X=1 可覆盖b、d分支 (4)判定条件覆盖选取足够多的测试用例,使判断中的每个条件的所有可能取值至少执行一次,同时每个判断本身的所有可能判断结果至少执行一次.针对例子,下面两组测试数据满足判定条件覆盖。P1TT1T2P2TT3T4 A=2, B=0, X=4P1FF1F2P2FF3F4 A=1,B=1,X=1条件覆盖不一定包含判定覆盖 判定覆盖也不一定包含条件覆盖(5) 条件组合覆盖条件组合覆盖是更强的逻辑覆盖标准,

10、它要求选取足够多的测试数据,使得每个判定表达式中条件的各种可能组合都至少出现一次。条件组合覆盖是前述几种覆盖标准中最强的,但是不一定能够执行到程序中的每条路径。上述例子共有8种可能的条件组合:A1,B=0A1,B0A1,B=0A 1,B0A=2,X1A2,X1A2,X1A2,X1下面的四组数据可以使上面列出来的的八种条件组合每种至少出现一次:A=2,B=0,X=4(针对1,5两种组合,覆盖路径ce)A=2,B=1,X=1(针对2,6两种组合,覆盖路径be)A=1,B=0,X=2(针对3,7两种组合,覆盖路径be )A=1,B=1,X=1( 针对4,8两种组合,覆盖路径bd )练习参考答案语句覆

11、盖1. a路径 x=80,y=802. bcef 路径不存在3. bcf 路径 (x=80 and y=80) and (x=90 and y=75) and (x75 or y=90 ,80=y=80 and y=80) and (x90 or y=75 and y=90) 80=80=90测试用例:x=85,y=90 参考答案判定覆盖 1. 路径: a 条件: P1T x=90 and y=90 测试用例: x=90,y=90 2. 路径: bce,不可能 3. 路径: dbe 条件: P1FP2FP3T x=75 and y=90 测试用例 : x=75,y=90 4. 路径: bcf

12、条件: P1FP2TP3F x=90 and y=75 and y80 测试用例: x=90,y=75条件覆盖 1、路径: dbe 条件: F1T2F3T4T5T6 x=75 and y=90 测试用例 : x=75,y=90 2、路径: bcf 条件: T1F2T3T4T5F6 x=90 and y=75 and y80 测试用例: x=90,y=75 3、路径: bdf 条件: F1F2F3F4F5F6 x75and y=80 y=80 x=90 y=75 x=75 y=90 x=80 y=90 y=75 y90 x=80 x=75 x=90 x80 y80 x90 y75 x75 y90

13、1. T1T2 x=80 y=802. T1F2T3T4T5F6 x=90 y=753. F1T2F3T4F5T6 x=74 y=914. F1F2F3F4F5F6 x=74 y=745. F1T2F3T4T5T6 x=75 y=916. T1F2T3F4T5F6 x=76 y=743 基本路径测试基本路径测试是Tom McCabe提出的一种白盒测试技术。使用这种技术设计测试用例时,首先计算过程设计结果的逻辑复杂度,并以该复杂度为指南定义执行路径的基本集合,从该基本集合导出的测试用例可以保证程序中的每条语句至少执行一次,而且每个条件在执行时都将分别取真和假值。流图在设计测试方案时,往往需要仔细

14、分析程序的控制流。为了突出表示程序的控制流,可以使用流图(也称为程序图)。流图仅仅描绘程序的控制流程,它完全不表现对数据的具体操作以及分支或循环的具体条件。在流图中用圆表示节点,一个圆代表一条或多条语句。程序流程图中的一个处理框序列和一个菱形判定框,可以映射成流图中的一个节点。流图中的箭头线称为边,它和程序流程图中的箭头线类似,代表控制流。在流图中一条边必须终止于一个节点,即使这个节点并不代表任何语句(实际上相当于一个空语句)。由边和节点围成的面积称为区域,当计算区域数时应该包括图外部未被围起来的那个区域。 举例说明把程序流程图映射成流图的方法顺序结构选择While循环Util循环由包含复合条

15、件的PDL映射成的流图用任何方法表示的过程设计的结果,都可以翻译成流图用PDL表示的处理过程以及与之对应的流图procedure:sort1:do while records remain read record;2:if record field 1=03:then process record; store in buffer; incremert counter;4:elseifrecardfield2=05:then reset counter;6:else process record;store in file;7a:end ifendif7b:enddo8:end由PDL翻译成的

16、流图使用基本路径测试技术设计测试用例的步骤如下:根据过程设计结果画出相应的流图举例:PROCEDURE average;/*这个过程计算不超过100个在规定值域内的有效数字的平均值;同时计算有效数字的总和及个数。*/INTERFACE RETURNS average,totalinput,totalvalid;INTERFACE ACCEPTS value,minimum,maximum;TYPE value1.100 IS SCALAR ARRAY;TYPE average,total,input,totalvalid;minimum,maximum,sum IS SCALAR;TYPE i

17、 IS INTEGER;1:i1; total,inputtotalvalid0; sum0;2:DO WHILE valuei-9993:AND totalinput1004:increment totalinput by1;5:IF valueiminimum6:AND valueimaximum7:THEN increment totalvalid by 1; sumsum+valuei;8:ENDIF increment i by 1;9:ENDDO10:IF totalvalid011:THEN averagesum/totalvalid;12:ELSE average-999;13

18、:ENDIF END average求平均值过程的流图2. 计算流图的环形复杂度环形复杂度定量度量程序的逻辑复杂性。有了描绘程序控制流的流图之后,可以用下述三种方法之一来计算环形复杂度。 1) 流图中的区域数等于环形复杂度。 2) 流图G的环形复杂度V(G)E-N+2,其中E是流图中边的条数,N是流图中节点数。 3)流图G的环形复杂度V(G)P+1,其中P是流图中判定节点的数目。 使用上述任何一种方法,都可以计算出本例求平均值流图的环形复杂度为6。 3. 确定线性独立路径的基本集合 所谓独立路径是指至少引入程序的一个新处理语句集合或一个新条件的路径,用流图术语描述,独立路径至少包含一条在定义该

19、路径之前不曾用过的边。 使用基本路径测试法设计测试用例时,程序的环形复杂度决定了程序中独立路径的数量,而且这个数是确保程序中所有语句至少被执行一次所需的测试数量的上界。 注意,独立路径的基本集合并不唯一。本例,由于环形复杂度为6,因此共有6条独立路径: 路径1:1-2-10-11-13 路径2:1-2-10-12-13 路径3:1-2-3-10-11-13 路径4:1-2-3-4-5-8-9-2- . 路径5:1-2-3-4-5-6-8-9-2-. 路径6:1-2-3-4-5-6-7-8-9-2-. 路径4、5、6后面的省略号(.)表示,可以后接通过控制结构其余部分的任意路径(例如,10-11

20、-13)。 注意,路径1和路径3不能独立测试。4设计可强制执行基本集合中每条路径的测试用例 应该选取数据使得在测试每条路径时都适当地设置好了各个判定节点的条件。可以测试上述基本集合的测试用例如下:路径1的测试用例: valuek有效输入值,其中ki(i的定义在下面)valuei-999,其中2i100 预期结果:基于k的正确平均值和总数 注意,路径1无法独立测试,必须作为路径4、5和6的一部分来测试。路径2的测试用例: value1-999 预期结果:average-999,其他都保持初始值路径3的测试用例:试图处理101个或更多个值 valuei有效输入值,其中i100前100个数值应该是有

21、效输入值预期结果:与测试用例1相同注意,路径3无法独立测试,可以作为路径4、5、6的一部分来测试。路径4的测试用例: valuei=有效输入值,其中i100 valuekminimum,其中ki 预期结果:基于k的正确平均值和总数。路径5的测试用例: valuei有效输入值,其中i100 valuekmaximum,其中ki 预期结果:其于k的正确平均值和总数路径6的测试用例: valuei=有效输入值,其中i100 预期结果:正确的平均值和总数任务3 进行黑盒测试当图书管理系统已经完成了系统的集成及集成测试之后,整个程序处在可运行状态。下一步我们需要确认用户的需求是否已经得到满足。下面这段文

22、字是从图书管理系统需求规格说明书中摘取的借阅功能的需求描述,现在需要根据需求说明中的陈述验证我们的程序是否能够达到预定的目标。53541 黑盒测试技术 黑盒测试着重测试软件的功能需求,也就是说,黑盒测试让软件工程师设计出能充分检查程序所有功能需求的输入条件集。黑盒测试并不能取代白盒测试技术,它是与白盒测试互补的方法,它很可能发现白盒测试不易发现的其他不同类型的错误。黑盒测试力图发现下述类型的错误: 功能不正确或遗漏了功能; 界面错误; 数据结构错误或外部数据库访问错误; 性能错误; 初始化和终止错误。 2 等价划分等价划分方法把程序的输入域划分成数据类,据此可以导出测试用例。理想的测试案例是独

23、自发现一类错误,从而减少设计测试用例的数量(一个用例代表了一类错误)。如果把所有可能的输入数据(有效的和无效的)划分成若干个等价类,则可以合理地做出下述假定:每类中的一个典型值在测试中的作用与这一类中所有其他值的作用相同。2 等价类划分等价类划分的启发规则: 规则1:如果输入条件规定了取值范围或者值的个数,则可以确定一个有效等价类和两个无效等价类。 例如:假设输入条件的取值范围是0到150,则有效等价类定义是0 x150,无效等价类是x150。规则2:如果规定了输入数据的一组值,而且程序要对每一个输入值分别进行处理,这时可以将每一个允许输入的值定义为一个有效等价类,所有不允许输入值的集合定义为

24、一个无效等价类。 例如,在学校内对教授、副教授、讲师、助教进行统计,则定义教授、副教授、讲师、助教4个有效等价类,所有不符合这4类人员的输入值(工程师)定义为一个无效等价类。规则3:如果规定了输入条件是一个布尔量,则可以定义一个有效等价类和一个无效等价类。例子:当向系统中输入密码时,该密码是否正确结果就是布尔型的,存在/不存在(分成两个等价类)。规则4:如果规定了输入数据必须遵循的规则,则可以定义一个有效等价类和若干个无效等价类。即把符合规则的输入定义为一个有效等价类,把从各种不同角度违反规则的输入定义为多个无效等价类。例:网络游戏中升级装备:角色的等级必须能够使用该装备;红宝石1个;翡翠2个

25、;蓝宝3个。测试用例分为有效等价类一个(满足上述条件);无效等价类四个分别违背上述四条原则中一条。 (1)等级不够 (2)等级够,缺红宝 (3)等级够,缺翡翠 (4)等级够,缺蓝宝设计等价类测试用例要注意:有效等价类的测试用例尽量公用,以减少测试的次数;无效等价类必须每类一例,以防止漏掉错误。例子:某一报表处理系统,要求用户输入处理报表的日期。假设日期限制在1990年1月至1999年12月,即系统只能对该段时期内的报表进行处理。如果用户输入的日期不在此范围内,则显示输入错误信息。该系统规定日期由年、月的六位数字字符组成,前四位代表年,后两位代表月。先用等价类划分的方法设计测试用例,来测试系统的

26、日期检查功能。 划分等价类并编号输入条件有效等价类无效等价类报表输入的长度及内容1.6位数字字符2.有非数字字符3.少于6个4.多于6个年分范围5.199019996.小于19907.大于1999月份范围8.01129.等于0010.大于12 为等价类设计测试用例对于表中的1,5,8对应的三个有效等价类条件,用一个测试用例覆盖:测试数据 期望结果 覆盖条件199709 输入有效 1,5,8 为每一个无效等价类设计一个测试用例测试数据 期望结果 覆盖条件1999KD 输入无效 219975 输入无效 31997005 输入无效 4198912 输入无效 6200012 输入无效 7199800

27、输入无效 9199713 输入无效 10注意:无效等价类的测试用例中,不能出现相同的测试用例,否则相当于一个测试用例覆盖一个以上不合理等价类,使测试不完全3 边界值分析由于很多时候在输入的边界比中间更加容易发生错误,为此可用边界值分析(boundary value analysis BVA)作为一种测试技术。边界值分析选择一组测试用例检测边界值边界值分析是一种补充等价划分的测试案例设计技术,根据等价类的边界来设计测试用例如果输入条件指定为以a和b为边界的范围a,b,测试案例应当包括a、b、略大于a,略小于b的值如果输入条件指定为一组值,测试用例应当执行其中的最大和最小值,还应当测试略大于最小值

28、和略小于最大值的值指导输入的原则也适用于输出的条件(在产生最大输出和最小输出时用到的输入的值也要测试)如果内部的数据结构由于定义的边界(如数组有100的数据项),要在边界上执行程序例子:输入条件测试说明测试数据期望结果选取理由报表日期的类型和长度1、5个数字字符2、7个数字字符3、输入为空4、一个非数字5、全部非数字1997319971231997A0qwerty输入出错输入出错输入出错输入出错输入出错略小于6略大于6输入极限只一个非法字符全部非法字符年份范围198902200004输入出错输入出错略小于1990略大于1999月份199700199713199701199712输入出错输入出错输入有效输入有效略小于01略大于12边界值

温馨提示

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

评论

0/150

提交评论