当前位置: 首页> 技术文章> 软件测试之软件的静态测试技术

软件测试之软件的静态测试技术

  软件测试之软件的静态测试技术

       这一次主要介绍软件静态测试技术的内容,静态测试就是通过对代码进行分析,找出错误,只根据数据和代码的自然属性,不了解业务属性。它不需要执行软件,它通过回顾软件的设计、架构和代码来找出一个软件测试缺陷,有时也被称为结构化分析。

  这种方法的局限性在于,即静态测试方法达到极限,也只能找出一小部分误差。静态分析也只能在已有代码的基础上,找不到由缺失代码引起的错误。

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

  一、代码继续查找

  代码走查(codewalkthrough)是一种架构师与开发人员一起对代码进行重点分析的过程,它检查代码的逻辑和语法是否正确。

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

  查看与编辑说明一致的内容;检查代码逻辑的问题;对源码的重构;共享开发经验。

  在进行代码浏览时需要注意的一点是,您不应该匆忙地对代码进行跟踪,需要对代码进行深入、认真的处理,同时可以从其他工程师那里学习。你不能用你自己的编程思维来审视代码,代码走查的目的就是判断代码是否正确。

  二、控制流量分析

  控制流分析方法主要是把程序流程图转化为控制流程图,对程序中可能出现的问题进行控制分析。

  在对控制流程图的分析中,主要发现了下列问题:

  (1)转出不存在的标记。(2)不能使用的语句标记。(3)从程序入口进入后无法到达的陈述。(4)语句不能执行停止语句。

  下面两种图形符号只能用于控制流程图:

  (1)结点:用标记为编号的圆圈表示,表示程序流程图上矩形框表示的处理情况,菱形表示的两个或多个出口判断,以及两条或多条流线交叉的点。

  (2)控制流线或圆弧:用箭头表示,与程序流程图上的流线相一致,表明控制的顺序。

  为了便于记录,一般都会在控制流线上标明名称,如 a, b, c等。

  下面是控制流分析步骤:

  (1)确定所有的程序要素。(2)根据程序要素之间的相互关系,生成控制流程图。(3)将控制流程图转化为控制流矩阵。(4)控制流矩阵以数据结构的形式表示。(5)借助算法对控制流进行分析,找出问题所在。

  【例子】由该代码绘制的控制流程图显示在图1-1中。

软件的静态测试技术(图1)

  图1-1控制流程


  由控制流程图绘制的控制流矩阵如表1-2所示。

软件的静态测试技术(图2)

  表格1-2控制流矩阵

  本文通过对控制流矩阵判定程序中是否存在控制流分析方法中涉及的几类问题进行分析,该实例是正确的,不存在那四类问题。

  三、资料流动分析

  最初,编译系统要产生有效的目标码时,数据流分析就主要用于代码优化。

  近几年来,数据流分析方法被成功地应用于确认系统。对数据流进行分析,可以发现代码中引用但未定义的变量等错误,查找数据流异常,如之前未用过的变量重新赋值等。资料的定义和引用是数据分析方法的关键。

  资料定义:如果一个程序中的一条语句可以改变一个程序变量 M的值,那么它就是用这个语句来定义 M。数据引用:如果语句的执行引用了内存中变量 N的值,那么该语句将引用变量 N。

  资料流分析方法主要有以下两种错误:

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

  (2)没有引用的变量定义。

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

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

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

  (3)数据流表分析。

  (4)根据分析的结果修改和优化代码。

  【例子】由该代码绘制的控制流程图如图1-3所示。

软件的静态测试技术(图3)

  图示1-3控制流程


  表1-4是由控制流程图绘制的数据流表。

软件的静态测试技术(图4)

  表1-4数据流表


  分析数据流分析表可发现下列问题:

  (1)语句2中使用的变量 M在前面的语句中没有定义。(2)语句5中定义的变量 N已经不用了。(3)语句7中定义的 Z变量,在语句8中被重新定义,因此会出现异常警告。

  四、信息流分析

  信息流分析主要是验证程序变量之间的信息传递。通过输入变量与语句关系、语句与输出变量之间的关系以及输入变量与输出变量之间的关系,可以得出程序信息关系。

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

  信息流分析的步骤如下:

  (1)根据代码可以得到三个关系表:输入变量和语句和输出变量关系表、输入输出变量关系表。(2)分析输入变量和语句关系表,查看可能对未定义的变量的引用,并根据语句的执行判断是哪个输入变量没有定义。(3)分析语句和输出变量关系表,查看可能影响输出变量取值的所有语句,并根据语句的执行判断是哪个语句引起错误的输出变量。(4)分析输入变量和输出变量关系表,查看可能影响输出变量取值的所有输入变量,判断某些非法变量是否会导出输出变量。

  信息流动主要分析如下:

  (1)能够列出输入变数的所有可能引用。(2)检查程序的任何一个定点的执行情况可能会影响某一输出变量值。(3)输入-输出关系提供一种检查,以查看每个输出值是由相关的输入值导出的。

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

  Q = 0; 2 R = M; 3 while(R>=N) { 4 Q=Q+1; 5 R=R-N; }

  如图1-5所示,基于代码分析了输入变量与语句关系表、语句和输出变量表以及输入变量之间的关系表。

软件的静态测试技术(图5)

  图表1-5输入变量、语句、输出变量关系表


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

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

  输出量与输出量的关系表易于理解,输入变量 N决定了输出变量 Q、 R的大小。

如需了解更多测试技术信息请关注:http://www.duoceshi.cn/ 深圳多测师软件与技术服务有限公司

上一篇: 软件测试之接口自动化测试基础

下一篇: 软件测试之手工测试人员如何转测试开发?

QQ技术交流群

多测师官方学习交流
556733550

加入群聊