开发人员区

使用MATLAB先进的软件开发

朋克你觉得幸运吗?

我是Mathworks的一部分咨询团队基于英国的专业从事软件架构和测试(Andy的发布了一篇文章前)。作为我送达的一些最近训练的一部分,我正在考虑这一图,这一直在内部浮动多年:

我知道,搞笑。所做的一点是一个明显的一个,这让我想到了 - 如果它是如此明显,那么写作是一个好主意,为什么不再是谁?

你需要一个测试,所以你为什么不写一个?

我提出了一些可能的原因,为什么人们不写测试:

  1. 他们不知道如何。
  2. 他们认为这很难。
  3. 他们认为他们没有时间。
  4. 他们尚未被咬伤 - 也许他们的代码并不是足够大的/复杂/业务 - 尚未发生的重大中断。

对于最后一个积分,你必须问自己一个问题:我觉得幸运吗?

思考我曾经工作过的一些客户项目,人们依赖于开发的应用程序。如果他们停止工作,他们不会冒险面临风险,但是10-100多人可能无法完成他们的工作。这个花费时间和金钱,并且可能会对开发应用程序的团队有声誉损坏。我不觉得幸运!

测试自动化将运气脱离软件交付

我认为它在软件行业广泛接受:

  • 软件变得更加复杂。
  • 我们对它的依赖正在增加。
  • 开发团队正在变大。
  • 更频繁地需要更新/交付。

因此,我们需要测试:

  • 验证该复杂的行为。
  • 确保鲁棒性。
  • 当集成时,检查整个团队的代码是否一起工作。

通过通过自动化快速有效地运行这些测试,我们可以自信地实现那些频繁的交付。

测试也可以帮助单个开发人员

以下是五种方式,测试帮助了解实际项目:

  1. 测试允许我充满信心地改变了大型项目。即使经过很长一段时间的工作,我也不知道代码所做的事情。当然,我可以给出执行摘要,或者我可以告诉你我工作过的特定代码的低级细节,但并非所有内容。这是客户工程师的域名知识。通过运行测试,我可以确定一切仍然有效。
  2. 测试帮助了我学习一个新的代码库当我被丢弃到一个项目时。他们向我展示了如何使用代码以及依赖项的方式。
  3. 测试封装知识即使在一个非常小的项目,我已经获得了我作为开发过程的一部分制作的决定。我多次惊讶地惊讶于复杂性如何积聚 - 在编码几小时内,我已经丢失了每条代码的曲目,以及它处理的所有边缘案例。
  4. 测试允许我专注于要求而不是实施细节。当实施不明显时,这是特别有用的。我可以遵循识别它需要做的过程,编写(失败)测试以捕获该信息,执行一些实现,然后迭代 - “红色,绿色,重构”。
  5. 它有助于驱动软件架构通过创造小,专注,可测试成分。如果代码难以测试,那么它几乎肯定是因为我设计了错误。

测试现在是标准的练习

在主流软件开发中,写作测试已成为10多年的标准练习。“朋克”走了 - 专业严谨和工艺是必须的。写作测试与编写代码一起携手共进。

据说(我忘记了谁 - 也许Bob大叔,也许是众多良好谈话之一CPP CON.)如果您要在90年代后期或2000年初向人询问他们是否使用版本控制,您会有一个拼凑的响应 - 它并不常见。今天,如果您不使用版本控制,则会嘲笑!如果没有版本控制,您如何开发任何内容?测试正在经历相同的转换。不要成为笑话的屁股!

无论您的团队还是客户都要求测试,作为软件行业专业人士,您应该向他们展示这方面!

立即开始写作测试

只要您启动项目,您应该开始写入测试。复杂性令人惊讶地迅速建立起来,因此从一开始就开始测试。当你走得而不是稍后再回来并试图这样做,它更容易写测试。

如果做不到,现在就开始!如果你已经有一个没有测试的项目,不要推迟。您可以采用增量或“随走随修”的方法来构建您的测试。编写测试不需要是一个整体的工作。随着时间的推移,您的测试套件和覆盖率将会增加。

与此相关的常见问题是如何管理从原型化算法和工作流程的转换到更正式的测试。反对意见是“当代码在这么多的通量时,写作所有这些测试的点是什么?”。

在这里,需要判断呼叫。在你回答问题的第一阶段,比如“这是可能的”,“我如何实际做到这一点”,“结果是值得进一步的投资”。在第二阶段,您开始依靠代码产生的答案,或者也许其他人也希望运行代码。无论哪种方式,您都开始构建一个工具。

一旦有一丝阶段,就开始测试!

“但我没有时间”

许多测试书籍和文章都提到了这个常见的反对意见。引用Kent Beck只有一个例子:

“压力越大,考试就越少。你做的测试越少,你犯的错误就越多。你犯的错误越多,你的压力就越大。清洗和重复”。

——贝克,K.(2003)。测试驱动开发:示例。波士顿:Addison-Wesley

想想开发过程中迟到的那个错误,需要数天才能追踪。如果您有一个自动化测试,它会在出现后立即查明它吗?考虑更糟糕的方案 - 在找到错误时,您已经发布了代码。需要多少时间来解决?我可以保证它不会在周一早上9点发生。星期五晚上5点!

现在想象一个替代世界 - 您需要发货,以满足紧张的截止日期。你整合了代码,但担心它可能会破坏其他东西。但是你记得你有一个测试套件,完全覆盖你信任。你跑了套房,一切都通过了。您将代码运送完全有信心的一切工作,并按时回家。

最终,你有时间吗?不是去测试?

那么如何开始在MATLAB中进行测试呢?

如何测试本身是整个主题。目前,我只是将你指出一些资源来帮助你开始:

最后......

是的,我知道 - 标题是一个错误。实际的报价是“......你必须问自己一个问题:”我觉得幸运吗?“好吧,你,朋克吗?“




与MATLAB®R2021A发布

|
  • 打印
  • 发电子邮件

评论

要发作评论,请请此处