文章出處

Web壓力架構

張占嶺

Web壓力架構... 1

一 系統性能測試概述... 1

1.1 性能測試概述... 1

1.2 性能測試的指標... 2

1.3 關鍵點的描述... 2

1.4 性能測試的目的... 2

1.5 測試項目開發規范... 2

二 使用VS壓力測試工具進行測試... 3

2.1 性能測試(WebTest). 3

2.1.1 概念... 3

2.1.2 如何建立性能測試... 3

2.1.3 使用CS代碼快速建立性能測試... 5

2.1.4 運行當前性能測試... 6

2.2 負載(壓力)測試(LoadTest)... 6

2.2.1 概念... 6

2.2.2 目的... 6

2.2.3 術語... 6

2.2.4 如何建立負載測試... 7

2.2.5 負載測試運行時的說明... 10

2.2.6 分析報告說明... 11

2.3 測試場景描述... 12

2.4 主要業務模塊... 12

三 測試數據的填充... 13

3.1            Webtest工具填充... 13

3.2            手動編輯業務代碼... 13

3.3            使用RedGate.SQLDataGenerator工具進行填充... 13

 

一 系統性能測試概述

1.1 性能測試概述

本次測試是針對學習吧系統在應對密集整轉的壓力下業務處理能力的測試,檢驗系統的吞吐率。本系統的壓力測試主要是針對主要用戶注冊,登錄,用戶中心,班級圈、訂單,檢查在應用高峰時期,并發用戶數較多的時候的處理能力等等。

1.2 性能測試的指標

1         應用系統的負載能力:即系統所能容忍的最大用戶數量,也就是在正常的響應時間中,系統能夠支持的最多的客戶端的數量。

2         應用系統的吞吐率:即應用系統在單位時間內完成的交易量,也就是在單位時間內,應用系統針對不同的負載壓力,所能完成的交易數量。

3         系統的響應能力:即在各種負載壓力情況下,系統的響應時間,也就是從客戶端請求發起,到服務器端應答返回所需要的時間,包括網絡傳輸時間和服務器處理時間。

4         應用系統的可靠性:即在連續工作時間狀態下,系統能夠正常運行的時間,即在連續工作時間段內沒有出錯信息

1.3 關鍵點的描述

系統在不同用戶數量(并發)壓力下的表現,即:支持的并發用戶數目和并發用戶發送頻率,以及在較大壓力下,系統的處理能力以及CPU、數據庫I/O和內存的使用情況,并找出相應的性能瓶頸

1.4 性能測試的目的

壓力測試的目的就是檢驗系統的最大吞吐量,檢驗現行的業務系統在各種壓力交易

量下的運行狀況,檢驗系統地運行瓶頸,獲取系統的處理能力等等。

本次針對系統所進行的壓力測試的測試目的為:

1         給出系統當前的性能狀況

2         定位系統性能瓶頸或潛在性能瓶頸

3         總結一套合理的、可操作的、適合公司現實情況的性能測試方案,為后續的性能測試工作提供基本思路

1.5 測試項目開發規范

1         在具體項目解決方案中添加測試項目

2         為每個模塊建立各自的文件夾

3         開發人員可以采用代碼方法建立性能測試,非專業人員可以通過錄制建立性能測試

4         測試域名不采用IP地址,可以在HOSTS中配置虛擬域名,這樣方便以后修改

5         數據動態參數采用CSV文件,對于非加密信息可以采用直接連接數據庫的方式得到真實數據

 二 使用VS壓力測試工具進行測試

2.1 性能測試(WebTest)

2.1.1 概念

將一些測試的流程進行錄制,并保存成一個webtest 就生成了一個web性能測試,這些性能測試文件可以添加到負載測試項目,完成壓力測試。(負載測試項目由多個web性能測試組成)

2.1.2 如何建立性能測試

  • 需要安裝 Visual Studio 旗艦版
  • 創建 Web 性能和負載測試項目

 

1 創建 Web 性能測試

 

你的 Web 瀏覽器隨即打開。

2 輸入要測試的網站的 URL。

3 如果你希望客戶使用自己的應用程序,也請你使用。 例如,搜索項并將其添加到購物車中。記錄器將捕獲 HTTP 請求和響應。

4 完成后,請停止記錄。

 

