網站建構完成時,通常最容易被人質疑的就是這個網站可以承載的人數到底有多少?
嚴格講起來,這人數其實包含幾個意義 , 結合起來,比較容易模擬出來真實的使用情況
- 同時在線的使用人數
- 使用者在系統上的操作流程
- 使用者在系統上操作的頻率有多高
為了能了解系統環境的效能跟極限,通常我沒會使用壓力測試來針對目標網站進行模擬,以
利找出系統可能的效能瓶頸點,與相對應的極限值是否能夠滿足上線所需。通常,為了讓壓
測的資訊更有參考價值,會先從一個比較低強度的目標開始,將整個操作行為測到順暢,接
著,慢慢開始增加壓測強度,最後,使用與正式系統一樣或相似的架構來做壓測。
- 使用單一電腦去針對單一網站測試
- 多台電腦(Controller + Agents)對於單一網站測試
- 多台電腦(Controller + Agents)對多網站測試(通常正式環境是多台,多Web Site+多Web API)
由於流量到達一定程度,使用者連線可能是同時進行,也因此,可以透過Controller-Agents的架構,由Controller控制Agents同時使用多帳號進行登入及登入後的操作,可以讓整個模擬的情況更像是真實環境
ref : http://msdn.microsoft.com/en-us/library/ms243155.aspx
除了設備強度的提升,更可以針對減少等待思考時間、混合瀏覽器等方式,增加其它的強
度,或者是針對單一服務,如Web Service / DB進行測試,可以了解單一服務及整體架構
的極限值大概到哪邊,針對弱項再來進行調整
這邊特別提到一個實務上遇到的狀況,保哥也曾經提過
ref : http://blog.miniasp.com/post/2012/10/19/How-to-do-Web-Load-Test.aspx
測試的時候,短時間的穩定不代表長時間也一樣穩定,長時間測試可以測出記憶體用量是否
如預期一樣增減,是否有記憶體釋放的問題,長久下來,過多的記憶體使用量會造成系統的
反應出現狀況。
這邊以Visual Studio 2012 ( VS 2010 )建立測試專案來實作這次的壓測
1.首先,先開啟VS 2012 , 開啟一個Web Performance and Load Test Project (C# / VB.Net)
2.專案開啟後,會看到WebAndLoadTestProject這樣的字眼(如果你一開始沒有改命名)
3.仔細看一下專案下方,會有一個WebTest1.webtest,有了這個檔案,我們就可以開始錄製第
一個腳本,模擬實際使用者操作的流程
4.打開WebTest1.webtest,左上方會出現一個錄影按鈕
5.點下去,會第一時間開啟IE,接著,就可以用這個瀏覽器開啟欲測試的網站,如果是第一
次開啟,可能會看到,瀏覽器左邊跳出來的功能列顯示是灰色
6. 這邊灰色的狀況,主要來自於Plug-in沒有開啟,可以試著手動把它開啟
IE / Settings / Internet Options / Programs / Manage add-ons / Toolbars and Extensions
把Microsoft Web Test Recorder 相關字眼的功能開啟
試著關閉IE,重新從VS 2012開啟錄影按鈕
7. 當你啟用後,就可以開起網站,進行操作行為的錄影,左邊會開始跑出很多項目,就是這
段期間所造訪的網站
ref : 參考資料
8. 錄製完畢,只要按下Stop,就可以回到VS 2012
9. 點下左邊的按鈕,按下RunTest,就可以跑一次剛剛所錄製的過程,有時候,會出現一些
Failed的流程,通常是網站自己可能私下跑的流程,不在主流程上大部分是可以忽略的
10.如果點Test Run的時後跳出這個畫面,代表的是可能以經有一個既有的Test Run正在執行
11.可以開啟Test Results畫面,直接把它停掉 ( 預計約3秒在重新再按Test Run就可以重新執行 )
12.如果不關閉就把VS 2012關閉,你可能會看到這個畫面,提醒你,是不是要先關閉再離開