我正在嘗試構建一個模擬器來模擬Web應用程序上的數百個用戶。負載測試使用AJAX的Web應用程序
我通常使用Microsoft Load Simulator和WebTests。 如果網頁有一些複雜性,我使用WebTest插件來正確調整它。
現在,我有一個web頁面,每訪問一次url就會發送大量的ajax請求,而ajax請求則基於瀏覽器中完成的複雜計算。 如果我只是瀏覽網址並記錄所有流量,即使在我製作了一些動態參數之後,我仍然無法正確模擬它,因爲可能會根據服務器發送不同的請求先前的迴應。
如果我將構建一個能夠正確模擬它的webtest,它將需要大量的webtest插件,並且將不可能維護,因爲該網站可能會每隔幾周更改一次。
我想過使用硒,但如果我使用它,我將需要太多的硬件資源來運行數百個用戶。
我想出了使用PhantomJs,SimpleBrowser,HtmlUnit等無頭瀏覽器的想法。 SimpleBrowser和HtmlUnit都不支持執行javascript/AJAX,這使得它們對我無用。
我試過使用PhantomJs,但是由於localStorage對所有用戶都是一樣的,所以它對所有人保持相同的會話,所以我無法模擬不同的用戶。
有沒有人有loadtesting複雜AJAX Web應用程序的任何經驗?
我會永遠愛你,如果你能幫我解決這個問題。
P.S 我通常使用C#編寫代碼,但是我對新語言\技術開放。
(1)HtmlUnit確實支持JavaScript,不是全部。 (2)PhantomJS每個進程有一個緩存。你是說你在一個PhantomJS實例中爲多個用戶運行模擬? (我沒有任何經驗負載測試,雖然。) –
是的,我知道它支持JS,這就是爲什麼添加「/ AJAX」,因爲它不支持AJAX,這是更重要的。 關於PhantomJS,即使我退出了這個過程,它仍然保存下來。 我用硒自動化我的網站與ChromeDriver,它的工作原理 - 同時運行多個用戶,但當我切換到PhantomJs,它似乎仍然保存了緩存(它使我登錄到網站..等。 ) – Pro
這很奇怪。只有localStorage在多個PhantomJS進程之間持久存在,但緩存對於單個進程通常是私有的。這將改變PhantomJS是通過'--disk-cache = true'命令行選項運行的。 –