性能測(cè)試是通過自動(dòng)化的測(cè)試工具模擬多種正常、峰值以及異常負(fù)載條件來對(duì)系統(tǒng)的各項(xiàng)性能指標(biāo)進(jìn)行測(cè)試。負(fù)載測(cè)試和壓力測(cè)試都屬于性能測(cè)試,兩者可以結(jié)合進(jìn)行。通過負(fù)載測(cè)試,確定在各種工作負(fù)載下系統(tǒng)的性能,目標(biāo)是測(cè)試當(dāng)負(fù)載逐漸增加時(shí),系統(tǒng)各項(xiàng)性能指標(biāo)的變化情況。壓力測(cè)試是通過確定一個(gè)系統(tǒng)的瓶頸或者不能接收的性能點(diǎn),來獲得系統(tǒng)能提供的大服務(wù)級(jí)別的測(cè)試。
 
  一、概述性能測(cè)試在軟件的質(zhì)量保證中起著重要的作用,它包括的測(cè)試內(nèi)容豐富多樣。中國軟件評(píng)測(cè)中心將性能測(cè)試概括為三個(gè)方面:應(yīng)用在客戶端性能的測(cè)試、應(yīng)用在網(wǎng)絡(luò)上性能的測(cè)試和應(yīng)用在服務(wù)器端性能的測(cè)試。通常情況下,三方面有效、合理的結(jié)合,可以達(dá)到對(duì)系統(tǒng)性能全面的分析和瓶頸的預(yù)測(cè)。
 
  二、應(yīng)用在客戶端性能的測(cè)試應(yīng)用在客戶端性能測(cè)試的目的是考察客戶端應(yīng)用的性能,測(cè)試的入口是客戶端。它主要包括并發(fā)性能測(cè)試、疲勞強(qiáng)度測(cè)試、大數(shù)據(jù)量測(cè)試和速度測(cè)試等,其中并發(fā)性能測(cè)試是重點(diǎn)。
 
  并發(fā)性能測(cè)試是重點(diǎn)并發(fā)性能測(cè)試的過程是一個(gè)負(fù)載測(cè)試和壓力測(cè)試的過程,即逐漸增加負(fù)載,直到系統(tǒng)的瓶頸或者不能接收的性能點(diǎn),通過綜合分析交易執(zhí)行指標(biāo)和資源監(jiān)控指標(biāo)來確定系統(tǒng)并發(fā)性能的過程。負(fù)載測(cè)試(Load Testing)是確定在各種工作負(fù)載下系統(tǒng)的性能,目標(biāo)是測(cè)試當(dāng)負(fù)載逐漸增加時(shí),系統(tǒng)組成部分的相應(yīng)輸出項(xiàng),例如通過量、響應(yīng)時(shí)間、CPU負(fù)載、內(nèi)存使用等來決定系統(tǒng)的性能。負(fù)載測(cè)試是一個(gè)分析軟件應(yīng)用程序和支撐架構(gòu)、模擬真實(shí)環(huán)境的使用,從而來確定能夠接收的性能過程。壓力測(cè)試(Stress Testing)是通過確定一個(gè)系統(tǒng)的瓶頸或者不能接收的性能點(diǎn),來獲得系統(tǒng)能提供的大服務(wù)級(jí)別的測(cè)試。
 
  并發(fā)性能測(cè)試的目的主要體現(xiàn)在三個(gè)方面:以真實(shí)的業(yè)務(wù)為依據(jù),選擇有代表性的、關(guān)鍵的業(yè)務(wù)操作設(shè)計(jì)測(cè)試案例,以評(píng)價(jià)系統(tǒng)的當(dāng)前性能;當(dāng)擴(kuò)展應(yīng)用程序的功能或者新的應(yīng)用程序?qū)⒁徊渴饡r(shí),負(fù)載測(cè)試會(huì)幫助確定系統(tǒng)是否還能夠處理期望的用戶負(fù)載,以預(yù)測(cè)系統(tǒng)的未來性能;通過模擬成百上千個(gè)用戶,重復(fù)執(zhí)行和運(yùn)行測(cè)試,可以確認(rèn)性能瓶頸并優(yōu)化和調(diào)整應(yīng)用,目的在于尋找到瓶頸問題。
 
  當(dāng)一家企業(yè)自己組織力量或委托軟件公司代為開發(fā)一套應(yīng)用系統(tǒng)的時(shí)候,尤其是以后在生產(chǎn)環(huán)境中實(shí)際使用起來,用戶往往會(huì)產(chǎn)生疑問,這套系統(tǒng)能不能承受大量的并發(fā)用戶同時(shí)訪問?這類問題常見于采用聯(lián)機(jī)事務(wù)處理(OLTP)方式數(shù)據(jù)庫應(yīng)用、Web瀏覽和視頻點(diǎn)播等系統(tǒng)。這種問題的解決要借助于科學(xué)的軟件測(cè)試手段和先進(jìn)的測(cè)試工具。
 
  舉例說明:電信計(jì)費(fèi)軟件眾所周知,每月20日左右是市話交費(fèi)的高峰期,全市幾千個(gè)收費(fèi)網(wǎng)點(diǎn)同時(shí)啟動(dòng)。收費(fèi)過程一般分為兩步,首先要根據(jù)用戶提出的電話號(hào)碼來查詢出其當(dāng)月產(chǎn)生費(fèi)用,然后收取現(xiàn)金并將此用戶修改為已交費(fèi)狀態(tài)。一個(gè)用戶看起來簡單的兩個(gè)步驟,但當(dāng)成百上千的終端,同時(shí)執(zhí)行這樣的操作時(shí),情況大不一樣了,如此眾多的交易同時(shí)發(fā)生,對(duì)應(yīng)用程序本身、操作系統(tǒng)、中心數(shù)據(jù)庫服務(wù)器、中間件服務(wù)器、網(wǎng)絡(luò)設(shè)備的承受力都是一個(gè)嚴(yán)峻的考驗(yàn)。決策者不可能在發(fā)生問題后才考慮系統(tǒng)的承受力,預(yù)見軟件的并發(fā)承受力,這是在軟件測(cè)試階段應(yīng)該解決的問題。
 
  目前,大多數(shù)公司企業(yè)需要支持成百上千名用戶,各類應(yīng)用環(huán)境以及由不同供應(yīng)商提供的元件組裝起來的復(fù)雜產(chǎn)品,難以預(yù)知的用戶負(fù)載和愈來愈復(fù)雜的應(yīng)用程序,使公司擔(dān)憂會(huì)發(fā)生投放性能差、用戶遭受反應(yīng)慢、系統(tǒng)失靈等問題。其結(jié)果是導(dǎo)致公司收益的損失。
 
  如何模擬實(shí)際情況呢?找若干臺(tái)電腦和同樣數(shù)目的操作人員在同一時(shí)刻進(jìn)行操作,然后拿秒表記錄下反應(yīng)時(shí)間?這樣的手工作坊式的測(cè)試方法不切實(shí)際,且無法捕捉程序內(nèi)部變化情況,這樣需要壓力測(cè)試工具的輔助。
 
  測(cè)試的基本策略是自動(dòng)負(fù)載測(cè)試,通過在一臺(tái)或幾臺(tái)PC機(jī)上模擬成百或上千的虛擬用戶同時(shí)執(zhí)行業(yè)務(wù)的情景,對(duì)應(yīng)用程序進(jìn)行測(cè)試,同時(shí)記錄下每一事務(wù)處理的時(shí)間、中間件服務(wù)器峰值數(shù)據(jù)、數(shù)據(jù)庫狀態(tài)等。通過可重復(fù)的、真實(shí)的測(cè)試能夠徹底地度量應(yīng)用的可擴(kuò)展性和性能,確定問題所在以及優(yōu)化系統(tǒng)性能。預(yù)先知道了系統(tǒng)的承受力,為終用戶規(guī)劃整個(gè)運(yùn)行環(huán)境的配置提供了有力的依據(jù)。
 
  并發(fā)性能測(cè)試前的準(zhǔn)備工作測(cè)試環(huán)境:配置測(cè)試環(huán)境是測(cè)試實(shí)施的一個(gè)重要階段,測(cè)試環(huán)境的適合與否會(huì)嚴(yán)重影響測(cè)試結(jié)果的真實(shí)性和正確性。測(cè)試環(huán)境包括硬件環(huán)境和軟件環(huán)境,硬件環(huán)境指測(cè)試必需的服務(wù)器、客戶端、網(wǎng)絡(luò)連接設(shè)備以及打印機(jī)/掃描儀等輔助硬件設(shè)備所構(gòu)成的環(huán)境;軟件環(huán)境指被測(cè)軟件運(yùn)行時(shí)的操作系統(tǒng)、數(shù)據(jù)庫及其他應(yīng)用軟件構(gòu)成的環(huán)境。
 
  一個(gè)充分準(zhǔn)備好的測(cè)試環(huán)境有三個(gè)優(yōu)點(diǎn):一個(gè)穩(wěn)定、可重復(fù)的測(cè)試環(huán)境,能夠保證測(cè)試結(jié)果的正確;保證達(dá)到測(cè)試執(zhí)行的技術(shù)需求;保證得到正確的、可重復(fù)的以及易理解的測(cè)試結(jié)果。
 
  測(cè)試工具:并發(fā)性能測(cè)試是在客戶端執(zhí)行的黑盒測(cè)試,一般不采用手工方式,而是利用工具采用自動(dòng)化方式進(jìn)行。目前,成熟的并發(fā)性能測(cè)試工具有很多,選擇的依據(jù)主要是測(cè)試需求和性能價(jià)格比。的并發(fā)性能測(cè)試工具有QALoad、LoadRunner、Benchmark Factory和Webstress等。這些測(cè)試工具都是自動(dòng)化負(fù)載測(cè)試工具,通過可重復(fù)的、真實(shí)的測(cè)試,能夠徹底地度量應(yīng)用的可擴(kuò)展性和性能,可以在整個(gè)開發(fā)生命周期、跨越多種平臺(tái)、自動(dòng)執(zhí)行測(cè)試任務(wù),可以模擬成百上千的用戶并發(fā)執(zhí)行關(guān)鍵業(yè)務(wù)而完成對(duì)應(yīng)用程序的測(cè)試。
 
  測(cè)試數(shù)據(jù):在初始的測(cè)試環(huán)境中需要輸入一些適當(dāng)?shù)臏y(cè)試數(shù)據(jù),目的是識(shí)別數(shù)據(jù)狀態(tài)并且驗(yàn)證用于測(cè)試的測(cè)試案例,在正式的測(cè)試開始以前對(duì)測(cè)試案例進(jìn)行調(diào)試,將正式測(cè)試開始時(shí)的錯(cuò)誤降到低。在測(cè)試進(jìn)行到關(guān)鍵過程環(huán)節(jié)時(shí),非常有必要進(jìn)行數(shù)據(jù)狀態(tài)的備份。制造初始數(shù)據(jù)意味著將合適的數(shù)據(jù)存儲(chǔ)下來,需要的時(shí)候恢復(fù)它,初始數(shù)據(jù)提供了一個(gè)基線用來評(píng)估測(cè)試執(zhí)行的結(jié)果。
 
  在測(cè)試正式執(zhí)行時(shí),還需要準(zhǔn)備業(yè)務(wù)測(cè)試數(shù)據(jù),比如測(cè)試并發(fā)查詢業(yè)務(wù),那么要求對(duì)應(yīng)的數(shù)據(jù)庫和表中有相當(dāng)?shù)臄?shù)據(jù)量以及數(shù)據(jù)的種類應(yīng)能覆蓋全部業(yè)務(wù)。
 
  模擬真實(shí)環(huán)境測(cè)試,有些軟件,特別是面向大眾的商品化軟件,在測(cè)試時(shí)常常需要考察在真實(shí)環(huán)境中的表現(xiàn)。如測(cè)試殺毒軟件的掃描速度時(shí),硬盤上布置的不同類型文件的比例要盡量接近真實(shí)環(huán)境,這樣測(cè)試出來的數(shù)據(jù)才有實(shí)際意義。
 
  并發(fā)性能測(cè)試的種類與指標(biāo)并發(fā)性能測(cè)試的種類取決于并發(fā)性能測(cè)試工具監(jiān)控的對(duì)象,以QALoad自動(dòng)化負(fù)載測(cè)試工具為例。軟件針對(duì)各種測(cè)試目標(biāo)提供了DB2、DCOM、ODBC、ORACLE、NETLoad、Corba、QARun、SAP、SQLServer、Sybase、Telnet、TUXEDO、UNIFACE、WinSock、WWW、Java Script等不同的監(jiān)控對(duì)象,支持Windows和UNIX測(cè)試環(huán)境。
 
  關(guān)鍵的仍然是測(cè)試過程中對(duì)監(jiān)控對(duì)象的靈活應(yīng)用,例如目前三層結(jié)構(gòu)的運(yùn)行模式廣泛使用,對(duì)中間件的并發(fā)性能測(cè)試作為問題被提到議事日程上來,許多系統(tǒng)都采用了國產(chǎn)中間件,選擇Java Script監(jiān)控對(duì)象,手工編寫腳本,可以達(dá)到測(cè)試目的。
 
  采用自動(dòng)化負(fù)載測(cè)試工具執(zhí)行的并發(fā)性能測(cè)試,基本遵循的測(cè)試過程有:測(cè)試需求與測(cè)試內(nèi)容,測(cè)試案例制定,測(cè)試環(huán)境準(zhǔn)備,測(cè)試腳本錄制、編寫與調(diào)試,腳本分配、回放配置與加載策略,測(cè)試執(zhí)行跟蹤,結(jié)果分析與定位問題所在,測(cè)試報(bào)告與測(cè)試評(píng)估。
 
  并發(fā)性能測(cè)試監(jiān)控的對(duì)象不同,測(cè)試的主要指標(biāo)也不相同,主要的測(cè)試指標(biāo)包括交易處理性能指標(biāo)和UNIX資源監(jiān)控。其中,交易處理性能指標(biāo)包括交易結(jié)果、每分鐘交易數(shù)、交易響應(yīng)時(shí)間(Min:小服務(wù)器響應(yīng)時(shí)間;Mean:平均服務(wù)器響應(yīng)時(shí)間;Max:大服務(wù)器響應(yīng)時(shí)間;StdDev:事務(wù)處理服務(wù)器響應(yīng)的偏差,值越大,偏差越大;Median:中值響應(yīng)時(shí)間;90%:90%事務(wù)處理的服務(wù)器響應(yīng)時(shí)間)、虛擬并發(fā)用戶數(shù)。
 
  應(yīng)用實(shí)例:“新華社多媒體數(shù)據(jù)庫V1.0”性能測(cè)試中國軟件評(píng)測(cè)中心(CSTC)根據(jù)新華社技術(shù)局提出的《多媒體數(shù)據(jù)庫(一期)性能測(cè)試需求》和GB/T 17544《軟件包質(zhì)量要求和測(cè)試》的標(biāo)準(zhǔn),使用工業(yè)標(biāo)準(zhǔn)級(jí)負(fù)載測(cè)試工具對(duì)新華社使用的“新華社多媒體數(shù)據(jù)庫V1.0”進(jìn)行了性能測(cè)試。
 
  性能測(cè)試的目的是模擬多用戶并發(fā)訪問新華社多媒體數(shù)據(jù)庫,