搜索
写经验 领红包
 > 生活

静态测试技术有哪些(静态测试技术交叉走读)

导语:静态测试技术

静态测试是通过分析代码来发现错误,所依据的只能是数据和代码的自然属性,对业务属性则一无所知。静态测试并不需要执行软件,通过审查软件的设计、体系结构和代码,从而找出软件缺陷的过程,有时也称为结构化分析。

这就是这类方法的极限,即静态测试方法做到极致,也只能发现一小部分错误。另外,静态分析只能基于现有代码,不能发现代码缺失造成的错误。

静态测试常用的方法有:代码走查、数据流分析、控制流分析和信息流分析。

<一>代码走查

代码走查(code walkthrough)是开发人员与架构师集中讨论代码的过程,检查代码的逻辑和语法是否正确。

代码走查的作用主要包括以下几个方面:

 1)检查是否符合编辑规范;

 2)检查代码逻辑是否存在问题;

 3)对源代码进行重构;

 4)分享开发经验。

代码走查过程中需要注意的是,不应该匆匆忙忙地完成一次代码走查,需要充分地、认真地对待,同时在代码走查过程中可以学习其他工程师的经验。在走查过程中不能用自己的编程思维看待代码,代码走查的目的是确定代码是否正确。

<二>控制流分析

控制流分析方法主要是将程序流程图转换为控制流程图,通过控制流程图来分析程序中可能存在的问题,通过分析控制流程图主要发现以下几类问题:

(1)转向并不存在的标号。

(2)没有用的语句标号。

(3)从程序入口进入后无法达到的语句。

(4)不能达到停机语句的语句。

在控制流程图中只有以下两种图形符号:

(1)结点:以标为编号的圆圈表示,它代表了程序流程图中矩形框所表示的处理、菱形所表示的两个或多个出口判断以及两至多条流线相交的汇合点。

(2)控制流线或弧:以箭头表示,它与程序流程图中的流线是一致的,表明了控制的顺序。

为方便记录,一般会在控制流线上标有名字,如a、b、c 等。

控制流分析步骤如下:

(1)确定所有程序元素。

(2)根据程序元素之间的相互关系得到控制流程图。

(3)将控制流程图转换成控制流矩阵。

(4)通过数据结构的形式把控制流矩阵表示出来。

(5)借助算法对控制流进行分析,找出存在的问题。

【实例】根据代码画出的控制流程图如图10-5 所示。

<三>数据流分析

数据流分析最初是随着编译系统要生成有效的目标码而出现的,这类方法主要用于代码优化。近年来数据流分析方法在确认系统中也得到成功的运用。通过数据流分析可以查找代码中引用但未定义的变量等错误,查找以前未使用的变量再次赋值等数据流异常的情况。数据流分析法的关键是数据的定义和引用。

数据的定义:如果程序中某一语句执行时能改变某程序变量M 的值,则称M 是被该语句定义的。

数据的引用:如果语句的执行引用了内存中变量N 的值,则称该语句引用变量N。

数据流分析方法主要是发现以下两种错误:

(1)变量未定义但被引用。

(2)变量定义但未被引用。

数据流分析方法使用步骤如下:

(1)根据代码画出控制流程图。

(2)根据控制流程图画出数据流表。

(3)分析数据流表。

(4)根据分析结果对代码进行修正和优化。

【实例】根据代码画出的控制流程图如图10-6 所示。

对数据流分析表进行分析,可以发现以下问题:

(1)语句2 中使用的变量M 在之前的语句中并未定义。

(2)语句5 中定义的变量N,在后面一直未使用。

(3)语句7 中定义的变量Z,在语句8 中被重新定义了,这样会出现异常警告。

<四>信息流分析

信息流分析主要是验证程序变量间信息的传输。程序的信息关系可以通过输入变量与语句关系、语句与输出变量关系和输入变量与输出变量关系三个表来导出。

输入变量与语句关系:输入变量直接或间接影响语句的执行。

语句与输出变量关系:语句执行直接或间接影响变量的输出。

输入变量与输出变量关系:输入变量直接或间接影响输出变量。

信息流分析的步骤如下:

(1)根据代码得到三个关系表:输入变量与语句关系表、语句与输出变量关系表、输入与输出变量关系表。

(2)分析输入变量与语句关系表,查看对未定义的变量所有可能的引用,根据语句的执行情况来判断是哪个输入变量未定义。

(3)分析语句与输出变量关系表,查看所有可能会影响输出变量取值的语句,根据语句的执行情况来判断是哪条语句导致输出变量错误。

(4)分析输入变量与输出变量关系表,查看所有可能影响输出变量取值的输入变量,判断输出变量会不会由一些非法的变量导出。

信息流主要分析以下内容:

(1)能够列出对输入变量的所有可能的引用。

(2)在程序的任何指定点检查其执行可能影响某一输出变量值的语句。

(3)输入输出关系提供一种检查,看每个输出值是否由相关的输入值而不是其他值导出。

【实例】如以下代码段(此代码为伪代码):

根据代码分析出输入变量与语句关系表、语句与输出变量关系表和输入变量与输出变量关系表,如图10-7 所示。

输入变量与语句关系表中,由于输入变量M、N 的大小直接影响while 语句的循环次数,所以输入变量与语句3、4、5 是有关系的。

语句与输出变量关系表中,语句1、2、3 和4 与输出变量的关系比较容易理解,较难理解的是语句5 与输出变量Q 和R 都有关系,因为语句影响输出变量R 的值,而R 的值又影响while 语句的循环次数,所以间接影响输出变量Q 的值。

输入变量与输出变量的关系表比较容易理解,输入变量M、N 决定输出变量Q 和R 的大小。

免责声明:本站部份内容由优秀作者和原创用户编辑投稿,本站仅提供存储服务,不拥有所有权,不承担法律责任。若涉嫌侵权/违法的,请与我联系,一经查实立刻删除内容。本文内容由快快网络小鸣创作整理编辑!