1. 程式人生 > >軟體效能測試知識點總結

軟體效能測試知識點總結

第一章 軟體效能概述
1.1軟體效能基礎
1.1.1軟體效能的概念
軟體效能是與軟體功能相對應的一種非常重要的非功能特性,表明了軟體系統對時間及時性與資源經濟性的要求。對於一個軟體系統,執行時執行速度越快、佔用系統儲存資源及其他資源越少,則軟體效能越好。
軟體效能與軟體功能是軟體能力的不同體現,以一個人的工作能力來比喻,“功能”是某個人能夠做的事情,“效能”指此人完成這件事情的效率。在功能相同的情況下,效能是衡量事情完成效果的一個重要因素。
1.1.2 不同角色對軟體效能的理解
1)從系統使用者角度看軟體效能
系統使用者指實際使用系統功能的人員。系統使用者看到的軟體效能就是軟體的響應時間,即當用戶在軟體中執行一個功能操作後,到軟體把本次操作的結果完全展現給使用者所消耗的時間。
系統響應時間的影響因素有:功能的粒度、客戶端網路情況、伺服器當前忙閒情況等。從系統使用者角度看,軟體響應時間越短,系統性能越好。
2)從系統運維人員角度看軟體效能
系統運維人員指負責軟體系統執行維護的工作人員。
運維人員在關注系統響應時間的同時,還需要關注系統的資源利用率、系統最大容量、系統訪問量變化趨勢、資料量增長幅度、系統擴充套件能力等,並在此基礎上制定合理的系統維護計劃,以保障系統能夠為使用者提供穩定可靠的持續服務。
運維人員關注的效能問題:
運維人員關心的問題 軟體效能描述
伺服器的資源使用情況合理嗎 資源利用率
應用伺服器和資料庫伺服器的資源使用狀況合理嗎 資源利用率
系統是否能夠實現擴充套件 系統可擴充套件性
系統最多能支援多少使用者的訪問 系統容量
系統最大的業務處理量是多少 系統容量
系統性能可能的瓶頸在哪裡 系統可擴充套件性
更換哪些裝置能夠提高系統性能 系統可擴充套件性
系統能否支援7X24小時的業務訪問 系統穩定性
3)從系統開發人員角度看軟體效能
系統開發人員指系統軟體的設計和開發人員。
開發人員關注的效能問題:
開發人員關心的問題 問題所屬層次
架構設計是否合理 系統架構
資料庫設計是否存在問題 資料庫設計
程式碼是否存在效能方面的問題 程式碼
系統中是否有不合理的記憶體使用方式 程式碼
系統中是否存在不合理的執行緒同步方式 設計與程式碼
系統中是否存在不合理的資源競爭 設計與程式碼
1.1.3 軟體效能的重要性
保障軟體系統的效能具有十分重要的意義,具體體現在以下方面:
(1)系統性能越好,執行速度越快,使用者使用系統的體驗就越好
(2)系統性能越好,使用者的等待時間越少,有利於提高軟體操作效率。
(3)系統性能越好,處理能力越大,單位時間處理業務量越大。
(4)系統性能越好,在大量使用者訪問系統時系統穩定性越好,能夠提供持續服務。
(5)系統性能擴充套件性越好,越容易提升系統的處理能力,以適應更多的訪問需求。
能意味著重大的銷售損失或使用者流失,保持系統系統性能對於軟體系統的運營企業具有非常重要效能的的意義,系統下降可良好的系能對於提高使用者體驗、提升站點聲譽、提升客戶忠誠度、增加系統收入等都具有重要作用。
1.2 常用效能指標
1.2.1 響應時間
響應時間指使用者感受到的軟體系統為其服務所耗費的時間。
一般情況下,需要定義三種情況下的系統的響應時間:
(1)閒時響應時間:指系統中訪問使用者數量較少的情況下,使用者訪問系統的響應時間,也可理解為在不受其他使用者干擾的情況下,系統應該具有的效能表現。
(2)忙時響應時間:指在系統處理正常訪問使用者量的情況下,使用者訪問系統的響應時間。該指標定義了系統在正常訪問狀態下應該具有的響應時間要求,體現了系統在正常訪問狀態下的效能表現。
(3)峰時響應時間:指在系統具有大量併發使用者的情況下,使用者訪問系統的響應時間。該指標定義了系統在承載最大併發使用者情況下應該具有的響應時間要求,體現了系統壓力負荷最大情況下的效能表現,也可以理解為系統最大響應時間。
1.2.2 併發使用者數
併發使用者數指系統能夠同時處理的使用者請求的數目,也可以理解為同時向系統提交請求的使用者數目。註冊使用者數指系統中全部註冊使用者的數量;線上使用者數指在相同時間段內登入了系統,並在系統中進行操作的使用者數量。
平均併發使用者數:指在系統正常訪問量情況下的併發使用者數。
最大併發使用者數:指在峰值訪問情況下的併發使用者數。
如何判斷是否達到峰值訪問情況:
(1)系統響應時間達到了峰值響應時間,即系統的響應時間已經達到了使用者能夠接收的上限。
(2)系統伺服器資源利用率已經達到了上限,即伺服器的CPU利用率、記憶體利用率等指標已經達到了需求規定的上限。
(3)系統請求成功率,即成功請求數/總請求數。當系統壓力過大時,某些使用者請求就會執行失敗,如果失敗率過高,就說明系統已經達到了處理能力的上限,所以可以根據成功率來判斷是否已經達到了最大併發使用者數。
平均併發使用者數僅反映了系統某個時刻的使用者訪問情況,並不反映系統的效能情況;而最大併發使用者數反映了系統的處理能力,往往作為一項重要的效能指標在需求分析時進行定義。
1.2.3 吞吐量
吞吐量指單位時間內系統處理的客戶請求數量,體現系統的整體處理能力。系統吞吐量越大,說明系統性能越好。衡量吞吐量的常用指標內包括:
RPS:請求數/秒,描述系統每秒能夠處理的最大請求數量。
PPS:頁面數/秒,描述系統每秒能夠現實的頁面數量。
PV:頁面數/天,描述系統每天總的Page View數量。
TPS:事務/秒,描述系統每秒能夠處理的事務數量。
QPS:查詢/秒,描述系統每秒能夠處理的查詢請求數量。
1.2.4 伺服器效能計數器
伺服器效能計數器指伺服器或作業系統效能的一些資料指標,在效能測試中發揮著監控和分析的關鍵作用。常用的作業系統效能計數器包括System Load、程序與執行緒數、使用記憶體數、CPU使用率、磁碟I/O、網路I/O等。
資源利用率反映的是在一段時間內伺服器資源平均被佔用的情況,能夠更加直觀的反映系統當前的執行情況,例如CPU利用率如果達到80%,就說明當前CPU基本已經耗盡,系統處於滿載狀態。所以在進行效能需求分析時,往往通過資源利用率指標來定義伺服器效能要求。
第2章 軟體效能測試基礎
2.1 軟體效能測試的概念
定義:狹義的軟體效能測試指為驗證軟體效能指標、評估系統服務能力、推薦系統軟硬體配置、完成系統性能優化等而開展的測試活動;廣義的軟體效能測試是指測試過程中需要相關效能測試方法配合完成的系統測試活動,包括可靠性測試、可恢復性測試、穩定性測試、相容性測試、可擴充套件性測試等。
2.2 軟體效能測試的目標
目標分為4個方面:能力驗證、缺陷發現、能力規劃、效能優化
1、能力驗證分為3個層面:
驗證效能指標與需求的符合情況
軟體系統效能測試最主要的目標:驗證軟體效能是否符合軟體需求文件中的效能指標要求,是否符合預定的設計目標。
獲得系統服務能力
評價系統可靠性
6個質量特性:功能性、可靠性、易用性、效率性、維護性、可移植性
可靠性一般用平均無故障時間(MTTF)來度量,三個子特性:成熟性、容錯性、可恢復性。
2、缺陷發現
缺陷發現效能測試的主要目的是:通過效能測試的手段來發現系統中存在的缺陷,並不需要驗證效能指標是否滿足需求的要求。
3、 能力規劃
特點:1、規劃能力是一種探索新的測試 2、配置規劃可用於瞭解系統的效能以及獲得擴充套件效能的方法。
4、效能優化
效能條有的前提:進行效能瓶頸定位
特點:1、確定基準環境、基準負載和基準效能指標 2、調整系統執行環境和實現方法、執行測試
2.3常用效能測試方法
效能測試名稱 定義說明
基準測試 通過設計科學的測試方法、測試工具和測試系統,實現對一類測試物件的某種效能指標進行定量的和可對比的測試。主要目的是檢驗系統性能與相關標準的符合程度
壓力測試 通過對軟體系統不斷施加壓力,識別系統性能拐點,從而獲得系統提供的最大服務級別的測試活動。主要目的是檢查系統處於壓力情況下應用的表現。
負載測試 通過在被測系統中不斷增加壓力,直到達到效能指標極限要求。主要目的是找到特定環境下系統處理能力的極限。
併發測試 併發測試主要指當測試多使用者併發訪問同一個應用、模組、資料時是否產生隱藏的併發問題,如記憶體洩露、執行緒鎖、資源爭用問題。主要目的並非為了獲得性能指標,而是為了發現併發引起的問題。
疲勞測試 通過讓軟體系統在一定訪問量情況下長時間執行,以檢驗系統性能在多長時間後會出現明顯下降。主要目的是驗證系統執行的可靠性。
資料量測試 通過讓軟體在不同資料量情況下執行,以檢驗系統性能在各種資料量情況下的表現。主要目的是找到支援系統正常工作的資料量極限。
配置測試 通過對被測系統的軟/硬體環境的調整,瞭解各種不同環境對系統性能影響的程度,從而找到系統各項資源的最優分配原則。主要目的是瞭解各種不同因素對系統性能影響的程度,從而判斷出最值得進行的調優操作。
基準測試三大原則:可測量、可重複、可對比
2.4 軟體效能測試範圍
(1)伺服器效能測試
(2)網路效能測試
(3)客戶端效能測試
2.5 效能測試面臨的問題
主要包括:1、沒有明確的效能指標需求
2、不切實際的效能指標要求
3、在開發環境下做效能測試
4、走形式地進行效能測試
5、只測試、不分析
6、只測試、不優化
7、效能測試缺乏方法論的指導
8、缺乏高水平的效能測試人才
第三章 效能測試的組織管理
3.1 軟體效能測試過程模型
非經典的軟體開發模型:瀑布模型、螺旋模型、增量模型、噴泉模型、原型模型、敏捷開發
軟體測試相關模型:V模型、W模型、H模型、X模型
3.1.1 Segue效能測試過程模型

                          Segue效能測試模型

