news 2026/5/30 14:26:49

软件测试覆盖率

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
软件测试覆盖率

软件测试覆盖率简介

  1. 1、定义:覆盖率是用来度量测试完整性的一个手段,同时也是测试技术有效性的一个度量。

  2. 2、计算:覆盖率=(至少被执行一次的item数)/item的总数

  3. 3、特点

  4. 1)通过覆盖率数据,可以检测我们的测试是否充分

  5. 2)分析出测试的弱点在哪方面

  6. 3)指导我们设计能够增加覆盖率的测试用例,有效提高测试质量,但是测试用例设计不能一味追求覆盖率,因为测试成本随覆盖率的增加而增加。

软件测试覆盖率分类

覆盖率按照测试方法大体上可以划分为三大类,即白盒覆盖(white-Box Coverage)、灰盒覆盖(Gray-Box coverage)和黑盒覆盖(Black-Box Coverage)。

白盒覆盖率(white-Box Coverage)

白盒覆盖率中使用的最常见的就是逻辑覆盖率(Logical Coverage ),也叫代码覆盖率(Code Coverage)或者结构化覆盖率(Structural Coverage),我们常见的逻辑覆盖包括:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。
1、语句覆盖(Statement Coverage)
  1. 1)定义:在测试时,运行被测程序后,程序中被执行的可执行语句的比率。

  2. 2)计算公式:语句覆盖率=(至少被执行一次的语句数量)/(可执行的语句总数)

  3. 3)100%语句覆盖率含义:在测试时,首先设计若干个测试用例,然后运行被测程序,使程序中的每个可执行语句至少执行一次。

  4. 4)特点:语句覆盖可以检验每个可执行语句,但是即使语句覆盖率达到了100%,也会有缺陷发现不了,所以覆盖率只是我们度量的手段。

2、判定覆盖(Decision Coverage)/分支覆盖率(Branch Coverage)
  1. 1)定义:在测试时,运行被测程序后,程序中所有判断语句的取真分支和取假分支被执行到的比率。

  2. 2)计算公式:判定覆盖率=(判定结果被评价的次数)/(判定结果的总数)

  3. 3)100%条件覆盖率含义:在测试时,首先设计若干个测试用例,然后运行测试程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断的真假值均曾被满足。

  4. 4)特点

  5. (1)若判定覆盖达到100%,则语句覆盖必为100%。

  6. (2)即使判定覆盖率达到了100%,也会有缺陷发现不了。

3、条件覆盖(Condition Coverage)
  1. 1)定义:在测试时,运行被测程序后,程序中所有判断语句中每个条件的可能取值(真值和假值)出现过的比率。

  2. 2)计算公式:条件覆盖率=(条件操作数值至少被评价一次的数量)/(条件操作数值的总数)

  3. 3)100%条件覆盖率含义:在测试时,首先设计若干个测试用例,然后运行被测试程序,要使每个判断中每个条件的可能取值至少满足一次。

  4. 4)特点:覆盖条件的测试用例不一定覆盖判定。

4、判定-条件覆盖(Decision Condition Coverage)/分支条件覆盖(Branch Condition Coverage)
  1. 1)定义:在测试时,运行被测程序后,程序中所有判断语句中每个条件的可能取值(真值和假值)和每个判断本身的判定结果(为真为假)出现的比率。

  2. 2)计算公式:判定-条件覆盖率=(条件操作数值或判定结果至少被评价一次的数量)/(条件操作数值的总数+判定结果的总数)

  3. 3)100%判定-条件覆盖率含义:设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断本身的所有可能结果至少执行一次。换言之,即是要求各个判断的所有的可能的取值组合至少执行一次。

  4. 4)特点

  5. (1)判定-条件覆盖率实际上就是判定覆盖率和条件覆盖率的组合。

  6. (2)采用判定-条件覆盖,逻辑表达式中的错误不一定能够查得出来。

