chap白盒测试_第1页
chap白盒测试_第2页
chap白盒测试_第3页
chap白盒测试_第4页
chap白盒测试_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

1、第五章 白盒测试n 概念n逻辑覆盖法n路径分析n数据流测试n程序插桩技术n黑盒测试与白盒测试的比较n静态测试与动态测试n 验证测试与确认测试 白盒测试只测试软件产品的内部结构和处理过程,而不测试软件产品的功能,用于纠正软件系统在描述、表示和规格上的错误,是进一步测试的前提。 白盒子测试分静态和动态两种:静态白盒测试是在不执行软件的条件下审查软件设计、体系结构和代码,从而找出软件缺陷的过程,有时也称为结构分析。动态白盒测试也称结构化测试,通过查看并使用代码的内部结构,设计和执行测试。 控制流图是白盒测试的主要依据。对于一个程序,其程序控制流图G=(V,E,I,O)是一个有向图,其中V是结点的集合

2、,E是边的集合,I是唯一的源结点(入口结点),而O是唯一的汇结点(出口结点)。 结点表示语句,以标有编号的圆圈表示。 边表示语句间可能的控制流向 I, O相应于程序的开始语句和结束语句。 三角形问题类三角形问题类C语言实现语言实现 /* PROGRAM TRIANGLE */mian ()1int a,b,c;2boolean IsTraingle3sacnf(“Enter 3 integer which is sides of a triangle. %d%d%d”,a,b,c);4printf(“Side a is %d”, a);5printf(“Side b is %d”, b);6p

3、rintf(“Side c is %d”,c);7if (ab+c) AND (ba+c) AND (ca+b)8 then IsTraingle=True;9 else IsTraingle=False;10 if (IsTraingle)11then if (a=b) AND (b=c)12then printf(“Equilateral”)13else if (a!=b) AND (a!=c) AND (b!=c)14then printf(“Scalene”)15else printf(“Isosceles”)16else printf(“Not a Triangle”)3456789

4、10111312141516图5-1 三角形程序的程序控制流图345678910111312141516345678910111312141516图5-1 三角形程序的程序控制流图结点3到7是一个序列,结点7到10是一个if-then-else结构,结点11到16是一个嵌套的if-then-else结构。结点3和16是程序源结点和汇结点,对应于单入口、单出口准则。该程序没有循环,因此控制流图是一个有向非循环图。 例:例:P=3P=16是一条程序路经。是一条程序路经。 逻辑覆盖是一种使用最广泛的结构测试方法。逻辑覆盖以程序内部的逻辑结构为基础设计测试用例,要求对被测程序的逻辑结构有清楚的了解,甚

