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

2021-09-15 13:18:13 +08:00
 shangwuli

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

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

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

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

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

请大家解疑!!!

1610 次点击
所在节点    程序员
6 条回复
pckillers
2021-09-15 13:41:58 +08:00
都是用来刷 KPI 与美化年报的东西。 单元测试的代码覆盖率至少还有工具能量化,但覆盖率低到底是测试代码写的不完善还是工程代码里那些额外的异常处理代码太多这又是另一个撕逼点了。

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

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

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

补充一点:覆盖率不能表示测试覆盖的完备性,只是用来指导如何提高提高测试覆盖完备性的手段。
billlee
2021-09-15 21:32:06 +08:00
@pckillers 我不是很清楚要怎么弄,都是测试部门搞出来的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/802006

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX