021 代码覆盖丑闻

Vanilla Pop:IT团队怎么样呢?我们可以用TDD来实施一次设计冲刺,然后看看情况吗?

Horst:我还是坚持我自己不赞成微测试的政策。不过,我很乐意让团队来自己决定如何才能向我交付功能和质量。

代码狗:我不相信TDD。你不能在写代码之前就先写好测试啊。你知道吗?没人会这样做。你想想,不过几周,就会回到老样子,我称之为错误驱动开发。我们调试代码的人就是这样做的。

架构师:我改变了。请教了专家,建议我尝试一下更为灵活的思维。我努力做得更好。不再强加观点给同事。让团队决定,而不是我自己命令他们。一首叫“Kumbiyah”的歌,我们都开始唱唱好吗?Pop是对的。他向我展示了一种方法,所以,我们需要做的就是开始实施。管理层希望我们带头,实现全部代码100%的微测试覆盖。副总已经签发这件事。会有个连续整合服务器来运行它们。我们只需要实施即可。这就是目前的规矩。好运哈。

Jose:(小声说)呃,灵活思维持续不到5分钟。

Junior Joe:(小声说)你认为那会是个新记录吗?

代码狗:啊,这不会发生的。我们不会真地那么做吧?那是质量控制的事情啊。

Jose:我不知道。Vanilla Pop之前的工作很出色。你看过这些测试没?

代码狗:呃…没有,那是Pop的东西呢。

Junior Joe:我觉得有点眉目了。我支持。

Vanilla Pop:谢谢。

架构师:Vanilla Pop和Junior的覆盖率有40%。这是一个小的也是新的单页应用。代码狗也在做TDD,按我的估计,下周我们可实现100%覆盖。我们努力前进吧,伙计们。

(时间过去了。)星期二,50%。星期三,60%。星期四,65%。星期五,85%。(继续前进!)星期一90%。

架构师:不错!我对代码狗的转变印象深刻。他抓住了TDD的精髓。实际上,他处理的代码块实现了100%的覆盖。我提议给他颁个奖。

代码狗:(吃惊了)哇,谢谢!

各位开发人员:(拍了拍代码狗的背。)

Junior:干得好!

Vanilla:很自豪能认识你。

Jose:对开发者来说很不错了。

Vanilla:他真地这样做到了。

Horst:这是什么情况?我这样滑动屏幕,为什么什么都看不见呢?

代码狗:(尴尬的样子)我知道这是什么情况。我会调试并修复的。

(关门了)

Jose:很奇怪。他的代码是100%覆盖的,却似乎是有错误一样。

Junior:也许是个整合的问题?我审阅了他的代码,并建议他在视图层停止调用I.O.。不大量使用虚构的对象,就没法进行微测试。

架构师:代码狗在哪里?我希望它能适当重构一下代码。他的代码过于占用网络带宽了。

Vanilla:他正在处理一些Horst发现的情况。

架构师:什么?不可能吧!他的代码有100%的覆盖,看看这些漂亮的代码覆盖报告。

Vanilla:是的,真是个奇迹。Junior,你能向大家展示下他的微测试吗?

Junior:啊,好的!

Vanilla:啊,天呐。图灵的魂魄都会为此震惊的。

Jose:你看看Pop?他不是一个像你这样有个性的开发者。

Junoir:你会认为他的50个微测试什么测试也没做吗?我没有理由不这么想?

Vanilla:这些测试是假的。

架构师:这人真不可思议!他只是假装在TDD!

Jose:哦,天呐。他居然这样做了。真是疯狂,搞砸了。天呐,糟糕极了!

解说:代码覆盖是分析了解团队的代码自动化进展的好方法。但是如果推进得过快,或是用政策来强制实施,就容易得到虚假的结果。代码覆盖测试工具能让我们了解测试运行的时候哪些代码被执行,但并不能告诉我们自动化的测试是否在起作用。设想一个针对两个数值求和的函数。如果测量代码覆盖时,函数被执行,那么就会有100%的覆盖,但是代码全覆盖并不意味着函数会返回一加一等于二这样的结果。

结对编程或者审阅测试代码可以避免造假。如果你要审阅代码,那么检查微测试代码比检查产品代码更重要。微测试规格体现了开发者的意图。如果微测试质量足够好,那么我们可以相信能通过测试的产品代码也是高质量的代码。

下一集,TDD和Stack Overflow的专家开发者。

敏捷理念
敏捷理念
021 代码覆盖丑闻
Loading
/

Comments are closed.