前言
本篇简要介绍白盒测试工具juint。
1测试分类
1.1黑盒测试
不需要写代码,给输入值,看程序是否能够输出期望的值。
1.2白盒测试
需要写代码的,关注程序具体的执行流程。而juint就是白盒测试中的一种。
2.juint操作步骤
2.1. 定义一个测试类(测试用例
* 建议:
* 测试类名:被测试的类名Test CalculatorTest
* 包名:xxx.xxx.xx.test cn.itcast.test
2.2. 定义测试方法:可以独立运行
* 建议:
* 方法名:test测试的方法名 testAdd()
* 返回值:void
* 参数列表:空参
2.3. 给方法加@Test
2.4. 导入junit依赖环境
* 判定结果:
* 红色:失败
* 绿色:成功
* 一般我们会使用断言操作来处理结果
* Assert.assertEquals(期望的结果,运算的结果);
* 补充:
* @Before:
* 修饰的方法会在测试方法之前被自动执行
* @After:
* 修饰的方法会在测试方法执行之后自动被执行
3.实例演示
创建目录如下:
Calculator类中代码如下:
package cn.itcast.juint;
public class Calculator {
public int add(int a,int b){
return a + b;
}
public int sub(int a,int b){
return a - b;
}
}
CalculatorTest类中代码如下:
package cn.itcast.test;
import cn.itcast.juint.Calculator;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
public class CalculatorTest {
/*
初始化方法要求在执行测试方法之前运行
* */
@Before
public void init(){
System.out.println("初始化方法被执行");
}
@Test
public void testAdd(){
//1.创建对象
Calculator c =new Calculator();
//2.调用方法
int result = c.add(1,2);
System.out.println(result);
//3.断言 即要求结果为某个值 不为该值就说明出错了
Assert.assertEquals(3,result);
}
/*
清除资源方法 应在最后执行
*/
@After
public void delete(){
System.out.println("资源被释放");
}
}
实验结果如下:
4.面试知识点
4.1黑盒测试、灰盒测试、白盒测试、单元测试有什么区别?
黑盒测试关注程序的功能是否正确,面向实际用户;
白盒测试关注程序源代码的内部逻辑结构是否正确,面向编程人员;
灰盒测试是介于白盒测试与黑盒测试之间的一种测试。
单元测试(Unit Testing) 是对 软件基本组成单元进行的测试,如函数或是一个类的方法。这里的单元,就是软件设计的最小单位。
4.2白盒测试和黑盒测试的优缺点
黑盒测试的优点有 :
- 比较简单,不需要了解程序的内部的代码及实现
- 与软件的内部实现无关
- 从用户的角度出发,能很容易的知道用户会用到哪些功能,会遇到哪些问题
- 基于软件开发文档,所以也能知道软件实现了文档中的哪些功能
- 在做软件自动化测试时较为方便
缺点 :
-
不可能覆盖所有的代码, 覆盖率较低,大概只能达到总代码量的30%
-
自动化测试的复用性较低。
白盒测试的优点有 :
-
帮助软件测试人员增大代码的覆盖率。 提供代码的质量,发现代码中隐藏的问题
缺点 : -
程序运行会有很多不同的路径,不可能测试所有的运行路径
-
测试基于代码,只能测试开发人员做的对不对,而不能知道设计是否正确,可能会漏掉一些功能需求
-
系统庞大时,测试开销会非常大。