《软件测试的方法精品文稿.ppt》由会员分享,可在线阅读,更多相关《软件测试的方法精品文稿.ppt(86页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软件测试的方法第1页,本讲稿共86页第2章回顾ONTOWEBWUST软件缺陷是软件质量的对立面软件缺陷是软件质量的对立面软件缺陷软件缺陷(Bug)是什么是什么验证和确认验证和确认软件测试的分类和阶段软件测试的分类和阶段-单元、集成、系统(性能、适用性、兼容性)、验收测试软件测试的工作范畴软件测试的工作范畴-策略、计划、设计、执行、报告、评估第2页,本讲稿共86页第第3章章 软件软件测试测试的方法的方法3.1 白盒测试方法白盒测试方法3.2 黑盒测试方法黑盒测试方法3.3 静态测试和动态测试静态测试和动态测试3.4 主动测试和被动测试主动测试和被动测试3.5 形式化测试方法形式化测试方法3.6
2、基于风险的测试基于风险的测试3.7 模糊测试方法模糊测试方法3.8 ALAC测试和随机测试方法测试和随机测试方法第3页,本讲稿共86页方法论和具体方法方法论和具体方法p从方法论看,更多体现了一种哲学的思想,例如辩证统一的方法,在测试中有许多对立统一体,如静态测试和动态测试、白盒测试和黑盒测试、自动化测试和手工测试等。p软件测试的方法论来源于软件工程的方法论,例如有面向对象的开发方法,就有面向对象的测试方法;有敏捷方法,就有和敏捷方法对应的测试方法。第4页,本讲稿共86页黑盒子和白盒子黑盒子和白盒子功能测试功能测试数据驱动测试数据驱动测试 结构测试结构测试逻辑驱动测试逻辑驱动测试 客户需求事件驱
3、动输入输出第5页,本讲稿共86页静态的和动态的静态的和动态的主持人主持人作者记录员列席人员内审员内审员技术专业人员用户代表不正式正式互审 走读 审查会议运行程序运行程序第6页,本讲稿共86页自动测试和手工测试自动测试和手工测试手工模拟用户操手工模拟用户操作作第7页,本讲稿共86页3.1白盒测试方法白盒测试方法3.1.1 3.1.1 语句覆盖语句覆盖3.1.2 3.1.2 判定覆盖判定覆盖3.1.3 3.1.3 条件覆盖条件覆盖3.1.4 3.1.4 判定条件覆盖判定条件覆盖3.1.5 3.1.5 条件组合覆盖条件组合覆盖3.1.6 3.1.6 路径覆盖路径覆盖3.1.7 3.1.7 基本路径测
4、试法基本路径测试法Zhu.K第8页,本讲稿共86页白盒测试方法n逻辑覆盖逻辑覆盖:以程序的内部逻辑结构为基础,分为语句覆盖、判定覆盖、判定-条件覆盖、条件组合覆盖等n基本路径测试基本路径测试:在程序控制流程的基础上,分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例。Zhu.K第9页,本讲稿共86页3.1.1 语句覆盖语句覆盖p语句覆盖法的基本思想是设计若干测试用例,运行被测程序,使程序中的每个可执行语句至少被执行一次p p如果是顺序结构,就是让测试从头执行到尾如果是顺序结构,就是让测试从头执行到尾p p如果有分支、条件和循环,需要利用下面的方法,执行足够如果有分支、条件和循环
5、,需要利用下面的方法,执行足够的测试覆盖全部语句的测试覆盖全部语句第10页,本讲稿共86页3.1.2 判定覆盖判定覆盖p判定覆盖法的基本思想是设计若干用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假值均曾被满足。p一个判定往往代表着程序的一个分支,所以判定覆盖也被称为分支覆盖。Zhu.K第11页,本讲稿共86页分支测试分支测试-example1PROGRAM som(maxint,N:INT)2INT result:=0;i:=0;3IF N 04THEN N :=-N;5WHILE (i N)AND (result=maxint)6DOi :=i+1;7re
6、sult :=result+i;8OD;9IF result=maxint10THEN OUTPUT(result)11ELSE OUTPUT(“too large”)12END.第12页,本讲稿共86页分支测试分支测试-continuedi:=i+1;result:=result+i;(iN)and(result=maxint)result=maxintN0N:=-N;output(result);output(too large);exitstartyesnonoyesyesnoN=0)result=0 i=0第13页,本讲稿共86页3.1.3 条件覆盖条件覆盖p条件覆盖的基本思想是设计若
7、干测试用例,执行被测程序以后,要使每个判断中每个条件的可能取值至少满足一次。(iN)and(result=maxint)TrueFalseresult=maxintiNTrueFalse第14页,本讲稿共86页条件测试条件测试目标目标:保证测试到每个逻辑条件取值为保证测试到每个逻辑条件取值为 true 和和 false简单条件简单条件:(arel-opb)whererel-op=(和NOT连用),即ab;NOT(ab)组合条件组合条件:由AND,OR连接的多个简单条件,即(ab)AND(c(a+b+c)n测试发现的错误测试发现的错误:n布尔操作符关系操作符n布尔变量算术表达式n布尔括弧第15页
8、,本讲稿共86页条件测试条件测试(2)域测试域测试n表达式E1rel-opE2,测试E1 =E2n如果E1和E2正确,发现rel-op的错误n发现E1或E2的错误,全面分析它们的不同n如果某表达式含有n个变量,则需要进行2n测试分支测试分支测试组合条件C,测试C为true和false分支、以及每个条件例如例如 C=(ab)AND(cb TRUE,FALSEcd TRUE,FALSEC TRUE,FALSETrue AND TrueT.And F.,F.And T.,F.And F.第16页,本讲稿共86页条件测试条件测试 的的示例示例(i=result=0):maxint N iNresult
9、=maxint-11truefalse10falsetrue测试了所有条件但没有覆盖判定(decision)条件覆盖不等于判定覆盖i:=i+1;result:=result+i;(iN)and(result=maxint)result=maxintN0,b0,a1,c1M=.T.N=.T.P1(1-2-4)输入:a=-1,b=-2,c=-3输出:a=-1,b=-2,c=-5F1,F2,F3,F4a=0,b=0,a=1,c0,b0,M取真2T1,F2M=.F.a0,b=0,M取假3F1,T2M=.F.a0,M取假4F1,F2M=.F.a=0,b1,c1,N取真6T3,F4N=.T.a1,c=1,
10、N取真7F3,T4N=.T.a1,N取真8F3,F4N=.F.a=1,c=1,N取假第20页,本讲稿共86页示例示例(2)测试用例覆盖条件覆盖路径覆盖组合输入:a=2,b=1,c=6输出:a=2,b=1,c=5T1,T2,T3,T4P1(1-2-4)1,5输入:a=2,b=-1,c=-2输出:a=2,b=-1,c=-2T1,F2,T3,F4P3(1-3-4)2,6输入:a=-1,b=2,c=3输出:a=-1,b=2,c=6F1,T2,F3,T4P3(1-3-4)3,7输入:a=-1,b=-2,c=-3输出:a=-1,b=-2,c=-5F1,F2,F3,F4P4(1-3-5)4,8覆盖了所有组合
11、,但覆盖路径有限,1-2-5没被覆盖第21页,本讲稿共86页3.1.6 路径测试测试p顾名思义,路径覆盖就是设计所有的测试用例,来覆盖程序中的所有可能的执行路径。测试用例覆盖路径覆盖条件覆盖组合输入:a=2,b=1,c=6输出:a=2,b=1,c=5P1(1-2-4)T1,T2,T3,T41,5输入:a=1,b=1,c=-3输出:a=1,b=1,c=-2P2(1-2-5)T1,T2,F3,F41,8输入:a=2,b=-1,c=-2输出:a=2,b=-1,c=-2P3(1-3-4)T1,F2,T3,F42,6输入:a=-1,b=2,c=3输出:a=-1,b=2,c=6P3(1-3-4)F1,T2
12、,F3,T43,7输入:a=-1,b=-2,c=-3输出:a=-1,b=-2,c=-5P4(1-3-5)F1,F2,F3,F44,8第22页,本讲稿共86页3.1.7 基本路径测试基本路径测试1.依据代码绘制流程图2.确定流程图的圈复杂度(cyclomaticcomplexity)3.确定线性独立路径的基本集合(basisset)4.设计测试用例覆盖每条基本路径第23页,本讲稿共86页示例示例 源代码源代码Procedure:processrecords1.DoWhilerecordsremain2.Readrecord;3.Ifrecordfield1=0Then4.storeinbuffe
13、r;5.incrementcounter;6.ElseIfrecordfield2=0Then7.resetcounter;8.Elsestoreinfile;9.EndIf10.EndIf11.EndDoEnd第24页,本讲稿共86页示例示例 流程图流程图1910112457836V(G)=4第25页,本讲稿共86页基本路径测试:流程图简化12,387694,51011第26页,本讲稿共86页流程图的圈复杂度流程图的圈复杂度V(G)=区域数量(由节点、连线包围的区域,包括图形外部区域)V(G)=连线数量-节点数量+2V(G)=简单可预测节点数量+1圈复杂度(圈复杂度(Cyclomatic c
14、omplexity):代码逻辑复杂度的度量,提供了被测代码的路径数量。复杂度越高,出错的概率越大V(G)modules第27页,本讲稿共86页流程图复杂度例子流程图复杂度例子V(G)=412,378694,51011Region 1Region 2Region 3Region 4第28页,本讲稿共86页确定线性独立的路径集合确定线性独立的路径集合 独立路径独立路径:至少引入一系列新的处理语句或条件的任何路径 基本集基本集:由独立路径构成的集合由基本集导出的测试用例测试用例,保证每行代码语句至少被执行一次基本集合基本集合不一定唯一第29页,本讲稿共86页 Path1:1-2-3-6-7-9-10
15、-1-11示例:基本路径测试用例 Path2:1-2-3-6-8-9-10-1-11 Path3:1-2-3-4-5-10-1-11Path4:1-111910112458736第30页,本讲稿共86页测试用例覆盖集合中每条路径测试用例覆盖集合中每条路径基本路径测试并不是测试所有路径的组合,仅仅保证每条基本路径被执行一次 不需要活动图,但最好绘制程序流程图 计算每个逻辑测试,也就是布尔操作符数加1 最好每个单元都进行基本路径测试,对关键组件则是必要的第31页,本讲稿共86页n目标目标:在循环内部及边界上执行测试在循环内部及边界上执行测试循环测试循环测试 11.简单循环简单循环(迭代次数n)完全
16、跳过循环只经过循环一次经过循环两次经过循环m(mn)次分别经过循环n-1,n,n+1次第32页,本讲稿共86页循环测试循环测试 22.嵌套嵌套(Nested)循环循环在最里面的循环完成前面所述的简单循环测试,同时设定外部循环的最小迭代次数逐步向外循环进行直到所有循环被测试第33页,本讲稿共86页循环测试循环测试 34.其它非结构循环其它非结构循环重新设计重新设计!3.串行连接的循环串行连接的循环独立循环可以分别看着简单循环测试依赖性循环可以看着是嵌套循环第34页,本讲稿共86页3.2 黑盒测试方法黑盒测试方法3.2.1 3.2.1 等价类划分法等价类划分法3.2.2 3.2.2 边界值分析法边
17、界值分析法3.2.3 3.2.3 判定表方法判定表方法3.2.4 3.2.4 因果图法因果图法3.2.5 3.2.5 正交试验法正交试验法3.2.6 3.2.6 功能图法功能图法3.2.7 3.2.7 错误推测法错误推测法第35页,本讲稿共86页3.2.1 等价类划分方法n将程序可能的输入数据分成若干个子集,从每个子集选取一个代表性的数据作为测试用例,等价类是某个输入域的子集,在该子集中每个输入数据的作用是等效的n分为有效等价类和无效等价类。有效等价类是有意义的、合理的输入数据,可检查程序是否实现了规格说明中所规定的功能和性能。无效等价类与有效等价类的意义相反n在分析需求规格说明的基础上划分等
18、价类,列出等价类表设计测试用例时,要同时考虑这两种等价类。因为软件不仅要能接收合理的数据,也要能经受意外的考验。经过正反的测试才能确保软件具有更高的可靠性。all inputsi1i4i2i3第36页,本讲稿共86页确定等价类的方法n在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类in rangegreater than rangeless than rangevaluegreater than valueless than value第37页,本讲稿共86页n在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可以确立一个有效等价类和一个无效
19、等价类。n在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类确定等价类的方法(2)not member of setmember of setBooleanNon-Boolean第38页,本讲稿共86页确定等价类的方式(3)n在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。n在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。个人月收入-x税率x=16000%1600 x21005%500=x360010%3600=x660015%6600=x2
20、160020%21600=x10160045%第39页,本讲稿共86页等价类测试用例-Example等价类1:Integer等价类2:Decimalfraction等价类3:Negative等价类4:Invalidinput第40页,本讲稿共86页根据等价类创建测试用例的步骤a)建立等价类表,列出所有划分出的等价类:b)为每个等价类规定一个唯一的编号;c)设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类d)重复c),最后使得所有有效等价类均被测试用例所覆盖;e)设计一个新的测试用例,使其只覆盖一个无效等价类。f)重复e)使所有无效等价类均被覆盖。输入条件有效等价类无效等价类第41页
21、,本讲稿共86页3.2.2 边界值分析方法n程序的很多错误发生在输入或输出范围的边界上,因此针对各种边界情况设置测试用例,可以发现不少程序缺陷。nBVA Boundary Value Analysisn设计方法:n确定边界情况(输入或输出等价类的边界)n选取正好等于、刚刚大于或刚刚小于边界值作为测试数据第42页,本讲稿共86页确定边界值的方法n如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。n如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少一、比最大个数多一的数作为测试数据。abab第43页,本讲稿共86页确定边界值的方
22、法(2)n如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。n如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。Zhu.Kn Test cases for ABS(x):class x=0,arbitrary value x =100classes x=0,on boundary:x =0classes x=0,below and above:x =-1,x=1第44页,本讲稿共86页正常值(有效类)正常值(有效类):X1=123123边界值边界值:X2=12345边界值边界值:X3=1234567边界值边
23、界值:X4=1边界值边界值:X5=0无效类的值无效类的值:X6=-123123无效类的值无效类的值:X7=asdasd其它其它?BVA 示例2 测试测试 限制性用户输入:限制性用户输入:6位正整数位正整数 无效值无效值:X8=000123 X9=asd123 X10=Empty第45页,本讲稿共86页BVA 示例3Test cases:任意的正常值:随机选择几个选项边界值:选择所有选项边界值:一个都不选边界值:选择一个选项第46页,本讲稿共86页二进制二进制Term 取值范围取值范围BitNibbleByteWordKiloMegaGigaTera0or10-150-2550-65535or0
24、-429496729510241048576107374182410995116277760 0 和和 1,byte 1,byte 由由8 bits 8 bits 构成构成,字由字由4 bytes4 bytes构成构成,第47页,本讲稿共86页ASCII TableCharacterASCII ValueCharacterASCIIValueNullSpace/0129;A0324748495057586465BYZabyz66899091969798121122123第48页,本讲稿共86页字符编辑域字符编辑域DefaultDefaultEmptyEmptyBlankBlankNullNul
25、lZeroZeroNoneNone第49页,本讲稿共86页一些特殊的边界值一些特殊的边界值数值数值数值数值字符字符字符字符位置位置位置位置数量数量数量数量速度速度速度速度位置位置位置位置体积体积体积体积First/lastFirst/last,First-1/Last+1Min/MaxMin/Max,Min-1/max+1Star/FinishStar/Finish,Start-1/Finish+1Empty/FullEmpty/FullLess than empty/more than fullSlower/FasterSlower/FasterLargest/SmallestLargest
26、/SmallestOver/UnderOver/Under,just Over/Just UnderShortest/LongestShortest/Longest 第50页,本讲稿共86页3.2.3 判定表方法判定表方法n在实际应用中,许多输入是由多个因素构成,而不是单一因素,这时就需要多因素组合分析。n对于多因素,有时可以直接对输入条件进行组合设计,不需要进行因果分析,即直接采用判定表方法。n一个判定表由“条件和活动”两部分组成,也就是列出了一个测试活动执行所需的条件组合,所有可能的条件组合定义了一系列的选择,而测试活动需要考虑每一个选择。第51页,本讲稿共86页判定表元素判定表元素n条件
27、桩条件桩,列出问题的所有条件n动作桩动作桩:列出可能针对问题所采取的操作n条件项条件项:针对所列条件的具体赋值n动作项动作项:列出在条件项(各种取值)组合情况下应该采取的动作。n规则规则:任何一个条件组合的特定取值及其相应要执行的操作。Zhu.K第52页,本讲稿共86页判定表方法步骤判定表方法步骤n列出所有的条件桩和动作桩;n填入条件项;n填入动作项,制定初始判定表;n简化、合并相似规则或者相同动作示例示例 见表见表3-13和和3-14第53页,本讲稿共86页3.2.4 因果图法因果图法n多种输入条件的组合,产生多种结果设计测试用例。n设计方法:n分析软件规格说明文档描述的哪些是原因(输入条件
28、),哪些是结果(输出条件),给每个原因和结果赋予一个标示符。n找出原因与结果,原因与原因之间的对应关系,划出因果图n在因果图上标上哪些不可能发生的因果关系,表明约束或限制条件n根据因果图,创建判定表,将复杂的逻辑关系和多种条件组合很具体明确的表示出来n把判定表的每一行作为依据设计测试用例。第54页,本讲稿共86页因果图法示例因果图法示例(1)n有效等价类有效等价类:输入条件有效类.abs(N)N0,N0maxintkmaxint,kmaxintn测试用例测试用例:maxintNresultmaxintNresult551055100005410error100-1156105510011000
29、给定maxint 和 N,如果结果=maxint,则按以下公式计算;否则提示出错:K=0|N|kresult =第55页,本讲稿共86页n k maxintn k maxint nN 0nN 0 n knerrorandxorandnCauses k maxint 1100nInputs k maxint 0011nN 01010nN 00101nEffects k1100nOutputserror0011Zhu.K因果图法示例因果图法示例(2)第56页,本讲稿共86页n1n1n0n0nerrorn0n0n1n1n knEffectsn1n0n1n0nN 0n0n1n0n1nN 0n1n1n0
30、n0n k maxintn0n0n1n1n k maxintnCauseCase Matrix:Zhu.K因果图法示例因果图法示例(3)第57页,本讲稿共86页为什么要采用正交试验法?n打印范围分:全部、当前幻灯片、给定范围n打印内容分:幻灯片、讲义、备注页、大纲视图n打印颜色/灰度分:彩色、灰度、黑白n打印效果分:幻灯片加框和幻灯片不加框。在许多应用系统的测试工作中,不会象判断三角形那样简单,输入条件的因素很多,而且每个因素也不能简单用“是”和“否”来回答。比如,微软Powerpoint程序的打印测试,也需要考虑4个因素,每个因素也有多个选项 测试组合会变得很多,如果按照传统的测试方法,会导
31、致很大的测试工作量第58页,本讲稿共86页3.2.5 正交实验法正交实验法n确定影响功能的因子与状态确定影响功能的因子与状态n选择一个合适的正交表选择一个合适的正交表n利用正交表构造测试数据集利用正交表构造测试数据集参考http:/www.math.hkbu.edu.hk/UniformDesignhttp:/ 功能图法n每个程序的功能通常由静态说明和动态说明组成n静态说明描述了输入条件和输出条件之间的对应关系n动态说明描述了输入数据的次序或者转移的次序。n功能图法就是为了解决动态说明问题的一种测试用例的设计方法n功能图由状态迁移图(statetransitiondiagram,STD)和逻辑
32、功能模型(logicfunctionmodel,LFM)构成第61页,本讲稿共86页状态迁移图 n状态迁移图,状态迁移图,描述系统状态变化的动态信息动态说明,由状态和迁移来描述,状态指出数据输入的位置(或时间),而迁移则指明状态的改变第62页,本讲稿共86页如何设计测试用例?n从功能逻辑模型(决策表或因果图)导出局部测试用例,覆盖各个状态的各种输入数据的组合n从状态迁移图导出整体的测试用例,以覆盖系统(程序)控制的逻辑路径功能图法设计测试用例,就是如何覆盖软件所表现出来的所有状态,可以转化为两个层次的测试用例功能图法是综合运用黑盒方法和白盒方法来设计测试用例,即整体上选功能图法是综合运用黑盒方
33、法和白盒方法来设计测试用例,即整体上选用白盒方法用白盒方法路径覆盖、分支和条件覆盖等,而局部上选用的是路径覆盖、分支和条件覆盖等,而局部上选用的是黑盒方法黑盒方法决策表或因果图方法决策表或因果图方法 第63页,本讲稿共86页3.2.7 错误推测法错误推测法n基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性地设计测试用例。n发现程序经常出现的错误的方法:n单元测试中发现的模块错误;n产品的以前版本曾经发现的错误;n输入数据为0或字符为空;n当软件要求输入时(比如在文本框中),不是没有输入正确的信息,而是根本没有输入任何内容,单单按了Enter键;n这种情况在产品说明书中常常忽视,程序
34、员也可能经常遗忘,但是在实际使用中却时有发生。程序员总会习惯性的认为用户要么输入信息,不管是看起来合法的或非法的信息,要不就会选择Cancel键放弃输入,第64页,本讲稿共86页3.3 静态测试和动态测试静态测试和动态测试n将需求和设计的评审也纳入测试的范畴,可以看作是广义测试n静态测试包括对软件产品的需求和设计规格说明书的评审、对程序代码的复审等n静态分析的查错和分析功能是其他方法所不能替代的,可以采用人工检测和计算机辅助静态分析手段进行检测,但越来越多地采用工具进行自动化分析n动态测试是通过真正运行程序发现错误,通过观察代码运行过程,来获取系统信息,对系统行为进行验证。第65页,本讲稿共8
35、6页3.4 主动测试和被动测试主动测试和被动测试n主动测试方法主动测试方法:测试人员主动向被测试对象发送请求、或借助数据、事件驱动被测试对象的行为,从而验证被测试对象的反应或输出结果n被动测试方法被动测试方法:测试人员不干预产品的运行,而是被动地监控产品在实际环境中运行,通过一定的被动机制来获得系统运行的数据,包括输入、输出数据.第66页,本讲稿共86页3.5 形式化测试方法形式化测试方法n3.5.1 形式化方法n3.5.2 形式化验证n3.5.3 基于模型的软件测试n3.5.4 扩展有限状态机方法第67页,本讲稿共86页3.5.1 形式化方法形式化方法n形式化方法实际上就是基于数学的方法来描
36、述目标软件系统属性的一种技术n凡是采用严格的数学语言、具有精确的数学语义的方法,都称为形式化方法。形式化规范说明语言,一般由3个主要的成分构成:语法、语义和一组关系n形式化方法更大作用是体现在软件规格和验证之上,这包括软件系统的精确建模和软件规格特性的具体描述,即可以看作是面向模型的形式化方法和面向属性的形式化方法第68页,本讲稿共86页形式化的具体方法形式化的具体方法n基于模型的方法,如Z语言、B语言等n代数方法,如OBJ、CLEAR、ASL、ACT等n过程代数方法,如CSP、CCS、ACP、LOTOS、TPCCS等n基于逻辑的方法,如区间时序逻)、Hoare逻辑、模态逻辑、时序逻辑、时序代
37、理模型等。n基于网络的方法第69页,本讲稿共86页3.5.2 形式化验证形式化验证n形式化验证,就是根据某些形式规范或属性,使用形式逻辑方法证明其正确性或非正确性。n一般通过形式化规范进行分析和推理,研究它的各种静态和动态性质,验证是否一致、完整,从而找出所存在的错误和缺陷。n无法证明某个系统没有缺陷,因为不能定义“没有缺陷”。只能证明一个系统不存在我们可以想得到的缺陷,以及验证满足系统质量要求的属性第70页,本讲稿共86页形式化验证的一些具体方法形式化验证的一些具体方法n有限状态机(FSM)或扩展有限状态机(EFSM)nSPIN和线性时态语言nUML语义转换n标准RBAC模型n扩展的RBAC
38、模型和基于粒计算的RBAC模型n符号模型检验nBAN逻辑模型第71页,本讲稿共86页3.5.3 基于模型的软件测试基于模型的软件测试n基于模型的测试(Model-basedtesting,MBT)是利用模型来生成相应的测试用例,然后根据实际结果和原先预想的结果的差异来测试系统n先从概念上形成模型,然后试图用数学的方法来描述这个模型,形成仿真模型,完成所需的测试第72页,本讲稿共86页MBT的优缺点的优缺点n测试效率高n对逻辑复杂故障测试效果好n容易实现自动化测试优点优点缺点缺点n误报问题误报问题n漏报问题漏报问题n模型机理模型机理第73页,本讲稿共86页软件测试模型软件测试模型n故障模型。n安
39、全漏洞模型n差性能模型n并发故障模型n不良习惯模型n代码国际化模型n易诱骗代码模型第74页,本讲稿共86页检测步骤检测步骤n预处理预处理/预编译n词法分析词法分析(LexicalAnalysis)n语法分析语法分析(Parsing)和语义处理语义处理(SemanticAnalysis)n抽象语法树生成抽象语法树生成n控制流图生成控制流图生成nIP 扫描扫描n人工确认人工确认。第75页,本讲稿共86页3.5.4 扩展有限状态机方法扩展有限状态机方法n有限状态机是一种用来进行对象行为建模的工具,其作用主要是描述对象在它的生命周期内所经历的状态序列,以及如何响应来自外界的各种事件第76页,本讲稿共8
40、6页EFSM示例示例-1第77页,本讲稿共86页EFSM示例示例-2第78页,本讲稿共86页EFSM工具工具-FSME第79页,本讲稿共86页3.6 基于风险的测试基于风险的测试n测试就是“对软件系统中潜在的各种风险进行评估的活动n基于风险的测试是指评估测试的优先级,先做高优先级的测试,如果时间或精力不够,低优先级的测试可以暂时先不做n软件产品的风险度可以通过出错的影响程度和出现的概率来计算第80页,本讲稿共86页风险度量风险度量第81页,本讲稿共86页风险测试步骤风险测试步骤n列出软件的所有功能和特性;n确定每个功能出错的可能性;n如果某个功能出错或欠缺某个特征,需要评估对用户使用软件产品的
41、影响程度;n根据上面两个步骤,计算风险度;n根据可能出错的迹象,来修改风险度;n决定测试的范围,编写测试方案第82页,本讲稿共86页3.7 模糊测试方法模糊测试方法n模糊测试(Fuzztesting)方法,简单的说,就是构造大量的随机数据作为系统的输入,从而检验系统在各种数据情况下是否会出现问题n模糊测试方法可模拟黑客对系统发动攻击测试,完成安全性测试,并能应用于服务器的容错性测试n参考网站:http:/www.cs.wisc.edu/bart/fuzz/fuzz.htmlhttp:/ ALAC测试和随机测试方法测试和随机测试方法nALAC,是Act-like-a-customer(象客户那样做)的简写,ALAC测试方法是一种基于客户使用产品的知识开发出来的测试方法,它的出发点是著名的Pareto80/20规律第84页,本讲稿共86页作业作业第第3章章 6、8、9第85页,本讲稿共86页Q&AZhu.K第86页,本讲稿共86页