测试优先的开发

测试优先的思想

  1. 确定规约 Specification
  2. 编写测试用例 JUnit
  3. 编写代码 Coding
  4. 程序测试 Testing
  5. (如果需要的话)修改代码并重新测试,直到通过全部测试用例为止 Revising and testing again

设计测试用例

等价类划分

概述:将被测函数的输入域划分为等价类,从等价类中导出测试用例。
假设:相似的输入,将会展示相似的行为。故可从每个等价类中选一个代表作为测试用例即可。

在多个维度上划分为多个等价类。

覆盖等价类的两种方法:

  1. Full Cartesian product 笛卡尔积:全覆盖
    \(A\times B=\{(a,b)\mid a\in A\ {\mbox{ and }}\ b\in B\}\)
    测试完备,但用例数量多
  2. Cover each part 每个维度的每个等价类至少被一个测试用例所覆盖
    用例数量少,但用例覆盖度未必高

边界值分析

经验表明,大量的错误发生在输入域的“边界”而非中央。所以,有必要为边界值输入专门设计测试用例。

编写测试用例

开发Java项目时,一般使用JUnit测试框架。大体可分为三个环节:

  1. 导入JUnit包
import org.junit.Test;
import static junit.framework.TestCase.assertEquals;

如果创建的是Maven工程,IDEA会自动导入JUnit依赖

<dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
</dependency>
  1. 对测试方法使用测试注解
    @Test
    public void testAll() {
	    // 测试方法的内容
    }
  1. 使用断言语句
    JUnit断言语句有多种,其实,只使用assertEquals就可满足大多数需求。
public static void assertEquals(
    int expected,
    int actual)
posted @ 2024-03-27 20:32  洺宝  阅读(49)  评论(0)    收藏  举报