現在,Visual Studio 為你的每個 HTTP 請求的 HTTP 響應查找動態參數。 發生這種情況時,將顯示進度欄。

5 重命名你的測試。 例如,學民吧首頁.webtest。

 

6 編輯測試屬性以指定性能目標。 例如,可以將頁面響應時間目標設置為 1 秒。(這個值在負載測試時會用到)

 

7 保存測試。

 

2.1.3 使用CS代碼快速建立性能測試

通過向導生成性能測試后,也可以將它生成代碼文件,方便我們開發人員直接編輯它

 

2.1.4 運行當前性能測試

運行性能測試后,它會模擬你定義的請求,代你完成整個流程

 

測試結果在運行后被顯示出來

 

 

2.2 負載(壓力)測試(LoadTest)

2.2.1 概念

負載測試(Load Testing)是確定在各種工作負載下系統的性能,目標是測試當負載逐漸增加時,系統組成部分的相應輸出項,例如通過量、響應時間、CPU負載、內存使用等來決定系統的性能。負載測試是一個分析軟件應用程序和支撐架構、模擬真實環境的使用,從而確定能夠接收的性能過程。壓力測試(Stress Testing)是通過確定一個系統的瓶頸或者不能接收的性能點,來獲得系統能提供的最大服務級別的測試。

2.2.2 目的

通過壓力測試,判斷當前應用環境情況下系統的負載能力,為今后應用范圍擴大,用戶量上升后,服務器擴容、升級等提供必要的技術支撐,及服務器規劃等。

2.2.3 術語

應用服務器

網站/軟件架構中的應用處理服務器,提供請求的接收、處理、返回WEB請求

數據庫服務器

網站/軟件架構中的數據處理服務器,提供數據的存儲和讀取等功能

測試機

專門用來壓力測試的計算機,通常為常用的PC機

系統用戶數

是指實際可能使用應用系統的總用戶數

在線用戶數

是指當前登錄應用系統,處于正在操作或空閑狀態的用戶數

并發用戶數

是指當前登錄應用系統,并同時進行操作的用戶數

響應時間

是指服務器從接收請求到返回請求之間的處理時間。壓力測試中,忽略網絡傳輸時間及測試機中處理時間,測試機上獲得響應時間即作為服務器的響應時間

 

2.2.4 如何建立負載測試

1 在 Web 性能和負載測試項目中創建新的負載測試。

 

2 負載測試向導出現后,請選擇負載模式步驟。

將負載模式更改為分級負載。 這將隨著時間逐漸添加用戶。

 

3 選擇測試組合步驟。

 

添加創建的 Web 性能測試。

 

將 Web 性能測試移至要運行的測試列表中。

 

4 完成向導后,Web 性能測試就會添加到負載測試并顯示在負載測試編輯器中。

 

2.2.5 負載測試運行時的說明

在測試運行時,你可能會發展某個頁的響應時間超過你設置的值。

 

添加分析注釋以跟蹤問題。

 

負載測試完成后,將顯示摘要。

已完成測試的結果包含性能計數器數據、閾值沖突和錯誤信息。 注意,如果在性能測試中,這個相應時間沒有設置(默認為0)表示,不去關心這個數據,即使你的響應時間再慢,它不會出現未通過的情況,如圖

 

 

2.2.6 分析報告說明

負載測試摘要

整體結果

最大用戶負載

225

測試/秒

15.9

未通過的測試

6,928

平均測試時間(秒)

12.9

每秒事務數

0

平均事務時間(秒)

0

每秒頁數

20.1

平均頁面時間(秒)

10.2

請求/秒

174

失敗的請求數

0

緩存的請求數占總請求數的百分比

57.7

平均響應時間(秒)

1.20

平均內容長度(字節)

1,346

關鍵統計信息: 最慢的 5 個頁面

URL (更多詳細信息的鏈接)

95% 頁面時間(秒)

xxx

19.0

xxx

8.08

xxx

0.13

關鍵統計信息: 最慢的 5 個測試

名稱

95% 測試時間(秒)

用戶注冊

29.1

測試結果

測試結果部分列出了負載測試中的所有測試和方案。 它將顯示測試名稱、方案、運行次數、失敗次數以及平均測試時間。 您可以選擇某個測試的名稱以打開“測試”表和查看該測試的更多詳細信息。

