2012-06-15 34 views
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中
  • 創建測試/性能/ login_test.rb
  • 創建夾具/ 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# 

當我運行耙測試:個人資料,我得到了以下結果

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條用戶記錄以測試功能?
  • 如何檢查會話登錄/註銷?
  • 另外,當我從數據庫中選擇興趣類型時,我的用戶應該登錄系統,那麼如何在性能測試中測試這種情況?
  • 此測試是否在webrick上運行,這是我的本地服務器。

回答

1

我會盡量回答你的問題,以盡我所能。我相信其他人會給予更多的完整的答案爲每一個單獨和他們是歡迎的,但我希望讓你開始這樣你就可以知道要尋找什麼:


1.爲什麼測試命令發射插入查詢?

你插入查詢從固定裝置中運行。我個人用戶FactoryGirl,但邏輯是相同的。當你運行你的燈具時,它會將該對象插入到你的數據庫中。這樣,您可以執行諸如fixture :user之類的操作,它將爲您創建一個用戶,而無需每次都提供所有用戶對象的詳細信息。如果你的文件中有5個燈具,運行如fixture :users將創建5個條目(如果有人可以證實這一點對於燈具,我會很感激,因爲我沒有用戶裝置)。


2.我是否需要在夾具文件中寫入100條記錄來測試功能?

不,你不會。您可以使用Faker gem自動創建儘可能多的用戶(或其他任何東西),只要你想用隨機的名字,字符串等文檔是here


3.如何檢查會話登錄/註銷?

當您創建會話時,您應該設置session[user_id]變量,以便您可以對此進行測試。不用說,在註銷(即會話銷燬)時,您應該將其設置爲nil。在任何情況下,當通過設置session[:user_id]變量,創建一個會話,那麼你就可以訪問使用request.session_options[:id]


4.此外,當我從我的分貝用戶選擇感興趣的類型應該在系統中記錄的會話ID,那麼我如何在性能測試中測試這種情況?

每個應該運行「test_log_in」功能,在您創建測試用戶登錄測試之前。然後,需要登錄用戶的測試才能通過。您還應該在不登錄測試用戶的情況下創建測試,並且不應執行需要登錄用戶的更改(或不應顯示頁面)。


5.此測試是否在我的本地服務器webrick上運行?

如果這是你已經安裝在你的Gemfile服務器,它會被使用。它將與您安裝的任何服務器一起工作。


你已經問了很多的一個問題的問題,所以如果你需要的答案更詳細的我建議你問的每個問題在不同的崗位上更詳細的說明,你在找什麼對於。這樣你的答案就不會像這樣廣泛,但更具體。

希望我至少給你一個好地方,從啓動。

+1

是的,你是正確的下一次,我會照顧好這個(約合問一個問題),非常感謝給我一個方向 – chaitanya