如何使用真实数据库对 Rails 应用程序进行性能/基准测试?
我想对 Rails 应用程序进行性能测试。
现实世界的数据大小为 100 MB。
但 Rails 总是重建测试数据库,这会覆盖现实世界的数据。
那么如何进行性能测试呢?
I would like to performance testing a Rails app.
The real world data is 100 MB in size.
But Rails always rebuilds the test database, which overwrites the real world data.
So how to the performance testing?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我会创建一个称为“性能”的新环境。您需要它来复制应用程序的生产设置(类缓存、模板等),然后加载数据库。过去,我专门创建了一个用于性能测试的数据库,创建了一个 rake 任务来执行必要的迁移/加载,然后调用 Rails 性能脚本。
您还可以在测试中关闭固定装置行为 - 取决于您使用的测试框架。
我还在 Running Rails 上发现了这篇有用的文章对真实数据进行性能测试,其中包含有关此方法的一些详细信息。
I would create a new environment called "performance". You need this to replicate the production settings of your app (class caching, templates etc) and then load the database. In the past I have created a DB specifically for performance testing, created a rake task that executes the necessary migrations/loading and then called the rails performance script.
You can also turn the fixture behaviour off in your tests - depends on which test framework you are using.
I also found this useful post on Running Rails performance tests on real data that has some details on this approach.
我为 SQLite 用户提供了一个快速修复方法。
在测试用例中
I have a quick fix for SQLite users.
In TestCase
我会将应用程序部署到临时服务器(靠近您的生产环境)。并在数据库中生成数据以进行更准确的测试。您可以查看用于生成虚假数据的
ffaker
gem。然后使用第三方工具来访问您的应用程序。因为您在服务器本身上运行的工具也会影响性能。我更喜欢 Jmeter 作为负载测试工具。
您可以创建测试用例。
例如,您想测试您的登录页面。您可以设置登录参数并发布到登录网址。您可以考虑对对数据库进行写操作的页面进行测试。这些可能会成为您应用程序的瓶颈。
JMeter 用户手册
Jmeter 教程
希望这会有所帮助。
I would deploy the app to a staging server (which is close to your production environment). And generate data in your database for more accurate testing. You can take a look at
ffaker
gem for generating fake data.Then use a 3rd party tool to hit your application. Cause tools that you run on server itself will affect the performance as well. I prefer
Jmeter
as load testing tool.You can create test cases.
For example you want to test your login page. You can set login parameters and post to login url. You would consider doing tests for the pages which have write operations to your database. Those probably will be your app' bottleneck.
JMeter User Manual
Jmeter Tutorial
Hope this helps.