[专题] PHP 应用程序测试实践指南
大家在思考如何将测试引入自己/团队的开发流程的整个生命周期的时候,这篇文章可作为知识索引。
Why TDD ?
GitChat 今天有一篇新鲜出炉的文章,可以去看一下 深度解读测试驱动开发(TDD),非广告。
个人比较关注的几个方面:
1)先写测试的好处
Give us proper hints about the problems
这是一个很好的时机,跟你的项目或产品经理将业务实现的逻辑细节梳理清楚。确保你在构建之前,就完全了解你要构建的应用究竟是如何运行的,彻底搞清楚你要解决的是什么问题非常重要。
当然也不是说需要你在写代码之前就写完所有的测试,写一小部分测试(在敏捷开发中,即一个 sprint),然后去实现相关的业务代码,并让他们通过测试,持续执行这个循环,直到完成所有规划的功能。
2)重构保障
TDD 的好处是覆盖完全的单元测试,对产品代码提供一个保护网,让我们可以轻松的迎接需求变化或改善代码的设计
3)测试会贯穿整个开发流程
测试并不是一个一次性的行为,测试需要被持续的修改和改进,就像应用程序本身。
测试工具 (或框架)
PHP 有一些不同种类的测试工具 (或框架) 可以使用,它们使用不同的方法或理念,但他们都试图避免手动测试和大型 QA 团队的需求,确保最近的变更不会破坏既有功能。
- PHPUnit: 业界标准
- Atoum is a simple, modern and intuitive unit testing framework for PHP!
- Enhance PHP is a lightweight Open Source PHP unit testing framework with support for mocks and stubs, written in PHP, for PHP
- Simple Test
- SpechBDD:PHPSpec
- StoryBDD:Behat
- Codeception: Elegant and Efficient Testing for PHP
- Storyplayer
视频资源
- PHPUnit Presentions
- PHP Testing: 138-minute PHP Course
- Laracasts Testing Series
- Adam Wathan: Test Driven Laravel
- TDD - Learn About Test Driven Development | Agile Alliance
参考资料
- Laravel Testing 官方文档
- Test-driven development - Wikipedia
- 10 Best Automated Testing Frameworks For PHP - Hongkiat
- 北京设计模式学习组
- TDD | 酷 壳 - CoolShell
- Martin Fowler: Is TDD Dead?
- Martin Fowler: TestDrivenDevelopment
关于测试,大家有什么好的建议、实践或者推荐资源呢?
本帖已被设为精华帖!
本帖由 Summer
于 7年前 加精
赞 沙发
一直想在代码中加入测试,遇到具体业务却不知道该如何下手。
干货满满:+1:
今天刚刚开始学习使用 Laravel 中的 phpunit 就发现了这个文章 :+1:
好期待能出一个 TDD 开发的实例教程. 79 元的那种. 期待啊. 因为我都不知道我自己用的对不对. 希望有能一个参考的标准.