白盒测试方法:

1 程序结构分析:

程序的结构形式是白盒测试的主要依据。程序结构分析包括:

1、控制流分析:

•通过控制流图矩阵来表示程序的控制流程图。

•分析程序的控制流是为了使编写出的程序有好的结构。

对于程序结构提出以下4点基本要求,这些要求是写出的程序不应包含:

①  转向并不存在的标号;

②  没有用的语句标号;

③  从程序入口进入后无法达到的语句;

④不能达到停机语句的语句。

目前主要是通过编译器和程序分析工具来实现程序控制流分析。

2、数据流分析:

•数据流分析是分析程序中未定义变量的使用和未曾使用的变量定义。

•目前通过编译器或程序分析工具通过数据流分析

•利用数据流分析的结果可以进行代码编译优化。

3、信息流分析 :

•目前信息流分析主要用在验证程序变量间信息的传输遵循保密要求。

•信息流分析主要分析输出值跟输入值之间的影响关系。

•程序的信息流关系,为软件开发和确认提供了十分有益的工具

2 逻辑覆盖:

1、语句覆盖:

•结构测试是依据被测程序的逻辑结构设计测试用例,驱动被测程序运行完成的测试。

•结构测试中的一个重要问题是,测试进行到什么地步就达到要求,可以结束测试了。这就是说需要给出结构测试的覆盖准则。

为方便讨论,我们将结合一程序段加以说明各种逻辑覆盖则:

IF (( A > 1) AND ( B = 0 ))THEN

X = X / A

