學習性能測試之如何成為性能測試認證專家

1 概覽

縱向劃分3顆子樹:vugen,controller,monitor。優先學習vugen腳本開發以及調試。

橫向劃分為2層:基礎知識以及高級應用。

2 基礎知識

2.1 Loadrunner工具使用

2.1.1 建議學習路徑

Vugen開發腳本(函數使用)->controller場景設置->monitor增加計數器

2.1.2 Loadrunner 認證

2.1.3 Vugen常用增強函數

增加事務:lr_start_transaction、lr_end_transaction

檢查點: web_reg_find

關聯: web_reg_save_param ,web_set_max_html_param_len

日誌: ,, …

選項設置:

http header:

以及更改runtime setting。

2.1.4 Loadrunner 架構圖

概覽圖

詳細架構圖:

2.2 Html/http協議

HTML 4.01 Specification:

對性能測試而言,META http-equiv控制http頭、瀏覽器行為,故最為重要。

http協議:

客戶端發送請求:

伺服器響應:

2.3 C 語言基礎編程

Loadrunner常用的c函數主要集中在內存分配/釋放、字元串操作、文件讀寫。

如: malloc/free

Sprintf/strcmp/strlen/

fopen/fread/fwrite

2.4 Linux 性能分析初步

核心指令:

Top

Sar

Vmstat

Iostat

Sar -n DEV

/proc文件系統

分析經驗性步驟:

首先查看 CPU 使用情況,按照診斷 CPU、內存或磁碟瓶頸的指導進行操作。對於下面的每個步驟,查找一段時間內的趨勢,從中收集系統運行性能較差時的數據。另外,只有將這些數據與系統正常運行時收集的數據進行比較時才能進行準確的診斷。

步驟 1

# sar -u [interval] [iterations] (示例: sar -u 5 30) %idle 是否很低? 這是 CPU 未在運行任何進程的時間百分比。 在一端時間內 %idle 為零可能是 CPU 瓶頸的第一個指示。

不是 -> 系統未發生 CPU 瓶頸。轉至步驟 3。 是 -> 系統可能發生了 CPU、內存或 I/O 瓶頸。轉至步驟 2。

步驟 2

%usr 是否較高? 很多系統正常情況下花費 80% 的 CPU 時間用於用戶, 20% 用於系統。其他系統通常會使用 80% 左右的用戶時間。

不是 -> 系統可能遇到 CPU、內存或 I/O 瓶頸。轉至步驟 3。 是 -> 系統可能由於用戶進程遇到 CPU 瓶頸。轉至部分 3,部分 A, 調整系統的 CPU 瓶頸。

步驟 3

%wio 的值是否大於 15? (不同os有不同的閥值)

是 -> 以後記住這個值。它可能表示磁碟或磁帶瓶頸。轉至步驟 4。 不是 -> 轉至步驟 4。

步驟 4

# sar -d [interval] [iterations] 用於任何磁碟的 %busy 是否都大於 50? (請記住,50% 指示一個大概的 指南,它可能遠遠高於您系統的正常值。在某些系統上,甚至 %busy 值為 20 可能就表示發生了磁碟瓶頸,而其他系統正常情況下可能就為 50% busy。)對於同一個磁碟上,avwait 是否大於 avserv?

不是 -> 很可能不是磁碟瓶頸,轉至步驟 6。 是 -> 此設備上好像發生了 IO 瓶頸。 轉至步驟 5。

步驟 5

系統上存在磁碟瓶頸,發生瓶頸的磁碟上有哪些內容?

原始分區, 文件系統 -> 轉至部分 3,部分 B,調整發生磁碟 IO 瓶頸的系統。 Swap -> 可能是由於內存瓶頸導致的。 轉至步驟 6。

步驟 6

# vmstat [interval] [iterations] 在很長的一端時間內,po 是否總是大於 0? 對於一個 s800 系統 (free * 4k) 是否小於 2 MB, (對於 s700 系統 free * 4k 是否小於 1 MB)? (值 2 MB 和 1 MB 指示大概的指南,真正的 LOTSFREE 值,即系統開始發生 paging 的值是在系統引導時計算的,它是基於系統內存的大小的。)

