市场部的 Linda:“我们想让系统在用户完成一笔交易时做 x 工作。这需要多长时间。我们的用户需要尽快实现这一功能。”情况似乎有点不妙,不是吗?尽管如此,Jeff 还是将任务分配给了 Mary,Mary 也认为能够在两天内完成工作 —— 确切地说,在看到代码之前她是这么认为的。
治理人员 Jeff:“让我看看,这个代码是 Joe 在几个月前编写的,需要对业务层和 UI 做一些变动。Mary 也许可以在两天内完成这项工作。”
Linda:“Joe?他是谁?”
Jeff:“哦,Joe,因为他不知道自己在干什么,所以被我解雇了。”
Mary:“Joe 写这些代码时是不是睡着了?这是我所见过的最差的代码。我甚至不能确认这是 Java 代码。除非推倒重来,要不我根本没法修改。”情况对 “饮水机” 团队不妙,不是吗?但是我们假设,假如在这个不幸的事件的当初,Jeff 和 Mary 就拥有一份测试报告,那么情况会如何呢?当 Linda 要求实现新功能时,Jeff 做的第一件事就是检查以前生成的覆盖报告。注重到需要改动的软件包几乎没有被覆盖,然后他就会与 Mary 商量。
Jeff:“Joe 编写的这个代码很差,绝大多数没经过测试。您认为要支持 Linda 所说的功能需要多长时间?”正如他们所说的,知识的力量是强大的。开发人员可以在试图修改代码之前 使用覆盖报告来检查代码质量。同样,治理人员可以使用覆盖数据更好地估计开发人员实际所需的时间。
Mary:“这个代码很混乱。我甚至都不想看到它。为什么不让 Mark 来做呢?”
Jeff:“因为 Mark 不编写测试,刚被我解雇了。我需要您测试这个代码并作一些改动。告诉我您需要多长时间。”
Mary:“我至少需要两天编写测试,然后我会重构这个代码,增加新的功能。我想总共需要四天吧。”
Drew 对 Jeff 说:“我们为下一个版本编写了测试案例,我们注重到很多代码没有被覆盖。那似乎是与股票交易有关的代码。”知识再次显示了其强大的力量。与其他软件生命周期中的风险承担者(例如 QA)配合,您可以利用覆盖报告所提供的信息来降低风险。在上面的场景中,也许 Jeff 可以为 Drew 的团队提供一个早期的不包含 Mary 的所有修改的版本。不过无论如何,Drew 的团队都应该关注应用程序的股票交易方面,与其他具有相应单元测试的代码相比,这个地方似乎存在更大的缺陷风险。
Jeff:“哦,我们在这个领域有好些问题。假如我是一个赌徒的话,我会对这个功能区域给予非凡的关注。Mary 正在对这个应用程序做一些其他的修改 —— 她在编写单元测试方面做得很好,但是这个代码也太差了点。”
Drew:“是的,我正在确定工作的资源和级别,看上去我没必要那么担心了,我估计我们的团队会对股票交易模块引起足够的关注。”
新闻热点
疑难解答