2009-11-11 88 views
2

我的任務是爲在Weblogic服務器上運行的Java應用程序之一尋找性能測試解決方案。需求是記錄生產請求(包括POST數據的GET和POST),然後在具有生產數據庫副本的性能測試環境中運行這些請求。使用生產數據測試瓶頸的性能測試應用程序

使用的生產要求,而不是測試腳本的原因是:

  1. 它與任何現有的測試腳本的大型應用程序,這將是AA大量的工作,寫劇本,以覆蓋整個應用。
  2. 僅當用戶按特定順序執行多個操作時,纔會顯示一些性能問題。
  3. 要使用實際的用戶與系統的交互進行測試,而不是估計用戶如何與系統進行交互。我們都知道用戶會做我們沒有想到的事情。
  4. 我希望能夠解決性能問題,並在發佈到生產之前針對固定代碼重新運行請求。

我已經看過用JMeters Access Log Sampler與服務器的訪問日誌,不過訪問日誌不包含POST數據和訪問日誌採樣只着眼於請求的URL,因此它不能模擬用戶提交表單數據。

我也看過使用JMeter HTTP代理服務器,但是這可以記錄只有一個用戶的行爲,並要求用戶配置他們的瀏覽器使用代理。 Tsung和The Grinder存在同樣的侷限性。

我已經看過使用Wireshark和TCReplay,但在數據包級別的記錄過多,並且不會在請求級別提供任何有用的報告。

考慮到我需要能夠在發佈到生產之前測試修補程序,是否有更好的方法來分析生產性能?

回答

0

這將是一個難問。我使用Visual Studio Test Edition來加載測試我的應用程序,並且我們只能夠「估計」網站上的用戶活動。

可以查看日誌並收集關於通過您的應用程序的某些路徑可能性的信息。然後,您可以查看生產數據庫,查看任何帖子請求中輸入的可能值。從那裏你將不得不進行負荷測試,以接近您的生產場地的使用模式。

使用任何當前的工具,我認爲不可能記錄和回放實際的用戶interation。

可能會改變您的網絡應用程序,以便記錄和記錄每個請求併發佈會話和日期時間。這個自定義日誌記錄可以用來針對測試網站生成負載測試請求。這將對您的現有網站進行一些嚴重的代碼更改,並可能會對性能產生影響。這就是說,我已經與使用這種級別的日誌記錄的Web應用程序一起工作,並且能夠分析導致錯誤的確切系列的頁面帖子/請求對開發人員來說非常有價值。

總而言之:這是可能的,但我還沒有聽說過任何現成的工具。

+0

感謝您的回答。我認爲最好的選擇是使用Weblogic servlet過濾器。這使我可以訪問ServletRequest對象,然後我可以取出POST數據和其他細節並將它們寫入日誌。然後,我可以使用日誌數據作爲應用程序的輸入。這會對性能產生影響。幸運的是,它只需要運行一小段時間就可以獲得生產交互的樣本。 – JosephL 2009-11-18 22:29:35

0

請老實說看看這個白皮書由動力技術在本頁面.. http://www.impetus.com/plabs/sandstorm.html

+0

白皮書記錄部分 「腳本記錄使用沙塵暴的錄音工具進行處理,將記錄工具是捕獲真正的客戶端應用程序和服務器之間的通信的代理服務器。後在錄製過程中,會生成一個測試腳本,稍後可以將其分配給虛擬用戶。「 這聽起來與JMeter HHTP代理服務器在同一個用戶操作下完全相同。我的要求是從所有用戶捕獲到服務器的流量。 – JosephL 2009-11-16 20:32:56

0

,我不知道你被要求做任務,甚至有可能,更何況是一個好主意。根據應用程序後端的複雜程度,以及如何完善可以重新創建狀態(即:一直到外部SOA服務或時間/時鐘),可能無法使GET和POST請求重現相同行爲。

也就是說,針對生產數據的性能測試總是很棒,但它通常需要應用程序特定的知識來強調所述數據。簡單地重複HTTP GET和POST幾乎肯定不會產生有用的結果。

祝你好運!

0

我建議以下,以獲得生產要求和模擬準確工作量:

1)使用Coremetrics公司:與CoreMetrics提供使用,你可以知道應用程序的使用模式這樣的解決方案。這將有助於提出一個精確的工作量模型。然後可以將此模型轉換爲測試腳本,並針對生產數據庫的蒙版副本執行。這將實時爲您提供有關應用程序性能的準確結果。

2)另一種選擇是使用AOP(Aspect oriented apporach)創建一個小型實用程序,以便它可以跟蹤所有請求和相應的方法跟蹤。這將有助於識別生產使用模式並進而精確模擬工作負載。可以使用AspectJ等AOP框架。這不需要對代碼進行任何更改。儀器可以在飛行中完成。另一個好處是隻能在特定的時間窗口啓用thi cna,然後才能關閉它。

問候, batterywalam