Mat*_*ias 6 testing integration-testing web-services ruby-on-rails acceptance-testing
我正试图在那里筛选无数的测试解决方案,我甚至不确定我是否朝着正确的方向前进.故事是:我们正在运行一个RESTful Web服务,实现为Rails应用程序,支持我们的移动客户端.我们是单元测试Web服务(当然),但这涉及模拟应用程序的许多部分,例如搜索堆栈(Apache SOLR).
此外,我们的测试不会(即不能!)覆盖关键路线,例如移动登录/登录过程,因为这涉及API应用程序和移动网站之间的通信,用户可以在其中输入凭据,例如SSO(Janrain Engage).因此,标准的Rails集成测试不会这样做.
我从理论上认识到,如果测试套件设计得非常好,那么模拟只发生在下一层测试开始的那些连接点上,然后单独或功能测试服务API和移动网站,可以获得相同的测试覆盖率.我发现在实践中,如果你有几个开发人员独立地在测试套件上工作,这是一种错觉; 我承认我们的单元测试并不是那么精心设计的.特别是在运行TDD时,我发现虽然测试可以驱动应用程序代码,但测试代码设计仅针对被测单元进行了定制,从而产生了相当广泛的测试套件.
我发现的另一件事是,有时我们没有检测到纯粹使用单元测试的回归,例如,由于连锁效应,错误的查询被发送到SOLR服务器.这就是为什么我认为确保整个堆栈沿着关键路由工作的唯一真正方法是在每次部署之前在登台服务器上自动端到端地测试它,即将实际的HTTP请求发送到应用程序.
我的问题是:
您可能对此感兴趣:http://groups.google.com/group/ruby-capybara/browse_thread/thread/5c27bf866eb7fad3
您可能想要尝试的是将 Cucumber (或类似的)与上面链接中提到的工具之一结合起来,这样您就可以执行类似的操作
Given I have 2 posts
When I send "DELETE" to post with id 1
Then I should have 1 post
Run Code Online (Sandbox Code Playgroud)
这样您就可以测试 API 的完整堆栈并检查结果。
归档时间: |
|
查看次数: |
2151 次 |
最近记录: |