2012-07-05 157 views
15

有一天,我向我公司展示了我在黃瓜寫的一些測試(2個功能,5個場景)中的一個測試人員。 然後,他問我,我無法回答的問題:黃瓜/水豚對硒?

這是如何比硒或任何其他功能測試記錄工具更好?

我明白,黃瓜是一種不同的技術,它被放置在不同的測試水平,但我不明白爲什麼我應該編寫和維護黃瓜/水豚測試。

有人可以給我一個合理的解釋,使用黃瓜/水豚,而不僅僅是硒?

回答

14

這個問題是邊界線徵求意見。你的問題實際上告訴我,「什麼工具適合我?」我這樣說是因爲你沒有給出你選擇黃瓜和水豚的原因。我相信要回答測試人員的問題,您需要先回答幾個問題:

1.)您將在這個過程的哪個階段編寫這些測試?

根據您使用的語言,黃瓜可能不是單元測試的正確選擇。但它可以用於任何級別的測試,從單元到集成到最終用戶。

2.)誰來維護你的測試?您?其他開發者?測試人員嗎?業務分析師?項目經理?

必須保留自動化測試,並且知道誰將會這樣做可以幫助您決定某個工具 - 因爲某些人對於某些用戶來說技術性太強。

3.)誰將定義新的測試?

黃瓜意味着在開發,QA和企業所有者之間協同使用。它是利用每個人的知識進入自動化測試過程的完美工具。它需要發展無處不在的語言才能生效。您可以閱讀James Shore's Art of Agile頁面。

一旦你回答了這些問題,你就可以解決測試人員的問題了。但是,在比較錄製工具(如Selenium IDE,HP Quick Test Pro,IBM Rational Functional Tester)與開發工具(nUnit,jUnit,RSpec,Selenium webdriver等)之間有幾點需要牢記。水豚)是他們針對不同的觀衆。他們也有不同的優缺點。

任何人都可以輕鬆使用錄製工具,但他們創建的腳本很脆弱。它們容易破裂並需要更多維護。它們非常適合一次性自動化測試,您需要快速完成並擁有非技術人員。

開發工具有更大的學習曲線,需要編程(或至少腳本)的經驗。腳本通常更健壯,但需要更多的技術知識來維護。當您需要重複性並計劃長時間使用測試時,它們是一個很好的解決方案。我們強烈建議您閱讀The Cucumber Book。這將真正幫助您決定Cucumber是否是您的正確選擇。

+0

夠公平的。但是,這也假定你可以做到這一點。作爲一名QA工程師,我無法控制開發人員的編碼實踐。不過,我可以比單元測試更有效地利用黃瓜來促進變化。 – 2012-07-09 17:29:05

+0

其實,問題是:「我爲什麼要用黃瓜?」 – treaz 2012-07-10 19:10:30

+0

@treaz Cucumber「扮演文檔的角色,一種與利益相關者和需求存儲協作的機制」 – 2012-07-11 10:58:59

7

黃瓜不僅是一個測試工具。除了測試之外,Cucumber功能還承擔文檔的作用,這是一種與利益相關者和需求存儲協作的機制(如果您在declarative style中編寫它們)。

您不必使用帶水豚的黃瓜。你可以直接使用硒。但是,水豚對所有supporting drivers都有相同的高級API。它比Selenium更高級,可以更快地編寫測試。從一個驅動程序切換到另一個時,您不必更改代碼。

使用測試記錄工具構建的測試通常要糟糕得多。 Selenium IDE可能會生成有效的編程代碼,但它不太好看,因此安靜難以維護。

0

Cucumber是用於使業務用戶可讀的測試工具。它由簡單的英語句子組成,使用正則表達式與你的水豚步驟相匹配。

從長遠來看,使用錄音工具對你沒有任何好處。它們是針對初學者的,並沒有那麼強大,所以我建議你直接去編碼。

您可以單獨使用Selenium進行測試,但我建議您繼續使用Cucumber作爲文檔目的,如果您發現它們有用且易於使用。畢竟,Cucumber可以使用Capybara或Selenium網絡驅動程序。

+2

商業用戶真的對閱讀/寫作測試感興趣嗎?根據我的經驗,他們只是想讓事情奏效......錄音工具是爲初學者而設的 - >如果有更容易使用的工具,我會不會有人學習黃瓜/水豚? – treaz 2012-07-10 19:05:24

+0

是的,我同意,即使不是所有的商業用戶,大多數甚至不會查看功能文件,但這是黃瓜的用途。雖然錄音工具對於新手來說很好,但學習如水豚這樣的高級語言非常容易,只需少數幾種方法即可解決,爲什麼不呢? – maru 2012-07-12 12:11:14

0

Selenium IDE適用於測試主要具有視覺元素(鏈接,文本等)的功能。但是,Web應用程序常常具有不會將自身表現爲視覺元素的功能,例如發送電子郵件,排隊作業,與第三方服務進行通信等。例如,您可以測試是否存在「電子郵件已發送」消息提交表格。但它並沒有真正告訴你是否發送了一封電子郵件,因此你並沒有在這裏測試整個功能。