3.1.2 HP效能測試過程模型

                      HP效能測試過程模型

3.1.3 PTGM(Performance Test General Model)效能測試過程模型

3.1.4 APTM(Agile Performance Test Model)敏捷效能測試過程模型

3.1.5 SPTM(System Performance Test Model)系統性能測試過程模型
1.組建測試團隊
1)組織團隊成員
2)安排工作分工
3)進行技能培訓
2.指定測試計劃
1)明確測試範圍
2)制定進度計劃
3)制定成本計劃
4)制定環境計劃
5)測試工具計劃
6)測試風險分析
3.設計測試方案
1)明確性能需求
2)設計效能測試用例
3)設計指令碼錄製方案
4)設計測試場景
5)設計測試結果指標
4.搭建測試環境
1)搭建硬體環境
2)搭建軟體環境
3)搭建測試環境
4)準備資料環境
5.執行效能測試
1)指令碼錄製與開發
2)場景設定
3)測試執行
4)測試監控
6.分析測試結果
1)測試結果分析
2)效能瓶頸分析
3)制定優化方案
4)效能測試總結
效能測試支援環境:評審、溝通、管理、支援

3.2 元件效能測試團隊
1組織團隊成員 2安排工作分工 3進行技能培訓
3.2.1組織團隊成員
角色 職責 技能
測試負責人 1.和使用者等專案干係人互動,確保測試的外部環境
2.制定測試計劃
3.監控測試進度
4.發現和處理測試中的風險 1.計劃執行和監控能力
2.風險意識能力
3.協調溝通能力和靈活變通的能力
效能測試設計人員 1.理解效能需求
2.設計效能測試流程
3.設計效能測試用例
4.選擇VU錄製功能
5.設計測試場景 1.業務把握能力
2.效能需求分析和識別能力
效能測試配置人員 1.部署效能測試環境
2.維護效能測試文件
3.系統版本管理 1.配置平臺使用能力
2.版本管理能力
3.環境部署能力
測試指令碼開發人員 1.實現已設計的效能場景
2.VU指令碼的錄製、開發、除錯
3.確定測試時需要監控的效能指標、效能計數器 1、指令碼編碼和除錯能力
2、理解效能指標和效能計數器
效能測試執行人員 1.使用工具執行測試場景
2.根據監控要求記錄測試結果、記錄效能
3.執行效能測試用例 1.搭建測試環境的能力
2.測試工具使用(執行)的能力
3.效能指標和效能計數器獲取和記錄的能力
效能測試分析人員 1.根據測試結果、效能指標的數值、效能計數器值進行分析
2.根據效能規劃,分析出效能的瓶頸或是給出優化建議 1.掌握效能測試工具的使用方法
2.掌握應用系統性能領域相關知識,理解所採用的架構
3.熟悉常用的效能分析方法
4.具有一定的編碼經驗
支援較色
(系統) 系統支援,協助解決測試工程師無解決的系統問題 處理系統問題的能力和技能。最好有專職的系統管理員擔任這個角色
支援較色
(網路) 網路方面的支援,協助測試工程師解決網路方面的問題,必要時為測試分析角色提供網路方面的分析支援 網路方面的能力和技能,最好由專職的網路管理人員擔任
支援角色
(資料庫) 資料庫方面的支援,必要時為測試分析角色提供資料庫方面的支援 網路方面的能力和技能,最好由專職DBA擔任
支援角色
(中介軟體) 中介軟體平臺方面的支援,在必要時為測試分析較色提供中介軟體方面的支援 深入瞭解中介軟體產品的特點和配置方案,可以由專職的中介軟體專家擔任

