2011-12-29 72 views
4

所以我在這裏工作在一個網站上,我想一次運行多個瀏覽器測試。我的意思是它應該同時在ie,firefox和chrome上執行我的煙霧測試並報告每個瀏覽器的結果。我目前只用ie和rpsec和watir-webdriver進行測試,但是想爲其他2個瀏覽器自動化。是否有任何現有的寶石(我還沒有找到),如果不是,什麼是解決這個問題的最好方法?通過不同的瀏覽器與watir-webdriver進行多個併發瀏覽器測試

回答

3

您應該嘗試WatirGrid

它不會爲你做所有的工作,但它會給你一個平臺,一次啓動多個測試。您可以啓動相同的測試3次更改目標瀏覽器,網格將處理它們將被執行的位置。

2

爲什麼除了watir-webdriver之外,什麼都不需要在同一臺機器上運行多個瀏覽器。

ie = Watir::Browser.new :ie 
firefox = Watir::Browser.new :firefox 
chrome = Watir::Browser.new :chrome 
opera = Watir::Browser.new :opera 
+0

它工作正常,如果你想順序運行你的測試.. – 2011-12-29 21:11:00

+0

那麼,「在同一時間」是不可能的。無論如何,「同時」意味着什麼?在同一秒?毫秒?您可以打開所有瀏覽器,在一個瀏覽器中執行某些操作,在另一個瀏覽器中執行相同的操作。當您完成所有瀏覽器時,請在第一瀏覽器,第二個瀏覽器中執行其他操作...重複沖洗。 – 2011-12-30 08:22:12

+0

當人們給出的負載測試標準過於寬鬆時,大聲笑對我來說是一個常見的重構框架。尤其是考慮到大多數網絡連續發送數據,在服務器實際上可以同時獲取多個請求的情況下進行設置,在開始時非常困難切分時間真的很好。但在這種情況下,我想也許他意味着讓腳本並行運行,也許在多個系統或虛擬機上減少構建準備就緒之間的時間,並且可以知道測試結果。 – 2011-12-30 17:39:42

1

如果你想運行,您將需要外部化的瀏覽器類型測試完全相同的測試代碼,無論是作爲一個環境變量,或YAML文件或諸如此類。

Ruby有一些東西可以使處理yaml文件變得非常簡單(我需要在此上寫一篇博客文章),以便您可以在腳本的頂部放置一些調用方法的東西來獲取配置信息,然後設置相應的瀏覽器類型。

在我testconfig.yml YAML文件我有:

global: 
    browser: ie    #possible values: ie, ff, chrome 

注意到我目前沒有測試對歌劇(細分市場太小)或者這將是可能的值的列表。評論只是爲了讓任何可能需要編輯該文件的人都能輕鬆完成。

我有這樣

require 'yaml' 

def read_config 
    config = YAML.load_file('testconfig.yml') 
    $browser_type = config['global']['browser'] 
end 

readconfig.rb文件看起來(部分)定義的read_config方法和在我的測試頂部有這樣

require 'rubygems' 
require 'readconfig' 
require 'watir-webdriver' 
read_config 

$browser = Watir::Browser.new $browser_type.to_sym 

這樣的代碼我可以在每個系統上有一個不同的配置文件(它也設置了許多其他的東西,比如當前密碼(定期更改),使用哪個測試環境以及每個環境的設置,例如測試服務器URL ,數據基本服務器和名稱等。在開發測試時,對配置文件的簡單更改可讓我運行面向給定瀏覽器的所有測試。或者如果我想要並行運行,我可以使用他們自己定製的配置文件設置系統,讓他們從源代碼控制中提取當前腳本,然後針對任何瀏覽器,服務器等在配置文件中配置它們運行它們。

這對於任何已完成的ruby開發者來說可能都是簡單的東西,但它對於我們任何人來說都很新奇,尤其是對於將硬編碼的值從我的腳本中取出並放到一個可以控制和改變它們。

+0

這似乎是一個好主意,我將等待您的博客文章。 – cody 2011-12-30 16:02:59

+0

這可能是一段時間。與此同時,如果這些答案中的任何一個對你很有幫助,你都可能想要接受它。否則讓我們知道我們還能做些什麼來給你更好的答案。 – 2012-01-10 17:07:30

2

如果您有多臺機器或虛擬機可以使用,Jenkins中的答案。我的方法與Chuck的方法類似,但是我不讓Jenkins通過下拉菜單提示這些值.Jenkins很容易設置,並且可以自動將測試作業分配給任何可用的測試機器。

所以,我點擊「Google搜索測試」並選擇「Internet Explorer」...然後我做同樣的事情並選擇不同的瀏覽器。在各種瀏覽器中進行併發測試,具有HTML /電子郵件輸出和出色的日誌歷史記錄。

我也會寫更多關於這個,但我仍然在度假!

這裏是一個配置文件的例子(如果沒有使用Jenkins來啓動它們,這些配置文件將分配默認值)。注意:「|| =」的意思是「如果零,使用這個值,如果不是零,使用當前值」。如果詹金斯還沒有,我只會設定價值。

ENV['BROWSER'] ||= "firefox" 

ENV['ENVIRONMENT'] ||= "qa" 

ENV['LIMIT'] ||= "10" 

ENV['DISTRICT'] ||= "any" 

ENV['TYPE'] ||= "pkg-new" 

# Not necessary, but added for sanity/cleanliness: 
$type = ENV['TYPE'].downcase 
$browser = ENV['BROWSER'].downcase 
$env = ENV['ENVIRONMENT'].downcase 
$district = ENV['DISTRICT'].downcase 

puts "\t** Testing #{$env.upcase} using #{$browser.upcase}... **" 

詹金斯部分是驚人的容易 - 這麼容易,我不認爲它成立。您可以爲腳本創建一個變量,並且無論您將變量命名爲ENV [「VariableName」] - 並立即可用於您的腳本。

所以我有一個名爲「BROWSER」的變量,通過Firefox,IE和Chrome選項的下拉菜單來設置。用戶沒有空間將腳本與自由文本混淆,並且他們可以隨時運行自定義測試。我的開發人員/ PMs /用戶愛我:D。

+0

你如何照顧讓詹金斯告訴腳本使用哪種瀏覽器類型?它是一個命令行參數嗎?或者你有不同的瀏覽器的腳本的多個版本,它運行適當的? – 2011-12-30 17:41:37

+0

當用戶通過菜單選擇一個選項或寫入文本時,Jenkins會自動將其存儲到一個環境變量中,該變量神奇地提供給腳本。所以,我有一個像你的平面文件,如果它是零(如果我們本地運行而不是通過Jenkins運行),則爲該變量賦予一個默認值。我會將剪輯添加到我的答案中。 – 2011-12-30 18:31:34

+1

啊,是的,環境變量的魔力。這是將腳本中的這些價值觀外化出來的另一種好方法,我可能最終轉而採用這種方式。例如,我甚至可以更新readconfig方法來檢查ENV變量,如果找到則使用該變量,否則從配置文件中獲取值。那麼你基本上可以選擇以哪種方式來控制事物,而一個「高手」又是另一個。並感謝您在度假期間花時間與我們分享。 – 2011-12-30 19:10:22