gpt4 book ai didi

ruby-on-rails - 如何开始性能测试

转载 作者:行者123 更新时间:2023-12-04 07:32:54 25 4
gpt4 key购买 nike

我正在使用 rails 3.1.1 并使用 socery 0.7.11 进行身份验证,我需要实现性能测试,我可以在其中测试以下内容

  • 模拟 100 个用户同时登录和注销
  • 模拟 100 个用户同时添加新兴趣。

  • 我已经通过以下链接:

    http://rubylearning.com/blog/2011/08/14/performance-testing-rails-applications-how-to/

    http://guides.rubyonrails.org/performance_testing.html

    并且能够做以下事情
  • 使用 test_helper.rb 创建测试文件夹
  • 创建了 test/performance/login_test.rb
  • 创 build 备/users.yml

  • test_helper.rb
    ENV["RAILS_ENV"] = "test"
    require File.expand_path('../../config/environment', __FILE__)
    require 'rails/test_help'

    class ActiveSupport::TestCase
    # Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order.
    #
    # Note: You'll currently still have to declare fixtures explicitly in integration tests
    # -- they do not yet inherit this setting
    fixtures :all

    # Add more helper methods to be used by all tests here...
    end

    /性能/login_test.rb
    require 'test_helper'
    require 'rails/performance_test_help'

    class LoginTest < ActionDispatch::PerformanceTest

    fixtures :users
    # Refer to the documentation for all available options
    self.profile_options = { :runs => 5, :metrics => [:wall_time, :memory],
    :output => 'tmp/performance', :formats => [:flat] }

    def test_login
    post_via_redirect "http://bc.lvh.me/", :username => users(:youruser).username, :password => users(:youruser).password
    #using lvh.me coz login page is on my subdomain
    end
    end

    夹具/用户.yml
    one:
    username: eagleschasar12
    password: chaitanyA1#

    two:
    username: eaglesmarktell12
    password: chaitanyA1#

    当我运行 rake test:profile 时,我得到以下结果
    E
    ===============================================================================
    Error: test_login(LoginTest)
    ActiveRecord::StatementInvalid: SQLite3::SQLException: table users has no column named password: INSERT INTO "users" ("username", "password", "created_at", "updated_at", "id") VALUES ('eagleschasar12', 'chaitanyA1#', '2012-06-15 06:43:01', '2012-06-15 06:43:01', 980190962)

    所以我的问题是
  • 为什么测试命令会触发插入查询?
  • 我是否需要在夹具文件中写入 100 条用户记录来测试功能?
  • 如何检查 session 登录/注销?
  • 另外,当我从数据库中选择兴趣类型时,我的用户应该登录系统,那么我如何在性能测试中测试这个场景?
  • 这个测试是否在 webrick 上运行,这是我的本地服务器。
  • 最佳答案

    我会尽量按顺序回答你的问题。我相信其他人可能会为每个人分别提供更完整的答案,欢迎他们,但我希望让您开始,以便您知道要查找的内容:

    1. 为什么测试命令会触发插入查询?

    您的插入查询是从您的装置中运行的。我个人使用 FactoryGirl,但逻辑是一样的。当您运行夹具时,它会将该对象插入到您的数据库中。这样你就可以做类似 fixture :user 的事情它将为您创建一个用户,而无需每次都提供所有用户对象的详细信息。如果你的文件中有 5 个灯具,运行类似 fixture :users 的东西将创建 5 个条目(如果有人可以为 Fixtures 确认这一点,我将不胜感激,因为我不使用 Fixtures)。

    2.我需要在fixture文件中写入100条用户记录来测试功能吗?

    不,你没有。您可以使用 Faker gem使用随机名称、字符串等自动创建任意数量的用户(或其他任何内容)。文档是 here .

    3. 如何查看 session 登录/注销?

    创建 session 时,您应该设置 session[user_id]变量,因此您可以对此进行测试。不用说,在注销(即 session 销毁)时,您应该将其设置为 nil .在任何情况下,当通过设置 session[:user_id] 创建 session 时变量,然后您可以使用 request.session_options[:id] 访问 session ID

    4. 另外,当我从 db 中选择兴趣类型时,我的用户应该登录系统,那么我如何在性能测试中测试这个场景?

    在每次测试之前,您应该运行一个“test_log_in”函数来登录您创建的测试用户。然后需要登录用户的测试应该通过。您还应该在不登录测试用户的情况下创建测试,并且他们不应该执行需要登录用户的更改(或不应该显示页面)。

    5. 此测试是否在我的本地服务器 webrick 上运行?

    如果这是您在 Gemfile 中安装的服务器,它将被使用。它适用于您安装的任何服务器。

    您在一个问题中提出了很多问题,因此如果您需要有关答案的更多详细信息,我建议您在不同的帖子中提出每个问题,并提供有关您要查找的内容的更详细说明。这样你的答案就不会像这样宽泛,而是更具体。

    希望我至少给了你一个好的起点。

    关于ruby-on-rails - 如何开始性能测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11048791/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com