前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >软件测试之 单元测试

软件测试之 单元测试

作者头像
Qiuner
发布2024-07-19 16:02:01
780
发布2024-07-19 16:02:01
举报
文章被收录于专栏:杂烩

单元测试

在eclipse中
导包
image-20231023154035158
image-20231023154035158
image-20231023154201144
image-20231023154201144
image-20231023154224381
image-20231023154224381
  • 放入提前准备的包
image-20231023154353439
image-20231023154353439
image-20231023154012198
image-20231023154012198
image-20231023155147622
image-20231023155147622
image-20231023165656947
image-20231023165656947
  • 遇到这种情况,删掉module-info即可
JUnit
image-20231023170443091
image-20231023170443091
image-20231023184115493
image-20231023184115493
image-20231023184931141
image-20231023184931141
检查是否由预计异常抛出
image-20231023185548289
image-20231023185548289
在这里插入图片描述
在这里插入图片描述
  • 不要把非运行异常捕捉
检查是否超过指定运行时间
image-20231023193919380
image-20231023193919380
image-20231023194944601
image-20231023194944601
代码语言:javascript
复制
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);
    }
}
代码语言:javascript
复制
package tt;

import org.junit.Test;
public class Demo2 {
	public void sum(int number1,int number2) {
		System.out.println(number1+number2);
	}
}
image-20231030170007083
image-20231030170007083
image-20231030170022592
image-20231030170022592
QQ图片20231113185848
QQ图片20231113185848
  • 注意外部导入包的位置

单元测试参数化设置 四步走

image-20240505170755491
image-20240505170755491
  • 下面说一些在实际里基本用不上的理论

基路径测试

概述 基路径测试(Basis Path Testing)是一种白盒测试技术,旨在确保代码的每条独立路径都被执行至少一次。这种方法基于控制流图(CFG),通过分析图中的独立路径来设计测试用例。

步骤

  • 绘制控制流图:将代码转化为控制流图,其中节点代表基本执行单元,边代表控制流。
  • 计算环复杂度:使用环复杂度(Cyclomatic Complexity)来确定需要测试的独立路径数量。环复杂度计算公式为: V(G)=E−N+2P
  • 其中,E 是边数,N 是节点数,P 是连通子图数。 识别独立路径:确定图中的所有独立路径。 设计测试用例:为每条独立路径设计测试用例,确保路径被覆盖。 优点
  • 覆盖率高,能发现代码中的隐藏错误。
  • 有助于理解代码的逻辑结构。
代码语言:javascript
复制
 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)

  • 在实际测试里基本都是走一遍所有的路就好了,每个判断都走过去,这些方法不知道应用于哪里,大的代码量,使用这些方法那编写的用例可以说是多飞天了,小的代码量,使用这些方法好像也没啥用,或者说,太有用,已经变成常识了
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 在eclipse中
  • JUnit
  • 单元测试参数化设置 四步走
  • 基路径测试
  • 条件测试
  • 组合测试
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档