欢迎光临
我们一直在努力

测试技术总结

一、单元测试覆盖率

1.1 什么是单元测试覆盖率

单元测试覆盖率衡量的是:你写的单元测试用例,到底执行了多少行/多少分支的业务代码。

指标含义
行覆盖率 (Line Coverage) 有多少行代码被测试执行过
分支覆盖率 (Branch Coverage) if/else、switch 等分支被覆盖了多少
方法覆盖率 (Method Coverage) 有多少个方法被调用过

1.2 业界参考标准

覆盖率含义
0% 没写测试(老项目常见)
30%-50% 有测试意识,但覆盖不全
60%-80% 比较健康,核心逻辑基本覆盖
85%+ 要求严格,通常有 CI 门禁卡死
100% 极少见,getter/setter/配置类不值得测

1.3 面试怎么说

"我们项目使用 JaCoCo 来度量覆盖率,核心业务模块的行覆盖率在 75%-80%,分支覆盖率在 70% 左右。新增代码要求不低于 80%,CI 流水线里会生成覆盖率报告。简单的 getter/setter 和配置类不强制要求覆盖。"

1.4 怎么做(JaCoCo 方案)

步骤一:pom.xml 添加 JaCoCo 插件

<dependencies>
       <dependency>
           <groupId>org.junit.jupiter</groupId>
           <artifactId>junit-jupiter</artifactId>
           <version>5.10.2</version>
           <scope>test</scope>
       </dependency>
</dependencies>
​
<plugin>
   <groupId>org.jacoco</groupId>
   <artifactId>jacoco-maven-plugin</artifactId>
   <version>0.8.12</version>
   <executions>
       <execution>
           <goals><goal>prepare-agent</goal></goals>
       </execution>
       <execution>
           <id>report</id>
           <phase>test</phase>
           <goals><goal>report</goal></goals>
       </execution>
   </executions>
</plugin>

步骤二:运行测试

mvn clean test

步骤三:查看报告

用浏览器打开 target/site/jacoco/index.html。

报告用颜色标记每行代码:

  • 绿色 = 被测试完全覆盖

  • 黄色 = 部分覆盖(if 的某个分支没测到)

  • 红色 = 完全没被覆盖


二、API 自动化批量测试(Postman)

2.1 场景描述

你有 50 个接口,每个都需要 Token 鉴权。怎么自动完成所有接口的测试?而不是手动登录 → 复制 token → 每个接口逐个粘贴。

2.2 Postman 方案步骤

第一步:创建 Collection,把所有接口放进去

Collection: 用户管理模块
├── POST   /api/login             (登录,获取token)
├── GET   /api/users             (查询用户列表)
├── GET   /api/users/{{id}}       (查询单个用户)
├── POST   /api/users             (新增用户)
├── PUT   /api/users/{{id}}       (更新用户)
└── DELETE /api/users/{{id}}       (删除用户)
​
Collection: 订单管理模块
├── GET   /api/orders             (查询订单列表)
├── POST   /api/orders             (创建订单)
├── PUT   /api/orders/{{id}}/cancel (取消订单)
└── GET   /api/orders/stats       (订单统计)

第二步:在 Collection 上写 Pre-request Script(关键步骤)

右键 Collection → Edit → Pre-request Script:

// 每个接口执行前都会先跑这段脚本
// 如果还没有 token,自动调登录接口获取
if (!pm.environment.get("token")) {
   pm.sendRequest({
       url: "http://localhost:8080/api/login",
       method: "POST",
       header: { "Content-Type": "application/json" },
       body: {
           mode: "raw",
           raw: JSON.stringify({ username: "admin", password: "123456" })
      }
  }, function (err, res) {
       if (!err) {
           var json = res.json();
           pm.environment.set("token", json.token);
      }
  });
}

第三步:所有接口的 Header 引用 Token 变量

在 Authorization 标签页选 Bearer Token,值填 {{token}}。

或者手动添加 Header:

Key: Authorization
Value: Bearer {{token}}

{{token}} 是 Postman 的双花括号变量语法,运行时自动替换。

第四步:Run Collection 一键批量执行

点击 Collection 旁边的 ▶ → Run Collection,所有接口自动按顺序执行,跑完自动生成测试报告。

2.3 进阶技巧

技巧说明
环境变量 区分开发/测试/生产,切换 Environment 即可
测试断言 在 Tests 标签页写 pm.test("状态码200", () => { pm.response.to.have.status(200); })
数据驱动 用 CSV/JSON 文件批量喂不同测试数据
Newman Postman 命令行工具,可集成到 CI/CD 流水线
导出分享 Collection 可导出 JSON,团队成员可导入

2.4 面试怎么说

"我把所有接口放在 Postman 的 Collection 里,在 Collection 级别写一段 Pre-request Script,自动调登录接口拿 Token 并存到环境变量。其余接口统一引用 {{token}} 变量做鉴权。然后用 Postman Runner 一键批量执行,跑完自动生成测试报告。如果要做 CI 集成,用 Newman 命令行跑导出的 Collection JSON 就行。"


三、总结对比

维度单元测试(JaCoCo)API 批量测试(Postman)
测什么 单个类/方法的业务逻辑 接口的 HTTP 请求/响应
工具 JUnit + JaCoCo + Maven Postman Collection Runner
产物 覆盖率报告(HTML) 测试结果报告
集成 CI Surefire 插件自动跑 Newman 命令行
适用阶段 开发阶段 联调/回归阶段
关注指标 行覆盖率、分支覆盖率 通过率、响应时间
赞(0)
未经允许不得转载:171主机测评 » 测试技术总结
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址