gpt4 book ai didi

php - 查找单元测试中的失败模式

转载 作者:可可西里 更新时间:2023-11-01 12:57:15 25 4
gpt4 key购买 nike

我是单元测试的新手,而且我只是进入构建测试套件的例行程序。我有一个相当大的项目,我想从一开始就为它构建测试。

我正在尝试找出构建测试套件的一般策略和模式。当你看一个类(class)时,许多测试显然是由于类(class)的性质而给你的。对于具有基本 CRUD 操作的“用户帐户”类,与数据库表相关,我们将要测试 - 好吧,CRUD。

  • 创建一个对象并查看它是否存在
  • 查询其属性
  • 改变一些属性
  • 将一些属性更改为不正确的值
  • 然后再次删除。

至于如何破坏事物,大多数 CRUD 类都有常见的“失败”测试,例如:

  • 无效的输入数据类型
  • 超出所选数据类型范围的作为ID键的数字
  • 输入了错误的字符编码
  • 输入太长

等等等等。

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

  • 文件名中的字符无效
  • 文件名太长
  • 文件名使用了错误的协议(protocol)或路径

我很确定类似的模式 - 适用于当前正在进行的单元测试之外 - 可以在大多数正在测试的单元中找到。

现在我的问题是:

  • 我看到这样的“破坏模式”是否正确?还是我对单元测试的理解完全错误,如果我做对了,这根本就不是问题?单元测试是一个寻找尽可能多的方法来破坏单元的过程,这是正确的方法吗?

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

  • 是否有任何规定(主要是在 PHPUnit 中,因为这是我正在使用的框架)来自动执行此类模式?

  • 是否有任何帮助(以检查列表或软件的形式)来帮助编写完整的测试?

最佳答案

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

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

所以我觉得这不能通过简单地检查列表中的项目来代替。当然,一旦您用尽了测试实际单元的想法,检查这样的列表永远不会有坏处。然而,就其性质而言,此类工作表只能包含概括,这些概括可能适用于也可能不适用于特定项目和要测试的特定类。但是你显然有经验和心态为你的特定单元找到好的测试用例:-)

关于php - 查找单元测试中的失败模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2526797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com