第六章  LoadRunner基礎

6.2 LoadRunner 功能結構
6.2.1 LoadRunner 工具組成
LoadRunner 功能非常複雜,核心模組為Virtual User Generator、Controller、Analysis、Load Generator、Proxy五部分。
虛擬使用者指令碼生成器Virtual User Generator,簡稱VuGen,是用來錄製虛擬使用者指令碼的工具支援大量的通訊協議,支援自動化指令碼錄製和二次開發,為系統性能測試提供尋虛擬指令碼支援。
負載生成器Load Generator,簡稱LG,負責將VuGen指令碼複製成大量虛擬使用者對系統生成負載,在效能測試中,用來模擬大量使用者併發訪問系統。
使用者代理Proxy,是客戶端和伺服器的中介,負責協調不同負載機上的虛擬使用者,產生步調一致的虛擬使用者。
測試控制器Controller,負責對整個測試的過程進行設定,制定測試過程中的VU指令碼、併發使用者數、加壓方式、執行週期、監控引數等,同時提供測試過程中的監控功能。
結果分析器Analysis,負責對測試中手機的相關資料進行整理和分析,形成各種圖形表,輔助效能測試分析人員完成測試結果的分析任務。
6.2.1 LoadRunner 工作原理
controller是執行負載測試管理和監控的中心,在這裡定製具體的效能測試方案,執行效能測試,收集測試資料,監控測試指標。
LG是虛擬多使用者併發訪問被測系統的元件,虛擬多使用者併發訪問系統的前提是已經具備了虛擬使用者的指令碼,Vugen是錄製和編輯虛擬使用者指令碼的工具,錄製好的指令碼是不同語言表達的文字檔案,在LG執行時,被解析和執行,指令碼錄製和回訪是在Proxy支援下完成的。
Controller中的實時監控工具將測試過程中收集到的客戶機、伺服器和網路效能指標資料顯示在監控頁面上,便於測試人員對系統表現進行隨時掌握。
Analysis在測試完成後,對測試過程中收集到的各種效能資料進行計算、彙總和處理,生成各種圖示和報告,為系統性能測試結果分析提供支援。
6.3 LR關鍵概念
6.3.1 虛擬使用者
虛擬使用者(virtual user,簡稱Vuser)指效能測試過程中執行VU指令碼以模擬虛擬真實使用者對系統訪問的執行實體。一臺測試機上只能有一個真實使用者執行系統功能,但在loadrunner中,可以執行多個Vuser,很方便模擬多使用者對系統的併發訪問。
6.3.2 VU指令碼
VU指令碼(script)記錄了使用者執行系統功能的操作過程,是Vuser執行的物件。LoadRunner還可以通過引數化、關聯等手段對VU指令碼進行二次開發,提高指令碼的靈活性。
6.3.3 場景
場景(scenario)是一次效能測試執行內容的定義,用來模擬虛擬使用者是如何產生壓力的。場景中包含所有執行的指令碼、虛擬使用者、負載生成器、執行過程配置、實時監控五方面內容。在定義場景時,包含手工場景和麵向目標場景兩種設定方式。
6.3.4 事務
事務(transaction)提供一種端到端的測量方法,用於測量一個業務流程中執行一個或多個步驟所花費的時間。事務可以理解成一個計時單位,LoadRunner在執行過程中,一旦發現事務的開始標誌,就開始計時,一旦發現事物的結束標誌則測試結束計時,這個過程中得到的時間即為一個事務時間。
6.3.5 檢查點
檢查點(check point)提供了一種結果正確性驗證的機制,保證了測試工具對執行通過判斷的準確性。LoadRunner的VuGen元件允許插入文字檢查點和圖形檢查點。
6.3.6 思考時間
思考時間(think time)提供了一種讓VU指令碼暫停執行(等待一段時間)的機制,用來模擬實際使用者在執行不同操作之間的等待時間,以便更加真實的反應使用者訪問系統的行為規律。
6.3.7 集合點
集合點(rendezvous)提供一種使用者併發訪問機制,用來模擬多使用者對系統的併發訪問。在Vuser需要執行指令碼中插入集合點,配置多個Vuser同時執行操作,當某個Vuser到達集合點時,將進行等待,知道參與該集合的全部Vuser都到達或者已經指定數量的Vuser到達後,同時釋放Vuser,讓它們同時開始下一任務的執行,從而模擬多使用者併發訪問系統。

