静态测试

静态测试

1.1 静态分析技术

  静态分析是一种不通过执行程序而进行测试的技术。

  静态分析的关键功能是检查软件的表示和描述是否一致,没有冲突或者没有歧义。它瞄准的是纠正软件系统在描述,表示和规格上的错误,因此是任何进一步测试执行的前提。静态分析覆盖程序语法的词汇分析,并研究和检查独立语句的结构和使用。

  

  主要有三种不同的程序测试可能性:

  1.程序内部检查完整性和一致性

  2.考虑预定义规则

  3.把程序和其相应的规格或文档进行比较

  虽然有些软件工程师认为静态分析的特点是可以被自动执行,例如在一些特定工具的辅助下完成,像语法分析器,数据流分析器等,但是用于测试的手工技术同样可以不需要程序的执行。图1例示了最重要的静态分析技术结构,这些技术在1975年到1994年的软件工程协会的文献中可以找到。

图1  静态分析技术结构

  语法分析器是一个基本的自动化静态分析工具,它把程序/文档文本分解成独立的语句。当在内部检查程序/文本的时候,语句的一致性被进行了检查。

  当对两个文本在不同的语义级别上执行的时候,例如一个程序针对其规格文档,那么程序的完整性和正确性能够被评价。这个技术瞄准的是检测规格到程序实现之间转换上的问题,这被称之为静态验证。验证器需要有形式化的规格和规格的形式化定义,静态验证比较程序提供的实际值和在规格文档中被预定义的目标值。然而,它不提供任何手段用于检查程序是否实际解决了给出的问题。静态验证过程的结果被描述成布尔语句,即一个语句要么是真,要么是假。静态验证的明显有点是它引导向目标和正确结果发展。但是,由于形式化规格是非常困难和耗时的,因此它一般用于对那些要求高可靠性的软件才进行。

  另外一个静态分析技术是符号执行器。它在符号短语中分析一个程序在给定的路径上做了些什么事情。它模拟程序的执行,计算在程序不同位置上变量的值。符号执行器非常适合用于数学算法的分析。由于用于符号执行的程序开发是非常昂贵的,因此它一般用于测试数学程序,这里成本/收益是可接受的。

  在静态分析技术中的一个最重要是手工技术是软件检视。

  检视的技术最初可以追溯到Fagan,他认为在软件开发生命周期的多个阶段必须执行这个活动来改进软件质量。在检视中,代码或者工作产品的文档被使用预先定义好的检视规则进行检查。检视过程一般是根据检查表进行的。

  走读是一个类似的同行评审过程,包括了程序的作者,测试人员,一个秘书和一个协调员。走读的参与者模拟计算机创建小部分数量的用例。它的目标是对源代码背后的逻辑和基本假设进行质疑,尤其是嵌入式程序中的接口。

时间: 2024-08-27 20:23:10

静态测试的相关文章

QAC静态测试配置及使用教程

使用前提:安装成功QAC软件. . 1.打开软件如上 . 2.file->Auto-Create-Project,出现如下所示对话框 1-工程名字 2-将要分析的代码路径 3-代码报告输出路径 4-需要分析文件后缀 5-7一般保持默认,除非新建一个独立的可以不被别的工程覆盖掉的工程,需要将5-7路径单独拷贝出来新建,别的情况下保持默认. 8-是加载头文件路径 第三步,加载将要分析的源文件,点图3的2处,只需按照路径加上自己要分析的代码即可. 第四步,加载相应的头文件,点图3的8处,按照路径添加头

Helix QAC — 软件静态测试工具