5、至要能掌握源程序的所有细节。 由于覆盖测试的目标不同,逻辑覆盖又可分为:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖及路径覆盖。 下面的一小段程序来讨论。下面的一小段程序来讨论。 if (age25)AND(sex=M) then commission = commission +150; end if if (age=50 OR (commission 2000.0) then commission = commission -200; endifendif 3 3个变量为:年龄个变量为:年龄age 、性别、性别sex、佣金佣金commission a、b、c、d和和e为控制流上程序点为控制

6、流上程序点。 (age25)(sex=M)(age=50)(comm2000.0)comm=comm+150comm=comm-200aTFTFcbed图5-2 被测程序段流程图(age25)(sex=M)(age=50)(comm2000.0)comm=comm+150comm=comm-200aTFTFcbed(age25)(sex=M)(age=50)(comm2000.0)comm=comm+150comm=comm-200aTFTFcbed图5-2 被测程序段流程图语句覆盖要求设计若干个测试用例,运行被测程序,使程序中的每个可执行语句至少被执行一次。这里所谓“若干”,自然是越少越好。

7、Test 1: age=50, sex=M, comm=2500作为测试用例,则程序按路径ace执行。这样该程序段的4个语句都得到执行,从而作到了语句覆盖。语句覆盖 (age25)(sex=M )(age=50)(com m 2000.0)com m =com m +150com m =com m -200aTFTFcbed图 5-2 被 测 程 序 段 流 程 图(age25)(sex=M )(age=50)(com m 2000.0)com m =com m +150com m =com m -200aTFTFcbed(age25)(sex=M )(age=50)(com m 2000.0

8、)com m =com m +150com m =com m -200aTFTFcbed图 5-2 被 测 程 序 段 流 程 图Test 2:Test 2:age=50, sex=F, comm=2500age=50, sex=F, comm=2500程序则按程序则按abeabe执行,没有达到执行,没有达到语句覆盖。语句覆盖。 (age25)(sex=M )(age=50)(com m 2000.0)com m =com m +150com m =com m -200aTFTFcbed图 5-2 被 测 程 序 段 流 程 图(age25)(sex=M )(age=50)(com m 200

9、0.0)com m =com m +150com m =com m -200aTFTFcbed(age25)(sex=M )(age=50)(com m 2000.0)com m =com m +150com m =com m -200aTFTFcbed图 5-2 被 测 程 序 段 流 程 图从程序中每个语句都得从程序中每个语句都得到执行这一点来看,语到执行这一点来看,语句覆盖的方法似乎能够句覆盖的方法似乎能够比较全面地检验被测比较全面地检验被测程序的每一个语句。程序的每一个语句。但语句覆盖是很弱的逻但语句覆盖是很弱的逻辑覆盖准则。辑覆盖准则。 (age25)(sex=M )(age=50)

10、(comm2000.0)comm=comm+150comm=comm-200aTFTFcbed图 5-2 被 测 程 序 段 流 程 图(age25)(sex=M )(age=50)(comm2000.0)comm=comm+150comm=comm-200aTFTFcbed(age25)(sex=M )(age=50)(comm2000.0)comm=comm+150comm=comm-200aTFTFcbed图 5-2 被 测 程 序 段 流 程 图假如这一程序段中两个判假如这一程序段中两个判断的逻辑运算有问题,断的逻辑运算有问题,例如,第一个判断的运算例如,第一个判断的运算符符“ ”错成

11、运算符错成运算符“ ”或是第二或是第二个判断个判断中的运算符中的运算符“ ”错成了运错成了运算符算符“ ”仍使用上述前一个测试用仍使用上述前一个测试用例例Test 1,程序仍将按路径,程序仍将按路径ace执行,执行,但不能发现判断中逻辑运但不能发现判断中逻辑运算的错误。算的错误。 (age25)(sex=M)(age=50)(comm2000.0)comm=comm+150comm=comm-200aTFTFcbed图 5-2 被 测 程 序 段 流 程 图(age25)(sex=M)(age=50)(comm2000.0)comm=comm+150comm=comm-200aTFTFcbed

12、(age25)(sex=M)(age=50)(comm2000.0)comm=comm+150comm=comm-200aTFTFcbed图 5-2 被 测 程 序 段 流 程 图 判定覆盖要求设计若判定覆盖要求设计若干测试用例,运行被干测试用例,运行被测程序,使得程序中测程序,使得程序中每个判断的取真分支每个判断的取真分支和取假分支至少执行和取假分支至少执行一次,即判断的真假一次,即判断的真假值均要被检测。值均要被检测。判定覆盖又称为分支判定覆盖又称为分支覆盖。覆盖。 (age25) (sex=M )(age=50) (com m 2000.0)com m =com m +150com m

13、=com m -200aTFTFcbed图 5-2 被 测 程 序 段 流 程 图(age25) (sex=M )(age=50) (com m 2000.0)com m =com m +150com m =com m -200aTFTFcbed(age25) (sex=M )(age=50) (com m 2000.0)com m =com m +150com m =com m -200aTFTFcbed图 5-2 被 测 程 序 段 流 程 图若选用两组测试用例:若选用两组测试用例:Test 1: age=50, sex=M, comm.=2500 Test3:age=20, sex=M,

14、 comm.=1500 则分别执行路径则分别执行路径ace和和abd,从而使两个判断的从而使两个判断的4个分支个分支c,e和和b,d分别得到检测。分别得到检测。 (age25)(sex=M )(age=50)(com m 2000.0)com m =com m +150com m =com m -200aTFTFcbed图 5-2 被 测 程 序 段 流 程 图(age25)(sex=M )(age=50)(com m 2000.0)com m =com m +150com m =com m -200aTFTFcbed(age25)(sex=M )(age=50)(com m 2000.0)c

15、om m =com m +150com m =com m -200aTFTFcbed图 5-2 被 测 程 序 段 流 程 图若选用另外两组测试用例:若选用另外两组测试用例:Test4age=40, sex=M, comm.=1500Test5 age=50, sex=F, comm.=1900 则分别路径则分别路径acd及及abe, 同样也可覆盖同样也可覆盖4个分支个分支. . (age25)(sex=M )(age=50)(com m 2000.0)com m =com m +150com m =com m -200aTFTFcbed图 5-2 被 测 程 序 段 流 程 图(age25)

16、(sex=M )(age=50)(com m 2000.0)com m =com m +150com m =com m -200aTFTFcbed(age25)(sex=M )(age=50)(com m 2000.0)com m =com m +150com m =com m -200aTFTFcbed图 5-2 被 测 程 序 段 流 程 图 上述两组测试用例上述两组测试用例不仅满足判定覆盖,同不仅满足判定覆盖,同时还满足语句覆盖。时还满足语句覆盖。判定覆盖比语句覆盖判定覆盖比语句覆盖更强一些。更强一些。 (age25)(sex=M )(age=50)(comm2000.0)comm=co

17、mm+150comm=comm-200aTFTFcbed图 5-2 被 测 程 序 段 流 程 图(age25)(sex=M )(age=50)(comm2000.0)comm=comm+150comm=comm-200aTFTFcbed(age25)(sex=M )(age=50)(comm2000.0)comm=comm+150comm=comm-200aTFTFcbed图 5-2 被 测 程 序 段 流 程 图 如果在此程序段中如果在此程序段中第第2 2个判断条件个判断条件comm2000comm2000错错写成写成comm2000comm25)(sex=M )(age=50)(comm

18、2000.0)comm=comm+150comm=comm-200aTFTFcbed图 5-2 被 测 程 序 段 流 程 图(age25)(sex=M )(age=50)(comm2000.0)comm=comm+150comm=comm-200aTFTFcbed(age25)(sex=M )(age=50)(comm2000.0)comm=comm+150comm=comm-200aTFTFcbed图 5-2 被 测 程 序 段 流 程 图条件覆盖要求设计若条件覆盖要求设计若干测试用例,执行被干测试用例,执行被测程序,使得程序中测程序,使得程序中每个判断的每个条件每个判断的每个条件的可能取