不是 -> 如果步驟 1 中的 %idle 較低,系統則很可能發生了 CPU 瓶頸。 轉至部分 3,部分 A,調整發生了 CPU 瓶頸的系統。 如果 %idle 不是很低,則可能不是 CPU、磁碟 IO或者內存瓶頸。 請轉至部分 4,其他瓶頸。 是 -> 系統上存在內存瓶頸,轉至部分 3 部分 C,調整發生內存瓶頸的系統。

2.5 Windows 性能分析初步

同windows perfmon。

同樣集中在 cpu,內存,io,網路上。

一般經驗值:

網路

網路利用率閥值沒有統一。 <30% or 80%?

衝突率: <1%

Packets Received Errors < 1%

I/O:

Disk Time % <90%

Avg. Disk Bytes/Read + Avg. Disk Bytes/Write <20K

Avg. Disk sec/Transfer <0.3 sec

隊列長度:Queue Length <2

Avg. Disk sec/Transfer <18 milliseconds

內存

Available Mbytes >25%

Page in+out <20 次

內存泄露以及錯誤:

Pool Nonpaged Bytes : an increase of 10 percent or more from its value at system startup。

Server -> Pool Nonpaged Failures shows the number of times allocations from nonpaged pool have failed - indicates that the computer `s physical memory is too small.應為0

Server -> Pool Paged Failures indicate that either physical memory or a paging file is near capacity. 應為0

Server -> Pool Nonpaged Peak shows the maximum number of bytes in nonpaged pool the server has had in use at any one point. Indicates how much physical memory the computer should have.

處理器

利用率 <85%

每個CPU隊列長度 <2

Context Switches/sec <5000次 或者<5% of total threads

3 高級應用

3.1 性能建模

從business layer、function layer、session layer、customer layer出發,藉助日誌分析工具挖掘系統負載模型、用戶行為模型。

Mercury End User Management正是一個從client視覺出發的業務監控解決方案。

3.2 網路嗅探器

如ethreal,fiddler,以及 http debuger工具,診斷網路問題。

3.3 Loadrunner troubleshooting

各個環節都可能有問題。 (client,通信,伺服器)

經驗性步驟:

診斷vugen腳本、loadrunner場景設置、客戶端硬體資源是否充足

判斷伺服器端各層是否達到資源上限

藉助ethereal等網路嗅探器判斷c/s通信問題

3.4 Linux性能分析與調優

深入了解:

進程/多線程編程

同步機制

Gdb 調試core

內核參數

3.5 Windows性能分析與調優

Windows 其他計數器

3.6 C語言調用dll 擴展測試腳本

Dll編寫格式:

int __stdcall lr_getLinuxIOwait_end()

{

clnt_destroy(clnt);

}

.def文件

EXPORTS

lr_getLinuxIOwait_end @3

loadrunner調用dll函數:

lr_load_dll("my.dll");

3.7 Apache/jboss/weblogic/oracle性能優化

參見各個產品tuning 文檔

httpd.apache.org/docs/2

wiki.jboss.org/wiki/Wik

jboss.org/index.html?

3.8 計算機性能評測研究方向

· 相關理論研究(泊松分布排隊論、MaKov模型、Monte carlo模擬、自相似理論)

· 負載特性Workload Characteristic的研究(Commercial Workload/ Technical Workload)

· 基準程序Benchmark的研究

· 性能指標的研究(全生命周期/高效能/TPO Total Productivity Ownership/SLA Servcie Level Agreement/QoS)

· 模擬器的研究(SimpleScalar/SimOS/SandOS)

· 測試系統的研究(Benchmark Factory/ServerScope/Benchmark Studio/LoadRunner/Forecast toolset)

· 監控系統Perfomance Evaluation(Intel Vtune/ EMon/ TeamQuest Lite/ ServerScope-Monitor/ Grid-View)

· 性能評測與體系結構的結合(Computer architecture analysis using workloads)

3.9 Mercucy performance center

4 性能測試書籍

《Microsoft .NET Web應用程序性能測試》

《軟體性能測試過程詳解與案例剖析》

《WEB性能測試實戰》

《J2EE性能測試》

《 LoadRunner性能測試實戰》


作者:西邊人

公眾號、今日頭條 軟體測試資源站作者

程序爬蟲獲取國內外測試資源分享給自學愛好者

自學聯盟愛好者QQ群:330374464


推薦閱讀:

提車前的秘密,廠家居然對你的愛車做了這種事
魯德——Android之編寫測試用例

TAG:性能测试 | 性能分析 |