1 关注者

测试

测试是软件开发的重要组成部分。无论我们是否意识到,我们一直在不断地进行测试。例如,当我们在 PHP 中编写一个类时,我们可能会逐步调试它,或者简单地使用 echodie 语句来验证实现是否按我们的初始计划工作。对于 Web 应用程序,我们在表单中输入一些测试数据以确保页面按预期与我们交互。

测试过程可以自动化,以便每次我们需要验证某些东西时,我们只需要调用执行此操作的代码。验证结果与我们计划相符的代码称为测试,创建和进一步执行它的过程称为自动化测试,这是这些测试章节的主要主题。

用测试进行开发

测试驱动开发 (TDD) 和行为驱动开发 (BDD) 是开发软件的方法,在编写实际代码之前,将一段代码或整个功能的行为描述为一组场景或测试,然后创建允许这些测试通过的实现,从而验证预期行为是否已实现。

开发功能的过程如下

  • 创建一个描述要实现的功能的新测试。
  • 运行新测试并确保它失败。这是预期的,因为还没有实现。
  • 编写简单的代码以使新测试通过。
  • 运行所有测试并确保它们全部通过。
  • 改进代码并确保测试仍然正常。

完成后,该过程将针对另一项功能或改进重复。如果要更改现有功能,也应该更改测试。

提示:如果您觉得花了很多时间进行大量的小而简单的迭代,请尝试通过测试场景来涵盖更多内容,以便在再次执行测试之前完成更多工作。如果您调试太多,请尝试做相反的事情。

在进行任何实现之前创建测试的原因是,它使我们能够专注于我们想要实现的目标,并在之后完全深入了解“如何做到”。通常,当涉及功能调整或耦合度较低的组件时,它会导致更好的抽象和更轻松的测试维护。

因此,总结这种方法的优点如下

  • 一次专注于一件事,从而改善计划和实施。
  • 导致测试涵盖更多功能,更详细,即如果测试正常,很可能没有问题。

从长远来看,它通常可以节省大量时间。

何时以及如何测试

虽然上面描述的测试优先方法对于长期且相对复杂的项目很有意义,但对于简单的项目来说可能过于繁琐。以下是一些判断何时适用的指标。

  • 项目已经很大很复杂。
  • 项目需求开始变得复杂。项目不断增长。
  • 项目旨在长期运行。
  • 失败的成本太高。

创建测试以覆盖现有实现的行为并没有错。

  • 项目是遗留项目,需要逐步更新。
  • 您有一个项目需要处理,但它没有测试。

在某些情况下,任何形式的自动化测试都可能过于繁琐。

  • 项目很简单,而且不会变得更复杂。
  • 这是一个一次性项目,不会再进行开发。

即使有时间,在这些情况下自动化测试也是一个好主意。

进一步阅读

  • 测试驱动开发:示例 / Kent Beck。ISBN: 0321146530.

发现错别字或您认为此页面需要改进?
在 github 上编辑它 !