19、值至少被执的可能取值至少被执行一次。行一次。 (age25)(sex=M )(age=50)(com m 2000.0)com m =com m +150com m =com m -200aTFTFcbed图 5-2 被 测 程 序 段 流 程 图(age25)(sex=M )(age=50)(com m 2000.0)com m =com m +150com m =com m -200aTFTFcbed(age25)(sex=M )(age=50)(com m 2000.0)com m =com m +150com m =com m -200aTFTFcbed图 5-2 被 测 程 序 段

20、流 程 图第一个判断应考虑到:第一个判断应考虑到:age25 取真值,记为取真值,记为T1age25 取假值,即取假值,即age25,记为,记为sex=M 取真值,记为取真值,记为T2:sex=M 取假值,即取假值,即sex=F,记为,记为第第2个判断应考虑到;个判断应考虑到;Age=50 取真值,记为取真值,记为T3Age=50 取假值,即取假值,即age2000 取真值,记为取真值,记为T4 comm.2000 取假值取假值, 记为记为 4T1T2T3T(age25) (sex=M )(age=50) (com m 2000.0)com m =com m + 150com m =com m

21、 -200aTFTFcbed图 5-2 被 测 程 序 段 流 程 图(age25) (sex=M )(age=50) (com m 2000.0)com m =com m + 150com m =com m -200aTFTFcbed(age25) (sex=M )(age=50) (com m 2000.0)com m =com m + 150com m =com m -200aTFTFcbed图 5-2 被 测 程 序 段 流 程 图 3 3个测试用例覆个测试用例覆盖了盖了4 4个条件的个条件的8 8种情况。种情况。覆盖了两个判覆盖了两个判断的断的4个分支个分支b、c、d和和c。 测试用

