在单元测试中查找失败模式

我是单元测试新手,我只是进入构建测试套件的例程。 我有什么是一个很大的项目,我想从一开始就构建测试。

我试图找出构建测试套件的一般策略和模式。 当你看一堂课时,显然由于课堂的性质,很多考试都会出现在你面前。 对于具有基本CRUD操作的“用户帐户”类,与数据库表相关,我们将要测试 - CRUD。

  • 创建一个对象并查看它是否存在
  • 查询其属性
  • 改变一些属性
  • 将某些属性更改为不正确的值
  • 并再次删除它。
  • 至于如何破解事物,大多数CRUD类都有“失败”测试,例如:

  • 输入数据类型无效
  • 一个数字作为超出所选数据类型范围的ID键
  • 输入不正确的字符编码
  • 输入太长
  • 等等等等。

    对于与文件操作有关的单元测试,“破坏事件”列表可能是

  • 文件名称中的字符无效
  • 文件名太长
  • 文件名使用不正确的协议或路径
  • 我非常确定类似模式 - 适用于目前正在进行的单元测试 - 可以在大多数正在测试的单元中找到。

    现在我的问题是:

  • 我看到这种“突破模式”是否正确? 或者我在单元测试方面得到了一些完全错误的信息,如果我做得对,这完全不是问题? 单元测试是一种寻找尽可能多的方法来打破单元的正确方法吗?

  • 如果我是正确的:是否存在这些模式的现有定义,列表和备忘单?

  • 是否有任何规定(主要在PHPUnit中,因为这是我工作的框架)使这些模式自动化?

  • 是否有任何帮助 - 以检查清单或软件的形式 - 帮助编写完整的测试?


  • 你基本上是对的。 寻找可能破坏你的代码的方法是单元测试的关键部分和技巧。 但是,在TDD中应用的单元测试工作有点不同。 在TDD中,您首先为新功能编写测试,然后创建代码以使测试通过。 所以这里的重点是不同的,尽管最终的结果是相似的。

    在TDD中,一个“不断变化的帽子” - 一点点测试,一点点编码。 所以在这种方法中,测试不是一个可自动化的部分,但人们几乎可以说它是创作过程的关键。 在编写测试时,您还在设计单元的界面,并从其(未来)客户的角度思考 - 他们可以期待什么,以及他们应该提供什么? 然后,你换帽子,进入单位,以满足这些期望。

    所以我不觉得这可以通过简单地检查列表上的项目来取代。 当然,一旦你用完了想法来测试实际单位,检查这样的单子从不会感到痛苦。 然而,这些表格的性质只能包含可能适用或不适用于特定项目和特定类别的概括。 但是,显然你有经验和思维去为你的特定单位找到好的测试用例:-)

    链接地址: http://www.djcxy.com/p/45247.html

    上一篇: Finding patterns of failure in a Unit Test

    下一篇: What good practices, if any, has the agile movement lost?