4

私はレール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を作成しました
  • 作成されたfixtures/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

/performance/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

フィクスチャ/users.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レコードを書き込む必要がありますか?
  • セッションのログイン/ログオフを確認する方法は?
  • また、dbからインタレストタイプを選択する場合、ユーザーはシステムにログインする必要があります。パフォーマンステストでこのシナリオをテストするにはどうすればよいですか?
  • このテストは、私のローカルサーバーであるwebrickで実行されますか?
4

1 に答える 1

1

私はできる限り順番にあなたの質問に答えようとします。他の人がそれぞれに対してより完全な答えを個別に提供する可能性があると確信していますが、歓迎しますが、何を探すべきかを理解できるように、始めたいと思います


。1.コマンド起動挿入クエリをテストする理由

挿入クエリはフィクスチャから実行されます。個人的にはFactoryGirlを使用していますが、ロジックは同じです。フィクスチャを実行すると、そのオブジェクトがデータベースに挿入されます。そうすれば、次のようなfixture :userことができ、毎回すべてのUserオブジェクトの詳細を指定しなくてもユーザーが作成されます。ファイルに5つのフィクスチャがある場合、のようなものを実行fixture :usersすると5つのエントリが作成されます(フィクスチャについて誰かがこれを確認できれば、フィクスチャを使用しないのでありがたいです)。


2.機能をテストするために、フィクスチャファイルにユーザーの100レコードを書き込む必要がありますか?

いいえ、しません。Faker gemを使用すると、ランダムな名前や文字列などを使用して、必要な数のユーザー(またはその他)を自動的に作成できます。ドキュメントはこちらにあります。


3.セッションのログイン/ログオフを確認するにはどうすればよいですか?

セッションを作成するときは、session[user_id]変数を設定して、それをテストできるようにする必要があります。言うまでもなく、ログオフ(つまりセッション破棄)では、に設定する必要がありますnil。いずれの場合も、session[:user_id]変数を設定してセッションを作成すると、4を使用してセッションIDにアクセスできますrequest.session_options[:id]


。また、dbからインタレストタイプを選択すると、ユーザーはシステムにログインする必要があります。パフォーマンステストでこのシナリオをテストするにはどうすればよいですか。 ?

各テストの前に、作成したテストユーザーにログインする「test_log_in」関数を実行する必要があります。次に、ログインユーザーを必要とするテストに合格する必要があります。また、テストユーザーにログインせずにテストを作成し、ログインユーザーを必要とする変更を実行しない(またはページを表示しない)必要があります。


5.このテストは、私のローカルサーバーであるwebrickで実行されますか?

それがGemfileにインストールしたサーバーである場合は、それが使用されます。インストールしたサーバーで動作します。


1つの質問で多くの質問をしたので、回答の詳細が必要な場合は、探しているものの詳細な説明とともに、別の投稿で各質問をすることをお勧めします。そうすれば、あなたの答えはこのように広くはなく、より具体的になります。

私が少なくともあなたに出発点として良い場所を与えたことを願っています。

于 2012-06-16T13:17:07.280 に答える