Unit testing 什么是单元测试?
我看到很多问题问“如何”用特定语言进行单元测试,但没有问题问“什么”、“为什么”和“何时”Unit testing 什么是单元测试?,unit-testing,Unit Testing,我看到很多问题问“如何”用特定语言进行单元测试,但没有问题问“什么”、“为什么”和“何时” 这是什么 这对我有什么好处 我为什么要用它 我应该在什么时候使用它(也应该在不使用的时候) 有哪些常见的陷阱和误解 粗略地说,单元测试是在测试代码与代码隔离的情况下测试代码位。我想到的直接好处是: 运行测试变得自动化和可重复 您可以通过GUI在比点击测试更细粒度的级别上进行测试 请注意,如果测试代码写入文件、打开数据库连接或通过网络执行某些操作,则更适合将其归类为集成测试。集成测试是一件好事,但不应
- 这是什么
- 这对我有什么好处
- 我为什么要用它
- 我应该在什么时候使用它(也应该在不使用的时候)
- 有哪些常见的陷阱和误解
- 运行测试变得自动化和可重复
- 您可以通过GUI在比点击测试更细粒度的级别上进行测试
- 您不需要编写推测性的“我将来可能需要这个”代码——只需编写足以使测试通过的代码即可
- 您编写的代码总是包含在测试中
- 通过先编写测试,您不得不考虑如何调用代码,这通常会从长远来看改进代码的设计
编辑:我想到了一个误解,尽管我不确定它是否如此普遍。我听一位项目经理说,单元测试让团队将所有代码编写了两次。如果它看起来和感觉都是这样,那么,你做错了。编写测试不仅通常会加快开发速度,而且它还为您提供了一个方便的“现在我完成了”指标,这是您在其他情况下无法做到的。我不同意Dan的观点(尽管更好的选择可能是不回答)…但是 单元测试是编写代码以测试系统行为和功能的过程 显然,测试可以提高代码的质量,但这只是单元测试的一个表面好处。真正的好处是:
最大的误解是程序员不应该测试。只有糟糕或懒惰的程序员才会相信这一点。盖你屋顶的人不应该测试一下吗?更换心脏瓣膜的医生是否应该不测试新瓣膜?只有程序员才能测试自己的代码是否达到了预期的效果(QA可以测试边缘案例——当被告知要做程序员不想做的事情时,代码的行为如何,客户可以进行验收测试——代码是否达到了客户花钱让它做的事情)这是我的看法。我想说的是,单元测试是编写软件测试的实践,以验证您的真实软件是否达到了预期目的。这始于Java世界,并已成为PHP以及和的最佳实践。它是极限编程的核心实践,帮助您确保您的软件在编辑后仍能按预期工作。如果您有足够的测试覆盖率,您可以快速地进行主要的重构、bug修复或添加特性,而不必担心引入其他问题 当所有单元测试都可以自动运行时,它最有效 单元测试通常与OO开发相关联。基本思想是创建一个脚本,为代码设置环境,然后对其进行练习;编写断言,指定应该接收的预期输出,然后使用上述框架执行测试脚本 框架将针对您的代码运行所有测试,然后报告每个测试的成功或失败。默认情况下,phpUnit是从Linux命令行运行的,尽管有可用于它的HTTP接口。SimpleTest本质上是基于web的,并且更易于启动和运行,IMO。结合xDebug,phpUnit可以为您提供代码覆盖率的自动统计信息,有些人认为这非常有用