第七章 指令碼的錄製與開發
課題背景:使用 LoadRunner對系統進行併發負載測試時需要依賴虛擬使用者指令碼,虛擬使用者指令碼的錄製需要基於相應的通訊協議。
7.1.最常用的幾種LoadRunner支援通訊協議
1.HTTP協議
超文字傳輸協議(HTTP,H壓迫而text Transfer Protocol)是一種詳細規定了瀏覽器和全球資訊網伺服器之間互相通訊的規則,通過網際網路傳達全球資訊網文件的資料傳送協議。一般在測試B/S架構應用系統時,需要選擇這個協議。
2.FTP協議
FTP是TCP/IP協議組中的協議之一,是英文File Transfer Protocol 的縮寫。該協議是Internet檔案傳送的基礎,它是由一系列規格說明文件組成,目標是提高檔案的共享性,提高非直接使用遠端計算機,使儲存介質對使用者透明和可靠高效的傳送資料。
如果測試的系統是一個FTP伺服器時,可以選擇該協議進行指令碼的錄製。
3.Socket協議
Socket通常也稱為“套接字”,是一般網路軟體的不同實體之間進行通訊的一種協議。我們選擇協議時,只有在其他協議不合適,或實在不清楚選擇何種協議時,才會選擇Socket協議。
4.Web Service 協議
Web Service是一種面向服務體系架構的實現技術,提供了服務描述、釋出、提供、管理等一些協議。Web服務體系使用一系列標準和協議來實現相關的功能。使用WSDL來描述系統,使用UDDI來發布、查詢服務,使用SOAP來呼叫服務。依據Web Service 規範實施的應用之間,無論它們所使用的語言、平臺或內部協議是什麼,都可以相互交換資料。
如果被測試功能是通過Web Service 方式提供,那麼在錄製指令碼的時候可以選擇Web Service 協議。
5.RTE協議
RTE協議是對一些遺留系統進行測試時進行終端模擬時使用的協議。終端模擬就是使用一個計算機終端模仿另一個計算機終端。通常被模仿的終端是較早的型號,以便於使用者最初寫給該終端進行通訊的程式了。
7.2通訊協議的選擇方法
通過詢問開發人員瞭解被測試系統所使用的協議,通常這是最簡單也最直接的方法。
通過概要或詳細設計手冊獲知所使用的協議。
通過協議分析工具捕包分析,然後確定被測試物件所使用的協議。
通過以往測試經驗確定被測試物件所使用的協議,這種方法確定協議有一定的不確定性
使用LoadRunner的協議分析功能,試著錄製一下指令碼,然後這個功能會自動幫助使用者分析應該使用的協議,具有一定的可信度。
LoadRunner 錄製指令碼
1.基本錄製流程

