2-5 静态测试2

2-5 静态测试2

ID:36182285

大小:1.35 MB

页数:34页

时间:2019-05-07

2-5 静态测试2_第1页
2-5 静态测试2_第2页
2-5 静态测试2_第3页
2-5 静态测试2_第4页
2-5 静态测试2_第5页
资源描述:

《2-5 静态测试2》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、软件测试基础Part2软件测试技术5静态测试本节学习内容静态测试技术—评审静态分析静态分析静态分析的目的是发现文档中的缺陷或可能存在缺陷的地方。不过,静态分析经常通过工具来完成。使用静态分析进行检查的文档必须是正式文档,并以一定的结构来组织。程序代码常常是软件开发过程中唯一可以进行静态分析的。静态分析和评审静态分析和评审是紧密联系的。假如在评审之前进行了静态分析,可以发现很多缺陷,从而评审时需要检查的地方就可以明显地减少。由于静态测试通常是工具支持的,因此其工作量会比评审少得多。静态分析静态分析可以用来发现安全性问题,很多安全性漏洞是由

2、于使用了易产生错误的程序结构,并且没有进行必要的检查而产生的。比如缓冲区溢出保护,或者没有检查输入数据越界等。工具可以发现这种类型的缺陷,因为他们有标准的格式来查找和发现这种缺陷。静态分析静态分析的好处编译器做为静态分析工具通过静态分析工具可以发现编程语言语法错误,并且以故障或警告的方式进行报告。静态分析通过静态分析可以发现以下缺陷和结构可能会导致程序产生的错误:违背语法规则违背编程规范和标准数据流异常控制流异常数据流:按时间变化的数据序列。控制流:控制数据流动的方向。控制流语句控制着程序的执行路径。静态分析静态分析的好处1、静态分析工

3、具可以发现的语法错误:检查编程语言中数据和变量的数据类型的正确性检查没有声明的变量检查不可到达代码检查域边界的上溢或下溢(静态选择)检查接口的一致性检查所有作为跳转开始或跳转结束标签的使用静态分析2、检查和规范、标准的一致性通过工具可以检查测试对象是否与规范、标准相一致。比如是否遵循了大部分的编程规则和标准。工具检查还有一个优点,假如编程人员知道代码需要按照编程规范进行检查,他们会比没有这种自动化测试时更乐于按照编程规范来工作。静态分析3、数据流分析(dataflowanalysis)数据流分析是指通过在程序代码经过的路径上检查数据的用

4、法而发现缺陷的一种测试方法。具体而言,就是在不运行程序的情况下,对变量的定义、引用进行分析,以检测数据的赋值与引用之间是否出现了不合理的现象,如引用未赋值的变量,对以前未曾引用变量的再次赋值等数据流异常现象。静态分析数据流分析方法将程序中变量的出现分为变量的定义和引用。若语句k执行时改变了程序变量v的值,则称k定义了变量v;若语句k执行时引用了变量v的值,则称k引用了变量v.静态分析例如语句V=Y+Z;语句if(Y>Z)then…静态分析对以上变量的定义及引用做如下定义:已定义的(d):变量已经赋值引用的(r):读取或使用变量的值未定义

5、或未引用(u)静态分析数据异常的三种情况ur异常:没有赋初值就被引用du异常:被赋值后未被引用就出作用域dd异常:变量被赋值未被引用就再次被赋值。静态分析例:静态分析publicclassSnippet{publicstaticvoidmain(String[]args){intk=comp(4,5);}privatestaticintcomp(inta,intb){inthelp;if(a>b)help=1;returnhelp;}}4、控制流图控制流图分析是描述程序控制流的一种图示方法。在控制流图中,每一个圆称为流图的结点,代表一条

6、或多条语句。流图中的箭头称为边或连接,代表控制流。静态分析控制流图的基本符号顺序判断Whileuntilcase静态分析通过控制流图的清楚描述,程序结构顺序很容易理解,同时可以发现一些可能的控制流异常,如跳出循环体,或程序结构有多个出口。静态分析将流程图映射成控制流图静态分析圈复杂度圈复杂度也称圈数、环路复杂度、回路复杂度圈复杂度可用来估算程序代码的可测试性和可维护性圈复杂度是一种为程序逻辑复杂性提供定量测度的软件度量,该度量用于计算程序的基本的独立路径数目,为确保所有语句至少执行一次的测试数量的上界。独立路径必须包含一条在定义之前不曾

7、用到的边。圈复杂度计算的基础是程序控制流图静态分析圈复杂度的计算V(G)=e–n+2其中V(G)为控制流图G的圈复杂度,e为控制流图中的边,n为控制流图的节点数。V(G)=12–9+2=5静态分析(2)计算独立路径数,从控制流图来看,一条独立路径就是包含一条在其他独立路径中从没有用过的边的路径。静态分析圈复杂度的计算方法三:计算控制流图中区域的数量,简单来说就是闭合环路+外面的区域。这个题是4+1=5静态分析随堂练习计算以下控制流图的圈复杂度随堂练习为以下代码画出控制流图,并计算圈复杂度voidMethod(booleanconditi

8、on){if(condition){System.out.println("HelloWorld!");}}随堂练习为以下代码画出控制流图,并计算圈复杂度voidCycleSampleTwo(intvalu

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。