Assignment3:白盒测试以及测试框架简介
一、 白盒测试简介
白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。
采用什么方法对软件进行测试呢?常用的软件测试方法有两大类:静态测试方法和动态测试方法。其中软件的静态测试不要求在计算机上实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试;而软件的动态测试是通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的过程。在动态分析技术中,最重要的技术是路径和分支测试。
白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、路径覆盖和程序变异。
白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。六种覆盖标准发现错误的能力呈由弱到强的变化:
1.语句覆盖每条语句至少执行一次。
2.判定覆盖每个判定的每个分支至少执行一次。
3.条件覆盖每个判定的每个条件应取到各种可能的值。
4.判定/条件覆盖同时满足判定覆盖条件覆盖。
5.条件组合覆盖每个判定中各条件的每一种组合至少出现一次。
6.路径覆盖使程序中每一条可能的路径至少执行一次。
优点
1.迫使测试人员去仔细思考软件的实现
2.可以检测代码中的每条分支和路径
3.揭示隐藏在代码中的错误
4.对代码的测试比较彻底
5.最优化
缺点
1.昂贵
2.无法检测代码中遗漏的路径和数据敏感性错误
3.不验证规格的正确性
二、单元测试框架
1、 Junit
是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。 JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。[1-3]
JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。
特性
JUnit是一个开放源代码的Java测试框架,用于编写和运行可重复的测试。他是用于单元测试框架体系xUnit的一个实例(用于java语言)。它包括以下特性:
a、用于测试期望结果的断言(Assertion)
b、用于共享共同测试数据的测试工具
c、用于方便的组织和运行测试的测试套件
d、图形和文本的测试运行器
2、qunit
是一个强大的JavaScript单元测试框架,该框架是由jQuery团队的成员所开发,并且是jQuery的官方测试套件。Qunit是Jquery的单元测试框架,并且被广泛使用在各个项目中。
自动化的测试软件在开发中是必备的。单元测试将会为自动化测试创建一些基本的代码块:组件、单元,伴随着不需要人工的干预,一次一次的重复运行的测试程序。总之,你能编写一次测试就能在必要的时候再次运行而不用再次编写。
额外的好处就是代码运行的覆盖测试,同时测试也能驱动软件更好的设计,就像著名的测试驱动开发,在实现之前写一个测试,你甚至可以写一个简单的测试,然后测试失败(因为现在代码仍然没有开始编写),然后开始实现你的代码直到你的测试通过。你能够拓展你的测试去覆盖更多的需求和功能,并且再次扩充你的实现代码。通过重复这些步骤,最终你得到的代码看起来常常和你最初开始实现的代码大为不同。
Javasscript 的单元测试和其他计算机编程语言来说非常不同。因此你需要一个小的测试框架来运行你的测试用例,同时也作为一组编写单元测试的工具。
你想要自动测试nice应用和框架,也许从测试驱动开发的角度是非常有价值。写出一个自己的测试框架也许是很吸引人的,但是就需要涉及大量的工作关于JavaScript 代码在各个浏览器上全部的细节和个别特殊的要求。
然而这里还有其他JavaScript测试框架,你最好决定签出Qunit,Qunit是Jquery的单元测试框架,并且被广泛使用在各个项目中。
为了使用Qunit,你仅仅需要去包含2个Qunit文件在你的Html页面。Qunit 包含了qunit.js 作为运行器和测试框架,和qunit.css 文件,座位测试套件页面显示测试结果的样式。
3、nunit
是专门针对于.NET来写的.其实在前面有JUnit(Java),CPPUnit(C++),他们都是xUnit的一员.最初,它是从JUnit而来.接下来我所用的都是基于这个版本.
NUnit最初是由James W. Newkirk, Alexei A. Vorontsov 和Philip A. Craig,开发团队逐渐庞大起来.在开发过程中, Kent Beck 和ErichGamma2位牛人也提供了许多帮助.看来对于NUnit还真是下了一番力气了
NUnit是xUnit家族种的第4个主打产品,完全由C#语言来编写,并且编写时充分利用了许多.NET的特性,比如反射,客户属性等等.
最重要的一点是它适合于所有.NET语言.