2.錄製選項
在LoadRunner中有兩種指令碼錄製模式:HTML-based script和URL-based script。
.HTML-based script(基於HTML的指令碼)錄製模式指在指令碼中採用HTML頁面形式來表示,為每個使用者操作生成單獨的步驟,這種指令碼更容易理解和維護,一般使用HTML錄製模式。
.URL-based script(基於URL的指令碼)可以錄下通過瀏覽器對伺服器所作的所有請求和資源獲取,它自動將每一步的HTTP資源錄製為URL_steps(通過Web_url函式進行處理)。URL-based 方式錄製的指令碼不太直觀,閱讀不便。
3.選擇錄製方式的參考方案
如果應用是Web應用,首先是HTML-based錄製模式。
如果應用是使用HTTP協議的非Web應用,則首選URL_based 錄製模式。
如果Web應用中使用了Java applet程式,且applet程式與伺服器之間存在通訊,則選用URL-based 錄製模式。
7.4 指令碼開發知識
1.在LoadRunner的指令碼中,通常含有如下三種函式:
(1)VuGen通用函式。一般以lr開頭。
(2)協議相關函式。不同型別的Vuser的函式一般以本協議型別開頭。HTTP的協議函式還包括web_list、web_link等。
(3)語言相關函式。
2.通用的VuGen函式
(1)事務與事務控制函式
如:lr_get_transaction_duration:獲取事務的持續時間(按事務名稱)
lr_get_transaction_think_time:獲取事務思考時間(按事務名稱)
(2)命令列分析函式
如:lr_get_attrib_double:檢索指令碼命令列中使用的double型別變數。
lr_get_attrib_long:檢索命令列中使用的long型別變數。
lr_get_attrib_string:檢索命令列中使用的字串。
(3)系統資訊函式
用來得到VuGen的系統資訊
Lr_user_data_point:記錄使用者定義的資料採集點。
Lr_get_host_name:返回執行Vuser指令碼的主機名。
Lr_get_master_host_name:返回執行Controller的計算機名。
(4)字串函式
如:lr_save_datetime:把當前日期和時間儲存到一個引數中。
lr_save_int:把一個整數儲存為引數。
lr_save_var:把字串的一部分內容儲存為引數。
(5)訊息函式
如:lr_output_message:將訊息傳送到輸出視窗。
lr_message:將訊息傳送到Vuser日誌和輸出視窗。
(6)執行時函式
如:lr_think_time:暫停指令碼的執行,模擬思考時間,思考時間用完後,繼續執行。
lr_rendezvous:在Vuser指令碼中設定集合點。
指令碼註釋
LoadRunner 提供了兩種指令碼註釋方法:(1)單行註釋“//”;(2).塊註釋。“/”,“/”
7.5.檢查點相關設定
1.檢查點分類
(1)文字檢查點
文字檢查點函式是通過Web_reg_find()來實現的,Web_reg_find()是一個註冊型函式,註冊函式一定要寫在請求前,所以該函式一定出現在檢查文字之前。
文字檢查點的兩種形式:
程式碼一:web_reg_find(“Text= ”,LAST);
程式碼二:web_reg_find(“Text= ”,LAST);
If( )
lr_output_message(“”);
else
lr_output_message(“”);
(2)自動檢查點
按F4|ContentCheck或Run-time settings|ContentCheck
(3)圖片檢查點
Web_image_check(“函式標題”,“ALT=圖片說明”,“LAST”)
檢查點的設定技巧:檢查點可以是常量,也可以是變數;檢查點可以是文字、影象檔案,也可以是資料庫記錄等。
2.事務設定
(1).事務的開始函式是lr_start_transaction(),選擇新事務起點,滑鼠右鍵|Insert|start Transaction
(2).事務的開始函式是lr_end_transaction(),選擇新事務結束點,滑鼠右鍵|Insert|End Transaction
(3).事務的狀態
LoadRunner_PASS事務是以PASS狀態通過的,該事務做了正確的事情。
LoadRunner_FAIL事務是以FAIL狀態通過的,該事務做失敗的事情。
LoadRunner_AUTO事務的狀態是由系統判斷的,結果為PASS/FAIL/STOP。
3. 引數化
引數化包含以下兩個任務:(1)在指令碼中用引數取代常量值;(2)設定引數的屬性以及資料來源。
4. 關聯設定。
關聯主要有手動關聯和自動關聯。手動關聯中,關聯函式web_reg_save_param是一個註冊型函式。
5. 集合點設定
集合點通過在指令碼中插入lr_rendezvous()函式實現。集合點要放在開始事務之前。
集合點有三種策略:
當百分之多少的使用者到達集合點時指令碼繼續;
當百分之多少的執行使用者到達集合點時指令碼繼續;
多少個使用者到達集合點時指令碼繼續。
7.6 日誌
對指令碼錄製起關鍵作用的三個日誌
執行日誌(Execution Log):指令碼執行時的輸出都記錄在這個日誌裡
黑色:標準輸出資訊、
紅色:標準錯誤資訊
綠色:用引號括起來的文字字串
藍色:事務資訊(開始、結束、狀態和持續時間)
錄製日誌(Recording Log)
產生日誌(Generation Log)

