Java教程

第二章软件测试与测试优先编程

本文主要是介绍第二章软件测试与测试优先编程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

第二章软件测试与测试优先编程

软件测试的级别

单元测试:

​ 指的是测试代码的特定节的作用,通常是方法级别的。它的优点在于针对软件最小单元模型开展测试,隔离各个模块,容易定位错误和调试。为了方便执行单元测试,java提供了开发包Junit

​ 使用Junit很简单,如下代码所示:

//常用的三个测试方法
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

//导入测试注解
import org.junit.Test;

//命名规则;被测试的类的测试名后加Test 
//对于方法的命名为test加上方法名
public class classNameTest{
    
    /**
    * test strategy
    * 通常这里写测试策略
    */
    @Test
    public void testFunction(){
		//...
    }
}

集成测试:多个程序员或团队开发的两个或更多的类,包,构件,子系统等被组合在一起的测试

系统测试:测试整个系统是否符合规约的需要,通常执行测试的软件在最终的配置层面。

回归测试:一旦程序被修改,重新执行之前的所有测试

在IDEA中可以实现自动回归测试(注:这指的不是自动生成测试样例而是说可以对测试样例自动执行)

软件测试的手段分类:

根据是否执行代码划分:

静态测试:

​ 静态测试通常不执行代码。它主要通过review,walkthrough和inspection的手段。

动态测试:

​ 动态测试通常需要运行代码,并且要输入给定的一系列测试案例。

testing和debugging的区别在于测试是为了发现是否存在错误,debug是为了识别错误根源消除错误。

根据是否知道代码划分:

白盒测试:

​ 在看得见源代码的情况,对程序内部代码的结构和工作进行测试

黑盒测试:

​ 对程序外部表现出来的行为的测试,看不见源代码。

测试样例

测试样例:输入+执行条件+期望结果

通过等价类划分的方法来选择测试样例:

​ 基于等价类划分的测试:将被测函数的输入域划分为等价类, 从等价类中导出测试用例。

​ 例如对于输入的n是正奇数的要求:

​ 整数:>0,<0,=0

​ 是否是奇数:奇数,偶数

​ 是否是整数:整数,非整数

​ 因此只需要选择$3\times2\times2$种测试样例即可。前面这是笛卡尔积策略,测试样例多,还可以选择覆盖每一个维度即可,不过这种策略测试代价虽小,但测试覆盖度不高。

在等价类划分方法的基础上补充边界值分析方法:也就是在划分的维度上考虑边界的情况,在比边界大,比边界小,等于边界的时候划分。

测试优先编程

流程:

  1. 先写spec(规约:描述方法的输入和输出行为)
  2. 再写符合spec的测试用例
  3. 写代码,执行测试,有问题就修复,在执行测试用例,直到通过

测试覆盖度

测试覆盖度的级别:路径覆盖>分支覆盖>语句覆盖

对于检测语句覆盖在IDEA中已经被集成好了,是基于JaCoCo是实现的,还可以。

这篇关于第二章软件测试与测试优先编程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!