我应该写一个测试还是修复一个错误?

49 阅读3分钟

自动测试与我们编写的任何其他软件没有区别。它们和其他的东西一样,都是在同一个优先级的竞争场地上进行的。你有功能需要说明,设计需要制作,错误需要修复,需求收集会议需要召开,功能标志需要配置,等等等等。为了能够确定这些活动的优先次序,你需要知道什么也不做的代价和完成这些活动的好处。当涉及到确定优先次序时,你不是说你 "不会 "做某件事,你只是说你会先做一件事。因此,了解以后做的相对成本/效益和现在做的成本/效益也会有帮助。

让我们来看看几个不同的场景。

  1. 如果用户没有头像,一个错误会阻止他们改变自己的简历。
  2. 你的产品结账流程没有被测试覆盖。

对于这个bug来说,其代价是为那些没有上传头像但想改变他们的简历的少数用户提供了不可靠的用户界面。这不是一个很好的体验。

对于结账流程来说,这是很严重的。对触及该流程的代码的任何改变都可能破坏结账流程(可能会给卖家带来真正的损失,给买家带来宝贵的时间)。

我认为对于这一点,让我们优先添加一个测试,然后再修复这个错误。

好吧,另一种情况。

  1. 你是一家初创公司,你还没有真正开始销售你的产品,因为它的功能还不够完整,不够实用。你的钱快用完了。
  2. 你刚刚写了一个小函数来计算用户按ArrowDown键时你的可滚动列表需要滚动的距离,你正试图决定是否要测试它。

看在上帝的份上!跳过测试,把你的产品运出去,把它卖掉!你的钱正在烧掉 🔥💵🔥

这就是说,你可能会发现,你向潜在客户的演示并不顺利,因为你的工程师不断地运送坏的代码。在这种情况下,为你的演示所采取的常见流程写一两个快速而简单的E2E测试,并在你合并任何代码之前运行它。

让我们尝试最后一种情况。只是为了好玩。

  1. 你刚刚完成了一个新的功能,允许用户创建一个他们最喜欢的歌曲的播放列表。你在想是否要添加测试。
  2. 你在你最喜欢的开发者的直播中看到了一个惊人的字体和编辑器主题,你想问他们这是什么,这样你就可以试试了。

😐

我在这篇文章中想表达的是,测试与你用时间做的任何其他事情没有什么不同。考虑成本和效益,并采取相应的行动。请记住,测试是一个不断给予的礼物。

祝您好运!