第八章場景管理
8.1 場景概念
8.1.1場景概念
場景主要是用來模擬真實使用者向被測系統產生壓力,是一種用來模擬大量使用者操作事物技術手段。通過配置和執行場景向伺服器產生負載,驗證系統各項效能指標是否達到使用者要求,而Controller可以幫助使用者對場景的設計、執行及監控進行管理。
1設計場景
設計場景需要設定以下內容:(1)選擇場景型別(2)設定負載生產器(3)配置使用者組(4)配置壓力設定(5)配置執行設定(6)IP虛擬(7)SLA
2場景執行和監控
需要關注你以下內容:(1)執行場景(2)負載生成監控(3)被負載系統監控(4)場景報告
8.2 Controller簡介
Controller中主要有兩個主要的工作檢視:Design檢視和Runs檢視。
手動場景模式
該介面主要包含三個主要的工作區域:
1.Design檢視
(1)Scenario Scripts:場景指令碼設定區域。主要負責對場景執行過程的虛擬使用者指令碼、負載發生器等進行設定。
(2)Scenario Schedule:場景計劃設定區域。主要負責設定測試加壓方式以準確模擬真實使用者的行為。
(3)Service level Agreement:服務水平協議設定區域。設計負載測試場景是,可以為效能指標定義目標值或服務水平協議。
面向目標場景模式
該介面主要包含三個主要的工作區域:
Design檢視
(1)Scenario Scripts:場景指令碼設定區域。主要負責對場景執行過程的虛擬使用者指令碼進行設定。
(2)Scenario Schedule:場景計劃設定區域。主要負責設定場景目標。
(3)Service level Agreement:服務水平協議設定區域。設計負載測試場景是,可以為效能指標定義目標值或服務水平協議。
2.Run檢視
Run檢視是Controller中執行檢視,包含5個主要區域
(1)Scenario Group:場景組區域。位於視窗的左上角,可以檢視場景組內Vuser的狀態。使用該視窗右側的按鈕可以啟動,停止和重置場景,檢視各個Vuser的狀態,通過手動新增更多Vuser可以增加場景執行期間應用程式的負載。
(2)Scenario Status::場景狀態區域.位於視窗的右上角,可以在其中檢視負載測試的概要資訊,包括正在執行的Vuser的數量和每個Vuser操作的狀態。
(3)Avaliable Graph:可用圖區域。位於視窗中間偏左位置 ,列出了LoadRounder能夠提供的效能指標資料。
(4)圖檢視區域:位於視窗中間偏右位置,可以在其中自定義測試過程中顯示的指標的資料。
(5)圖例:位於視窗底部,可以在其中檢視所選效能指標的資料
負載生成器配置
負載發生器(LoadGenerators)是一個可以獨立部署並執行的指令碼的負載引擎。
8.2手工場景設定
在一個測試場景中,需要設定執行的虛擬使用者指令碼,用來模擬真實使用者對被測系統的訪問。
8.2.1 場景指令碼設定
1. 新增指令碼
在建立場景時,可以選擇要執行的指令碼,在場景指令碼區域內,還可以進一步增加新的阿膠本,單擊“新增指令碼”按鈕,彈出新增指令碼的對話方塊,在其中可以設定指令碼所屬的組,設定執行該指令碼的虛擬使用者數,選擇執行該指令碼的負載發生器,選擇要執行指令碼。
2. 刪除組
在場景設定過程中,隨時都可以刪除虛擬指令碼,在指令碼列表中選擇要刪除的指令碼後,點選“刪除組”按鈕,即可將該指令碼刪除
3. 虛擬使用者
在建立手工場景時,如何沒有選擇“use the percentage mode to distribute the vusers among the scripts”選項,則每個指令碼都有固定的虛擬使用者。點選“虛擬使用者”按鈕,可以開啟虛擬使用者對話方塊,在其中可以對虛擬使用者進行管理。
Run:啟動Vuser開始執行。
Gradual Stop:逐步停止。
Stop:立刻停止。
Reset:恢復初始狀態。
Details:檢視指令碼詳情。
Add Vuser:增加虛擬使用者
Refresh:重新整理表格狀態
Help:幫助
Close:關閉視窗
場景使用者狀態
序號 狀態 含義
1 掛起(Pending) Vuser已經準備好。可以進行初始化,正在將指令碼檔案傳輸到負載生產器
2 初始化(Init) Vuser正在初始化,執行對應Run logic下的init部分
3 就緒(Ready) Vuser已經執行初始化操作,可以執行Action了
4 集合點(Rendezvous) Vuser到達集合點,正在等待條件滿足,然後釋放
5 正在執行(Run) Vuser指令碼正在執行
6 完成並通過(Pass) Vuser已經執行結束,並且是成功通過
7 完成並通過(Failed) Vuser已經執行結束,並且是失敗
8 錯誤(Error) Vuser發生了錯誤,要了解錯誤的完整說明,就要檢視單個vuser的詳細狀態日誌
9 (Gragual Exiting)逐步退出 Vuser正在執行退出前的最後一次迭代
10 (Exiting)退出 Vuser已經完成操作,正在退出
11 (Stopped)停止 Vuser被停止
12 (Down)關閉 Vuser處於關閉狀態

