效能測試是指在一個給定的工作量(workload)下,量測以下的項目,是否滿足原先所設定的目標。
 
    # 受測系統的反應時間(response time)
    # 生產量(throughput)
    # 系統資源使用狀況 (resource utilization)
 
 
 
因此在測試效能測試時,必須要先設定目標。這個目標必須在專案一開始階段,就先設立清楚,否則後面再怎麼測試,投資報酬率是有限的。
 
例如:對於一個 Web based 的應用程式,若是我們設定的目標是每秒要處理1000 requests。接著你便會開始考慮要用什麼 web server 才能處理這樣的負荷,IIS 或是 Apache;接著再考慮用什麼技術來處理 http 的 request;然後再考慮每個 request 資料要多大,是否能在一秒鐘內分析的完…等等。
 
如果你一開始沒有設定目標,然後在後面測試階段才說,要測試是否系統的效能能否達到這個要求。你覺得會達到嗎?如果可以,可能是你目標太低,或是你的工程師太厲害。因為要達到這些目標,之前是需要經過設計的,沒有適當的架構設計,受測系統通常是無法目標。
 
 
 
 
A 受測系統的反應時間 (response time)
 
反應時間是指,處理一個需求(request)所需要的時間。那有 request 就代表一定有提出的人(Client 端)和接受的人(Server 端)。通常我們會用兩種方式來計算反應時間:
 
         # 只計算在Server端處理的時間。也就是指計算request在server被處理的時間,不包含從server傳回來client的時間
         # 計算整個request被處理的時間。也就是從request queue加上Server端處理的時間和從server端回到client端的時間。
 
除了這兩種計算方式外,還有一個地方需要注意,那就是收到資料的時間。有些算法是指 client 收到第一個 byte,就算是處理完畢,也就是所謂的 TTFB (Time To First Byte)。所以另一種就是要收到全部才算是處理完畢,也就是所謂的 TTLB(Time To Last Byte)。
 
之所以會有這麼多計算方式,主要是因為各個受測系統需求不同,因此你當然可以依你的需求,產生出適合你所要的計算方式。但是你需要考量的是,在你的領域是否有業界標準,若是有,遵守可能是比較好的方法,比較不會引起誤解。
 
 
 
 
 
B 生產量(throughput)
 
生產量是指在每單位時間內,系統可以處理多少使用者端所提出的需求(request)。當然啦,這是和需求的內容,以及有多少使用者有關。如過需求內容很大,或者這需求要做的事情很複雜,自然需要更多處理時間。例如瀏覽資料的需求和產生報表的需求,通常來說後者需要較多處理時間,因此每單位時間內所能處理的需求,自然就少很多。
 
 
 
 
C 工作量(workload)
 
工作量是指當你在測試效能時,你所要用來模擬系統所能承擔的負擔。通常它是由三項因素所組成:
 
使用者數量:多少使用者同時會上線,多少使用者會同時和系統互動。
需求提出的速率:平均每單位時間會產生多少需求給系統
需求產生的模式:需求產生的形式或是出現時機。有時候這些需求只有一種資料,有時候它會綜合數種。有時候會上班時間會比較多,非上班時間比較少。
 
所以你的工作量有可能是:
 
1. 200個使用者同時使用系統,30%在下單,20%在看報表,50%在查尋資料
2. 500個使用者連上使用系統,每個使用者平均傳送300kB/ sec給系統,其中20%資料是virus攻擊的資訊,80%是mail spam的資訊,早上所送的資料大約是所有資料的40%,下午所送的資料約佔60%。
 
 
 
 
D 系統資源使用狀況 (resource utilization)
 
這裡我們我要考量的是重要的系統資源被使用的狀況,例如:
 
    # CPU
    # Memory
    # Disk I/O
    # Network I/O
 
至於你要看是每個功能被執行後資源使用狀況,或是以 module、process 為單位看其使用狀況,這裡並沒有限制,全看你的需求來決定。
 
在Windows作業系統中,我們常選擇 performance counter 中的變數,來當作觀察的項目。因為在業界中,它是可接受的標準。這時候一個重要的問題,就是你要了解每個 performance counter 的定義,以及其合理可接受的值愈為何。這樣你才知道他對你的影響是什麼,以及什麼樣的值才叫嚴重。
arrow
arrow
    全站熱搜

    kojenchieh 發表在 痞客邦 留言(0) 人氣()