压力测试~一套完整的压力测试项目文档
Web壓力架構(gòu)
張占嶺
Web壓力架構(gòu)... 1
一 系統(tǒng)性能測試概述... 1
1.1 性能測試概述... 1
1.2 性能測試的指標(biāo)... 2
1.3 關(guān)鍵點(diǎn)的描述... 2
1.4 性能測試的目的... 2
1.5 測試項(xiàng)目開發(fā)規(guī)范... 2
二 使用VS壓力測試工具進(jìn)行測試... 3
2.1 性能測試(WebTest). 3
2.1.1 概念... 3
2.1.2 如何建立性能測試... 3
2.1.3 使用CS代碼快速建立性能測試... 5
2.1.4 運(yùn)行當(dāng)前性能測試... 6
2.2 負(fù)載(壓力)測試(LoadTest)... 6
2.2.1 概念... 6
2.2.2 目的... 6
2.2.3 術(shù)語... 6
2.2.4 如何建立負(fù)載測試... 7
2.2.5 負(fù)載測試運(yùn)行時(shí)的說明... 10
2.2.6 分析報(bào)告說明... 11
2.3 測試場景描述... 12
2.4 主要業(yè)務(wù)模塊... 12
三 測試數(shù)據(jù)的填充... 13
3.1??????????? Webtest工具填充... 13
3.2??????????? 手動(dòng)編輯業(yè)務(wù)代碼... 13
3.3??????????? 使用RedGate.SQLDataGenerator工具進(jìn)行填充... 13
?
一 系統(tǒng)性能測試概述
1.1 性能測試概述
本次測試是針對(duì)學(xué)習(xí)吧系統(tǒng)在應(yīng)對(duì)密集整轉(zhuǎn)的壓力下業(yè)務(wù)處理能力的測試,檢驗(yàn)系統(tǒng)的吞吐率。本系統(tǒng)的壓力測試主要是針對(duì)主要用戶注冊,登錄,用戶中心,班級(jí)圈、訂單,檢查在應(yīng)用高峰時(shí)期,并發(fā)用戶數(shù)較多的時(shí)候的處理能力等等。
1.2 性能測試的指標(biāo)
1???????? 應(yīng)用系統(tǒng)的負(fù)載能力:即系統(tǒng)所能容忍的最大用戶數(shù)量,也就是在正常的響應(yīng)時(shí)間中,系統(tǒng)能夠支持的最多的客戶端的數(shù)量。
2???????? 應(yīng)用系統(tǒng)的吞吐率:即應(yīng)用系統(tǒng)在單位時(shí)間內(nèi)完成的交易量,也就是在單位時(shí)間內(nèi),應(yīng)用系統(tǒng)針對(duì)不同的負(fù)載壓力,所能完成的交易數(shù)量。
3???????? 系統(tǒng)的響應(yīng)能力:即在各種負(fù)載壓力情況下,系統(tǒng)的響應(yīng)時(shí)間,也就是從客戶端請求發(fā)起,到服務(wù)器端應(yīng)答返回所需要的時(shí)間,包括網(wǎng)絡(luò)傳輸時(shí)間和服務(wù)器處理時(shí)間。
4???????? 應(yīng)用系統(tǒng)的可靠性:即在連續(xù)工作時(shí)間狀態(tài)下,系統(tǒng)能夠正常運(yùn)行的時(shí)間,即在連續(xù)工作時(shí)間段內(nèi)沒有出錯(cuò)信息
1.3 關(guān)鍵點(diǎn)的描述
系統(tǒng)在不同用戶數(shù)量(并發(fā))壓力下的表現(xiàn),即:支持的并發(fā)用戶數(shù)目和并發(fā)用戶發(fā)送頻率,以及在較大壓力下,系統(tǒng)的處理能力以及CPU、數(shù)據(jù)庫I/O和內(nèi)存的使用情況,并找出相應(yīng)的性能瓶頸
1.4 性能測試的目的
壓力測試的目的就是檢驗(yàn)系統(tǒng)的最大吞吐量,檢驗(yàn)現(xiàn)行的業(yè)務(wù)系統(tǒng)在各種壓力交易
量下的運(yùn)行狀況,檢驗(yàn)系統(tǒng)地運(yùn)行瓶頸,獲取系統(tǒng)的處理能力等等。
本次針對(duì)系統(tǒng)所進(jìn)行的壓力測試的測試目的為:
1???????? 給出系統(tǒng)當(dāng)前的性能狀況
2???????? 定位系統(tǒng)性能瓶頸或潛在性能瓶頸
3???????? 總結(jié)一套合理的、可操作的、適合公司現(xiàn)實(shí)情況的性能測試方案,為后續(xù)的性能測試工作提供基本思路
1.5 測試項(xiàng)目開發(fā)規(guī)范
1???????? 在具體項(xiàng)目解決方案中添加測試項(xiàng)目
2???????? 為每個(gè)模塊建立各自的文件夾
3???????? 開發(fā)人員可以采用代碼方法建立性能測試,非專業(yè)人員可以通過錄制建立性能測試
4???????? 測試域名不采用IP地址,可以在HOSTS中配置虛擬域名,這樣方便以后修改
5???????? 數(shù)據(jù)動(dòng)態(tài)參數(shù)采用CSV文件,對(duì)于非加密信息可以采用直接連接數(shù)據(jù)庫的方式得到真實(shí)數(shù)據(jù)
?二 使用VS壓力測試工具進(jìn)行測試
2.1 性能測試(WebTest)
2.1.1 概念
將一些測試的流程進(jìn)行錄制,并保存成一個(gè)webtest 就生成了一個(gè)web性能測試,這些性能測試文件可以添加到負(fù)載測試項(xiàng)目,完成壓力測試。(負(fù)載測試項(xiàng)目由多個(gè)web性能測試組成)
2.1.2 如何建立性能測試
- 需要安裝 Visual Studio 旗艦版
- 創(chuàng)建 Web 性能和負(fù)載測試項(xiàng)目
?
1 創(chuàng)建 Web 性能測試
?
你的 Web 瀏覽器隨即打開。
2 輸入要測試的網(wǎng)站的 URL。
3 如果你希望客戶使用自己的應(yīng)用程序,也請你使用。 例如,搜索項(xiàng)并將其添加到購物車中。記錄器將捕獲 HTTP 請求和響應(yīng)。
4 完成后,請停止記錄。
?
現(xiàn)在,Visual Studio 為你的每個(gè) HTTP 請求的 HTTP 響應(yīng)查找動(dòng)態(tài)參數(shù)。 發(fā)生這種情況時(shí),將顯示進(jìn)度欄。
5 重命名你的測試。 例如,學(xué)民吧首頁.webtest。
?
6 編輯測試屬性以指定性能目標(biāo)。 例如,可以將頁面響應(yīng)時(shí)間目標(biāo)設(shè)置為 1 秒。(這個(gè)值在負(fù)載測試時(shí)會(huì)用到)
?
7 保存測試。
?
2.1.3 使用CS代碼快速建立性能測試
通過向?qū)尚阅軠y試后,也可以將它生成代碼文件,方便我們開發(fā)人員直接編輯它
?
2.1.4 運(yùn)行當(dāng)前性能測試
運(yùn)行性能測試后,它會(huì)模擬你定義的請求,代你完成整個(gè)流程
?
測試結(jié)果在運(yùn)行后被顯示出來
??
?
2.2 負(fù)載(壓力)測試(LoadTest)
2.2.1 概念
負(fù)載測試(Load Testing)是確定在各種工作負(fù)載下系統(tǒng)的性能,目標(biāo)是測試當(dāng)負(fù)載逐漸增加時(shí),系統(tǒng)組成部分的相應(yīng)輸出項(xiàng),例如通過量、響應(yīng)時(shí)間、CPU負(fù)載、內(nèi)存使用等來決定系統(tǒng)的性能。負(fù)載測試是一個(gè)分析軟件應(yīng)用程序和支撐架構(gòu)、模擬真實(shí)環(huán)境的使用,從而確定能夠接收的性能過程。壓力測試(Stress Testing)是通過確定一個(gè)系統(tǒng)的瓶頸或者不能接收的性能點(diǎn),來獲得系統(tǒng)能提供的最大服務(wù)級(jí)別的測試。
2.2.2 目的
通過壓力測試,判斷當(dāng)前應(yīng)用環(huán)境情況下系統(tǒng)的負(fù)載能力,為今后應(yīng)用范圍擴(kuò)大,用戶量上升后,服務(wù)器擴(kuò)容、升級(jí)等提供必要的技術(shù)支撐,及服務(wù)器規(guī)劃等。
2.2.3 術(shù)語
應(yīng)用服務(wù)器
網(wǎng)站/軟件架構(gòu)中的應(yīng)用處理服務(wù)器,提供請求的接收、處理、返回WEB請求
數(shù)據(jù)庫服務(wù)器
網(wǎng)站/軟件架構(gòu)中的數(shù)據(jù)處理服務(wù)器,提供數(shù)據(jù)的存儲(chǔ)和讀取等功能
測試機(jī)
專門用來壓力測試的計(jì)算機(jī),通常為常用的PC機(jī)
系統(tǒng)用戶數(shù)
是指實(shí)際可能使用應(yīng)用系統(tǒng)的總用戶數(shù)
在線用戶數(shù)
是指當(dāng)前登錄應(yīng)用系統(tǒng),處于正在操作或空閑狀態(tài)的用戶數(shù)
并發(fā)用戶數(shù)
是指當(dāng)前登錄應(yīng)用系統(tǒng),并同時(shí)進(jìn)行操作的用戶數(shù)
響應(yīng)時(shí)間
是指服務(wù)器從接收請求到返回請求之間的處理時(shí)間。壓力測試中,忽略網(wǎng)絡(luò)傳輸時(shí)間及測試機(jī)中處理時(shí)間,測試機(jī)上獲得響應(yīng)時(shí)間即作為服務(wù)器的響應(yīng)時(shí)間
?
2.2.4 如何建立負(fù)載測試
1 在 Web 性能和負(fù)載測試項(xiàng)目中創(chuàng)建新的負(fù)載測試。
?
2 負(fù)載測試向?qū)С霈F(xiàn)后,請選擇負(fù)載模式步驟。
將負(fù)載模式更改為分級(jí)負(fù)載。 這將隨著時(shí)間逐漸添加用戶。
?
3 選擇測試組合步驟。
?
添加創(chuàng)建的 Web 性能測試。
?
將 Web 性能測試移至要運(yùn)行的測試列表中。
?
4 完成向?qū)Ш?#xff0c;Web 性能測試就會(huì)添加到負(fù)載測試并顯示在負(fù)載測試編輯器中。
?
2.2.5 負(fù)載測試運(yùn)行時(shí)的說明
在測試運(yùn)行時(shí),你可能會(huì)發(fā)展某個(gè)頁的響應(yīng)時(shí)間超過你設(shè)置的值。
?
添加分析注釋以跟蹤問題。
?
負(fù)載測試完成后,將顯示摘要。
已完成測試的結(jié)果包含性能計(jì)數(shù)器數(shù)據(jù)、閾值沖突和錯(cuò)誤信息。 注意,如果在性能測試中,這個(gè)相應(yīng)時(shí)間沒有設(shè)置(默認(rèn)為0)表示,不去關(guān)心這個(gè)數(shù)據(jù),即使你的響應(yīng)時(shí)間再慢,它不會(huì)出現(xiàn)未通過的情況,如圖
?
?
2.2.6 分析報(bào)告說明
負(fù)載測試摘要
整體結(jié)果
| 最大用戶負(fù)載 | 225 |
| 測試/秒 | 15.9 |
| 未通過的測試 | 6,928 |
| 平均測試時(shí)間(秒) | 12.9 |
| 每秒事務(wù)數(shù) | 0 |
| 平均事務(wù)時(shí)間(秒) | 0 |
| 每秒頁數(shù) | 20.1 |
| 平均頁面時(shí)間(秒) | 10.2 |
| 請求/秒 | 174 |
| 失敗的請求數(shù) | 0 |
| 緩存的請求數(shù)占總請求數(shù)的百分比 | 57.7 |
| 平均響應(yīng)時(shí)間(秒) | 1.20 |
| 平均內(nèi)容長度(字節(jié)) | 1,346 |
關(guān)鍵統(tǒng)計(jì)信息:?最慢的?5?個(gè)頁面
| URL (更多詳細(xì)信息的鏈接) | 95% 頁面時(shí)間(秒) |
| xxx | 19.0 |
| xxx | 8.08 |
| xxx | 0.13 |
關(guān)鍵統(tǒng)計(jì)信息:?最慢的?5?個(gè)測試
| 名稱 | 95% 測試時(shí)間(秒) |
| 用戶注冊 | 29.1 |
測試結(jié)果
測試結(jié)果部分列出了負(fù)載測試中的所有測試和方案。 它將顯示測試名稱、方案、運(yùn)行次數(shù)、失敗次數(shù)以及平均測試時(shí)間。 您可以選擇某個(gè)測試的名稱以打開“測試”表和查看該測試的更多詳細(xì)信息。
| 名稱(性能測試名稱) | 方案(方案名稱) | 測試總數(shù) | 失敗的測試數(shù)(占總數(shù)的百分比) | 平均測試時(shí)間(秒) |
| xxx | 我的班級(jí)圈 | 2,507 | 0?(0) | 21.4 |
| xx | 學(xué)生登陸-增量測試 | 5,346 | 5,325?(99.6) | 10.1 |
| xxx | 學(xué)生登陸-桓定測試 | 1,666 | 1,603?(96.2) | 8.80 |
頁結(jié)果
頁面結(jié)果部分列出了負(fù)載測試中的所有網(wǎng)頁。 將顯示 URL、方案、測試名稱、平均頁面時(shí)間和計(jì)數(shù)。 您可以選擇某個(gè)頁面的 URL 以打開“頁”表和查看該頁面的更多詳細(xì)信息。
頁結(jié)果
| URL (更多詳細(xì)信息的鏈接) | 方案 | 測試 | 平均頁面時(shí)間(秒) | 計(jì)數(shù) |
| xxx | 我的班級(jí)圈 | 我的班級(jí)圈 | 11.5 | 2,507 |
| xxx | 學(xué)生登陸-增量測試 | 登陸 | 10.1 | 5,346 |
| xxx | 我的班級(jí)圈 | 我的班級(jí)圈 | 9.87 | 2,550 |
| xxx | 學(xué)生登陸-桓定測試 | 登陸 | 8.80 | 1,666 |
?
錯(cuò)誤
錯(cuò)誤部分列出了在負(fù)載測試過程中發(fā)生的所有錯(cuò)誤。 將顯示錯(cuò)誤類型和子類型、計(jì)數(shù)和最新消息。 您可以選擇某個(gè)錯(cuò)誤以打開“錯(cuò)誤”表,并查看該錯(cuò)誤的更多詳細(xì)信息。
| 類型 | 子類型 | 計(jì)數(shù) | 最后一條消息 |
| 異常 | SocketException | 2 | 由于連接方在一段時(shí)間后沒有正確答復(fù)或連接的主機(jī)沒有反應(yīng),連接嘗試失敗。 163.177.72.159:80 |
事務(wù)結(jié)果
事務(wù)結(jié)果部分列出了負(fù)載測試中的所有事務(wù)。 將顯示事務(wù)名稱、方案、名稱、響應(yīng)時(shí)間、已用時(shí)間和計(jì)數(shù)。 您可以選擇某個(gè)事務(wù)的名稱以打開“事務(wù)”表,并查看該事務(wù)的更多詳細(xì)信息。
控制器和代理資源
控制器和代理資源部分列出了用于運(yùn)行測試的計(jì)算機(jī)。 將顯示計(jì)算機(jī)名、處理器時(shí)間百分比和可用內(nèi)存。 您可以選擇某個(gè)計(jì)算機(jī)名稱以打開“控制器和代理”圖形,并查看不同時(shí)間的資源使用量。
用戶分布圖
?
測試結(jié)果表格
?
關(guān)系圖表
?
2.3 測試場景描述
測試中,使用逐步加壓的模式,測試運(yùn)行場景安排如下:
每個(gè)場景都包括:
2.4 主要業(yè)務(wù)模塊
三 測試數(shù)據(jù)的填充
3.1????????????? Webtest工具填充
使用webTest對(duì)指定頁面邏輯進(jìn)行錄制,如用戶注冊,建立課程等,之后使用壓力測試工具loadtest進(jìn)行測試同時(shí)測試數(shù)據(jù)即可寫入真實(shí)庫。
3.2????????????? 手動(dòng)編輯業(yè)務(wù)代碼
由開發(fā)人員去針對(duì)指定模塊的業(yè)務(wù)進(jìn)行二次開發(fā),再使用如循環(huán)的方式將數(shù)據(jù)批量注入真實(shí)數(shù)據(jù)庫即可
3.3????????????? 使用RedGate.SQLDataGenerator工具進(jìn)行填充
操作簡單,上手容易!
1 定義生成數(shù)據(jù)的數(shù)量
?
2 預(yù)覽生成的數(shù)據(jù)結(jié)果
?
3 可以對(duì)指定數(shù)據(jù)列進(jìn)行編輯,對(duì)數(shù)值類型的列可以進(jìn)行隨機(jī)生機(jī),增量生成,設(shè)置最大值和最小值等等
?
4???????? 對(duì)字符類型的列,可以進(jìn)行正則表達(dá)式的過濾
?
5???????? 對(duì)日期時(shí)間類型的列,可以設(shè)置起始日期和結(jié)束日期,及隨機(jī)產(chǎn)生和增量產(chǎn)生及時(shí)間段產(chǎn)生等
?
6???????? 一鍵生成數(shù)據(jù),并提供數(shù)據(jù)生成的報(bào)表
?
?
分類:?壓力測試總結(jié)
以上是生活随笔為你收集整理的压力测试~一套完整的压力测试项目文档的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用foobar,ape转mp3
- 下一篇: 条件运算符的嵌套使用