第九章測試結果分析
9.1 Analysis基礎
Analysis包含的的主要視窗:會話瀏覽器(session explorer)區域;屬性(properties)區域;圖檢視區域;圖例(legend)。
Analysis的六大類分析圖:虛擬使用者(vusers)圖;errors圖;事務(transactions)圖;web資源(web resources)圖;網頁細分(web page breakdown)圖;系統資源(system resources)圖。
效能測試分析流程:1從summary的事務執行情況入手;
2檢視負載發生器和伺服器的系統資源情況;
3檢視虛擬使用者與事務的詳細執行情況
4檢視錯誤發生情況
5檢視web資源與細分網頁

9.2 監控計數器的內容;
9.2.1 Memory(記憶體):
1. Available mbytes可用記憶體數
2. Page/sec(input/out)為了解析硬頁錯誤,從磁碟取出或寫入的頁數。
3. Page fault處理器每秒處理的錯誤頁
4. Page input/sec為了解決硬錯誤頁,從磁碟上讀取的頁數
5. Page reads/sec為了解決硬錯誤頁,從磁碟上讀取的次數
6. Cache bytes檔案系統快取,預設情況下為50%的可用實體記憶體
7. Pool paged bytes 分頁池中的位元組數
8. Pool nonpaged bytes 非分頁池中的位元組數
9.2.2 Process(程序):
1. Page faults/sec每秒出錯頁面的平均數量
2. Private bytes 此程序所分配的無法與其他程序共享的當前位元組數量
3. Work set 處理執行緒最近使用的記憶體頁
9.2.3 Processor(處理器):
1. %processor time cpu利用率
2. Processor queue length 判斷CPU瓶頸
3. Interrupt/sec 處理器接收並維護硬體中斷的平均值
4. %user time 處理器處於使用者模式的時間百分比
5. %privileged time 處理執行緒執行程式碼所花時間的百分比
6. %interrupte time 處理器在例項間隔期間接受和服務硬體中斷 的時間
7. %DPC time 指在例項間隔期間,處理器用在延緩程式呼叫(DPC)接收和提供服務的時間百分比
8. Queue length 指跟蹤伺服器工作隊列當前長度的計數器,該數值會顯示出處理器瓶頸
9.2.4 Physical disk(磁碟):
1. %disk time 指所選磁碟驅動器忙於讀或寫入請求提供提供服務所用的時間的百分比
2. Average disk queue length 表示磁碟為讀取和寫入請求提供服務所用時間的百分比
3. Average disk read queue length 磁碟讀取請求的平均數
4. Average disk write queue length 磁碟寫入請求的平均數
5. Average disk sec/read 磁碟中讀取資料的平均時間
6. Average disk sec/transer 磁碟中寫入資料的平均時間
9.2.5 Network Interface(網路)
Byte total/sec網路中接收和傳送位元組的速度
9.3 效能測試結果分析
9.3.1 常見圖示解讀
1. Vusers(虛擬使用者數)
Running vusers(負載過程中虛擬使用者執行情況)
Rendezvous(負載過程中集合點下的虛擬使用者數)
2. Errors(錯誤統計)
3. Transactions(事物)
average transaction response time(平均事務響應時間)
transactions per second(TPS 每秒事物數)
transaction summary(事務概要說明)
transaction performance summary(事務效能概要)
transaction response time under load(在使用者負載下事務的響應時間)
transaction response time(事務響應時間的百分比)
transaction response time(distribution)(每個時間段上的事務數)
4. web resources(網頁資源資訊)
hits per second(每秒點選數)
throughput(吞吐量)
HTTP response per second (每秒HTTP響應數)
Conllections(連線數)
Connections per second(每秒連線數)
5. Web page diagnostics(網頁分析)
Web page diagnostics(網頁分析)
Download time(下載時間分析)
Component (over time)(元件隨時間變化)
Download time(over time)(下載時間隨時間變化)
Time to first buffer(over time)(第一次緩衝隨時間變化)
Page download time breakdown(頁面下載時間細分)
DNS resolution time 通過DNS伺服器解析域名所需要的時間
Connection time 連線伺服器所需要的時間,
SSL handshaking time 。SSL加密握手的時間
FTP authentication time:FTP認證時間
First buffer time:連線到伺服器,伺服器返回第一位元組所需要的時間
Receive time 接收資料的時間
Client time 客戶端瀏覽器接收所需要使用的時間
Error time 伺服器返回錯誤響應時間
Page download time breakdown (over time)(頁面下載時間細分隨時間變化)
Time to first buffer breakdown(第一次緩衝時間細分隨時間變化)
Time to first buffer breakdown(over time)(基於時間的頁面請求組成分析)