名稱(性能測試名稱)

方案(方案名稱)

測試總數

失敗的測試數(占總數的百分比)

平均測試時間(秒)

xxx

我的班級圈

2,507

0 (0)

21.4

xx

學生登陸-增量測試

5,346

5,325 (99.6)

10.1

xxx

學生登陸-桓定測試

1,666

1,603 (96.2)

8.80

頁結果

頁面結果部分列出了負載測試中的所有網頁。 將顯示 URL、方案、測試名稱、平均頁面時間和計數。 您可以選擇某個頁面的 URL 以打開“頁”表和查看該頁面的更多詳細信息。

頁結果

URL (更多詳細信息的鏈接)

方案

測試

平均頁面時間(秒)

計數

xxx

我的班級圈

我的班級圈

11.5

2,507

xxx

學生登陸-增量測試

登陸

10.1

5,346

xxx

我的班級圈

我的班級圈

9.87

2,550

xxx

學生登陸-桓定測試

登陸

8.80

1,666

 

錯誤

錯誤部分列出了在負載測試過程中發生的所有錯誤。 將顯示錯誤類型和子類型、計數和最新消息。 您可以選擇某個錯誤以打開“錯誤”表,并查看該錯誤的更多詳細信息。

類型

子類型

計數

最后一條消息

異常

SocketException

2

由于連接方在一段時間后沒有正確答復或連接的主機沒有反應,連接嘗試失敗。 163.177.72.159:80

事務結果

事務結果部分列出了負載測試中的所有事務。 將顯示事務名稱、方案、名稱、響應時間、已用時間和計數。 您可以選擇某個事務的名稱以打開“事務”表,并查看該事務的更多詳細信息。

控制器和代理資源

控制器和代理資源部分列出了用于運行測試的計算機。 將顯示計算機名、處理器時間百分比和可用內存。 您可以選擇某個計算機名稱以打開“控制器和代理”圖形,并查看不同時間的資源使用量。

用戶分布圖

 

測試結果表格

 

關系圖表

 

2.3 測試場景描述

測試中,使用逐步加壓的模式,測試運行場景安排如下:

  1. 每隔2秒增加1個用戶連接,最多增加到100個用戶,查看并記錄運行情況
  2. 每隔2秒增加2個用戶連接,最多增加到200個用戶,查看并記錄運行情況
  3. 每隔2秒增加1個用戶連接,最多增加到300個用戶,查看并記錄運行情況
  4. 每隔3秒增加1個用戶連接,最多增加到400個用戶,查看并記錄運行情況
  5. 常量負載,用戶數固定100個,200個,500個

每個場景都包括:

  1. 用戶登錄
  2. 業務操作
  3. 業務完成
  4. 退出系統,所有用例都按以上場景
  5. 用戶注冊
  6. 用戶登錄
  7. 老師認證
  8. 老師中心
  9. 老師開通班級圈
  10. 老師建立課程
  11. 老師建立作業
  12. 老師建立試題
  13. 學生中心
  14. 學生購買
  15. 學生學習
  16. 學生充值
  17. 班級圈展示頁
  18. 班級圈列表頁
  19. 首頁

2.4 主要業務模塊

三 測試數據的填充

3.1              Webtest工具填充

使用webTest對指定頁面邏輯進行錄制,如用戶注冊,建立課程等,之后使用壓力測試工具loadtest進行測試同時測試數據即可寫入真實庫。

3.2              手動編輯業務代碼

由開發人員去針對指定模塊的業務進行二次開發,再使用如循環的方式將數據批量注入真實數據庫即可

3.3              使用RedGate.SQLDataGenerator工具進行填充

操作簡單,上手容易!

1 定義生成數據的數量

 

2 預覽生成的數據結果

 

3 可以對指定數據列進行編輯,對數值類型的列可以進行隨機生機,增量生成,設置最大值和最小值等等

 

4         對字符類型的列,可以進行正則表達式的過濾

 

5         對日期時間類型的列,可以設置起始日期和結束日期,及隨機產生和增量產生及時間段產生等

 

6         一鍵生成數據,并提供數據生成的報表

 

 


文章列表

全站熱搜
創作者介紹
創作者 大師兄 的頭像
大師兄

IT工程師數位筆記本

大師兄 發表在 痞客邦 留言(0) 人氣()