川石教育
全国咨询热线:136-9172-9932
  1. 首页 > 资讯与干货 > IT资讯

软件的静态测试技术

作者:川石学院 日期:2021-09-06 15:16:51 点击数:

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

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

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

  一、代码走查

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

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

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

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

  3.   对源代码进行重构;

  4.   分享开发经验。

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

  二、控制流分析

  控制流分析方法主要是将程序流程图转换为控制流程图,通过控制流程图来分析程序中可能存在的问题。

       通过分析控制流程图主要发现以下几类问题:

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

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

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

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

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

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

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

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

  控制流分析步骤如下:

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

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

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

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

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

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

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

  图10-5 控制流程图

  根据控制流程图画出的控制流矩阵见表10-2。

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

  表10-2 控制流矩阵

  通过分析控制流矩阵判断程序是否存在控制流分析方法所关注的几类问题,该实例是正确的,不存在那四类问题。

  三、数据流分析

  数据流分析最初是随着编译系统要生成有效的目标码而出现的,这类方法主要用于代码优化。

  近年来数据流分析方法在确认系统中也得到成功的运用。通过数据流分析可以查找代码中引用但未定义的变量等错误,查找以前未使用的变量再次赋值等数据流异常的情况。数据流分析法的关键是数据的定义和引用。

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

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

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

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

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

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

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

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

  (3)分析数据流表。

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

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

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

  图10-6 控制流程图

  根据控制流程图画出的数据流表见表10-3。

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

  表10-3 数据流表

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

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

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

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

  四、信息流分析

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

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

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

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

  信息流分析的步骤如下:

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

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

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

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

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

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

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

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

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

  •   Q = 0;

  •   2 R = M;

  •   3 while(R>=N)

  •   {

  •   4 Q=Q+1;

  •   5 R=R-N;

  •   }

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

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

  图10-7 输入变量、语句、输出变量关系表

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

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

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

  本章节关于“软件的静态测试技术”的内容就学习到这里,大家觉得文章有用的话记得每天来这里和小编一起学习涨薪技能哦。


相关文章
  • 亚马逊运营成功转行软件测试,薪资13K表示很满意!2021-09-06 15:16:51
  • 西安川石的兰朋友喊你来当他的学弟学妹啦!2021-09-06 15:16:51
  • 国外的月亮也不一定比国内测试猿的年薪美~2021-09-06 15:16:51
  • 建筑工程专业朱同学成功转行为软件测试人!2021-09-06 15:16:51
  • 财务管理专业转行软件测试月薪甩会计几条街!2021-09-06 15:16:51
  • 只有技术沉淀才能成功上岸,深圳就业薪资13K!2021-09-06 15:16:51
  • 薪资11K!实现自我价值,从掌握一门IT技术开始...2021-09-06 15:16:51
  • 文科生转行软件测试照样拿下高薪15K!2021-09-06 15:16:51
  • 恭喜罗同学喜提19.5K,成功入行软件测试!2021-09-06 15:16:51
  • 毕业1年,迷茫的他最终选择转行软件测试2021-09-06 15:16:51