22、例 age sex comm 所走路径 覆盖条件 Test1 Test3 Test550 M 2500.0 20 M 1500.0 50 F 1900.0 a c e a b d a b e T1 T2 T3 T4 1T T2 3T 4T T1 2T T3 4T 测试用例 age sex comm 所走路径 覆盖分支 覆盖条件 Test6Test7 20 M 2100.0 50 F 1500.0 a b e a b e be be 1T T2 3T T4 T1 2T T3 4T (age25)(sex=M)(age=50)(comm2000.0)comm=comm+150comm=comm-2

23、00aTFTFcbed图 5-2 被 测 程 序 段 流 程 图(age25)(sex=M)(age=50)(comm2000.0)comm=comm+150comm=comm-200aTFTFcbed(age25)(sex=M)(age=50)(comm2000.0)comm=comm+150comm=comm-200aTFTFcbed图 5-2 被 测 程 序 段 流 程 图判定判定/ /条件覆盖要求设计足条件覆盖要求设计足够的测试用例,执行被测程够的测试用例,执行被测程序,使得判断中每个条件的序,使得判断中每个条件的所有可能取值至少被执行一所有可能取值至少被执行一次,同时每个判断的所有可

24、能次,同时每个判断的所有可能判断结果也至少被执行一次。判断结果也至少被执行一次。 (age25)(sex=M )(age=50)(com m 2000.0)com m =com m +150com m =com m -200aTFTFcbed图 5-2 被 测 程 序 段 流 程 图(age25)(sex=M )(age=50)(com m 2000.0)com m =com m +150com m =com m -200aTFTFcbed(age25)(sex=M )(age=50)(com m 2000.0)com m =com m +150com m =com m -200aTFTFcb

25、ed图 5-2 被 测 程 序 段 流 程 图两个判断各包含两个条件,两个判断各包含两个条件,这这4 4个条件在两个判断中可能有个条件在两个判断中可能有8 8种组合,它们是:种组合,它们是:1 1)age25, sex=Mage25, sex=M,记为,记为T1T1,T2T22) age25, sex=F2) age25, sex=F,记为,记为T1T1,3) age3) age25, sex=M25, sex=M,记为,记为 ,T2,T24) age4) age25, sex=F25, sex=F,记为,记为 ,5 5)ageage 50, comm2000.050, comm2000.0,

26、记为,记为T3T3, ,T4T46) age 6) age 50,comm 50,comm2000.02000.0记为记为T3, T3, 7) age2000.0, 7) age2000.0, 记为记为 ,T4T48) age50,comm2000.0, 8) age25)(sex=M)(age=50)(comm2000.0)comm=comm+150comm=comm-200aTFTFcbed图5-2 被测程序段流程图(age25)(sex=M)(age=50)(comm2000.0)comm=comm+150comm=comm-200aTFTFcbed(age25)(sex=M)(age=

27、50)(comm2000.0)comm=comm+150comm=comm-200aTFTFcbed图5-2 被测程序段流程图4 4个测试用例覆盖了所有的个测试用例覆盖了所有的条件组合,同时也覆盖了条件组合,同时也覆盖了4 4个分支个分支. .但只覆盖了但只覆盖了3 3条路径,漏掉条路径,漏掉了路径了路径acdacd。 测试用例 age sex comm 所走路径 覆盖组合 覆盖条件 Test1 Test6 Test7 Test8 50 M 2500 20 M 2000.0 50 F 1500.0 20 M 1500 a c e a b e a b e a b d 4) 8) T1,T2,T3

