2011-10-26 99 views
9

我正在考慮自動化性能測試,與我們現在使用單元測試的方式相同。如何自動執行性能測試並與CI集成?

我知道如何與像JMeter的或編寫自己的代碼觸發應用程序的特定部分的工具運行性能測試。我知道如何使用時間,jvisualvm,nmon或其他來收集有關正在使用的資源的信息。

我想走得更遠,寫性能測試,如果它與某些行(執行時間,內存或CPU消耗...),這將失敗。然後,我會讓我的CI服務器(Jenkins)定期運行測試,以確保性能保持良好。

這是複雜的,因爲性能取決於硬件,而在當前的方式我做到這一點,它需要的結果的人解釋,以確定這是否是滿意與否。

你知道的任何工具或框架(如果可能基於Java),幫助以這種方式自動執行性能測試?如果沒有,你是否有一些好的做法來提供建議?

謝謝。

+0

你想把你的傳感器放在哪裏......服務器或客戶端。無論哪種方式,你必須設定你的具體目標,以實現測試。如果你讓你的測試結果可以像響應時間一樣解釋,你可以很容易地決定他們是否通過或失敗自動化...快樂的腳本 – jpse

+0

兩者,有時兩者同時。例如,我有一個情況,我們有一個Windows客戶端與服務器通信。我想確保它不會在服務器上施加過多的負載。所以這將意味着啓動客戶端的許多實例,並測量服務器端的東西,如CPU消耗,內存... –

回答

2

過去,我用JUnit來做一些性能測試。然而,它並不需要人爲的解釋 - 算法要麼太長,要麼足夠快。某種程度上,這是一個基於時間閾值的合格/不合格測試。

如果您需要自動完成主觀性能測試,恐怕難以構建。

+0

所以我想你測量的代碼段執行所需的時間,並調用「失敗()」,如果它高於一些價值。 內存消耗情況如何? –

+0

這是正確的。我們不需要跟蹤內存消耗。 –

0

您可以使用jmeter with ant在CI服務器上自動運行性能測試。我不確定您是否可以將響應時間限制在超過閾值的範圍內,但我想通過XSL/shell腳本來做這件事應該很簡單。儘管可以手動審查,但您當然可以發佈效果報告。

3

如果你的測試是主觀的,那麼爲了實現它自動化,你需要採取一些「出」的主觀性。我的意思是,設置一些你認爲可接受和不可接受的閾值。看看有沒有辦法拋出一面旗子或詹金斯可以接受的東西。如果你有這些門檻,你有更好的機會獲得你想要的自動化。

+0

我同意這一點。我想這個練習的一部分是要弄清楚我想設置什麼樣的限制。 –

2

詹金斯有一個「性能插件」,它捕獲JMeter和JUnit的結果。在「管理Jenkins」下的「插件」下的「可用插件」中查找

+0

謝謝。它看起來像允許閾值。這對我來說是一個好的開始。 –

1

要自動通過或失敗測試,​​您必須能夠根據布爾值的數量定義通過/失敗標準。這可以是平均響應時間或稍微更高級的統計分析,例如,趨勢函數或標準差。

我不知道任何工具爲客戶端和服務器端都做這種事情。

有限數量的工具可以爲客戶端結果做到這一點。

隨着Jenkins Performance Plugin,你應該能夠通過/失敗構建,使用配置的誤差閾值。這是測試結果的非常基本的自動驗證,以及通過或失敗構建的方式。

,當我遇到類似的挑戰來了,我評估性能的插件,還沒有完全滿意,它提供的功能。這樣我開始在基於Java的Lightning項目上工作。它使您能夠自動分析JMeter結果並自動傳遞軌道,例如,特定交易類型的平均響應時間或標準差。

相關問題