5、条件组合覆盖(Condition combination coverage)
  1. 1)定义:在测试时,运行被测程序后,所有语句中原子条件所有的可能的取值结果组合出现过的比率。

  2. 2)计算公式:条件组合覆盖率=(至少被执行一次的条件组合)/(总的可能的条件组合数)

  3. 3)100%条件组合覆盖率含义:设计足够的测试用例,使得判断中条件的各种可能组合至少出现过一次。

  4. 4)特点:若条件组合覆盖率为100%,则语句覆盖率、判定覆盖率、条件覆盖率和判定-条件覆盖率必为100%。

6、路径覆盖(Path Coverage)
  1. 1)定义:在测试时,运行被测程序后,程序中所有可能的路径被执行的比率。

  2. 2)计算公式:路径覆盖率=(至少被执行一次的路径数)/(总的路径数)

  3. 3)100%路径覆盖率含义:设计足够的测试用例,要求覆盖程序中所有可能的路径。

  4. 4)特点

  5. (1)路径覆盖比判定条件覆盖更强,但是不能包含判定条件覆盖。

  6. (2)若路径覆盖率为100%,则语句覆盖率、判定覆盖率必为100%。

小结:逻辑覆盖率可以作为软件测试的一个度量,但是,即使达到了100%的逻辑覆盖率,仍然无法保证程序的正确性。
灰盒覆盖率(Gray-Box Coverage)
函数覆盖和接口覆盖可以归为灰盒测试的范畴。
1、函数覆盖
  1. 1)定义:它表示在测试中,有哪些函数被测试到了,其被测试到的频率有多大,这些函数在系统所有函数中占的比例有多大。

  2. 2)计算公式:函数覆盖=(至少被执行一次的函数数量)/(系统中函数的总数)

  3. 3)特点:是针对一个系统或者子系统测试的。

2、接口覆盖(Interface Coverage)/入口点覆盖(Entry-Point Coverage)
  1. 1)定义:要求通过设计一定的用例使得系统的每个接口被测试到。

  2. 2)计算公式:接口覆盖=(至少被执行一次的接口数量)/(系统中接口的总数)

黑盒覆盖率(Black-Box Coverage)
在实际测试中,与黑盒相关的覆盖率比较少,主要是功能覆盖率(Function Coverage),其中最常见的是需求覆盖。
需求覆盖
  1. 1)定义:它表示在测试中,有哪些函数被测试到了,其被测试到的频率有多大,这些函数在系统所有函数中占的比例有多大通过设计一定的测试用例,要求每个需求点都被测试到。

  2. 2)计算公式:需求覆盖=(被验证到的需求数量)/(总的需求总数)

最后作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些软件测试的学习资料和软件测试自学站,这些资料希望能给你前进的路上带来帮助。

视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/28 22:21:25

Python+大模型=AI Agent:三步打造能读写文件的智能助手!

简介 本文详解了AI Agent的核心原理与实现方法,指出其本质是"循环LLM工具函数"的简单结构。文章以Gemini 3为例,展示了如何构建一个能读写文件、理解需求的命令行助手,包括基础API调用、工具函数定义、Agent类扩展和命令行包装等步…

作者头像 李华
网站建设 2026/5/28 22:22:09

对话爱分析,探讨Agent落地智能硬件市场机会

2025年,AI终端产业迎来跨越式发展,AI手机、智能眼镜、情感陪伴机器人等产品密集涌现,让"AI从云端走进生活"成为现实。当Agent技术逐渐从实验室走向市场,智能硬件行业正站在从"功能叠加"到"主动服务"…

作者头像 李华
网站建设 2026/5/28 22:31:33

电磁辐射安全监测:基站布局合理性分析模型

电磁辐射安全监测:基站布局合理性分析模型 在城市化进程不断加快的今天,5G基站如雨后春笋般遍布居民区、商业中心和交通枢纽。然而,公众对“头顶上的信号塔是否安全”的疑虑也日益增长——电磁辐射究竟会不会超标?新建基站会不会影…

作者头像 李华