28、,T4 1T T2 3T T4 T1 2T T3 4T 1T 2T 3T 4T 3)7)1) 5)2) 6) 路径能否被全面覆盖在软件测试中是一个重要的问题,因为程序要取得正确的结果,就必须消除遇到的各种障碍,沿着特定的路径顺利执行。 如果程序中的每一条路径都得到考验,才能说程序受到了全面检验。 (age25)(sex=M )(age=50)(com m 2000.0)com m =com m +150com m =com m -200aTFTFcbed图 5-2 被 测 程 序 段 流 程 图(age25)(sex=M )(age=50)(com m 2000.0)com m =com m

29、+150com m =com m -200aTFTFcbed(age25)(sex=M )(age=50)(com m 2000.0)com m =com m +150com m =com m -200aTFTFcbed图 5-2 被 测 程 序 段 流 程 图路径覆盖要求设计足够多测试用例,覆盖程序中所有可能的路径。针对上述程序段中的4条可能路径P1: aceP2: abdP3: abe P4: acd4个测试用例:Test1,test 3,test4和test7,可以分别覆盖这4条路径。 讨论路径数目的计算方法,分析程序中到底有多少条路径?有多少条线性独立路径数? 如果程序中出现了多个判断

30、和多个循环,可能的路径数目将会急剧增长,以至实现路径覆盖不可能的。实际上我们可以做到的只是有选择地测试程序中某些有代表的性路径。弧序列表示结点序列表示进入循环次数abdhklabcfklabcfkmbcfklabcfkmbeiklI-A-B-D-F-G-OI-A-B-C-F-G-OI-A-B-C-F-G-A-B-C-F-G-OI-A-B-C-F-G-A-B-E-F-G-O0011n 程序控制流图是一个有向图,如果图中任何两个结点之间都至少存在一条路径,是强连通图。McCabe提出,如果程序控制流图是一个强连通图,其复杂度V(G)可按以下公式计算: V(G) = e n + 2 e为图G中的边数

31、,n为图G中的结点数。n 强连通图的复杂度V(G) 是图中线性独立环路的数量。 通过从汇结点到源结点添加一条通过从汇结点到源结点添加一条边,便可创建强连接有向图。其边,便可创建强连接有向图。其复杂度是:复杂度是:(G) = e n + 2=11-7+2=6以下给出用结点序列表示的以下给出用结点序列表示的6条条线性独立路径:线性独立路径:p1=A,B,C,Gp2=A,B,C,B,C,Gp3=A,B,C,B,E,F,Gp4=A,B,E,F,Gp5=A,D,E,F,Gp6=A,D,F,GcAEBDCFGabdefghi 控制图导出的强连通图ejk独立路径是指从程序入口到出口的多次执行中,每次至少有一

32、个语句(包括运算、赋值、输入、输出或判断)是新的,未被重复的。路径p6=A、B、C、B、E、F、Gp7=A、B、C、B、B、C、G不是独立路径。 独立路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出可执行的独立路径集合,从而设计测试用例的方法。 设计出的测试用例要保证被测程序的每条可执行的独立路径至少执行一次。 路径测试考虑以下几个方面: n程序的控制流图。n程序环境复杂性。借助McCabe复杂性度量,可以从程序的环路复杂性导出程序路径集合中的独立路径数。 n设计测试用例,确保独立路径集中的每一条路径被执行。方法判定覆盖条件覆盖条件组合覆盖基路径测试优点简单、无须细分每个

