V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
shangwuli
V2EX  ›  程序员

关于测试覆盖率牵扯出的一系列问题,你了解吗?

  •  
  •   shangwuli · 5 天前 · 687 次点击

    开会的时候听测试同事说到一个词,叫测试覆盖率。说实话,不懂这是什么意思,于是开完会搜索了下

    1.https://zhuanlan.zhihu.com/p/37767185 软件测试覆盖率常用的计算公式,这些怎么运用到工作中,程序怎么走?

    2.https://www.zentao.net/redirect-index-19587.html 这里谈及测试自动化=更高的测试覆盖率,自动化这个是绝对认同的,只是不知道该怎么落地实施

    感觉理论是大概清楚了,但不清楚在实际落地或者实施过程中怎么做?

    还引发出来的一些列问题: 接口自动化覆盖率指什么呢? 测试覆盖率不只是代码覆盖率,还应该有需求覆盖率(网友观点)。那么需求覆盖率又是什么?

    请大家解疑!!!

    6 条回复    2021-09-15 21:32:06 +08:00
    pckillers
        1
    pckillers   5 天前   ❤️ 1
    都是用来刷 KPI 与美化年报的东西。 单元测试的代码覆盖率至少还有工具能量化,但覆盖率低到底是测试代码写的不完善还是工程代码里那些额外的异常处理代码太多这又是另一个撕逼点了。

    接口测试这种黑盒测试谈覆盖率就更加搞笑了。 你可以说有针对一个接口做过接口测试就算覆盖到了,也可以说接口的每一个参数每种可能性都要测到才算覆盖。 而那种动辄几十个参数的接口想完全覆盖是打算写几千万条用例跑上一整天才能测完么?

    需求覆盖率? 有哪个产品可以满足一切用户需求的? 又有几个需求文档是精确定义每一个功能而不是摸棱两可的?搞笑!
    liprais
        2
    liprais   5 天前
    单看这个没啥意义
    比如你写了个方法算 sin 的值叫 f
    测试的时候直接写
    f(45 度)等于根号 2
    就算覆盖了
    billlee
        3
    billlee   5 天前
    @pckillers 接口测试现在可以做到和单元测试一样,按代码行 /分支来产生覆盖率报告
    pckillers
        4
    pckillers   5 天前
    @billlee 用接口覆盖率搜了一下。 貌似只搜到个用于 java 的 jacoco 。 还要在运行程序前加载 jacoco 的代码。

    后端不是 java 的话有办法搞么?比如 go 和 php 。
    rihkddd
        5
    rihkddd   5 天前
    如果要了解概念,可以看一下 wiki: https://en.wikipedia.org/wiki/Code_coverage
    针对你的问题:
    1. 实际落地一般经常看的有行覆盖率,函数覆盖率(好统计,容易提升),分支覆盖率,例如以前百度 C++模块要求 80%行覆盖率,60%分支覆盖率(时间长了,记忆不一定准确)。有工具可以统计出来,基本思路就是对代码插桩。
    2. 自动化跟代码覆盖率没有关系,无论手动测试、自动化测试,亦或者是单元测试、接口测试、集成测试都是可以获取覆盖率的。
    3. 接口自动化覆盖率应该是自己定的一个概念,互联网服务以 http 形式的 API 居多,相对独立。如果这个接口有一条或者多条自动化测试用例覆盖,那就接口覆盖了。跟代码覆盖率不是一个概念。至于需求覆盖率,应该类似,很少听到这种提法。

    补充一点:覆盖率不能表示测试覆盖的完备性,只是用来指导如何提高提高测试覆盖完备性的手段。
    billlee
        6
    billlee   5 天前
    @pckillers 我不是很清楚要怎么弄,都是测试部门搞出来的
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   877 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 16ms · UTC 21:14 · PVG 05:14 · LAX 14:14 · JFK 17:14
    ♥ Do have faith in what you're doing.