验证测试Rails使用“测试API”进行客户端状态控制

时间:2014-03-10 14:52:25

标签: ruby-on-rails testing ember.js acceptance-testing konacha

我目前正在评估如何测试一个相当大而复杂的Web应用程序,它基于服务器端的Rails 4和客户端的EmberJS。在我们的应用程序中,客户端通过一个安静的JSON API与服务器进行独家通信。

到目前为止,我们基于Konacha进行了大量的单元测试,现在也愿意设置集成/验收测试。我们不确定是否应该开始编写端到端测试,因此测试包括我们服务器的运行实例,或者我们是否应该单独对API和客户端进行集成测试。

我们目前首选的选择是端到端测试,因为我们担心在集成测试API和客户端的情况下,我们分别创建和维护测试的两倍,并且可能会有微小的,很少的专业我们无法捕捉的API和客户之间的通信。

嗯,我们喜欢现代和现代快速测试框架,如Konacha,所以我们真的不想使用Selenium。不仅因为它感觉有点旧,还因为它的性能很差。你还需要控制服务器上模拟数据的实例化和服务器的重置,为什么我们想出了以下方法:

我们实施了一个测试API,它在概念上用于控制服务器的状态,例如:它有以下方法:

GET /api/test/setup  # Simple bootstrapping of the database, e.g. populate table with ISO language codes etc...
GET /api/test/reset  # Reset the database, using `database_cleaner` gem

然后,konacha测试用例将分别在每个测试用例之前和之后调用setupreset

您如何看待这种方法?

1 个答案:

答案 0 :(得分:1)

不确定我会单独调用API和客户端的测试,但即使您考虑运行此类测试,您仍然需要进行端到端测试。

是的,我认为您进行端到端测试的想法非常好。

您设置简单命令以允许系统的测试自动化(设置和重置命令)的想法也非常好。准备在自动化期间添加更多 - 同时 端到端测试在概念上是一个黑盒测试,实际上它通常是一个灰盒测试,即你需要访问系统的内部状态。我将其称为被测系统的“操作和维护界面”。