9.3.2 效能測試結果分析
1.效能概要報告:顯示關於場景執行情況的常規資訊和統計資訊,另外還提供所有相關的SLA資訊。由以下部分組成:
(1)場景的總體統計資訊:在“Analysis Summary”部分,可以看到統計資訊:併發使用者數、吞吐量、平均吞吐量、總點選數、平均點選數等資訊。
(2)執行情況最差的事務(詳見圖5 Worst Transactions)
(3)超出SLA閥值的時間間隔“Scenario Behavior Over Time”部分顯示不同的時間間隔內各事務的執行情況。
(4)事物的整體性:“Transaction Summary”列出每個事物的概要情況。
2.伺服器效能的不穩定性:可以從Session Explorer窗格訪問可用圖。
3.測試結果分析的步驟
Analysis結果分析流程:
a.匯入場景資料;
b.新增待分析的Graphs;
c.進行Graphs組合分析;
d.新增Transaction報告;
e.新增SLA分析報告;
f.生成效能測試報告;
詳細的分析步驟:
(1)研究vuser的行為(Running vusers 圖)
(2)篩選該圖(Running vusers 圖),僅檢視所有vuser同時執行的時間段
(3)關聯圖:將兩個圖關聯在一起比較資料,看到一個數據對另一個數據的影響,稱之為關聯兩個圖。
(4)儲存模板
(5)分析關聯後的圖
第十章 HP LoadRunner高階應用
1.關聯:在腳本回放過程中,客戶端發出請求,通過關聯函式所定義的關聯規則在伺服器所返回的內容中查詢,將得到的相應的值以變數的形式儲存下來,替換錄製時的靜態值,這樣當指令碼再次向伺服器發出請求的時候,可以用此變數的值代替原來錄製好的靜態的值,向伺服器發出正確的請求,這樣東濤獲得伺服器相應內容的方法稱為關聯。
2.VuGen提供了兩種關聯方式幫助找出需要做的關聯:
(1)LoadRunner自帶的自動關聯規則,在錄製指令碼時,會根據這些規則自動建立關聯。
(2)LoadRunner通過對比錄製和回訪時伺服器的響應不同,而提示用使用者是否進行關聯,使用者可以自己建立關聯規則。
3.關聯函式:
(1)軟體作自動關聯的時候才擁有定義左右邊界擷取字串方式時:web_reg_save_param_ex;
(2)使用正則表示式的方式選取字串時:web_reg_save_param_regexp;
4.除錯的方法:斷點設定、單步跟蹤、日誌輸出和對話方塊輸出。
5.引數化:理解引數化
Sequential+each iteration、Sequential+each occurrence、Sequential+once、Random+each iteration、Random+each occurrence、Random+once、Unique+each iteration、Unique+each iteration、Unique+occurrence、Unique+once的不同及用法。