单元测试
package tt;
import java.util.Arrays;
import java.util.Collection;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
//实现代码参数化
@RunWith(Parameterized.class)
public class Demo01Test2 {
Demo2 d;
private int number1;
private int number2;
public Demo01Test2(int number1, int number2) {
this.number1 = number1;
this.number2 = number2;
}
@Before
public void setUp() {
d = new Demo2();
}
@Parameters
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][]{
{1, 2},
{3, 4},
{5, 6}
});
}
@Test
public void testSum() {
d.sum(number1, number2);
}
}
package tt;
import org.junit.Test;
public class Demo2 {
public void sum(int number1,int number2) {
System.out.println(number1+number2);
}
}
概述 基路径测试(Basis Path Testing)是一种白盒测试技术,旨在确保代码的每条独立路径都被执行至少一次。这种方法基于控制流图(CFG),通过分析图中的独立路径来设计测试用例。
步骤
if (A) then
if (B) then
C
else
D
对应的控制流图如下: 1 / 2 4 / 3 5 环复杂度 V(G)=5−5+2=2,因此需要至少两个测试用例来覆盖所有路径。
概述 条件测试(Condition Testing)是一种白盒测试方法,旨在验证代码中的每个条件表达式在不同的情况下是否能正常工作。这种测试方法主要关注条件表达式中的每个布尔变量的可能值组合。
步骤 标识条件表达式:找到代码中的所有条件表达式。 生成测试用例:为每个条件表达式的所有可能组合生成测试用例。 执行测试:运行测试用例,检查条件表达式的输出是否符合预期。 优点 能有效发现条件表达式中的错误。 有助于确保所有逻辑分支都被充分测试。 示例 对于条件表达式 if (A && B), 需要测试以下组合:
A = True, B = True A = True, B = False A = False, B = True A = False, B = False
概述 组合测试(Combinatorial Testing)是一种测试方法,旨在通过测试所有可能的输入组合来发现系统中的错误。常见的组合测试方法包括全组合测试、对角线测试和对偶组合测试。
步骤 确定输入变量:列出所有需要测试的输入变量。 生成组合:根据选择的组合方法生成输入变量的组合。 设计测试用例:为每个组合生成测试用例。 执行测试:运行测试用例,检查系统输出是否符合预期。 优点 能覆盖更多的输入组合,从而提高测试覆盖率。 能有效发现由于不同输入组合引起的错误。 示例 假设有三个输入变量 A, B, C,每个变量有两个可能值 0 和 1。全组合测试需要测试以下组合:
(0, 0, 0) (0, 0, 1) (0, 1, 0) (0, 1, 1) (1, 0, 0) (1, 0, 1) (1, 1, 0) (1, 1, 1)