Helix QAC 是Perforce 公司(原PRQA 公司)产品,主要用于C/C++ 代码的完全自动化静态分析工作,可以提供编码规则检查.代码质量度量.软件结构分析.测试结果管理等功能.Helix QAC 能够全面而准确地发现软件中潜在的问题,自身符合ISO26262 功能安全标准认证.目前已广泛应用于汽车.电子商务.医疗器械.生产和通信等领域. Helix QAC 主要模块为QAC/QAC++.QA Verify.以及常用行业规则包(如MISRA C:2012.MISRA C++:2008

网络技术教程笔记(3)

操作系统 操作系统 0.操作系统概述 1.进程管理 11进程管理--进程的概念 进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位.它由程序块.进程控制块(PCB)和数据块三部分组成. 进程和程序的区别:进程是程序的一次执行过程,没有程序就没有进程.程序是完成某个特定功能的一系列程序语句的集合,只要不被破坏,它就永远存在.程序是一个静态测试的概念,而进程是一个动态的概念,它由创建而产生,完成任务后因撤销而消亡:进程是程序进行资源分配和调度的独立单位,而程序不是. 1.

白盒测试方法

白盒测试,英文是White Box Testing.又称结构测试或者逻辑驱动测试. 白盒测试是把测试对象看作一个打开的盒子.利用白盒测试法进行动态测试时,需要测试软件产品的内部结构和处理过程,不需测试软件产品的功能. 白盒测试法的覆盖标准有逻辑覆盖.循环覆盖和基本路径测试.其中逻辑覆盖包括语句覆盖.判定覆盖.条件覆盖.判定/条件覆盖.条件组合覆盖和路径覆盖. 白盒测试是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条

单元测试和白盒测试相关总结

一.  软件测试方法 1.        软件测试方法包括:白盒测试(White  Box  Testing).黑盒测试(Black  Box Testing).灰盒测试.静态测试.动态测试. 2.        白盒测试:是一种测试用例设计方法,在这里盒子指的是被测试的软件,白盒,顾名思义即盒子是可视的,你可以清楚盒子内部的东西以及里面是如何运作的,因此白盒测试需要你对系统内部的结构和工作原理有一个清楚的了解,并且基于这个知识来设计你的用例. 白盒测试技术一般可被分为静态分析和动态分析两类技术

JUnit注解与hamcrest

黑盒测试: 黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用.在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息.黑盒测试着眼于程序[学Java,到凯哥学堂kaige123.com]外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试.说白了黑盒测试就是不需要知道程序的代码结构,只需要类似于充当用户那样去使用.

Gartner: 2017年11大信息安全技术(解读版)

在2017年6月份举办的第23届Gartner安全与风险管理峰会上,Gartner的Fellow--Neil McDonald发布了2017年度的11个最新最酷的信息安全技术,比往年的10大技术多了一项. 以往都是通过互联网了解Gartner的各种信息和报告.这次,本人有幸亲临现场,参加峰会,自然有更多的感悟.参加峰会期间,获得的信息量实在太大,直到现在,虽然已经过去了2个多月,依然没有消化完. 回到主题,以往我都是聚焦于每年选出来的10大信息安全技术本身,但对这些技术是如何被Gartner选出

使用nginx+Apache负载均衡及动静分离

使用nginx+Apache负载均衡及动静分离 介绍    LB负载均衡集群分两类: LVS (四层)和 nginx或haproxy (七层)    客户端都是通过访问分发器的VIP来访问网站 在七层中的网站页面有: .php .html .png .jpeg .jsp 等, 有动态页面有静态页面. 需要在应用层基于不同的应用进行分发. 一:实验拓扑图:     二:实验目标 实战:使用Apache+nginx实现动静分离的负载均衡集群 三:实验环境 主机作用分类 主机名 IP地址 安装软件 N

ctf之隐写工具篇

0x00 Stegdetect Stegdetect程序主要用于分析JPEG文件,可以检测到通过JSteg.JPHide.OutGuess.Invisible Secrets.F5.appendX和Camouflage等这些隐写工具隐藏的信息 1,安装 windows安装文件我没找到.我在kali安装Stegdetect比较简单apt-get install stegdetectOutGuess安装:https://github.com/crorvick/outguess.git./config