IF (( A = 2) OR ( X > 1 ) THEN

X = X + 1

其中“AND”和“OR”是两个逻辑运算符。右图给出了它的流程图。a、b、c、d和e是控制流上的若干程序点。

该程序共有4条语句,其中2条条件判断语句,2条赋值语句。

语句覆盖的含意是,在测试时,首先设计若干个测试用例,然后运行被测程序,使程序中的每个可执行语句至少执行一次。

对于上述程序段,选用的测试用例是:A=2,B=0,X=3  case1

则程序按路径a c e执行。这样该程序段的4个语句均得到执行,从而作到了语句覆盖。

2、判定覆盖:

按判定覆盖准则进行测试是指,设计若干测试用例,运行被侧程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断的真假值均曾被满足。

判定覆盖又称为分支覆盖。

仍以上述程序段为例,若选用的两组测试用例是:   A=2,B=0,X=3;          A=1,B=0,X=1

则可分别执行路径ace和abd,从而使两个判断的4个分支c、e和b、d分别得到覆盖。

3、条件覆盖:

条件覆盖是指,设计若干测试用例,执行被测程序以后,要使每个判断中每个条件的可能取值至少满足一次。

4、判定-条件覆盖:

判定-条件覆盖要求设计足够的测试用例,使得判断中每个条件的所有可能至少出现一次,并且每个判断本身的判定结果也至少出现一次。

5、路径覆盖:

按路径覆盖要求进行测试是指,设计足够多测试用例,要求覆盖程序中所有可能的路径

6、测试覆盖准则:

1、FOSTER的ESTCA覆盖准则

Foster 通过大量的实验确定了程序中谓词最容易出错的部分,得出了一套错误敏感测试用例分析ESTCA (Error Sensitive Test Cases Analysis)规则。事实上,规则十分简单:

[规则1]  对于A rel B(rel可以是)型的分支谓词,应适当地选择A与B的值,使得测试执行到该分支语句时,AB的情况分别出现一次。

[规则2]  对于A rel1 C(rel1可以是>或是

A = C - M

(M是距C最小的容器容许正数,若A和C均为整型时,M = 1)。同样,当rel1为>时,应适当地选择A,使:

A = C + M

[规则3]  对外部输入变量赋值,使其在每一测试用例中均有不同的值与符号,并与同一组测试用例中其它变量的值与符合不一致。

3 程序插装:

•程序插装方法简单地说是借助往被测程序中插入操作来实现测试目的的方法。

•程序插装技术能够按用户的要求,获取程序的各种执行过程中的信息,成为测试工作的有效手段。

4 其他白盒测试方法简介:

1、域测试:

•域测试的“域”是指程序的输入空间。

•输入空间又可分为不同的子空间,每一子空间对应一种不同的计算。

•子空间的划分是由程序中分支语句中的谓词决定的。

•域测试正是在分析输入域的基础上,选择适当的测试点以后进行测试的。

•域测试有两个致命的弱点,一是为进行域测试对程序提出的限制过多,二是当程序存在很多路径时,所需的测试点也就很多。

2、符号测试:

•符号测试的基本思想是允许程序的输入不仅仅是具体的数值数据,而且包括符号值,这一方法也是因此而得名。

•普通测试执行的是算术运算,符号测试则是执行代数运算。因此符号测试可以认为是普通测试的一个自然的扩充。

•从符号测试方法使用来看,问题的关键在于开发出比传统的编译器功能更强,能够处理符号运算的编译器和解释器。

•目前符号测试存在一些未得到圆满解决的问题,分别是

1、分支问题

2、二义性问题

3、大程序问题

3、Z路径覆盖

4、程序变异

3.Z路径覆盖:

•完成路径测试的理想情况是做到路径覆盖,但路径太多。因此对循环机制进行简化,从而极大地减少路径的数量,使得覆盖这些有限的路径成为可能。我们称简化循环意义下的路径覆盖为Z路径覆盖。

•对于程序中的所有路径可以用路径树来表示

•设法遍历了所有的叶结点,那就得到了所有的路径,生成每个路径的测试用例,就可以做到Z路径覆盖测试。

4.程序变异:

•程序变异方法与前面提到的结构测试和功能测试都不一样,它是一种错误驱动测试。

•错误驱动测试方法,是指该方法是针对某类特定程序错误的。

•错误驱动测试主要有两种,即程序强变异和程序弱变异。

python白盒测试_白盒测试 - zp_Alex - 博客园相关推荐

  1. python数据挖掘领域工具包 - wentingtu - 博客园

    python数据挖掘领域工具包 - wentingtu - 博客园 python数据挖掘领域工具包 - wentingtu - 博客园 python数据挖掘领域工具包 原文:http://qxde01 ...

  2. python命令行运行模式_[Python] 命令行模式阅读博客园的博文

    1 #-*- coding:UTF-8 -*- 2 importrequests3 from lxml importetree4 importsys5 importio6 importos7 8 9 ...

  3. Python爬虫入门教程 40-100 博客园Python相关40W博客抓取 scrapy

    爬前叨叨 第40篇博客吹响号角,爬取博客园博客~本文最终抓取到了从2010年1月1日到2019年1月7日的37W+文章,后面可以分析好多东西了呢 经常看博客的同志知道,博客园每个栏目下面有200页,多 ...

  4. Python爬虫入门教程:博客园首页推荐博客排行的秘密

    1. 前言 虽然博客园注册已经有五年多了,但是最近才正式开始在这里写博客.(进了博客园才知道这里面个个都是人才,说话又好听,超喜欢这里...)但是由于写的内容都是软件测试相关,热度一直不是很高.看到首 ...

  5. python教程是用什么博客写的-Python爬虫入门教程:博客园首页推荐博客排行的秘密...

    1. 前言 虽然博客园注册已经有五年多了,但是最近才正式开始在这里写博客.(进了博客园才知道这里面个个都是人才,说话又好听,超喜欢这里...)但是由于写的内容都是软件测试相关,热度一直不是很高.看到首 ...

  6. Python爬虫入门教程 54-100 博客园等博客网站自动评论器

    爬虫背景 爬虫最核心的问题就是解决重复操作,当一件事情可以重复的进行的时候,就可以用爬虫来解决这个问题,今天要实现的一个基本需求是完成"博客园" 博客的自动评论,其实原理是非常简单 ...

  7. 阿里云运行python项目_荐个人博客开发-06:Nginx + uWSGI + Django项目部署到阿里云服务器运行...

    版本:Python-3.8.1 + Django-2.2 + 阿里云服务器 Ubuntu-16.04 在正式部署前,需要确认几点: 服务器上已经安装相应的 Python MySQL Nginx uWS ...

  8. java单纯形法_单纯形法 - fjzzq2002 - 博客园

    看了集训队答辩,感觉要学习的有杜教筛高级版.线性规划.FFT.仙人掌.高级版线段树 不出意外的话一个月内博客内都不会有别的东西了QAQ 首先是喜闻乐见的单纯形法解线性规划. 今年(2016年)和线性规 ...

  9. java充值_充值 - javalzy - 博客园

    http://blog.csdn.net/xiaoxiangzhu660810/article/details/17434907 http://blog.csdn.net/fangzy0112/art ...

  10. python开发环境哪个好 博客园_我选用的Python开发环境

    C#的开发, 首选工具自然是Visual Studio了, 你要不想花钱, Visual Studio Express 基本也够用了. 而Python的开发, 配置一个开发环境就是一个不小的问题, 首 ...

最新文章

  1. 一文详解启发式对话中的知识管理 | 公开课笔记
  2. 南阳833--取石子(七)
  3. 开源 免费 java CMS - FreeCMS-功能说明-操作日志
  4. PHP 5.4 的新特性
  5. 关于让bootstrap3兼容ie8
  6. jquery 字符串查找_Python Appium 库IOS特有元素查找API介绍
  7. Spring中引入其他配置文件
  8. Python返回数组(List)长度的方法
  9. LintCode 547---两数组的交集
  10. 云效研发平台负责人:高效研发运维体系构建的方法论
  11. Oracle表字段的增加、删除、修改和重命名
  12. 域名ssl证书下载及部署
  13. 那些年,我们一起追过的seo培训!
  14. VS2015番茄安装教程
  15. 基于 OpenFlow 的 SDN 技术 (论文笔记)
  16. 共模和差模信号及其噪音抑制
  17. closest() 方法
  18. 类似微信5.x朋友圈的弹出框评论功能
  19. Photon Socket 术语表
  20. 笔记本win10系统连接wifi显示无Internet安全如何解决

热门文章

  1. dll中封装MFC(VC2012)资源--自定义一个复用的登录界面
  2. 微软更新补丁手动下载地址
  3. 新编C语言习题与解析,新编C语言习题与解析
  4. navicat运行db文件_在 Navicat for MongoDB 使用文档
  5. postman接口测试
  6. JAVA学习笔记(七)细胞自动机(带注释)
  7. 【TCP/IP详解】IP报文格式
  8. Windows下的CMake下载与安装
  9. 禁忌搜索算法原理步骤、matlab实现算例及相关代码
  10. 五种压缩软件(WinRAR、7Z、好压、快压和360压缩)之比拼