跳转至

代码覆盖率

📌 覆盖率测试类型

  1. 语句覆盖:最基础,每个可执行语句都至少执行一次。
  2. 分支覆盖(或称为判定覆盖):每个条件表达式的真假值都至少执行一次。
  3. 条件覆盖:每个逻辑条件内的每个可能的结果都执行。
  4. 路径覆盖:最严格,每种可能执行的路径都测试。

只表示代码被执行,不代表代码本身正确。

  • 低覆盖率一定说明代码质量差(因为没执行过)。
  • 高覆盖率不一定说明代码质量好(可能没断言、逻辑有漏洞)。

📌 覆盖策略

1.识别核心业务

2.POJO的Getter/Setter、简单的胶水代码(如Controller传参至Service)、配置类等,可以低覆盖甚至忽略

3.建议的覆盖率指标

  • 核心业务,85%至95%,覆盖所有分支。
  • 工具类,90%至100%,易测试且复用度高。
  • Web层/适配层,30%至50%,主要测试参数校验和http状态码,具体业务下沉到Service测试。
  • 整体:70%至80%

📌 面试题

🚁 简述单元测试、功能测试、集成测试、系统测试的区别

单元测试:针对软件的最小测试单元,通常是一个方法或类,以白盒测试为主。

功能测试:关注软件的具体功能或特性,验证功能是否按需求规格描述的方式进行工作,以黑盒测试为主。

集成测试:单元测试后进行,测试多个模块组合在一起后是否正常协作。如支付模块和订单模块的交互,支付成功后检查订单的状态流转。测试方法介于白盒和黑盒之间(灰盒)。

系统测试:对整个完整的软件系统进行测试,包括硬件、外设、网络等真实环境,并覆盖功能、性能、安全、兼容性等非功能属性。系统测试最接近用户真实使用场景, 通常需要在专门搭建的环境中进行,耗时较长。如对整个电商网站进行高并发压测,检查系统稳定性和响应时间。