我到处都读到自动化测试的重要性。我理解它的重要性,我现在将在我即将进行的项目中这样做(我知道有点晚,但迟到总比没有好;-))
我阅读了很多关于单元测试的内容,并且知道可以使用的工具(PHPUnit 是几乎所有人的首选工具)。但是功能测试呢?我阅读了一些关于功能测试的专业文献,但我找不到详细描述如何实施此类测试以及我可以使用哪些工具。确切的区别是什么?
我花了一些时间在谷歌上搜索,所以如果有人能给我一个文档链接或推荐一本关于这个主题的书,我会很高兴。
每个提示都非常感谢;-)
谢谢
功能测试建立在使用场景之上。基本上有两种方法可以解决这个问题:
请注意,这两种方法并非不可比拟,而是相辅相成。
你想测试什么,你从什么开始?
这取决于您要测试的内容以及编写此测试的人员。如果业务人员想要编写一些功能测试,您应该使用带有 Behat 和 Selenium 等工具的 ATDD 方法。
如果您(我猜是开发人员)想编写功能测试,您想测试什么?你想检查像
if I put 'myName' in the input 'name' and I click on the 'submit' button,
I will be redirected to a page with 'myName' in a 'h1'
或者更多 :
if I send array('name' => 'myName') to MyController,
a new user will be created in the database and i will be redirected to this user page
对于第一种方法,您应该再次使用像 Selenium 这样的工具,它可以模拟所有用户的操作。这是一个非常强大和流行的工具。我认为(但这只是一种观点)这种方法对 UI 的粒度太大,它只适用于非回归测试而不是 TDD。
我的方法是使用 PHPUnit 编写高级测试。此测试直接调用您的路由或控制器,并检查所有业务规则是否得到遵守。通过这些测试,我可以解析 DOM 以检查页面中是否有好的信息(以symfony 爬虫为例)。这个测试可以快速编写并集成到您的 PHPUnit 工作流程中,因此很容易开始。我不知道我们是否可以将其称为“功能测试”,但它们在我的项目中扮演了这个角色。
但是编写这种测试很大程度上取决于你的框架。我使用 Laravel 4,它被设计为可测试的,所以它非常简单,但在以前的经验(使用 FuelPHP)中这是不可能的。
我希望它可以帮助您建立自己的观点。