2

我到处都读到自动化测试的重要性。我理解它的重要性,我现在将在我即将进行的项目中这样做(我知道有点晚,但迟到总比没有好;-))

我阅读了很多关于单元测试的内容,并且知道可以使用的工具(PHPUnit 是几乎所有人的首选工具)。但是功能测试呢?我阅读了一些关于功能测试的专业文献,但我找不到详细描述如何实施此类测试以及我可以使用哪些工具。确切的区别是什么?

我花了一些时间在谷歌上搜索,所以如果有人能给我一个文档链接或推荐一本关于这个主题的书,我会很高兴。

每个提示都非常感谢;-)

谢谢

4

2 回答 2

0

功能测试建立在使用场景之上。基本上有两种方法可以解决这个问题:

  1. 您从用例文档开始,然后定义您的目标设备。然后对于每个案例/设备,您编写一个适合您环境的脚本(对于网络,Selenium 是一个非常好的选择)
  2. 当你有一个现有的网站或产品时:你捕获你的流量并重播真实的使用序列,这将验证非回归(从功能的角度来看)。这有点棘手,但非常强大。

请注意,这两种方法并非不可比拟,而是相辅相成。

你想测试什么,你从什么开始?

于 2013-06-19T08:42:32.817 回答
0

这取决于您要测试的内容以及编写此测试的人员。如果业务人员想要编写一些功能测试,您应该使用带有 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)中这是不可能的。

我希望它可以帮助您建立自己的观点。

于 2013-06-19T18:21:20.407 回答