相關(guān)鏈接: 遼寧安全網(wǎng) 遼寧質(zhì)量網(wǎng) 遼寧論文網(wǎng) 遼寧資訊網(wǎng)
摘要:為了確保Web 系統(tǒng)能達(dá)到預(yù)期的性能,開發(fā)過程結(jié)束后,必須對Web系統(tǒng)進(jìn)行性能測試,以確定影響其性能的關(guān)鍵因素。性能測試的目標(biāo)在于通過模擬真實負(fù)載,找出性能瓶頸,進(jìn)行優(yōu)化改進(jìn),從而保證Web 系統(tǒng)在實際運行中提供良好和可靠的性能。筆者通過測試一個網(wǎng)上報名系統(tǒng)實例,來闡述性能測試的過程。
論文關(guān)鍵詞:性能測試,壓力測試,負(fù)載測試
Web系統(tǒng)開發(fā)完畢,并經(jīng)過功能測試確保功能完善后對Web系統(tǒng)必須進(jìn)行系統(tǒng)的性能測試,是的一項驗證系統(tǒng)性能表現(xiàn)的測試。通常衡量Web系統(tǒng)性能的常見指標(biāo)有響應(yīng)時間、吞吐量、點擊量、并發(fā)用戶數(shù)等。具體來講,Web系統(tǒng)性能測試是在一定網(wǎng)絡(luò)環(huán)境和服務(wù)器配置環(huán)境下,使Web系統(tǒng)在某種負(fù)載壓力下運行一段時間;在這段時間內(nèi),不斷抓取性能指標(biāo)數(shù)據(jù);在測試結(jié)束后,對這些指標(biāo)數(shù)據(jù)進(jìn)行分析,得出系統(tǒng)的瓶頸所在[1]。通過測試工具進(jìn)行Web 性能測試,可以有效地測試Web服務(wù)器的運行狀態(tài)和響應(yīng)時間等性能指標(biāo)。
1、Web系統(tǒng)性能測試內(nèi)容
性能測試主要確定在用戶可接受的響應(yīng)時間內(nèi),系統(tǒng)能夠承擔(dān)的并發(fā)用戶的數(shù)量,能夠同時進(jìn)行交易的數(shù)目,以及不同負(fù)載情況下頁面的下載時間與檢測瓶頸可能發(fā)生的位置,以確保將來系統(tǒng)運行的安全性、可靠性與執(zhí)行效率,web性能測試主要包括連接速度測試、負(fù)載測試、壓力測試三個部分 [2]。
1.1 連接速度測試
用戶連接到Web應(yīng)用系統(tǒng)的速度由所在的網(wǎng)絡(luò)環(huán)境來決定,有的是電話撥號,有的是寬帶上網(wǎng)。當(dāng)下載一個程序時,用戶可以等較長的時間,但如果僅僅訪問一個頁面就不會這樣。如果Web系統(tǒng)響應(yīng)時間太長(例如超過5秒鐘),用戶就會因沒有耐心等待而離開。 另外,有些頁面有超時的限制,如果響應(yīng)速度太慢,用戶可能還沒來得及瀏覽內(nèi)容,就需要重新登陸了。而且,連接速度太慢,還可能引起數(shù)據(jù)丟失,使用戶得不到真實的頁面。
1.2 負(fù)載測試
負(fù)載測試應(yīng)安排在Web系統(tǒng)發(fā)布之后,在實際的網(wǎng)絡(luò)環(huán)境中進(jìn)行測試。負(fù)載測試是為了測量Web系統(tǒng)在某一負(fù)載級別上的性能,以保證Web系統(tǒng)在需求范圍內(nèi)能正常工作;負(fù)載級別可以是某個時刻同時訪問Web系統(tǒng)的用戶數(shù)量,也可以是在線數(shù)據(jù)處理的數(shù)量[3]。例如:Web應(yīng)用系統(tǒng)能允許多少個用戶同時在線?如果超過了這個數(shù)量,會出現(xiàn)什么現(xiàn)象?Web應(yīng)用系統(tǒng)能否處理大量用戶對同一個頁面的請求?就一個網(wǎng)上報名系統(tǒng)而言,參加考試的考生總是有限的,而一個Web系統(tǒng)能同時處理的請求數(shù)量將遠(yuǎn)遠(yuǎn)超出這個限度,所以,只有放在Internet上,接受負(fù)載測試,其結(jié)果才是正確可信的。
1.3 壓力測試
壓力測試實際是破壞一個Web應(yīng)用系統(tǒng),測試系統(tǒng)的反映。壓力測試是測試系統(tǒng)的限制和故障恢復(fù)能力,也就是測試Web應(yīng)用系統(tǒng)會不會崩潰,在什么情況下會崩潰。黑客常常提供錯誤的數(shù)據(jù)負(fù)載,直到Web應(yīng)用系統(tǒng)崩潰,接著當(dāng)系統(tǒng)重新啟動時獲得存取權(quán)。
2、測試方案
Web性能測試通過搭建與實際系統(tǒng)相類似的測試環(huán)境,模擬實際用戶的操作在不同的負(fù)載條件下,客戶端與服務(wù)器端的資源使用情況。一個完整的性能測試解決方案必須包括:測試一個組合了各種軟件應(yīng)用程序與硬件平臺的系統(tǒng) ;確定服務(wù)器與任何給定應(yīng)用程序的適應(yīng)性;模擬多個客戶端與單個服務(wù)器應(yīng)用程序之間進(jìn)行交互的環(huán)境;在幾百甚至是上千用戶的負(fù)載情況下測試應(yīng)用程序[4]。
3、測試過程
3.1測試工具
對Web 服務(wù)系統(tǒng)實施性能測試要有相應(yīng)的測試工具。測試工具分為兩類, 一類測試工具用于觀測服務(wù)器端的性能指標(biāo); 另一類測試工具用于客戶端模擬并發(fā)用戶。本文所進(jìn)行的基于負(fù)載的性能測試主要圍繞后一類測試工具來展開討論[4]?捎脕磉M(jìn)行Web壓力測試的工具有很多,比如微軟的Web Application Stress、Linux下的siege、功能全面的Web-CT等等,這些都是非常優(yōu)秀的Web壓力測試工具。下面筆者就以微軟的Web Application Stress Tool(簡稱WAST)為例進(jìn)行一次Web壓力測試。這是由微軟的網(wǎng)站測試人員開發(fā)的專門用來進(jìn)行實際網(wǎng)站壓力測試以一套工具。透過這套功能強大的壓力測試工具,管理人員可以在網(wǎng)站實際上線之前先網(wǎng)站進(jìn)行如同真實環(huán)境下的測試,以找出系統(tǒng)潛在的問題,對系統(tǒng)進(jìn)行進(jìn)一步的調(diào)整、設(shè)置工作。
3.2 設(shè)置并行連接數(shù)
點擊 “Defaults→Settings”打開設(shè)置面板。在Concurrent Connections下進(jìn)行并行連接設(shè)置。Stress level (threads)是最少線程,Stress multiplier是最大線程。這里的線程是指定程序在后臺用多少線程進(jìn)行請求,也就是相當(dāng)于模擬多少個客戶機的連接,一般填寫 200~1000,因為這個線程數(shù)是根據(jù)本機的承受力來設(shè)置的,如果你對自己的機器配置有足夠信心的話,那么可以設(shè)置得更高一些。假設(shè)使用的用戶數(shù)量200人/次;系統(tǒng)的使用期限、在此期限內(nèi)使用用戶的增長情況;預(yù)估的正常同時在線用戶數(shù)20、最大同時在線用戶數(shù)10倍最大同時在線用戶數(shù) 10*20;性能/頁面響應(yīng)指標(biāo)。
3.3 測試結(jié)果:
測試結(jié)束后可以打開測試報告來查看測試結(jié)果了。單擊“View”菜單,選擇“Reports”,在打開的窗口左側(cè)會按時間顯示所有測試報告。
根據(jù)時間選擇本次測試報告,在窗口右側(cè)即可查看具體內(nèi)容如下:DB 測試結(jié)果、 Overview
=============================================================================
Report name: 2012-6-9 13:09:45
Run on: 2012-6-9 下午 01:09:45
Run length: 00:04:00
Web Application Stress Tool Version:1.1.293.1
Notes
--------------------------------------------------------------------------------
Sample Microsoft Web Application Stress Script
Number of test clients: 2
Number of hits: 3985
Requests per Second: 33.21
Socket Statistics
--------------------------------------------------------------------------------
Socket Connects: 3985
Total Bytes Sent (in KB): 778.32
Bytes Sent Rate (in KB/s): 6.49
Total Bytes Recv (in KB): 29004.11
Bytes Recv Rate (in KB/s): 241.70
Socket Errors
--------------------------------------------------------------------------------
Connect: 0
Send: 0
Recv: 0
Timeouts: 0
RDS Results
--------------------------------------------------------------------------------
Successful Queries: 0
Script Settings
=============================================================================
Server: 172.17.1.216
Number of threads: 200
Test length: 00:02:00
Warmup: 00:01:00
Cooldown: 00:01:00
Use Random Delay: Yes
Min Delay Time: 0
Max Delay Time: 500
Follow Redirects: Yes
Max Redirect Depth: 15
Clients used in test
=============================================================================
localhost
Clients not used in test
172.17.1.216
Result Codes
Code Description Count
=============================================================================
200 OK 3985
Page Summary
Page Hits TTFB Avg TTLB Avg Auth Query
=============================================================================
GET /shuoming.html 3985 5722.03 5722.09 No No
3.4 測試結(jié)果分析
數(shù)據(jù)分析:在測試報告中最重要的部分就是“Socket Errors”部分和“Result Codes”部分。其中Socket Errors部分共分為Connect、Send 、Recv和Timeouts。其中Connect表示客戶端不能與服務(wù)器取得連接的次數(shù);Send表示客戶端不能正確發(fā)送數(shù)據(jù)到服務(wù)器的次數(shù);Recv表示客戶端不能正確從服務(wù)器接次的次數(shù);Timeouts表示超時的線程數(shù)目。由此我們可以如果這四個數(shù)值都比較小,甚至為0則說明我們的服務(wù)器是經(jīng)得起考驗的;如果數(shù)值居高不下,甚至接近設(shè)置的并發(fā)數(shù),那么則要好好的檢查你的服務(wù)器了。另外在“Result Codes”部分,如果Code列表下的數(shù)值都為200,那么表示所有請求都經(jīng)服務(wù)器成功返回。
Result Codes
Code Description Count
====================================================================200 OK 36831
NA HTTP result code not given 11
4、總結(jié)
通過Web壓力測試,管理員對Web服務(wù)器的抗壓能力有了大概的把握,從而根據(jù)實際需要可以進(jìn)行服務(wù)器硬件擴(kuò)展,同時也為系統(tǒng)設(shè)置、軟件選擇等提供了依據(jù)。要完整的反映出一個網(wǎng)站在服務(wù)器上的運行情況,需要不斷增減其并發(fā)數(shù),并且進(jìn)行多次測試,才能了解服務(wù)器所能承受的限度,然后才可以在IIS中設(shè)置允許連接的最大數(shù)目,從而保證網(wǎng)站正常運行?偫▉碚f,在Web服務(wù)器正式發(fā)布前進(jìn)行壓力測試是非常必要的。
參考文獻(xiàn):
[1] 禤靜. 網(wǎng)上考試系統(tǒng)性能測試的設(shè)計與實現(xiàn)[J]. 大眾科技,2011(12)
[2] 蘭景英,王永恒.Web系統(tǒng)性能測試研究[J].計算機技術(shù)與發(fā)展,2008(11)
[3] 耿彩鳳,王越.網(wǎng)絡(luò)測試中的Web測試[J]. 遼寧大學(xué)學(xué)報(自然科學(xué)版),2005(3)
[4] 談姝辰,尹軍.基于負(fù)載的Web性能測試研究與應(yīng)用[J].現(xiàn)代電子技術(shù),2007(14)