你好,我是Qiuner. 为记录自己编程学习过程和帮助别人少走弯路而写博客
这是我的 github https://github.com/Qiuner ⭐️
gitee https://gitee.com/Qiuner 🌹
如果本篇文章帮到了你 不妨点个赞吧~ 我会很高兴的 😄 (^ ~ ^)
想看更多 那就点个关注吧 我会尽力带来有趣的内容 😎
单元测试
在eclipse中
导包
- 放入提前准备的包
- 遇到这种情况,删掉module-info即可
JUnit
检查是否由预计异常抛出
- 不要把非运行异常捕捉
检查是否超过指定运行时间
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),通过分析图中的独立路径来设计测试用例。
步骤
- 绘制控制流图:将代码转化为控制流图,其中节点代表基本执行单元,边代表控制流。
- 计算环复杂度:使用环复杂度(Cyclomatic Complexity)来确定需要测试的独立路径数量。环复杂度计算公式为: V(G)=E−N+2P
- 其中,E 是边数,N 是节点数,P 是连通子图数。
识别独立路径:确定图中的所有独立路径。
设计测试用例:为每条独立路径设计测试用例,确保路径被覆盖。
优点 - 覆盖率高,能发现代码中的隐藏错误。
- 有助于理解代码的逻辑结构。
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)
- 在实际测试里基本都是走一遍所有的路就好了,每个判断都走过去,这些方法不知道应用于哪里,大的代码量,使用这些方法那编写的用例可以说是多飞天了,小的代码量,使用这些方法好像也没啥用,或者说,太有用,已经变成常识了