【发布时间】:2010-03-26 21:13:33
【问题描述】:
我是单元测试的新手,我只是进入构建测试套件的日常工作。我有一个相当大的项目,我想从一开始就为其构建测试。
我正在尝试找出构建测试套件的一般策略和模式。当您查看课程时,显然由于课程的性质,您会遇到许多测试。假设具有基本 CRUD 操作的“用户帐户”类与数据库表相关,我们将要测试 - 嗯,CRUD。
- 创建一个对象并查看它是否存在
- 查询其属性
- 更改一些属性
- 将某些属性更改为不正确的值
- 然后再次删除。
至于如何破坏,大多数 CRUD 类都有“失败”测试,例如:
- 输入数据类型无效
- 作为 ID 键的数字超出所选数据类型的范围
- 输入的字符编码不正确
- 输入太长
等等等等。
对于与文件操作有关的单元测试,“破坏事物”的列表可能是
- 文件名中的字符无效
- 文件名太长
- 文件名使用了不正确的协议或路径
我很确定类似的模式 - 适用于当前正在进行的单元测试之外 - 可以在大多数正在测试的单元中找到。
现在我的问题是:
我看到这样的“打破模式”是否正确?还是我对单元测试完全错误,如果我做对了,这根本就不是问题?单元测试是一个寻找尽可能多的方法来破坏单元的过程是正确的方法吗?
如果我是正确的:是否存在此类模式的现有定义、列表、备忘单?
是否有任何规定(主要在 PHPUnit 中,因为这是我正在使用的框架)来自动化此类模式?
是否有任何帮助(以检查清单或软件的形式)来帮助编写完整的测试?
【问题讨论】:
标签: php unit-testing phpunit