盲猜效率低,先思考再进行验证

2022-09-13  本文已影响0人  Real_man

最近应业务要求在写单元测试代码,有个要求是单元测试的覆盖率要达到85%以上。 每新增一行新的代码,基本上都需要再写上对应的测试代码验证这行代码是可以被正确执行的。

要求:单元测试85%的覆盖率;

在执行的时候遇到一个问题,就是我写的单元测试覆盖率只能达到75%,无论怎么写都是只能达到这个数字;

既然有衡量的数字指标,那就一定有衡量的口径,是那个类降低了整体的覆盖率;

找到了对应的类之后,接下来就是解决这个类为什么覆盖率这么低的问题;

但是本地运行的时候,发现这个类的覆盖率已经95%了,为什么在系统上仍然展示30%呢?
然后我就开始不断的修改自己的单元测试写法,然后部署,然后修改,然后部署,核心都是修改这个类:修改名称,多写几个方法,修改类的内部逻辑...
发现都是行不通,花了两天的时间都没有提示这个类的覆盖率;

在今天有同学提出了一个新的问题?
这个类的单元测试有没有被运行到,这个有办法知道吗?然后故意的抛出几个错误,发现在单测服务根本就没有运行这个类;

挪动了类的位置,到另外一个模块中,单元测试的覆盖率提升上来了,终于解决了问题。

其实是一个非常简单的问题,我却处理了两天的时间,这个效率可谓非常非常之低,这个问题的价值当然是非常小的,可能是典型的投入远大于产出。

回顾整个事情,我思考的问题链路:

过程中有问题的点:

回到我自己的单元测试覆盖率有90%,但是测试服务的覆盖率只有35%,这个问题的可能原因有哪些?

为什么只统计到35%?而不是0%?

发现35%的在其他地方有覆盖到,那么当前的这个类是不是全部都没有覆盖到,只是被其他的类影响才统计到的。

一点想法

反馈越快,效率越高,但是有时候这个反馈的速度不是我们能控制的;

遇到数据不一致的问题时,第一反应应该是数据的差异部分是什么,增加的部分是什么?删除的部分是什么? 然后总结增加和删除部分的特征;

遇到稍微复杂一点的问题时,不要靠盲猜,而是先系统性的梳理出各种可能性,把可能性都列出来,然后依次进行验证;而不是反反复复的验证同一个可能性。学会思考可以大幅提升人的效率真的不假;

上一篇 下一篇

猜你喜欢

热点阅读