33、判定增加了对符号判定情况的测试对程序进行较彻底的测试,覆盖面广清晰、测试用例有效缺点往往大部分的判定语句是由多个逻辑条件组合而成(如包含AND、OR等的组合),若仅仅判断其组合条件的结果,而忽略每个条件的取值情况,必然会遗漏部分测试场景达到条件覆盖,需要足够多的测试用例,但条件覆盖还是不能保证判定覆盖,这是由于AND和OR不同的组合效果造成的对所有可能条件进行测试,需要设计大量、复杂测试用例,工作量比较大基本路径法,类似于分支的方法,不能覆盖一些特定的条件,这些条件往往是容易出错的地方 早期的数据流测试分析常常集中于定义/引用异常的缺陷,用于如下三方面测试。(1)变量被定义,但是从来没有使用(

34、引用)(2)所使用的变量没有被定义(3)变量在使用之前被定义两次 从中可以得出,早期的数据流测试主要用于检测程序编写时出现的一些警告信息,如“所定义的变量未被使用等”问题,这些问题光靠简单的语法分析器或者是语义分析器是无法检测出来的。 1)DEF(v,n) 变量v在结点n处定义,定义包括输入语句,赋值语句(等号左侧),过程调用都是定义结点的例子,如果执行这些语句,变量的值往往会发生变化。 2)USE(v,n) 变量v在结点n处被使用,使用包括输出语句、赋值语句(等号右侧)、条件语句、循环语句、过程调用语句都是结点的使用语句,如果执行这类语句,值不会被改变。 3)P-use 当且进当USE(v,

35、n)是谓词使用,比如a=2,对于P-use的程序图出度=2 4)C-use 当且仅当USE(v,n)是计算使用,对于C-use的程序图入度=1 5)定义使用路径 关于变量v的定义使用路径(记做du-path),存在定义和使用结点DEF(v,m) 和USE(v,n),使得m和n是该路径的开始结点和结束结点。 6)清除路径 当定义结点和清除结点中间没有其他的定义结点的时候为清除路径。 结点被定义的变量被引用的变量1X,Y,Z2XW,X3X,Y4Y,Z5YV,Y6ZV,Z7VX8WY9ZV10Zn语句2使用了变量W,而在此之前并未对其进行定义(赋值)。n语句5,6使用了变量V,但在第一次执行循环时也

36、未对其定义过。n语句6对变量Z的定义从未被使用过。n语句8对变量W的定义从未被使用过。 n首先,介绍程序片的一个重要概念S(V,n)。S(V,n)表示结点n之前的所有对V中的变量值做出贡献的所有语句片段的总和。很明显的,做出贡献的一定有USE(v,n),但是要注意的是这里的使用路径包括直接和间接的。举个例子说明。比如说在结点n有个变量a=a+b+c,那么很明显,影响a的值包括a、b、c,将在结点n前影响到值a,b,c三个变量的所有结点都算进去,直到出现一个常量语句,例如b=30,那么说明没有什么再影响b了。 在程序的特定部位插入记录动态特性的语句,最终是为了把程序执行过程中发生的一些重要的历史

37、事件记录下来。例如,记录在程序执行过程中某些变量值的变化情况,变化的范围等。这些插入的语句常常被称为“探测器”或者“探测点” 程序插桩需要从插桩位置、插桩策略、插桩过程 1)程序的开始,即程序块的第1个可执行语句之前2)转移指令之前n for,do ,do-while,do until 等循环语句处。nif, else if, else及end if等条件语句各分支处。n输入/输出语句之后。n函数、过程、子程序调用语句之后。3)标号之前。4)程序的出口nreturn语句之后ncall语句之后 插桩策略主要解决的如何在程序中植入探针,包括植入的位置和方法。n块探针n分支探针。 在被测试的源程序中

38、植入探针函数的桩,即函数的声明。而插桩函数的原型在插桩函数库中定义。在目标文件连接成可执行文件时,则必须连入插桩函数库。探针函数是否被触发就要依据插桩选择记录文件了,要求不同的覆盖率测试会激活不同的插桩函数。 黑盒测试与白盒测试的比较黑盒测试与白盒测试的比较 在单元测试时大都采用白盒测试,而在确认测试或系统测试中大都采用黑盒测试。 黑盒测试与白盒测试的比较黑盒测试与白盒测试的比较白盒测试黑盒测试测试依据根据程序内部结构进行测试根据规格说明书设计测试用例优点能够对程序内部的特定部位进行覆盖测试。能站在用户立场上进行测试。缺点1)无法检测程序的外部特性。2)无法对未实现规格说明的程序部分进行测试。

39、1)不能测试程序内部特定部位。2)发现不了规格说明书的错误。方法判定覆盖条件覆盖判定条件覆盖路径覆盖等价类划分边界值分析因果图黑盒测试与白盒测试的比较黑盒测试与白盒测试的比较ABCDC 白盒测试能发现的故障A-B 只能用黑盒测试发现的故障C-B 能用白盒测试发现的故障B 黑盒测试和白盒测试都能发现的故障D 黑盒测试与白盒测试都不能发现的故障A+C 用两种测试能发现的故障A+C+D 软件中的全部故障ABCDA 黑盒测试能发现的故障图3-9 黑盒测试与白盒测试的比较ABCDC 白盒测试能发现的故障A-B 只能用黑盒测试发现的故障C-B 能用白盒测试发现的故障B 黑盒测试和白盒测试都能发现的故障D

40、黑盒测试与白盒测试都不能发现的故障A+C 用两种测试能发现的故障A+C+D 软件中的全部故障ABCDA 黑盒测试能发现的故障图3-9 黑盒测试与白盒测试的比较静态测试与动态测试静态测试与动态测试 静态测试是指不利用计算机运行被测试的程序,通过其它手段达到检测的目的, 是对被测程序进行特性分析的一些方法的总称.发现大约30%到70%的逻辑设计和编码错误。 动态测试则是指通常意义上的测试通过运行和使用被测程序,发现软件故障,以达到检测的目的 静态测试是对被测程序进行特性分析的方法总称。 检查算法的逻辑正确性;确定算法是否实现了所要求的功能。 检查模块接口的正确性;确定形参数的个数、数据类型、顺序是

41、否正确;确定返回值类型及返回值是否正确性。 检查输入参数是否有合法性检查; 检查调用其他模块的接口是否正确;检查实参类型是否正确、参数个数是否正确,返回值是否正确,是否会误解返回值所表示的意思。如果被调用模块出现异常或错误,程序是否添加了适当的出错处理代码。静态测试静态测试 检查出错处理;检查是否设置了适当的出错处理,以便在程序出错时,能对出错部分进行重新安排,保证其逻辑的正确性。 检查表达式、语句是否正确性,是否含有二义性。 检查常量或全局变量使用是否正确。 检查标识符的定义是否规范、一致性; 检查程序风格的一致性、规范性。 检查代码是否可以优化、算法效率是否最高。 检查代码是否清晰、简洁和

42、容易理解。 检查模块内部注释是否完整;是否反映代码的功能1 1可以发现下面的程序缺陷:可以发现下面的程序缺陷: 错用了局部变量和全程变量;错用了局部变量和全程变量; 不匹配的参数;不匹配的参数; 不适当的循环嵌套和分支嵌套;不适当的处理顺序;不适当的循环嵌套和分支嵌套;不适当的处理顺序; 无终止的死循环;无终止的死循环; 未定义的变量;未定义的变量; 不允许的递归;不允许的递归; 调用并不存在的子程序;调用并不存在的子程序; 遗漏了标号或代码;遗漏了标号或代码; 不适当的连接。不适当的连接。静态测试可以完成以下工作:静态测试可以完成以下工作:2 2找到以下问题的根源:找到以下问题的根源: 未使用过的变量;未使用过的变量; 不会执行到的代码;不会执行到的代码; 未引

温馨提示

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

评论

0/150

提交评论