黑盒测试 白盒测试 原理分析
1.黑盒测试(Black-box Tesing)
黑盒测试又称功能测试、数据驱动测试或基于规格说明书的测试。注重于测试软件的功能性需求。
采用这种测试方法,测试者把被测程序看成一个黑盒子,完全不要考虑程序的内部结构和特性,只知道该程序输入和输出之间的关系或程序功能,依靠能够反映这一关系和程序功能的需求规格说明书,来自确定测试用例和推断测试结果的正确性。例如:Windows计算其程序,我们如果输入3.14159并按sqrt键,就会得到结果1.772453102341。使用黑盒子测试方式,不管软件计算圆周率的平方根要经历多少复杂运算,只关心他的运行结果。
2.白盒测试(White-box Tesing)
白盒测试又称结构测试、逻辑驱动测试或基于程序本身的测试。测试者把被测程序看成一个盒子,而这个盒子是打开着的,以程序的内容来设计测试数据。采用这种测试方法,测试人员对被测试程序的内部结构是清楚的。从程序的内部逻辑结构入手,按照一定的原则设计测试用例,对软件的逻辑路径进行测试,在程序的不同点检查程序的状态,来判定其实际情况是否和预期的状态相一致。
白盒测试要求对某些程序的结构特性做到一定程度的覆盖,或者说是“基于覆盖率的测试”,并以此为目标,引导我们朝着提高覆盖覆盖率的方向努力,找出那些已被忽视的程序错误。最常见的程序结构覆盖有:
1)语句覆盖:程序中每一条语句至少被执行一次,这是最弱的逻辑覆盖准则。
2)分支覆盖或判断覆盖:程序中的每一个分支至少走查一次,即每一条分支语句的真值执行一次,假值也执行一次。
3)条件覆盖:当判定式中含有多个条件时,要求每个条件的取值均得到检验。
4)判断/条件覆盖:同时考虑条件的组合及判定结果的检验。
5)路径覆盖:使程序延所有可能的路径执行。
相关推荐
-
黑盒测试 白盒测试 原理分析
1.黑盒测试(Black-box Tesing) 黑盒测试又称功能测试.数据驱动测试或基于规格说明书的测试.注重于测试软件的功能性需求. 采用这种测试方法,测试者把被测程序看成一个黑盒子,完全不要考虑程序的内部结构和特性,只知道该程序输入和输出之间的关系或程序功能,依靠能够反映这一关系和程序功能的需求规格说明书,来自确定测试用例和推断测试结果的正确性.例如:Windows计算其程序,我们如果输入3.14159并按sqrt键,就会得到结果1.772453102341.使用黑盒子测试方式,不管软件计
-
对一个vbs脚本病毒的病毒原理分析
一.前言 病毒课老师丢给我们一份加密过的vbs脚本病毒的代码去尝试分析,这里把分析过程发出来,供大家参考,如果发现文中有什么错误或者是有啥建议,可以直接留言给我,谢谢! 二.目录 整个分析过程可以分为以下几个部分: 0x00 准备工作 0x01 解密部分 0x02 功能分析 三.分析过程 0x00 准备工作 windows xp的虚拟机(在自己的windows下也可以做) vbs的一些基本语法 0x01 解密部分 右击病毒文件然后编辑打开或者是直接把其后缀修改成txt直接打开都行,可以看到一大段
-
基于JS对象创建常用方式及原理分析
前言 俗话说"在js语言中,一切都对象",而且创建对象的方式也有很多种,所以今天我们做一下梳理 最简单的方式 JavaScript创建对象最简单的方式是:对象字面量形式或使用Object构造函数 对象字面量形式 var person = new Object(); person.name = "jack"; person.sayName = function () { alert(this.name) } 使用Object构造函数 var person = { na
-
VBS脚本病毒原理分析与防范
网络的流行,让我们的世界变得更加美好,但它也有让人不愉快的时候.当您收到一封主题为"I Love You"的邮件,用兴奋得几乎快发抖的鼠标去点击附件的时候:当您浏览一个信任的网站之后,发现打开每个文件夹的速度非常慢的时候,您是否察觉病毒已经闯进了您的世界呢?2000年5月4日欧美爆发的"爱虫"网络蠕虫病毒.由于通过电子邮件系统传播,爱虫病毒在短短几天内狂袭全球数百万计的电脑.微软.Intel等在内的众多大型企业网络系统瘫痪,全球经济损失达几十亿美元.而去年爆发的新欢
-
Android Handler 原理分析及实例代码
Android Handler 原理分析 Handler一个让无数android开发者头疼的东西,希望我今天这边文章能为您彻底根治这个问题 今天就为大家详细剖析下Handler的原理 Handler使用的原因 1.多线程更新Ui会导致UI界面错乱 2.如果加锁会导致性能下降 3.只在主线程去更新UI,轮询处理 Handler使用简介 其实关键方法就2个一个sendMessage,用来接收消息 另一个是handleMessage,用来处理接收到的消息 下面是我参考疯狂android讲义,写的一个子
-
Java 动态代理原理分析
Java 动态代理原理分析 概要 AOP的拦截功能是由java中的动态代理来实现的.说白了,就是在目标类的基础上增加切面逻辑,生成增强的目标类(该切面逻辑或者在目标类函数执行之前,或者目标类函数执行之后,或者在目标类函数抛出异常时候执行.Spring中的动态代理是使用Cglib进行实现的.我们这里分析的是JDK中的动态代理实现机制. 下面我们通过例子快速了解JDK中的动态代理实现方式. 示例 需要代理的接口 public interface IHello { public void sayHel
-
java 中volatile和lock原理分析
java 中volatile和lock原理分析 volatile和lock是Java中用于线程协同同步的两种机制. Volatile volatile是Java中的一个关键字,它的作用有 保证变量的可见性 防止重排序 保证64位变量(long,double)的原子性读写 volatile在Java语言规范中规定的是 The Java programming language allows threads to access shared variables (§17.1). As a rule,
-
spring boot启动加载数据原理分析
实际应用中,我们会有在项目服务启动的时候就去加载一些数据或做一些事情这样的需求. 为了解决这样的问题,spring Boot 为我们提供了一个方法,通过实现接口 CommandLineRunner 来实现. 创建实现接口 CommandLineRunner 的类,通过@Component注解,就可以实现启动时加载数据项.使用@Order 注解来定义执行顺序. IndexStartupRunner.Java类: import org.springframework.boot.CommandLine
-
Java8 HashMap的实现原理分析
前言:Java8之后新增挺多新东西,在网上找了些相关资料,关于HashMap在自己被血虐之后痛定思痛决定整理一下相关知识方便自己看.图和有些内容参考的这个文章:http://www.jb51.net/article/80446.htm HashMap的存储结构如图:一个桶(bucket)上的节点多于8个则存储结构是红黑树,小于8个是单向链表. 1:HashMap的一些属性 public class HashMap<k,v> extends AbstractMap<k,v> impl
-
PHP中实现中文字符进制转换原理分析
一,中文字符转十进制原理分析 GBK编码中一个汉字由二个字符组成,获取汉字字符串的方法如下 复制代码 代码如下: $string = "不要迷恋哥"; $length = strlen($string); for($i=0;$i<$length;$i++){ if(ord($string[$i])>127){ $result[] = ord($string[$i]).' '.ord($string[++$i]); } } var_dump($result); 由于一个汉字为
随机推荐
- PHP imagecreatefrombmp 从BMP文件或URL新建一图像
- 学习使用jQuery表单验证插件和日历插件
- 纯JavaScript代码实现文本比较工具
- PHP匹配多行的正则表达式分析
- ping命令的小秘密
- iOS中修改UISearchBar圆角的小技巧分享
- 关于js中window.location.href,location.href,parent.location.href,top.location.href的用法与区别
- Javascript中replace()小结
- docker 动态映射运行的container端口实例详解
- Android编程之九宫格实现方法实例分析
- php中时间函数date及常用的时间计算
- python查找指定具有相同内容文件的方法
- Gearman::XS在Centos下的编译安装方法
- JS鼠标3次点击事件实现代码及扩展思路
- activiti获取流程图实例
- JavaScript操作XML文件之XML读取方法
- 做网站要主要的百度分词技术
- Android编程实现在adapter中进行数据操作的方法
- C++ 数据结构 堆排序的实现
- 玩转AppBarLayout实现更酷炫的顶部栏