詞語(yǔ)解釋
性能測(cè)試是指在計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)中,通過(guò)測(cè)量系統(tǒng)的性能來(lái)評(píng)估系統(tǒng)的可靠性和可用性的一種測(cè)試方法。它可以幫助網(wǎng)絡(luò)管理者了解網(wǎng)絡(luò)系統(tǒng)的性能,并確定系統(tǒng)的可靠性和可用性。 性能測(cè)試在通信中的應(yīng)用是檢查網(wǎng)絡(luò)系統(tǒng)的性能,以確定網(wǎng)絡(luò)系統(tǒng)的可靠性和可用性。它可以幫助網(wǎng)絡(luò)管理者了解網(wǎng)絡(luò)系統(tǒng)的性能,并確定系統(tǒng)的可靠性和可用性。 性能測(cè)試通常包括測(cè)量網(wǎng)絡(luò)系統(tǒng)的吞吐量,延遲,丟包率,網(wǎng)絡(luò)可靠性,網(wǎng)絡(luò)可用性,網(wǎng)絡(luò)安全性等。 吞吐量測(cè)試是測(cè)量網(wǎng)絡(luò)系統(tǒng)的數(shù)據(jù)傳輸速率,即每秒可以傳輸?shù)臄?shù)據(jù)量。它可以幫助網(wǎng)絡(luò)管理者了解網(wǎng)絡(luò)的數(shù)據(jù)傳輸速率,以確定網(wǎng)絡(luò)的可靠性和可用性。 延遲測(cè)試是測(cè)量網(wǎng)絡(luò)系統(tǒng)的數(shù)據(jù)傳輸延遲,即從發(fā)送端到接收端所需的時(shí)間。它可以幫助網(wǎng)絡(luò)管理者了解網(wǎng)絡(luò)的數(shù)據(jù)傳輸延遲,以確定網(wǎng)絡(luò)的可靠性和可用性。 丟包率測(cè)試是測(cè)量網(wǎng)絡(luò)系統(tǒng)的丟包率,即從發(fā)送端到接收端傳輸?shù)臄?shù)據(jù)中丟失的數(shù)據(jù)包的比例。它可以幫助網(wǎng)絡(luò)管理者了解網(wǎng)絡(luò)的丟包率,以確定網(wǎng)絡(luò)的可靠性和可用性。 網(wǎng)絡(luò)可靠性測(cè)試是測(cè)量網(wǎng)絡(luò)系統(tǒng)的可靠性,即網(wǎng)絡(luò)系統(tǒng)能夠正常運(yùn)行的概率。它可以幫助網(wǎng)絡(luò)管理者了解網(wǎng)絡(luò)的可靠性,以確定網(wǎng)絡(luò)的可靠性和可用性。 網(wǎng)絡(luò)可用性測(cè)試是測(cè)量網(wǎng)絡(luò)系統(tǒng)的可用性,即網(wǎng)絡(luò)系統(tǒng)能夠正常工作的概率。它可以幫助網(wǎng)絡(luò)管理者了解網(wǎng)絡(luò)的可用性,以確定網(wǎng)絡(luò)的可靠性和可用性。 網(wǎng)絡(luò)安全性測(cè)試是測(cè)量網(wǎng)絡(luò)系統(tǒng)的安全性,即網(wǎng)絡(luò)系統(tǒng)能夠抵御外部攻擊的能力。它可以幫助網(wǎng)絡(luò)管理者了解網(wǎng)絡(luò)的安全性,以確定網(wǎng)絡(luò)的可靠性和可用性。 總之,性能測(cè)試是一種測(cè)量網(wǎng)絡(luò)系統(tǒng)性能的測(cè)試方法,可以幫助網(wǎng)絡(luò)管理者了解網(wǎng)絡(luò)系統(tǒng)的性能,并確定系統(tǒng)的可靠性和可用性。 性能測(cè)試是通過(guò)自動(dòng)化的測(cè)試工具模擬多種正常、峰值以及異常負(fù)載條件來(lái)對(duì)系統(tǒng)的各項(xiàng)性能指標(biāo)進(jìn)行測(cè)試。負(fù)載測(cè)試和壓力測(cè)試都屬于性能測(cè)試,兩者可以結(jié)合進(jìn)行。通過(guò)負(fù)載測(cè)試,確定在各種工作負(fù)載下系統(tǒng)的性能,目標(biāo)是測(cè)試當(dāng)負(fù)載逐漸增加時(shí),系統(tǒng)各項(xiàng)性能指標(biāo)的變化情況。壓力測(cè)試是通過(guò)確定一個(gè)系統(tǒng)的瓶頸或者不能接收的性能點(diǎn),來(lái)獲得系統(tǒng)能提供的最大服務(wù)級(jí)別的測(cè)試。 一、概述 性能測(cè)試在軟件的質(zhì)量保證中起著重要的作用,它包括的測(cè)試內(nèi)容豐富多樣。中國(guó)軟件評(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è)試的過(guò)程是一個(gè)負(fù)載測(cè)試和壓力測(cè)試的過(guò)程,即逐漸增加負(fù)載,直到系統(tǒng)的瓶頸或者不能接收的性能點(diǎn),通過(guò)綜合分析交易執(zhí)行指標(biāo)和資源監(jiān)控指標(biāo)來(lái)確定系統(tǒng)并發(fā)性能的過(guò)程。負(fù)載測(cè)試(Load Testing)是確定在各種工作負(fù)載下系統(tǒng)的性能,目標(biāo)是測(cè)試當(dāng)負(fù)載逐漸增加時(shí),系統(tǒng)組成部分的相應(yīng)輸出項(xiàng),例如通過(guò)量、響應(yīng)時(shí)間、CPU負(fù)載、內(nèi)存使用等來(lái)決定系統(tǒng)的性能。負(fù)載測(cè)試是一個(gè)分析軟件應(yīng)用程序和支撐架構(gòu)、模擬真實(shí)環(huán)境的使用,從而來(lái)確定能夠接收的性能過(guò)程。壓力測(cè)試(Stress Testing)是通過(guò)確定一個(gè)系統(tǒng)的瓶頸或者不能接收的性能點(diǎn),來(lái)獲得系統(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)的未來(lái)性能;通過(guò)模擬成百上千個(gè)用戶,重復(fù)執(zhí)行和運(yùn)行測(cè)試,可以確認(rèn)性能瓶頸并優(yōu)化和調(diào)整應(yīng)用,目的在于尋找到瓶頸問(wèn)題。 當(dāng)一家企業(yè)自己組織力量或委托軟件公司代為開(kāi)發(fā)一套應(yīng)用系統(tǒng)的時(shí)候,尤其是以后在生產(chǎn)環(huán)境中實(shí)際使用起來(lái),用戶往往會(huì)產(chǎn)生疑問(wèn),這套系統(tǒng)能不能承受大量的并發(fā)用戶同時(shí)訪問(wèn)? 這類問(wèn)題最常見(jiàn)于采用聯(lián)機(jī)事務(wù)處理(OLTP)方式數(shù)據(jù)庫(kù)應(yīng)用、Web瀏覽和視頻點(diǎn)播等系統(tǒng)。這種問(wèn)題的解決要借助于科學(xué)的軟件測(cè)試手段和先進(jìn)的測(cè)試工具。 舉例說(shuō)明:電信計(jì)費(fèi)軟件 眾所周知,每月20日左右是市話交費(fèi)的高峰期,全市幾千個(gè)收費(fèi)網(wǎng)點(diǎn)同時(shí)啟動(dòng)。收費(fèi)過(guò)程一般分為兩步,首先要根據(jù)用戶提出的電話號(hào)碼來(lái)查詢出其當(dāng)月產(chǎn)生費(fèi)用,然后收取現(xiàn)金并將此用戶修改為已交費(fèi)狀態(tài)。一個(gè)用戶看起來(lái)簡(jiǎn)單的兩個(gè)步驟,但當(dāng)成百上千的終端,同時(shí)執(zhí)行這樣的操作時(shí),情況就大不一樣了,如此眾多的交易同時(shí)發(fā)生,對(duì)應(yīng)用程序本身、操作系統(tǒng)、中心數(shù)據(jù)庫(kù)服務(wù)器、中間件服務(wù)器、網(wǎng)絡(luò)設(shè)備的承受力都是一個(gè)嚴(yán)峻的考驗(yàn)。決策者不可能在發(fā)生問(wèn)題后才考慮系統(tǒng)的承受力, 預(yù)見(jiàn)軟件的并發(fā)承受力, 這是在軟件測(cè)試階段就應(yīng)該解決的問(wèn)題。 目前,大多數(shù)公司企業(yè)需要支持成百上千名用戶,各類應(yīng)用環(huán)境以及由不同供應(yīng)商提供的元件組裝起來(lái)的復(fù)雜產(chǎn)品,難以預(yù)知的用戶負(fù)載和愈來(lái)愈復(fù)雜的應(yīng)用程序,使公司擔(dān)憂會(huì)發(fā)生投放性能差、用戶遭受反應(yīng)慢、系統(tǒng)失靈等問(wèn)題。其結(jié)果就是導(dǎo)致公司收益的損失。 如何模擬實(shí)際情況呢? 找若干臺(tái)電腦和同樣數(shù)目的操作人員在同一時(shí)刻進(jìn)行操作,然后拿秒表記錄下反應(yīng)時(shí)間? 這樣的手工作坊式的測(cè)試方法不切實(shí)際,且無(wú)法捕捉程序內(nèi)部變化情況,這樣就需要壓力測(cè)試工具的輔助。 測(cè)試的基本策略是自動(dòng)負(fù)載測(cè)試,通過(guò)在一臺(tái)或幾臺(tái)PC機(jī)上模擬成百或上千的虛擬用戶同時(shí)執(zhí)行業(yè)務(wù)的情景,對(duì)應(yīng)用程序進(jìn)行測(cè)試,同時(shí)記錄下每一事務(wù)處理的時(shí)間、中間件服務(wù)器峰值數(shù)據(jù)、數(shù)據(jù)庫(kù)狀態(tài)等。通過(guò)可重復(fù)的、真實(shí)的測(cè)試能夠徹底地度量應(yīng)用的可擴(kuò)展性和性能,確定問(wèn)題所在以及優(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ù)庫(kù)及其他應(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è)試工具,通過(guò)可重復(fù)的、真實(shí)的測(cè)試,能夠徹底地度量應(yīng)用的可擴(kuò)展性和性能,可以在整個(gè)開(kāi)發(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è)試開(kāi)始以前對(duì)測(cè)試案例進(jìn)行調(diào)試,將正式測(cè)試開(kāi)始時(shí)的錯(cuò)誤降到最低。在測(cè)試進(jìn)行到關(guān)鍵過(guò)程環(huán)節(jié)時(shí),非常有必要進(jìn)行數(shù)據(jù)狀態(tài)的備份。制造初始數(shù)據(jù)意味著將合適的數(shù)據(jù)存儲(chǔ)下來(lái),需要的時(shí)候恢復(fù)它,初始數(shù)據(jù)提供了一個(gè)基線用來(lái)評(píng)估測(cè)試執(zhí)行的結(jié)果。 在測(cè)試正式執(zhí)行時(shí),還需要準(zhǔn)備業(yè)務(wù)測(cè)試數(shù)據(jù),比如測(cè)試并發(fā)查詢業(yè)務(wù),那么要求對(duì)應(yīng)的數(shù)據(jù)庫(kù)和表中有相當(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è)試出來(lái)的數(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 s cript等不同的監(jiān)控對(duì)象,支持Windows和UNIX測(cè)試環(huán)境。 最關(guān)鍵的仍然是測(cè)試過(guò)程中對(duì)監(jiān)控對(duì)象的靈活應(yīng)用,例如目前三層結(jié)構(gòu)的運(yùn)行模式廣泛使用,對(duì)中間件的并發(fā)性能測(cè)試作為問(wèn)題被提到議事日程上來(lái),許多系統(tǒng)都采用了國(guó)產(chǎn)中間件,選擇Java s cript監(jiān)控對(duì)象,手工編寫腳本,可以達(dá)到測(cè)試目的。 采用自動(dòng)化負(fù)載測(cè)試工具執(zhí)行的并發(fā)性能測(cè)試,基本遵循的測(cè)試過(guò)程有:測(cè)試需求與測(cè)試內(nèi)容,測(cè)試案例制定,測(cè)試環(huán)境準(zhǔn)備,測(cè)試腳本錄制、編寫與調(diào)試,腳本分配、回放配置與加載策略,測(cè)試執(zhí)行跟蹤,結(jié)果分析與定位問(wèn)題所在,測(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ù)庫(kù) V1.0”性能測(cè)試 中國(guó)軟件評(píng)測(cè)中心(CSTC)根據(jù)新華社技術(shù)局提出的《多媒體數(shù)據(jù)庫(kù)(一期)性能測(cè)試需求》和GB/T 17544《軟件包質(zhì)量要求和測(cè)試》的國(guó)家標(biāo)準(zhǔn),使用工業(yè)標(biāo)準(zhǔn)級(jí)負(fù)載測(cè)試工具對(duì)新華社使用的“新華社多媒體數(shù)據(jù)庫(kù) V1.0”進(jìn)行了性能測(cè)試。 性能測(cè)試的目的是模擬多用戶并發(fā)訪問(wèn)新華社多媒體數(shù)據(jù)庫(kù),執(zhí)行關(guān)鍵檢索業(yè)務(wù),分析系統(tǒng)性能。 性能測(cè)試的重點(diǎn)是針對(duì)系統(tǒng)并發(fā)壓力負(fù)載較大的主要檢索業(yè)務(wù),進(jìn)行并發(fā)測(cè)試和疲勞測(cè)試,系統(tǒng)采用B/S運(yùn)行模式。并發(fā)測(cè)試設(shè)計(jì)了特定時(shí)間段內(nèi)分別在中文庫(kù)、英文庫(kù)、圖片庫(kù)中進(jìn)行單檢索詞、多檢索詞以及變檢索式、混合檢索業(yè)務(wù)等并發(fā)測(cè)試案例。疲勞測(cè)試案例為在中文庫(kù)中并發(fā)用戶數(shù)200,進(jìn)行測(cè)試周期約8小時(shí)的單檢索詞檢索。在進(jìn)行并發(fā)和疲勞測(cè)試的同時(shí),監(jiān)測(cè)的測(cè)試指標(biāo)包括交易處理性能以及UNIX(Linux)、Oracle、Apache資源等。 測(cè)試結(jié)論:在新華社機(jī)房測(cè)試環(huán)境和內(nèi)網(wǎng)測(cè)試環(huán)境中,100M帶寬情況下,針對(duì)規(guī)定的各并發(fā)測(cè)試案例,系統(tǒng)能夠承受并發(fā)用戶數(shù)為200的負(fù)載壓力,最大交易數(shù)/分鐘達(dá)到78.73,運(yùn)行基本穩(wěn)定,但隨著負(fù)載壓力增大,系統(tǒng)性能有所衰減。 系統(tǒng)能夠承受200并發(fā)用戶數(shù)持續(xù)周期約8小時(shí)的疲勞壓力,基本能夠穩(wěn)定運(yùn)行。 通過(guò)對(duì)系統(tǒng)UNIX(Linux)、Oracle和Apache資源的監(jiān)控,系統(tǒng)資源能夠滿足上述并發(fā)和疲勞性能需求,且系統(tǒng)硬件資源尚有較大利用余地。 當(dāng)并發(fā)用戶數(shù)超過(guò)200時(shí),監(jiān)控到HTTP 500、connect和超時(shí)錯(cuò)誤,且Web服務(wù)器報(bào)內(nèi)存溢出錯(cuò)誤,系統(tǒng)應(yīng)進(jìn)一步提高性能,以支持更大并發(fā)用戶數(shù)。 建議進(jìn)一步優(yōu)化軟件系統(tǒng),充分利用硬件資源,縮短交易響應(yīng)時(shí)間。 疲勞強(qiáng)度與大數(shù)據(jù)量測(cè)試 疲勞測(cè)試是采用系統(tǒng)穩(wěn)定運(yùn)行情況下能夠支持的最大并發(fā)用戶數(shù),持續(xù)執(zhí)行一段時(shí)間業(yè)務(wù),通過(guò)綜合分析交易執(zhí)行指標(biāo)和資源監(jiān)控指標(biāo)來(lái)確定系統(tǒng)處理最大工作量強(qiáng)度性能的過(guò)程。 疲勞強(qiáng)度測(cè)試可以采用工具自動(dòng)化的方式進(jìn)行測(cè)試,也可以手工編寫程序測(cè)試,其中后者占的比例較大。 一般情況下以服務(wù)器能夠正常穩(wěn)定響應(yīng)請(qǐng)求的最大并發(fā)用戶數(shù)進(jìn)行一定時(shí)間的疲勞測(cè)試,獲取交易執(zhí)行指標(biāo)數(shù)據(jù)和系統(tǒng)資源監(jiān)控?cái)?shù)據(jù)。如出現(xiàn)錯(cuò)誤導(dǎo)致測(cè)試不能成功執(zhí)行,則及時(shí)調(diào)整測(cè)試指標(biāo),例如降低用戶數(shù)、縮短測(cè)試周期等。還有一種情況的疲勞測(cè)試是對(duì)當(dāng)前系統(tǒng)性能的評(píng)估,用系統(tǒng)正常業(yè)務(wù)情況下并發(fā)用戶數(shù)為基礎(chǔ),進(jìn)行一定時(shí)間的疲勞測(cè)試。 大數(shù)據(jù)量測(cè)試可以分為兩種類型:針對(duì)某些系統(tǒng)存儲(chǔ)、傳輸、統(tǒng)計(jì)、查詢等業(yè)務(wù)進(jìn)行大數(shù)據(jù)量的獨(dú)立數(shù)據(jù)量測(cè)試;與壓力性能測(cè)試、負(fù)載性能測(cè)試、疲勞性能測(cè)試相結(jié)合的綜合數(shù)據(jù)量測(cè)試方案。大數(shù)據(jù)量測(cè)試的關(guān)鍵是測(cè)試數(shù)據(jù)的準(zhǔn)備,可以依靠工具準(zhǔn)備測(cè)試數(shù)據(jù)。 速度測(cè)試目前主要是針對(duì)關(guān)鍵有速度要求的業(yè)務(wù)進(jìn)行手工測(cè)速度,可以在多次測(cè)試的基礎(chǔ)上求平均值,可以和工具測(cè)得的響應(yīng)時(shí)間等指標(biāo)做對(duì)比分析。 ·應(yīng)用在網(wǎng)絡(luò)上性能的測(cè)試 應(yīng)用在網(wǎng)絡(luò)上性能的測(cè)試重點(diǎn)是利用成熟先進(jìn)的自動(dòng)化技術(shù)進(jìn)行網(wǎng)絡(luò)應(yīng)用性能監(jiān)控、網(wǎng)絡(luò)應(yīng)用性能分析和網(wǎng)絡(luò)預(yù)測(cè)。 網(wǎng)絡(luò)應(yīng)用性能分析 網(wǎng)絡(luò)應(yīng)用性能分析的目的是準(zhǔn)確展示網(wǎng)絡(luò)帶寬、延遲、負(fù)載和TCP端口的變化是如何影響用戶的響應(yīng)時(shí)間的。利用網(wǎng)絡(luò)應(yīng)用性能分析工具,例如Application Expert,能夠發(fā)現(xiàn)應(yīng)用的瓶頸,我們可知應(yīng)用在網(wǎng)絡(luò)上運(yùn)行時(shí)在每個(gè)階段發(fā)生的應(yīng)用行為,在應(yīng)用線程級(jí)分析應(yīng)用的問(wèn)題?梢越鉀Q多種問(wèn)題:客戶端是否對(duì)數(shù)據(jù)庫(kù)服務(wù)器運(yùn)行了不必要的請(qǐng)求?當(dāng)服務(wù)器從客戶端接受了一個(gè)查詢,應(yīng)用服務(wù)器是否花費(fèi)了不可接受的時(shí)間聯(lián)系數(shù)據(jù)庫(kù)服務(wù)器?在投產(chǎn)前預(yù)測(cè)應(yīng)用的響應(yīng)時(shí)間;利用Application Expert調(diào)整應(yīng)用在廣域網(wǎng)上的性能;Application Expert能夠讓你快速、容易地仿真應(yīng)用性能,根據(jù)最終用戶在不同網(wǎng)絡(luò)配置環(huán)境下的響應(yīng)時(shí)間,用戶可以根據(jù)自己的條件決定應(yīng)用投產(chǎn)的網(wǎng)絡(luò)環(huán)境。 網(wǎng)絡(luò)應(yīng)用性能監(jiān)控 在系統(tǒng)試運(yùn)行之后,需要及時(shí)準(zhǔn)確地了解網(wǎng)絡(luò)上正在發(fā)生什么事情;什么應(yīng)用在運(yùn)行,如何運(yùn)行;多少PC正在訪問(wèn)LAN或WAN;哪些應(yīng)用程序?qū)е孪到y(tǒng)瓶頸或資源競(jìng)爭(zhēng),這時(shí)網(wǎng)絡(luò)應(yīng)用性能監(jiān)控以及網(wǎng)絡(luò)資源管理對(duì)系統(tǒng)的正常穩(wěn)定運(yùn)行是非常關(guān)鍵的。利用網(wǎng)絡(luò)應(yīng)用性能監(jiān)控工具,可以達(dá)到事半功倍的效果,在這方面我們可以提供的工具是Network Vantage。通俗地講,它主要用來(lái)分析關(guān)鍵應(yīng)用程序的性能,定位問(wèn)題的根源是在客戶端、服務(wù)器、應(yīng)用程序還是網(wǎng)絡(luò)。在大多數(shù)情況下用戶較關(guān)心的問(wèn)題還有哪些應(yīng)用程序占用大量帶寬,哪些用戶產(chǎn)生了最大的網(wǎng)絡(luò)流量,這個(gè)工具同樣能滿足要求。 網(wǎng)絡(luò)預(yù)測(cè) 考慮到系統(tǒng)未來(lái)發(fā)展的擴(kuò)展性,預(yù)測(cè)網(wǎng)絡(luò)流量的變化、網(wǎng)絡(luò)結(jié)構(gòu)的變化對(duì)用戶系統(tǒng)的影響非常重要。根據(jù)規(guī)劃數(shù)據(jù)進(jìn)行預(yù)測(cè)并及時(shí)提供網(wǎng)絡(luò)性能預(yù)測(cè)數(shù)據(jù)。我們利用網(wǎng)絡(luò)預(yù)測(cè)分析容量規(guī)劃工具PREDICTOR可以作到:設(shè)置服務(wù)水平、完成日網(wǎng)絡(luò)容量規(guī)劃、離線測(cè)試網(wǎng)絡(luò)、網(wǎng)絡(luò)失效和容量極限分析、完成日常故障診斷、預(yù)測(cè)網(wǎng)絡(luò)設(shè)備遷移和網(wǎng)絡(luò)設(shè)備升級(jí)對(duì)整個(gè)網(wǎng)絡(luò)的影響。 從網(wǎng)絡(luò)管理軟件獲取網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)、從現(xiàn)有的流量監(jiān)控軟件獲取流量信息(若沒(méi)有這類軟件可人工生成流量數(shù)據(jù)),這樣可以得到現(xiàn)有網(wǎng)絡(luò)的基本結(jié)構(gòu)。在基本結(jié)構(gòu)的基礎(chǔ)上,可根據(jù)網(wǎng)絡(luò)結(jié)構(gòu)的變化、網(wǎng)絡(luò)流量的變化生成報(bào)告和圖表,說(shuō)明這些變化是如何影響網(wǎng)絡(luò)性能的。 PREDICTOR提供如下信息:根據(jù)預(yù)測(cè)的結(jié)果幫助用戶及時(shí)升級(jí)網(wǎng)絡(luò),避免因關(guān)鍵設(shè)備超過(guò)利用閥值導(dǎo)致系統(tǒng)性能下降;哪個(gè)網(wǎng)絡(luò)設(shè)備需要升級(jí),這樣可減少網(wǎng)絡(luò)延遲、避免網(wǎng)絡(luò)瓶頸;根據(jù)預(yù)測(cè)的結(jié)果避免不必要的網(wǎng)絡(luò)升級(jí)。 ·應(yīng)用在服務(wù)器上性能的測(cè)試 對(duì)于應(yīng)用在服務(wù)器上性能的測(cè)試,可以采用工具監(jiān)控,也可以使用系統(tǒng)本身的監(jiān)控命令,例如Tuxedo中可以使用Top命令監(jiān)控資源使用情況。實(shí)施測(cè)試的目的是實(shí)現(xiàn)服務(wù)器設(shè)備、服務(wù)器操作系統(tǒng)、數(shù)據(jù)庫(kù)系統(tǒng)、應(yīng)用在服務(wù)器上性能的全面監(jiān)控,測(cè)試原理如下圖。 UNIX資源監(jiān)控指標(biāo)和描述 監(jiān)控指標(biāo) 描述 平均負(fù)載 系統(tǒng)正常狀態(tài)下,最后60秒同步進(jìn)程的平均個(gè)數(shù) 沖突率 在以太網(wǎng)上監(jiān)測(cè)到的每秒沖突數(shù) 進(jìn)程/線程交換率 進(jìn)程和線程之間每秒交換次數(shù) CPU利用率 CPU占用率(%) 磁盤交換率 磁盤交換速率 接收包錯(cuò)誤率 接收以太網(wǎng)數(shù)據(jù)包時(shí)每秒錯(cuò)誤數(shù) 包輸入率 每秒輸入的以太網(wǎng)數(shù)據(jù)包數(shù)目 中斷速率 CPU每秒處理的中斷數(shù) 輸出包錯(cuò)誤率 發(fā)送以太網(wǎng)數(shù)據(jù)包時(shí)每秒錯(cuò)誤數(shù) 包輸入率 每秒輸出的以太網(wǎng)數(shù)據(jù)包數(shù)目 讀入內(nèi)存頁(yè)速率 物理內(nèi)存中每秒讀入內(nèi)存頁(yè)的數(shù)目 寫出內(nèi)存頁(yè)速率 每秒從物理內(nèi)存中寫到頁(yè)文件中的內(nèi)存頁(yè)數(shù) 目或者從物理內(nèi)存中刪掉的內(nèi)存頁(yè)數(shù)目 內(nèi)存頁(yè)交換速率 每秒寫入內(nèi)存頁(yè)和從物理內(nèi)存中讀出頁(yè)的個(gè)數(shù) 進(jìn)程入交換率 交換區(qū)輸入的進(jìn)程數(shù)目 進(jìn)程出交換率 交換區(qū)輸出的進(jìn)程數(shù)目 系統(tǒng)CPU利用率 系統(tǒng)的CPU占用率(%) 用戶CPU利用率 用戶模式下的CPU占用率(%) 磁盤阻塞 磁盤每秒阻塞的字節(jié)數(shù) 二、為什么進(jìn)行性能測(cè)試? 目的是驗(yàn)證軟件系統(tǒng)是否能夠達(dá)到用戶提出的性能指標(biāo),同時(shí)發(fā)現(xiàn)軟件系統(tǒng)中存在的性能瓶頸,優(yōu)化軟件,最后起到優(yōu)化系統(tǒng)的目的。 包括以下幾個(gè)方面 1.評(píng)估系統(tǒng)的能力,測(cè)試中得到的負(fù)荷和響應(yīng)時(shí)間數(shù)據(jù)可以被用于驗(yàn)證所計(jì)劃的模型的能力,并幫助作出決策。 2.識(shí)別體系中的弱點(diǎn):受控的負(fù)荷可以被增加到一個(gè)極端的水平,并突破它,從而修復(fù)體系的瓶頸或薄弱的地方。 3.系統(tǒng)調(diào)優(yōu):重復(fù)運(yùn)行測(cè)試,驗(yàn)證調(diào)整系統(tǒng)的活動(dòng)得到了預(yù)期的結(jié)果,從而改進(jìn)性能。 檢測(cè)軟件中的問(wèn)題:長(zhǎng)時(shí)間的測(cè)試執(zhí)行可導(dǎo)致程序發(fā)生由于內(nèi)存泄露引起的失敗,揭示程序中的隱含的問(wèn)題或沖突。 4.驗(yàn)證穩(wěn)定性(resilience)可靠性(reliability):在一個(gè)生產(chǎn)負(fù)荷下執(zhí)行測(cè)試一定的時(shí)間是評(píng)估系統(tǒng)穩(wěn)定性和可靠性是否滿足要求的唯一方法。 性能測(cè)試類型包括負(fù)載測(cè)試,強(qiáng)度測(cè)試,容量測(cè)試等 負(fù)載測(cè)試:負(fù)載測(cè)試是一種性能測(cè)試指數(shù)據(jù)在超負(fù)荷環(huán)境中運(yùn)行,程序是否能夠承擔(dān)。 強(qiáng)度測(cè)試: 強(qiáng)度測(cè)試是一種性能測(cè)試,他在系統(tǒng)資源特別低的情況下軟件系統(tǒng)運(yùn)行情況。 容量測(cè)試:確定系統(tǒng)可處理同時(shí)在線的最大用戶數(shù) 觀察指標(biāo): 性能測(cè)試主要是通過(guò)自動(dòng)化的測(cè)試工具模擬多種正常、峰值以及異常負(fù)載條件來(lái)對(duì)系統(tǒng)的各項(xiàng)性能指標(biāo)進(jìn)行測(cè)試。負(fù)載測(cè)試和壓力測(cè)試都屬于性能測(cè)試,兩者可以結(jié)合進(jìn)行。通過(guò)負(fù)載測(cè)試,確定在各種工作負(fù)載下系統(tǒng)的性能,目標(biāo)是測(cè)試當(dāng)負(fù)載逐漸增加時(shí),系統(tǒng)各項(xiàng)性能指標(biāo)的變化情況。壓力測(cè)試是通過(guò)確定一個(gè)系統(tǒng)的瓶頸或者不能接收的性能點(diǎn),來(lái)獲得系統(tǒng)能提供的最大服務(wù)級(jí)別的測(cè)試。 在實(shí)際中作中我們經(jīng)常會(huì)對(duì)兩種類型軟件進(jìn)行測(cè)試:bs和cs,這兩方面的性能指標(biāo)一般需要哪些內(nèi)容呢? Bs結(jié)構(gòu)程序一般會(huì)關(guān)注的通用指標(biāo)如下(簡(jiǎn)): Web服務(wù)器指標(biāo)指標(biāo): * Avg Rps: 平均每秒鐘響應(yīng)次數(shù)=總請(qǐng)求時(shí)間 / 秒數(shù); * Avg time to last byte per terstion (mstes):平均每秒業(yè)務(wù)角本的迭代次數(shù) ,有人會(huì)把這兩者混淆; * Successful Rounds:成功的請(qǐng)求; * Failed Rounds :失敗的請(qǐng)求; * Successful Hits :成功的點(diǎn)擊次數(shù); * Failed Hits :失敗的點(diǎn)擊次數(shù); * Hits Per Second :每秒點(diǎn)擊次數(shù); * Successful Hits Per Second :每秒成功的點(diǎn)擊次數(shù); * Failed Hits Per Second :每秒失敗的點(diǎn)擊次數(shù); * Attempted Connections :嘗試鏈接數(shù); CS結(jié)構(gòu)程序,由于一般軟件后臺(tái)通常為數(shù)據(jù)庫(kù),所以我們更注重?cái)?shù)據(jù)庫(kù)的測(cè)試指標(biāo): * User 0 Connections :用戶連接數(shù),也就是數(shù)據(jù)庫(kù)的連接數(shù)量; * Number of deadlocks:數(shù)據(jù)庫(kù)死鎖; * Butter Cache hit :數(shù)據(jù)庫(kù)Cache的命中情況 當(dāng)然,在實(shí)際中我們還會(huì)察看多用戶測(cè)試情況下的內(nèi)存,CPU,系統(tǒng)資源調(diào)用情況。這些指標(biāo)其實(shí)是引申出來(lái)性能測(cè)試中的一種:競(jìng)爭(zhēng)測(cè)試。什么是競(jìng)爭(zhēng)測(cè)試,軟件競(jìng)爭(zhēng)使用各種資源(數(shù)據(jù)紀(jì)錄,內(nèi)存等),看他與其他相關(guān)系統(tǒng)對(duì)資源的爭(zhēng)奪能力。 我們知道軟件架構(gòu)在實(shí)際測(cè)試中制約著測(cè)試策略和工具的選擇。如何選擇性能測(cè)試策略是我們?cè)趯?shí)際工作中需要了解的。一般軟件可以按照系統(tǒng)架構(gòu)分成幾種類型: c/s client/Server 客戶端/服務(wù)器架構(gòu) 基于客戶端/服務(wù)器的三層架構(gòu) 基于客戶端/服務(wù)器的分布式架構(gòu) b/s 基于瀏覽器/Web服務(wù)器的三層架構(gòu) 基于中間件應(yīng)用服務(wù)器的三層架構(gòu)l 基于Web服務(wù)器和中間件的多層架構(gòu)l 三、性能測(cè)試的步驟 在每種不同的系統(tǒng)架構(gòu)的實(shí)施中,開(kāi)發(fā)人員可能選擇不同的實(shí)現(xiàn)方式,造成實(shí)際情況紛繁復(fù)雜。我們不可能對(duì)每種技術(shù)都詳細(xì)解說(shuō),這里只是介紹一種方法提供給你如何選擇測(cè)試策略,從而幫助分析軟件不同部分的性能指標(biāo),進(jìn)而分析出整體架構(gòu)的性能指標(biāo)和性能瓶頸。 由于工程和項(xiàng)目的不同,所選用的度量,評(píng)估方法也有不同之處。不過(guò)仍然有一些通用的步驟幫助我們完成一個(gè)性能測(cè)試項(xiàng)目。步驟如下 1. 制定目標(biāo)和分析系統(tǒng) 2. 選擇測(cè)試度量的方法 3. 學(xué)習(xí)的相關(guān)技術(shù)和工具 4. 制定評(píng)估標(biāo)準(zhǔn) 5. 設(shè)計(jì)測(cè)試用例 6. 運(yùn)行測(cè)試用例 7. 分析測(cè)試結(jié)果 ·制定目標(biāo)和分析系統(tǒng) 每一個(gè)性能測(cè)試計(jì)劃中第一步都會(huì)制定目標(biāo)和分析系統(tǒng)構(gòu)成。只有明確目標(biāo)和了解系統(tǒng)構(gòu)成才會(huì)澄清測(cè)試范圍,知道在測(cè)試中要掌握什么樣的技術(shù)。 目標(biāo): 1. 確定客戶需求和期望 2. 實(shí)際業(yè)務(wù)需求 3. 系統(tǒng)需求 系統(tǒng)組成 系統(tǒng)組成這里包含幾方面含義:系統(tǒng)類別,系統(tǒng)構(gòu)成,系統(tǒng)功能等。了解這些內(nèi)容的本質(zhì)其實(shí)是幫助我們明確測(cè)試的范圍,選者適當(dāng)?shù)臏y(cè)試方法來(lái)進(jìn)行測(cè)試。 系統(tǒng)類別:分清系統(tǒng)類別是我們掌握什么樣的技術(shù)的前提,掌握相應(yīng)技術(shù)做性能測(cè)試才可能成功。例如:系統(tǒng)類別是bs結(jié)構(gòu),需要掌握 http協(xié)議,java,html等技術(shù) 。或者是cs結(jié)構(gòu),可能要了解操作系統(tǒng),winsock,com等。所以甄別系統(tǒng)類別對(duì)于我們來(lái)說(shuō)很重要。 系統(tǒng)構(gòu)成:硬件設(shè)置,操作系統(tǒng)設(shè)置是性能測(cè)試的制約條件,一般性能測(cè)試都是利用測(cè)試工具模仿大量的實(shí)際用戶操作,系統(tǒng)在超負(fù)荷情形下運(yùn)作。不同的系統(tǒng)構(gòu)成性能測(cè)試就會(huì)得到不同的結(jié)果。 系統(tǒng)功能:系統(tǒng)功能指系統(tǒng)提供的不同子系統(tǒng),辦公管理系統(tǒng)中的公文子系統(tǒng),會(huì)議子系統(tǒng)等,系統(tǒng)工能是性能測(cè)試中要模擬的環(huán)節(jié),了解這些是必要的。 ·選擇測(cè)試度量的方法 經(jīng)過(guò)第一步,將會(huì)對(duì)系統(tǒng)有清醒的認(rèn)識(shí)。接下來(lái)我們將把精力放在軟件度量上,收集系統(tǒng)相關(guān)的數(shù)據(jù)。 度量的相關(guān)方面: * 制定規(guī)范 * 制定相關(guān)流程, 角色,職責(zé) * 制定改進(jìn)策略 * 制定結(jié)果對(duì)比標(biāo)準(zhǔn) ·學(xué)習(xí)的相關(guān)技術(shù)和工具 性能測(cè)試是通過(guò)工具,模擬大量用戶操作,對(duì)系統(tǒng)增加負(fù)載。所以需要掌握一定的工具知識(shí)才能進(jìn)行性能測(cè)試。大家都知道性能測(cè)試工具一般通過(guò)winsock,http等協(xié)議紀(jì)錄用戶操作。而協(xié)議選擇是基于軟件的系統(tǒng)架構(gòu)實(shí)現(xiàn)(web一般選擇http協(xié)議,cs選擇winsock協(xié)議),不同的性能測(cè)試工具,腳本語(yǔ)言也不同,比如rational robot中vu腳本用類c語(yǔ)言實(shí)現(xiàn)。 開(kāi)展性能測(cè)試需要對(duì)各種性能測(cè)試工具進(jìn)行評(píng)估,因?yàn)槊恳环N性能測(cè)試工具都有自身的特點(diǎn),只有經(jīng)過(guò)工具評(píng)估,才能選擇符合現(xiàn)有軟件架構(gòu)的性能測(cè)試工具。確定測(cè)試工具后,需要組織測(cè)試人員進(jìn)行工具的學(xué)習(xí),培訓(xùn)相關(guān)技術(shù)。 ·制定評(píng)估標(biāo)準(zhǔn) 任何測(cè)試的目的都是確保軟件符合預(yù)先規(guī)定的目標(biāo)和要求。性能測(cè)試也不例外。所以必須制定一套標(biāo)準(zhǔn)。 通常性能測(cè)試有四種模型技術(shù)可用于評(píng)估: *線性投射:用大量的過(guò)去的,擴(kuò)展的或者將來(lái)可能發(fā)生的數(shù)據(jù)組成散布圖,利用這個(gè)圖表不斷和系統(tǒng)的當(dāng)前狀況對(duì)比。 *分析模型:用排隊(duì)論公式和算法預(yù)測(cè)響應(yīng)時(shí)間,利用描述工作量的數(shù)據(jù)和系統(tǒng)本質(zhì)關(guān)聯(lián)起來(lái) *模仿:模仿實(shí)際用戶的使用方法測(cè)試你的系統(tǒng) *基準(zhǔn):定義測(cè)試和你最初的測(cè)試作為標(biāo)準(zhǔn),利用它和所有后來(lái)進(jìn)行的測(cè)試結(jié)果進(jìn)行對(duì)比 ·設(shè)計(jì)測(cè)試用例 設(shè)計(jì)測(cè)試用例是在了解軟件業(yè)務(wù)流程的基礎(chǔ)上。設(shè)計(jì)測(cè)試用例的原則是受最小的影響提供最多的測(cè)試信息,設(shè)計(jì)測(cè)試用例的目標(biāo)是一次盡可能的包含多個(gè)測(cè)試要素。這些測(cè)試用例必須是測(cè)試工具可以實(shí)現(xiàn)的,不同的測(cè)試場(chǎng)景將測(cè)試不同的功能。因?yàn)樾阅軠y(cè)試不同于平時(shí)的測(cè)試用例,盡可能把性能測(cè)試用例設(shè)計(jì)的復(fù)雜,才有可能發(fā)現(xiàn)軟件的性能瓶頸。 ·運(yùn)行測(cè)試用例 通過(guò)性能測(cè)試工具運(yùn)行測(cè)試用例。同一環(huán)境下作的性能測(cè)試得到的測(cè)試結(jié)果是不準(zhǔn)確的,所以在運(yùn)行這些測(cè)試用例的時(shí)候,需要用不同的測(cè)試環(huán)境,不同的機(jī)器配置上運(yùn)行。 ·分析測(cè)試結(jié)果 運(yùn)行測(cè)試用例后,收集相關(guān)信息,進(jìn)行數(shù)據(jù)統(tǒng)計(jì)分析,找到性能瓶頸。通過(guò)排除誤差和其他因素,讓測(cè)試結(jié)果體現(xiàn)接近真實(shí)情況。不同的體系結(jié)構(gòu)分析測(cè)試結(jié)果的方法也不同,bs結(jié)構(gòu)我們會(huì)分析網(wǎng)絡(luò)帶寬,流量對(duì)用戶操作響應(yīng)的影響,而cs結(jié)構(gòu)我們可能更關(guān)心會(huì)系統(tǒng)整體配置對(duì)用戶操作的影響。 四、性能測(cè)試方法 對(duì)于企業(yè)應(yīng)用程序,有許多進(jìn)行性能測(cè)試的方法,其中一些方法實(shí)行起來(lái)要比其他方法困難。所要進(jìn)行的性能測(cè)試的類型取決于想要達(dá)到的結(jié)果。例如,對(duì)于可再現(xiàn)性,基準(zhǔn)測(cè)試是最好的方法。而要從當(dāng)前用戶負(fù)載的角度測(cè)試系統(tǒng)的上限,則應(yīng)該使用容量規(guī)劃測(cè)試。本文將介紹幾種設(shè)置和運(yùn)行性能測(cè)試的方法,并討論這些方法的區(qū)別。 如果不進(jìn)行合理的規(guī)劃,對(duì)J2EE應(yīng)用程序進(jìn)行性能測(cè)試將會(huì)是一項(xiàng)令人望而生畏且有些混亂的任務(wù)。因?yàn)閷?duì)于任何的軟件開(kāi)發(fā)流程,都必須收集需求、理解業(yè)務(wù)需要,并在進(jìn)行實(shí)際測(cè)試之前設(shè)計(jì)出正式的進(jìn)度表。性能測(cè)試的需求由業(yè)務(wù)需要驅(qū)動(dòng),并由一組用例闡明。這些用例可以基于歷史數(shù)據(jù)(例如,服務(wù)器一周的負(fù)載模式)或預(yù)測(cè)的近似值。弄清楚需要測(cè)試的內(nèi)容之后,就需要知道如何進(jìn)行測(cè)試了。 在開(kāi)發(fā)階段前期,應(yīng)該使用基準(zhǔn)測(cè)試來(lái)確定應(yīng)用程序中是否出現(xiàn)性能倒退;鶞(zhǔn)測(cè)試可以在一個(gè)相對(duì)短的時(shí)間內(nèi)收集可重復(fù)的結(jié)果。進(jìn)行基準(zhǔn)測(cè)試的最好方法是,每次測(cè)試改變一個(gè)且只改變一個(gè)參數(shù)。例如,如果想知道增加JVM內(nèi)存是否會(huì)影響應(yīng)用程序的性能,就逐次遞增JVM內(nèi)存(例如,從1024 MB增至1224 MB,然后是1524 MB,最后是2024 MB),在每個(gè)階段收集結(jié)果和環(huán)境數(shù)據(jù),記錄信息,然后轉(zhuǎn)到下一階段。這樣在分析測(cè)試結(jié)果時(shí)就有跡可循。下一小節(jié)我將介紹什么是基準(zhǔn)測(cè)試,以及運(yùn)行基準(zhǔn)測(cè)試的最佳參數(shù)。 開(kāi)發(fā)階段后期,在應(yīng)用程序中的bug已經(jīng)被解決,應(yīng)用程序達(dá)到一種穩(wěn)定狀態(tài)之后,可以運(yùn)行更為復(fù)雜的測(cè)試,確定系統(tǒng)在不同的負(fù)載模式下的表現(xiàn)。這些測(cè)試被稱為容量規(guī)劃測(cè)試、滲入測(cè)試(soak test)、峰谷測(cè)試(peak-rest test),它們旨在通過(guò)測(cè)試應(yīng)用程序的可靠性、健壯性和可伸縮性來(lái)測(cè)試接近于現(xiàn)實(shí)世界的場(chǎng)景。對(duì)于下面的描述應(yīng)該從抽象的意義上理解,因?yàn)槊總(gè)應(yīng)用程序的使用模式都是不同的。例如,容量規(guī)劃測(cè)試通常都使用較緩慢的ramp-up(下文有定義),但是如果應(yīng)用程序在一天之中的某個(gè)時(shí)段中有快速突發(fā)的流量,那么自然應(yīng)該修改測(cè)試以反映這種情況。但是,要記住,因?yàn)楦牧藴y(cè)試參數(shù)(比如ramp-up周期或用戶的考慮時(shí)間(think-time)),測(cè)試的結(jié)果肯定也會(huì)改變。一個(gè)不錯(cuò)的方法是,運(yùn)行一系列的基準(zhǔn)測(cè)試,確立一個(gè)已知的可控環(huán)境,然后再對(duì)變化進(jìn)行比較。 基準(zhǔn)測(cè)試 基準(zhǔn)測(cè)試的關(guān)鍵是要獲得一致的、可再現(xiàn)的結(jié)果?稍佻F(xiàn)的結(jié)果有兩個(gè)好處:減少重新運(yùn)行測(cè)試的次數(shù);對(duì)測(cè)試的產(chǎn)品和產(chǎn)生的數(shù)字更為確信。使用的性能測(cè)試工具可能會(huì)對(duì)測(cè)試結(jié)果產(chǎn)生很大影響。假定測(cè)試的兩個(gè)指標(biāo)是服務(wù)器的響應(yīng)時(shí)間和吞吐量,它們會(huì)受到服務(wù)器上的負(fù)載的影響。服務(wù)器上的負(fù)載受兩個(gè)因素影響:同時(shí)與服務(wù)器通信的連接(或虛擬用戶)的數(shù)目,以及每個(gè)虛擬用戶請(qǐng)求之間的考慮時(shí)間的長(zhǎng)短。很明顯,與服務(wù)器通信的用戶越多,負(fù)載就越大。同樣,請(qǐng)求之間的考慮時(shí)間越短,負(fù)載也越大。這兩個(gè)因素的不同組合會(huì)產(chǎn)生不同的服務(wù)器負(fù)載等級(jí)。記住,隨著服務(wù)器上負(fù)載的增加,吞吐量會(huì)不斷攀升,直到到達(dá)一個(gè)點(diǎn)。 注意,吞吐量以穩(wěn)定的速度增長(zhǎng),然后在某一個(gè)點(diǎn)上穩(wěn)定下來(lái)。 在某一點(diǎn)上,執(zhí)行隊(duì)列開(kāi)始增長(zhǎng),因?yàn)榉⻊?wù)器上所有的線程都已投入使用,傳入的請(qǐng)求不再被立即處理,而是放入隊(duì)列中,當(dāng)線程空閑時(shí)再處理。 注意,最初的一段時(shí)間,執(zhí)行隊(duì)列的長(zhǎng)度為零,然后就開(kāi)始以穩(wěn)定的速度增長(zhǎng)。這是因?yàn)橄到y(tǒng)中的負(fù)載在穩(wěn)定增長(zhǎng),雖然最初系統(tǒng)有足夠的空閑線程去處理增加的負(fù)載,最終它還是不能承受,而必須將其排入隊(duì)列。 當(dāng)系統(tǒng)達(dá)到飽和點(diǎn),服務(wù)器吞吐量保持穩(wěn)定后,就達(dá)到了給定條件下的系統(tǒng)上限。但是,隨著服務(wù)器負(fù)載的繼續(xù)增長(zhǎng),系統(tǒng)的響應(yīng)時(shí)間也隨之延長(zhǎng),雖然吞吐量保持穩(wěn)定。 注意,在執(zhí)行隊(duì)列(圖2)開(kāi)始增長(zhǎng)的同時(shí),響應(yīng)時(shí)間也開(kāi)始以遞增的速度增長(zhǎng)。這是因?yàn)檎?qǐng)求不能被及時(shí)處理。 為了獲得真正可再現(xiàn)的結(jié)果,應(yīng)該將系統(tǒng)置于相同的高負(fù)載下。為此,與服務(wù)器通信的虛擬用戶應(yīng)該將請(qǐng)求之間的考慮時(shí)間設(shè)為零。這樣服務(wù)器會(huì)立即超載,并開(kāi)始構(gòu)建執(zhí)行隊(duì)列。如果請(qǐng)求(虛擬用戶)數(shù)保持一致,基準(zhǔn)測(cè)試的結(jié)果應(yīng)該會(huì)非常精確,完全可以再現(xiàn)。 您可能要問(wèn)的一個(gè)問(wèn)題是:“如何度量結(jié)果?”對(duì)于一次給定的測(cè)試,應(yīng)該取響應(yīng)時(shí)間和吞吐量的平均值。精確地獲得這些值的唯一方法是一次加載所有的用戶,然后在預(yù)定的時(shí)間段內(nèi)持續(xù)運(yùn)行。這稱為“flat”測(cè)試。 與此相對(duì)應(yīng)的是“ramp-up”測(cè)試。 ramp-up測(cè)試中的用戶是交錯(cuò)上升的(每幾秒增加一些新用戶)。ramp-up測(cè)試不能產(chǎn)生精確和可重現(xiàn)的平均值,這是因?yàn)橛捎谟脩舻脑黾邮敲看我徊糠郑到y(tǒng)的負(fù)載在不斷地變化。因此,flat運(yùn)行是獲得基準(zhǔn)測(cè)試數(shù)據(jù)的理想模式。 這不是在貶低ramp-up測(cè)試的價(jià)值。實(shí)際上,ramp-up測(cè)試對(duì)找出以后要運(yùn)行的flat測(cè)試的范圍非常有用。ramp-up測(cè)試的優(yōu)點(diǎn)是,可以看出隨著系統(tǒng)負(fù)載的改變,測(cè)量值是如何改變的。然后可以據(jù)此選擇以后要運(yùn)行的flat測(cè)試的范圍。 Flat測(cè)試的問(wèn)題是系統(tǒng)會(huì)遇到“波動(dòng)”效果。 ) 注意波動(dòng)的出現(xiàn),吞吐量不再是平滑的。 這在系統(tǒng)的各個(gè)方面都有所體現(xiàn),包括CPU的使用量。 注意,每隔一段時(shí)間就會(huì)出現(xiàn)一個(gè)波形。CPU使用量不再是平滑的,而是有了像吞吐量圖那樣的尖峰。 此外,執(zhí)行隊(duì)列也承受著不穩(wěn)定的負(fù)載,因此可以看到,隨著系統(tǒng)負(fù)載的增加和減少,執(zhí)行隊(duì)列也在增長(zhǎng)和縮減。 注意,每隔一段時(shí)間就會(huì)出現(xiàn)一個(gè)波形。執(zhí)行隊(duì)列曲線與上面的CPU使用量圖非常相似。 最后,系統(tǒng)中事務(wù)的響應(yīng)時(shí)間也遵循著這個(gè)波動(dòng)模式。 注意,每隔一段時(shí)間就會(huì)出現(xiàn)一個(gè)波形。事務(wù)的響應(yīng)時(shí)間也與上面的圖類似,只不過(guò)其效果隨著時(shí)間的推移逐漸減弱。 當(dāng)測(cè)試中所有的用戶都同時(shí)執(zhí)行幾乎相同的操作時(shí),就會(huì)發(fā)生這種現(xiàn)象。這將會(huì)產(chǎn)生非常不可靠和不精確的結(jié)果,所以必須采取一些措施防止這種情況的出現(xiàn)。有兩種方法可以從這種類型的結(jié)果中獲得精確的測(cè)量值。如果測(cè)試可以運(yùn)行相當(dāng)長(zhǎng)的時(shí)間(有時(shí)是幾個(gè)小時(shí),取決于用戶的操作持續(xù)的時(shí)間),最后由于隨機(jī)事件的本性使然,服務(wù)器的吞吐量會(huì)被“拉平”;蛘,可以只選取波形中兩個(gè)平息點(diǎn)之間的測(cè)量值。該方法的缺點(diǎn)是可以捕獲數(shù)據(jù)的時(shí)間非常短。 性能規(guī)劃測(cè)試 對(duì)于性能規(guī)劃類型的測(cè)試來(lái)說(shuō),其目標(biāo)是找出,在特定的環(huán)境下,給定應(yīng)用程序的性能可以達(dá)到何種程度。此時(shí)可重現(xiàn)性就不如在基準(zhǔn)測(cè)試中那么重要了,因?yàn)闇y(cè)試中通常都會(huì)有隨機(jī)因子。引入隨機(jī)因子的目的是為了盡量模擬具有真實(shí)用戶負(fù)載的現(xiàn)實(shí)世界應(yīng)用程序。通常,具體的目標(biāo)是找出系統(tǒng)在特定的服務(wù)器響應(yīng)時(shí)間下支持的當(dāng)前用戶的最大數(shù)。例如,您可能想知道:如果要以5秒或更少的響應(yīng)時(shí)間支持8,000個(gè)當(dāng)前用戶,需要多少個(gè)服務(wù)器?要回答這個(gè)問(wèn)題,需要知道系統(tǒng)的更多信息。 要確定系統(tǒng)的容量,需要考慮幾個(gè)因素。通常,服務(wù)器的用戶總數(shù)非常大(以十萬(wàn)計(jì)),但是實(shí)際上,這個(gè)數(shù)字并不能說(shuō)明什么。真正需要知道的是,這些用戶中有多少是并發(fā)與服務(wù)器通信的。其次要知道的是,每個(gè)用戶的“考慮時(shí)間”即請(qǐng)求間時(shí)間是多少。這非常重要,因?yàn)榭紤]時(shí)間越短,系統(tǒng)所能支持的并發(fā)用戶越少。例如,如果用戶的考慮時(shí)間是1秒,那么系統(tǒng)可能只能支持?jǐn)?shù)百個(gè)這樣的并發(fā)用戶。但是,如果用戶的考慮時(shí)間是30秒,那么系統(tǒng)則可能支持?jǐn)?shù)萬(wàn)個(gè)這樣的并發(fā)用戶(假定硬件和應(yīng)用程序都是相同的)。在現(xiàn)實(shí)世界中,通常難以確定用戶的確切考慮時(shí)間。還要注意,在現(xiàn)實(shí)世界中,用戶不會(huì)精確地按照間隔時(shí)間發(fā)出請(qǐng)求。 于是就引入了隨機(jī)性。如果知道普通用戶的考慮時(shí)間是5秒,誤差為20%,那么在設(shè)計(jì)負(fù)載測(cè)試時(shí),就要確保請(qǐng)求間的時(shí)間為5×(1 +/- 20%)秒。此外,可以利用“調(diào)步”的理念向負(fù)載場(chǎng)景中引入更多的隨機(jī)性。它是這樣的:在一個(gè)虛擬用戶完成一整套的請(qǐng)求后,該用戶暫停一個(gè)設(shè)定的時(shí)間段,或者一個(gè)小的隨機(jī)時(shí)間段(例如,2×(1 +/- 25%)秒),然后再繼續(xù)執(zhí)行下一套請(qǐng)求。將這兩種隨機(jī)化方法運(yùn)用到測(cè)試中,可以提供更接近于現(xiàn)實(shí)世界的場(chǎng)景。 現(xiàn)在該進(jìn)行實(shí)際的容量規(guī)劃測(cè)試了。接下來(lái)的問(wèn)題是:如何加載用戶以模擬負(fù)載狀態(tài)?最好的方法是模擬高峰時(shí)間用戶與服務(wù)器通信的狀況。這種用戶負(fù)載狀態(tài)是在一段時(shí)間內(nèi)逐步達(dá)到的嗎?如果是,應(yīng)該使用ramp-up類型的測(cè)試,每隔幾秒增加x個(gè)用戶。或者,所有用戶是在一個(gè)非常短的時(shí)間內(nèi)同時(shí)與系統(tǒng)通信?如果是這樣,就應(yīng)該使用flat類型的測(cè)試,將所有的用戶同時(shí)加載到服務(wù)器。兩種不同類型的測(cè)試會(huì)產(chǎn)生沒(méi)有可比性的不同測(cè)試。例如,如果進(jìn)行ramp-up類型的測(cè)試,系統(tǒng)可以以4秒或更短的響應(yīng)時(shí)間支持5,000個(gè)用戶。而執(zhí)行flat測(cè)試,您會(huì)發(fā)現(xiàn),對(duì)于5,000個(gè)用戶,系統(tǒng)的平均響應(yīng)時(shí)間要大于4秒。這是由于ramp-up測(cè)試固有的不準(zhǔn)確性使其不能顯示系統(tǒng)可以支持的并發(fā)用戶的精確數(shù)字。以門戶應(yīng)用程序?yàn)槔S著門戶規(guī)模的擴(kuò)大和集群規(guī)模的擴(kuò)大,這種不確定性就會(huì)隨之顯現(xiàn)。 這不是說(shuō)不應(yīng)該使用ramp-up測(cè)試。對(duì)于系統(tǒng)負(fù)載在一段比較長(zhǎng)的時(shí)間內(nèi)緩慢增加的情況,ramp-up測(cè)試效果還是不錯(cuò)的。這是因?yàn)橄到y(tǒng)能夠隨著時(shí)間不斷調(diào)整。如果使用快速ramp-up測(cè)試,系統(tǒng)就會(huì)滯后,從而報(bào)告一個(gè)較相同用戶負(fù)載的flat測(cè)試低的響應(yīng)時(shí)間。那么,什么是確定容量的最好方法?結(jié)合兩種負(fù)載類型的優(yōu)點(diǎn),并運(yùn)行一系列的測(cè)試,就會(huì)產(chǎn)生最好的結(jié)果。例如,首先使用ramp-up測(cè)試確定系統(tǒng)可以支持的用戶范圍。確定了范圍之后,以該范圍內(nèi)不同的并發(fā)用戶負(fù)載進(jìn)行一系列的flat測(cè)試,更精確地確定系統(tǒng)的容量。 滲入測(cè)試 滲入測(cè)試是一種比較簡(jiǎn)單的性能測(cè)試。滲入測(cè)試所需時(shí)間較長(zhǎng),它使用固定數(shù)目的并發(fā)用戶測(cè)試系統(tǒng)的總體健壯性。這些測(cè)試將會(huì)通過(guò)內(nèi)存泄漏、增加的垃圾收集(GC)或系統(tǒng)的其他問(wèn)題,顯示因長(zhǎng)時(shí)間運(yùn)行而出現(xiàn)的任何性能降低。測(cè)試運(yùn)行的時(shí)間越久,您對(duì)系統(tǒng)就越了解。運(yùn)行兩次測(cè)試是一個(gè)好主意——一次使用較低的用戶負(fù)載(要在系統(tǒng)容量之下,以便不會(huì)出現(xiàn)執(zhí)行隊(duì)列),一次使用較高的負(fù)載(以便出現(xiàn)積極的執(zhí)行隊(duì)列)。 測(cè)試應(yīng)該運(yùn)行幾天的時(shí)間,以便真正了解應(yīng)用程序的長(zhǎng)期健康狀況。要確保測(cè)試的應(yīng)用程序盡可能接近現(xiàn)實(shí)世界的情況,用戶場(chǎng)景也要逼真(虛擬用戶通過(guò)應(yīng)用程序?qū)Ш降姆绞揭c現(xiàn)實(shí)世界一致),從而測(cè)試應(yīng)用程序的全部特性。確保運(yùn)行了所有必需的監(jiān)控工具,以便精確地監(jiān)測(cè)并跟蹤問(wèn)題。 峰谷測(cè)試 峰谷測(cè)試兼有容量規(guī)劃ramp-up類型測(cè)試和滲入測(cè)試的特征。其目標(biāo)是確定從高負(fù)載(例如系統(tǒng)高峰時(shí)間的負(fù)載)恢復(fù)、轉(zhuǎn)為幾乎空閑、然后再攀升到高負(fù)載、再降低的能力。 實(shí)現(xiàn)這種測(cè)試的最好方法就是,進(jìn)行一系列的快速ramp-up測(cè)試,繼之以一段時(shí)間的平穩(wěn)狀態(tài)(取決于業(yè)務(wù)需求),然后急劇降低負(fù)載,此時(shí)可以令系統(tǒng)平息一下,然后再進(jìn)行快速的ramp-up;反復(fù)重復(fù)這個(gè)過(guò)程。這樣可以確定以下事項(xiàng):第二次高峰是否重現(xiàn)第一次的峰值?其后的每次高峰是等于還是大于第一次的峰值?在測(cè)試過(guò)程中,系統(tǒng)是否顯示了內(nèi)存或GC性能降低的有關(guān)跡象?測(cè)試運(yùn)行(不停地重復(fù)“峰值/空閑”周期)的時(shí)間越長(zhǎng),您對(duì)系統(tǒng)的長(zhǎng)期健康狀況就越了解。 結(jié)束語(yǔ) 本文介紹了進(jìn)行性能測(cè)試的幾種方法。取決于業(yè)務(wù)需求、開(kāi)發(fā)周期和應(yīng)用程序的生命周期,對(duì)于特定的企業(yè),某些測(cè)試會(huì)比其他的更適合。但是,對(duì)于任何情況,在決定進(jìn)行某一種測(cè)試前,都應(yīng)該問(wèn)自己一些基本問(wèn)題。這些問(wèn)題的答案將會(huì)決定哪種測(cè)試方法是最好的。 這些問(wèn)題包括: 結(jié)果的可重復(fù)性需要有多高? 測(cè)試需要運(yùn)行和重新運(yùn)行幾次? 您處于開(kāi)放周期的哪個(gè)階段? 您的業(yè)務(wù)需求是什么? 您的用戶需求是什么? 您希望生產(chǎn)中的系統(tǒng)在維護(hù)停機(jī)時(shí)間中可以持續(xù)多久? 在一個(gè)正常的業(yè)務(wù)日,預(yù)期的用戶負(fù)載是多少? 將這些問(wèn)題的答案與上述性能測(cè)試類型相對(duì)照,應(yīng)該就可以制定出測(cè)試應(yīng)用程序的總體性能的完美計(jì)劃。
性能測(cè)試是通過(guò)自動(dòng)化的測(cè)試工具模擬多種正常、峰值以及異常負(fù)載條件來(lái)對(duì)系統(tǒng)的各項(xiàng)性能指標(biāo)進(jìn)行測(cè)試。負(fù)載測(cè)試和壓力測(cè)試都屬于性能測(cè)試,兩者可以結(jié)合進(jìn)行。通過(guò)負(fù)載測(cè)試,確定在各種工作負(fù)載下系統(tǒng)的性能,目標(biāo)是測(cè)試當(dāng)負(fù)載逐漸增加時(shí),系統(tǒng)各項(xiàng)性能指標(biāo)的變化情況。壓力測(cè)試是通過(guò)確定一個(gè)系統(tǒng)的瓶頸或者不能接收的性能點(diǎn),來(lái)獲得系統(tǒng)能提供的最大服務(wù)級(jí)別的測(cè)試。 一、概述 性能測(cè)試在軟件的質(zhì)量保證中起著重要的作用,它包括的測(cè)試內(nèi)容豐富多樣。中國(guó)軟件評(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è)試的過(guò)程是一個(gè)負(fù)載測(cè)試和壓力測(cè)試的過(guò)程,即逐漸增加負(fù)載,直到系統(tǒng)的瓶頸或者不能接收的性能點(diǎn),通過(guò)綜合分析交易執(zhí)行指標(biāo)和資源監(jiān)控指標(biāo)來(lái)確定系統(tǒng)并發(fā)性能的過(guò)程。負(fù)載測(cè)試(Load Testing)是確定在各種工作負(fù)載下系統(tǒng)的性能,目標(biāo)是測(cè)試當(dāng)負(fù)載逐漸增加時(shí),系統(tǒng)組成部分的相應(yīng)輸出項(xiàng),例如通過(guò)量、響應(yīng)時(shí)間、CPU負(fù)載、內(nèi)存使用等來(lái)決定系統(tǒng)的性能。負(fù)載測(cè)試是一個(gè)分析軟件應(yīng)用程序和支撐架構(gòu)、模擬真實(shí)環(huán)境的使用,從而來(lái)確定能夠接收的性能過(guò)程。壓力測(cè)試(Stress Testing)是通過(guò)確定一個(gè)系統(tǒng)的瓶頸或者不能接收的性能點(diǎn),來(lái)獲得系統(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)的未來(lái)性能;通過(guò)模擬成百上千個(gè)用戶,重復(fù)執(zhí)行和運(yùn)行測(cè)試,可以確認(rèn)性能瓶頸并優(yōu)化和調(diào)整應(yīng)用,目的在于尋找到瓶頸問(wèn)題。 當(dāng)一家企業(yè)自己組織力量或委托軟件公司代為開(kāi)發(fā)一套應(yīng)用系統(tǒng)的時(shí)候,尤其是以后在生產(chǎn)環(huán)境中實(shí)際使用起來(lái),用戶往往會(huì)產(chǎn)生疑問(wèn),這套系統(tǒng)能不能承受大量的并發(fā)用戶同時(shí)訪問(wèn)? 這類問(wèn)題最常見(jiàn)于采用聯(lián)機(jī)事務(wù)處理(OLTP)方式數(shù)據(jù)庫(kù)應(yīng)用、Web瀏覽和視頻點(diǎn)播等系統(tǒng)。這種問(wèn)題的解決要借助于科學(xué)的軟件測(cè)試手段和先進(jìn)的測(cè)試工具。 舉例說(shuō)明:電信計(jì)費(fèi)軟件 眾所周知,每月20日左右是市話交費(fèi)的高峰期,全市幾千個(gè)收費(fèi)網(wǎng)點(diǎn)同時(shí)啟動(dòng)。收費(fèi)過(guò)程一般分為兩步,首先要根據(jù)用戶提出的電話號(hào)碼來(lái)查詢出其當(dāng)月產(chǎn)生費(fèi)用,然后收取現(xiàn)金并將此用戶修改為已交費(fèi)狀態(tài)。一個(gè)用戶看起來(lái)簡(jiǎn)單的兩個(gè)步驟,但當(dāng)成百上千的終端,同時(shí)執(zhí)行這樣的操作時(shí),情況就大不一樣了,如此眾多的交易同時(shí)發(fā)生,對(duì)應(yīng)用程序本身、操作系統(tǒng)、中心數(shù)據(jù)庫(kù)服務(wù)器、中間件服務(wù)器、網(wǎng)絡(luò)設(shè)備的承受力都是一個(gè)嚴(yán)峻的考驗(yàn)。決策者不可能在發(fā)生問(wèn)題后才考慮系統(tǒng)的承受力, 預(yù)見(jiàn)軟件的并發(fā)承受力, 這是在軟件測(cè)試階段就應(yīng)該解決的問(wèn)題。 目前,大多數(shù)公司企業(yè)需要支持成百上千名用戶,各類應(yīng)用環(huán)境以及由不同供應(yīng)商提供的元件組裝起來(lái)的復(fù)雜產(chǎn)品,難以預(yù)知的用戶負(fù)載和愈來(lái)愈復(fù)雜的應(yīng)用程序,使公司擔(dān)憂會(huì)發(fā)生投放性能差、用戶遭受反應(yīng)慢、系統(tǒng)失靈等問(wèn)題。其結(jié)果就是導(dǎo)致公司收益的損失。 如何模擬實(shí)際情況呢? 找若干臺(tái)電腦和同樣數(shù)目的操作人員在同一時(shí)刻進(jìn)行操作,然后拿秒表記錄下反應(yīng)時(shí)間? 這樣的手工作坊式的測(cè)試方法不切實(shí)際,且無(wú)法捕捉程序內(nèi)部變化情況,這樣就需要壓力測(cè)試工具的輔助。 測(cè)試的基本策略是自動(dòng)負(fù)載測(cè)試,通過(guò)在一臺(tái)或幾臺(tái)PC機(jī)上模擬成百或上千的虛擬用戶同時(shí)執(zhí)行業(yè)務(wù)的情景,對(duì)應(yīng)用程序進(jìn)行測(cè)試,同時(shí)記錄下每一事務(wù)處理的時(shí)間、中間件服務(wù)器峰值數(shù)據(jù)、數(shù)據(jù)庫(kù)狀態(tài)等。通過(guò)可重復(fù)的、真實(shí)的測(cè)試能夠徹底地度量應(yīng)用的可擴(kuò)展性和性能,確定問(wèn)題所在以及優(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ù)庫(kù)及其他應(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è)試工具,通過(guò)可重復(fù)的、真實(shí)的測(cè)試,能夠徹底地度量應(yīng)用的可擴(kuò)展性和性能,可以在整個(gè)開(kāi)發(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è)試開(kāi)始以前對(duì)測(cè)試案例進(jìn)行調(diào)試,將正式測(cè)試開(kāi)始時(shí)的錯(cuò)誤降到最低。在測(cè)試進(jìn)行到關(guān)鍵過(guò)程環(huán)節(jié)時(shí),非常有必要進(jìn)行數(shù)據(jù)狀態(tài)的備份。制造初始數(shù)據(jù)意味著將合適的數(shù)據(jù)存儲(chǔ)下來(lái),需要的時(shí)候恢復(fù)它,初始數(shù)據(jù)提供了一個(gè)基線用來(lái)評(píng)估測(cè)試執(zhí)行的結(jié)果。 在測(cè)試正式執(zhí)行時(shí),還需要準(zhǔn)備業(yè)務(wù)測(cè)試數(shù)據(jù),比如測(cè)試并發(fā)查詢業(yè)務(wù),那么要求對(duì)應(yīng)的數(shù)據(jù)庫(kù)和表中有相當(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è)試出來(lái)的數(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 s cript等不同的監(jiān)控對(duì)象,支持Windows和UNIX測(cè)試環(huán)境。 最關(guān)鍵的仍然是測(cè)試過(guò)程中對(duì)監(jiān)控對(duì)象的靈活應(yīng)用,例如目前三層結(jié)構(gòu)的運(yùn)行模式廣泛使用,對(duì)中間件的并發(fā)性能測(cè)試作為問(wèn)題被提到議事日程上來(lái),許多系統(tǒng)都采用了國(guó)產(chǎn)中間件,選擇Java s cript監(jiān)控對(duì)象,手工編寫腳本,可以達(dá)到測(cè)試目的。 采用自動(dòng)化負(fù)載測(cè)試工具執(zhí)行的并發(fā)性能測(cè)試,基本遵循的測(cè)試過(guò)程有:測(cè)試需求與測(cè)試內(nèi)容,測(cè)試案例制定,測(cè)試環(huán)境準(zhǔn)備,測(cè)試腳本錄制、編寫與調(diào)試,腳本分配、回放配置與加載策略,測(cè)試執(zhí)行跟蹤,結(jié)果分析與定位問(wèn)題所在,測(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ù)庫(kù) V1.0”性能測(cè)試 中國(guó)軟件評(píng)測(cè)中心(CSTC)根據(jù)新華社技術(shù)局提出的《多媒體數(shù)據(jù)庫(kù)(一期)性能測(cè)試需求》和GB/T 17544《軟件包質(zhì)量要求和測(cè)試》的國(guó)家標(biāo)準(zhǔn),使用工業(yè)標(biāo)準(zhǔn)級(jí)負(fù)載測(cè)試工具對(duì)新華社使用的“新華社多媒體數(shù)據(jù)庫(kù) V1.0”進(jìn)行了性能測(cè)試。 性能測(cè)試的目的是模擬多用戶并發(fā)訪問(wèn)新華社多媒體數(shù)據(jù)庫(kù),執(zhí)行關(guān)鍵檢索業(yè)務(wù),分析系統(tǒng)性能。 性能測(cè)試的重點(diǎn)是針對(duì)系統(tǒng)并發(fā)壓力負(fù)載較大的主要檢索業(yè)務(wù),進(jìn)行并發(fā)測(cè)試和疲勞測(cè)試,系統(tǒng)采用B/S運(yùn)行模式。并發(fā)測(cè)試設(shè)計(jì)了特定時(shí)間段內(nèi)分別在中文庫(kù)、英文庫(kù)、圖片庫(kù)中進(jìn)行單檢索詞、多檢索詞以及變檢索式、混合檢索業(yè)務(wù)等并發(fā)測(cè)試案例。疲勞測(cè)試案例為在中文庫(kù)中并發(fā)用戶數(shù)200,進(jìn)行測(cè)試周期約8小時(shí)的單檢索詞檢索。在進(jìn)行并發(fā)和疲勞測(cè)試的同時(shí),監(jiān)測(cè)的測(cè)試指標(biāo)包括交易處理性能以及UNIX(Linux)、Oracle、Apache資源等。 測(cè)試結(jié)論:在新華社機(jī)房測(cè)試環(huán)境和內(nèi)網(wǎng)測(cè)試環(huán)境中,100M帶寬情況下,針對(duì)規(guī)定的各并發(fā)測(cè)試案例,系統(tǒng)能夠承受并發(fā)用戶數(shù)為200的負(fù)載壓力,最大交易數(shù)/分鐘達(dá)到78.73,運(yùn)行基本穩(wěn)定,但隨著負(fù)載壓力增大,系統(tǒng)性能有所衰減。 系統(tǒng)能夠承受200并發(fā)用戶數(shù)持續(xù)周期約8小時(shí)的疲勞壓力,基本能夠穩(wěn)定運(yùn)行。 通過(guò)對(duì)系統(tǒng)UNIX(Linux)、Oracle和Apache資源的監(jiān)控,系統(tǒng)資源能夠滿足上述并發(fā)和疲勞性能需求,且系統(tǒng)硬件資源尚有較大利用余地。 當(dāng)并發(fā)用戶數(shù)超過(guò)200時(shí),監(jiān)控到HTTP 500、connect和超時(shí)錯(cuò)誤,且Web服務(wù)器報(bào)內(nèi)存溢出錯(cuò)誤,系統(tǒng)應(yīng)進(jìn)一步提高性能,以支持更大并發(fā)用戶數(shù)。 建議進(jìn)一步優(yōu)化軟件系統(tǒng),充分利用硬件資源,縮短交易響應(yīng)時(shí)間。 疲勞強(qiáng)度與大數(shù)據(jù)量測(cè)試 疲勞測(cè)試是采用系統(tǒng)穩(wěn)定運(yùn)行情況下能夠支持的最大并發(fā)用戶數(shù),持續(xù)執(zhí)行一段時(shí)間業(yè)務(wù),通過(guò)綜合分析交易執(zhí)行指標(biāo)和資源監(jiān)控指標(biāo)來(lái)確定系統(tǒng)處理最大工作量強(qiáng)度性能的過(guò)程。 疲勞強(qiáng)度測(cè)試可以采用工具自動(dòng)化的方式進(jìn)行測(cè)試,也可以手工編寫程序測(cè)試,其中后者占的比例較大。 一般情況下以服務(wù)器能夠正常穩(wěn)定響應(yīng)請(qǐng)求的最大并發(fā)用戶數(shù)進(jìn)行一定時(shí)間的疲勞測(cè)試,獲取交易執(zhí)行指標(biāo)數(shù)據(jù)和系統(tǒng)資源監(jiān)控?cái)?shù)據(jù)。如出現(xiàn)錯(cuò)誤導(dǎo)致測(cè)試不能成功執(zhí)行,則及時(shí)調(diào)整測(cè)試指標(biāo),例如降低用戶數(shù)、縮短測(cè)試周期等。還有一種情況的疲勞測(cè)試是對(duì)當(dāng)前系統(tǒng)性能的評(píng)估,用系統(tǒng)正常業(yè)務(wù)情況下并發(fā)用戶數(shù)為基礎(chǔ),進(jìn)行一定時(shí)間的疲勞測(cè)試。 大數(shù)據(jù)量測(cè)試可以分為兩種類型:針對(duì)某些系統(tǒng)存儲(chǔ)、傳輸、統(tǒng)計(jì)、查詢等業(yè)務(wù)進(jìn)行大數(shù)據(jù)量的獨(dú)立數(shù)據(jù)量測(cè)試;與壓力性能測(cè)試、負(fù)載性能測(cè)試、疲勞性能測(cè)試相結(jié)合的綜合數(shù)據(jù)量測(cè)試方案。大數(shù)據(jù)量測(cè)試的關(guān)鍵是測(cè)試數(shù)據(jù)的準(zhǔn)備,可以依靠工具準(zhǔn)備測(cè)試數(shù)據(jù)。 速度測(cè)試目前主要是針對(duì)關(guān)鍵有速度要求的業(yè)務(wù)進(jìn)行手工測(cè)速度,可以在多次測(cè)試的基礎(chǔ)上求平均值,可以和工具測(cè)得的響應(yīng)時(shí)間等指標(biāo)做對(duì)比分析。 ·應(yīng)用在網(wǎng)絡(luò)上性能的測(cè)試 應(yīng)用在網(wǎng)絡(luò)上性能的測(cè)試重點(diǎn)是利用成熟先進(jìn)的自動(dòng)化技術(shù)進(jìn)行網(wǎng)絡(luò)應(yīng)用性能監(jiān)控、網(wǎng)絡(luò)應(yīng)用性能分析和網(wǎng)絡(luò)預(yù)測(cè)。 網(wǎng)絡(luò)應(yīng)用性能分析 網(wǎng)絡(luò)應(yīng)用性能分析的目的是準(zhǔn)確展示網(wǎng)絡(luò)帶寬、延遲、負(fù)載和TCP端口的變化是如何影響用戶的響應(yīng)時(shí)間的。利用網(wǎng)絡(luò)應(yīng)用性能分析工具,例如Application Expert,能夠發(fā)現(xiàn)應(yīng)用的瓶頸,我們可知應(yīng)用在網(wǎng)絡(luò)上運(yùn)行時(shí)在每個(gè)階段發(fā)生的應(yīng)用行為,在應(yīng)用線程級(jí)分析應(yīng)用的問(wèn)題?梢越鉀Q多種問(wèn)題:客戶端是否對(duì)數(shù)據(jù)庫(kù)服務(wù)器運(yùn)行了不必要的請(qǐng)求?當(dāng)服務(wù)器從客戶端接受了一個(gè)查詢,應(yīng)用服務(wù)器是否花費(fèi)了不可接受的時(shí)間聯(lián)系數(shù)據(jù)庫(kù)服務(wù)器?在投產(chǎn)前預(yù)測(cè)應(yīng)用的響應(yīng)時(shí)間;利用Application Expert調(diào)整應(yīng)用在廣域網(wǎng)上的性能;Application Expert能夠讓你快速、容易地仿真應(yīng)用性能,根據(jù)最終用戶在不同網(wǎng)絡(luò)配置環(huán)境下的響應(yīng)時(shí)間,用戶可以根據(jù)自己的條件決定應(yīng)用投產(chǎn)的網(wǎng)絡(luò)環(huán)境。 網(wǎng)絡(luò)應(yīng)用性能監(jiān)控 在系統(tǒng)試運(yùn)行之后,需要及時(shí)準(zhǔn)確地了解網(wǎng)絡(luò)上正在發(fā)生什么事情;什么應(yīng)用在運(yùn)行,如何運(yùn)行;多少PC正在訪問(wèn)LAN或WAN;哪些應(yīng)用程序?qū)е孪到y(tǒng)瓶頸或資源競(jìng)爭(zhēng),這時(shí)網(wǎng)絡(luò)應(yīng)用性能監(jiān)控以及網(wǎng)絡(luò)資源管理對(duì)系統(tǒng)的正常穩(wěn)定運(yùn)行是非常關(guān)鍵的。利用網(wǎng)絡(luò)應(yīng)用性能監(jiān)控工具,可以達(dá)到事半功倍的效果,在這方面我們可以提供的工具是Network Vantage。通俗地講,它主要用來(lái)分析關(guān)鍵應(yīng)用程序的性能,定位問(wèn)題的根源是在客戶端、服務(wù)器、應(yīng)用程序還是網(wǎng)絡(luò)。在大多數(shù)情況下用戶較關(guān)心的問(wèn)題還有哪些應(yīng)用程序占用大量帶寬,哪些用戶產(chǎn)生了最大的網(wǎng)絡(luò)流量,這個(gè)工具同樣能滿足要求。 網(wǎng)絡(luò)預(yù)測(cè) 考慮到系統(tǒng)未來(lái)發(fā)展的擴(kuò)展性,預(yù)測(cè)網(wǎng)絡(luò)流量的變化、網(wǎng)絡(luò)結(jié)構(gòu)的變化對(duì)用戶系統(tǒng)的影響非常重要。根據(jù)規(guī)劃數(shù)據(jù)進(jìn)行預(yù)測(cè)并及時(shí)提供網(wǎng)絡(luò)性能預(yù)測(cè)數(shù)據(jù)。我們利用網(wǎng)絡(luò)預(yù)測(cè)分析容量規(guī)劃工具PREDICTOR可以作到:設(shè)置服務(wù)水平、完成日網(wǎng)絡(luò)容量規(guī)劃、離線測(cè)試網(wǎng)絡(luò)、網(wǎng)絡(luò)失效和容量極限分析、完成日常故障診斷、預(yù)測(cè)網(wǎng)絡(luò)設(shè)備遷移和網(wǎng)絡(luò)設(shè)備升級(jí)對(duì)整個(gè)網(wǎng)絡(luò)的影響。 從網(wǎng)絡(luò)管理軟件獲取網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)、從現(xiàn)有的流量監(jiān)控軟件獲取流量信息(若沒(méi)有這類軟件可人工生成流量數(shù)據(jù)),這樣可以得到現(xiàn)有網(wǎng)絡(luò)的基本結(jié)構(gòu)。在基本結(jié)構(gòu)的基礎(chǔ)上,可根據(jù)網(wǎng)絡(luò)結(jié)構(gòu)的變化、網(wǎng)絡(luò)流量的變化生成報(bào)告和圖表,說(shuō)明這些變化是如何影響網(wǎng)絡(luò)性能的。 PREDICTOR提供如下信息:根據(jù)預(yù)測(cè)的結(jié)果幫助用戶及時(shí)升級(jí)網(wǎng)絡(luò),避免因關(guān)鍵設(shè)備超過(guò)利用閥值導(dǎo)致系統(tǒng)性能下降;哪個(gè)網(wǎng)絡(luò)設(shè)備需要升級(jí),這樣可減少網(wǎng)絡(luò)延遲、避免網(wǎng)絡(luò)瓶頸;根據(jù)預(yù)測(cè)的結(jié)果避免不必要的網(wǎng)絡(luò)升級(jí)。 ·應(yīng)用在服務(wù)器上性能的測(cè)試 對(duì)于應(yīng)用在服務(wù)器上性能的測(cè)試,可以采用工具監(jiān)控,也可以使用系統(tǒng)本身的監(jiān)控命令,例如Tuxedo中可以使用Top命令監(jiān)控資源使用情況。實(shí)施測(cè)試的目的是實(shí)現(xiàn)服務(wù)器設(shè)備、服務(wù)器操作系統(tǒng)、數(shù)據(jù)庫(kù)系統(tǒng)、應(yīng)用在服務(wù)器上性能的全面監(jiān)控,測(cè)試原理如下圖。 UNIX資源監(jiān)控指標(biāo)和描述 監(jiān)控指標(biāo) 描述 平均負(fù)載 系統(tǒng)正常狀態(tài)下,最后60秒同步進(jìn)程的平均個(gè)數(shù) 沖突率 在以太網(wǎng)上監(jiān)測(cè)到的每秒沖突數(shù) 進(jìn)程/線程交換率 進(jìn)程和線程之間每秒交換次數(shù) CPU利用率 CPU占用率(%) 磁盤交換率 磁盤交換速率 接收包錯(cuò)誤率 接收以太網(wǎng)數(shù)據(jù)包時(shí)每秒錯(cuò)誤數(shù) 包輸入率 每秒輸入的以太網(wǎng)數(shù)據(jù)包數(shù)目 中斷速率 CPU每秒處理的中斷數(shù) 輸出包錯(cuò)誤率 發(fā)送以太網(wǎng)數(shù)據(jù)包時(shí)每秒錯(cuò)誤數(shù) 包輸入率 每秒輸出的以太網(wǎng)數(shù)據(jù)包數(shù)目 讀入內(nèi)存頁(yè)速率 物理內(nèi)存中每秒讀入內(nèi)存頁(yè)的數(shù)目 寫出內(nèi)存頁(yè)速率 每秒從物理內(nèi)存中寫到頁(yè)文件中的內(nèi)存頁(yè)數(shù) 目或者從物理內(nèi)存中刪掉的內(nèi)存頁(yè)數(shù)目 內(nèi)存頁(yè)交換速率 每秒寫入內(nèi)存頁(yè)和從物理內(nèi)存中讀出頁(yè)的個(gè)數(shù) 進(jìn)程入交換率 交換區(qū)輸入的進(jìn)程數(shù)目 進(jìn)程出交換率 交換區(qū)輸出的進(jìn)程數(shù)目 系統(tǒng)CPU利用率 系統(tǒng)的CPU占用率(%) 用戶CPU利用率 用戶模式下的CPU占用率(%) 磁盤阻塞 磁盤每秒阻塞的字節(jié)數(shù) 二、為什么進(jìn)行性能測(cè)試? 目的是驗(yàn)證軟件系統(tǒng)是否能夠達(dá)到用戶提出的性能指標(biāo),同時(shí)發(fā)現(xiàn)軟件系統(tǒng)中存在的性能瓶頸,優(yōu)化軟件,最后起到優(yōu)化系統(tǒng)的目的。 包括以下幾個(gè)方面 1.評(píng)估系統(tǒng)的能力,測(cè)試中得到的負(fù)荷和響應(yīng)時(shí)間數(shù)據(jù)可以被用于驗(yàn)證所計(jì)劃的模型的能力,并幫助作出決策。 2.識(shí)別體系中的弱點(diǎn):受控的負(fù)荷可以被增加到一個(gè)極端的水平,并突破它,從而修復(fù)體系的瓶頸或薄弱的地方。 3.系統(tǒng)調(diào)優(yōu):重復(fù)運(yùn)行測(cè)試,驗(yàn)證調(diào)整系統(tǒng)的活動(dòng)得到了預(yù)期的結(jié)果,從而改進(jìn)性能。 檢測(cè)軟件中的問(wèn)題:長(zhǎng)時(shí)間的測(cè)試執(zhí)行可導(dǎo)致程序發(fā)生由于內(nèi)存泄露引起的失敗,揭示程序中的隱含的問(wèn)題或沖突。 4.驗(yàn)證穩(wěn)定性(resilience)可靠性(reliability):在一個(gè)生產(chǎn)負(fù)荷下執(zhí)行測(cè)試一定的時(shí)間是評(píng)估系統(tǒng)穩(wěn)定性和可靠性是否滿足要求的唯一方法。 性能測(cè)試類型包括負(fù)載測(cè)試,強(qiáng)度測(cè)試,容量測(cè)試等 負(fù)載測(cè)試:負(fù)載測(cè)試是一種性能測(cè)試指數(shù)據(jù)在超負(fù)荷環(huán)境中運(yùn)行,程序是否能夠承擔(dān)。 強(qiáng)度測(cè)試: 強(qiáng)度測(cè)試是一種性能測(cè)試,他在系統(tǒng)資源特別低的情況下軟件系統(tǒng)運(yùn)行情況。 容量測(cè)試:確定系統(tǒng)可處理同時(shí)在線的最大用戶數(shù) 觀察指標(biāo): 性能測(cè)試主要是通過(guò)自動(dòng)化的測(cè)試工具模擬多種正常、峰值以及異常負(fù)載條件來(lái)對(duì)系統(tǒng)的各項(xiàng)性能指標(biāo)進(jìn)行測(cè)試。負(fù)載測(cè)試和壓力測(cè)試都屬于性能測(cè)試,兩者可以結(jié)合進(jìn)行。通過(guò)負(fù)載測(cè)試,確定在各種工作負(fù)載下系統(tǒng)的性能,目標(biāo)是測(cè)試當(dāng)負(fù)載逐漸增加時(shí),系統(tǒng)各項(xiàng)性能指標(biāo)的變化情況。壓力測(cè)試是通過(guò)確定一個(gè)系統(tǒng)的瓶頸或者不能接收的性能點(diǎn),來(lái)獲得系統(tǒng)能提供的最大服務(wù)級(jí)別的測(cè)試。 在實(shí)際中作中我們經(jīng)常會(huì)對(duì)兩種類型軟件進(jìn)行測(cè)試:bs和cs,這兩方面的性能指標(biāo)一般需要哪些內(nèi)容呢? Bs結(jié)構(gòu)程序一般會(huì)關(guān)注的通用指標(biāo)如下(簡(jiǎn)): Web服務(wù)器指標(biāo)指標(biāo): * Avg Rps: 平均每秒鐘響應(yīng)次數(shù)=總請(qǐng)求時(shí)間 / 秒數(shù); * Avg time to last byte per terstion (mstes):平均每秒業(yè)務(wù)角本的迭代次數(shù) ,有人會(huì)把這兩者混淆; * Successful Rounds:成功的請(qǐng)求; * Failed Rounds :失敗的請(qǐng)求; * Successful Hits :成功的點(diǎn)擊次數(shù); * Failed Hits :失敗的點(diǎn)擊次數(shù); * Hits Per Second :每秒點(diǎn)擊次數(shù); * Successful Hits Per Second :每秒成功的點(diǎn)擊次數(shù); * Failed Hits Per Second :每秒失敗的點(diǎn)擊次數(shù); * Attempted Connections :嘗試鏈接數(shù); CS結(jié)構(gòu)程序,由于一般軟件后臺(tái)通常為數(shù)據(jù)庫(kù),所以我們更注重?cái)?shù)據(jù)庫(kù)的測(cè)試指標(biāo): * User 0 Connections :用戶連接數(shù),也就是數(shù)據(jù)庫(kù)的連接數(shù)量; * Number of deadlocks:數(shù)據(jù)庫(kù)死鎖; * Butter Cache hit :數(shù)據(jù)庫(kù)Cache的命中情況 當(dāng)然,在實(shí)際中我們還會(huì)察看多用戶測(cè)試情況下的內(nèi)存,CPU,系統(tǒng)資源調(diào)用情況。這些指標(biāo)其實(shí)是引申出來(lái)性能測(cè)試中的一種:競(jìng)爭(zhēng)測(cè)試。什么是競(jìng)爭(zhēng)測(cè)試,軟件競(jìng)爭(zhēng)使用各種資源(數(shù)據(jù)紀(jì)錄,內(nèi)存等),看他與其他相關(guān)系統(tǒng)對(duì)資源的爭(zhēng)奪能力。 我們知道軟件架構(gòu)在實(shí)際測(cè)試中制約著測(cè)試策略和工具的選擇。如何選擇性能測(cè)試策略是我們?cè)趯?shí)際工作中需要了解的。一般軟件可以按照系統(tǒng)架構(gòu)分成幾種類型: c/s client/Server 客戶端/服務(wù)器架構(gòu) 基于客戶端/服務(wù)器的三層架構(gòu) 基于客戶端/服務(wù)器的分布式架構(gòu) b/s 基于瀏覽器/Web服務(wù)器的三層架構(gòu) 基于中間件應(yīng)用服務(wù)器的三層架構(gòu)l 基于Web服務(wù)器和中間件的多層架構(gòu)l 三、性能測(cè)試的步驟 在每種不同的系統(tǒng)架構(gòu)的實(shí)施中,開(kāi)發(fā)人員可能選擇不同的實(shí)現(xiàn)方式,造成實(shí)際情況紛繁復(fù)雜。我們不可能對(duì)每種技術(shù)都詳細(xì)解說(shuō),這里只是介紹一種方法提供給你如何選擇測(cè)試策略,從而幫助分析軟件不同部分的性能指標(biāo),進(jìn)而分析出整體架構(gòu)的性能指標(biāo)和性能瓶頸。 由于工程和項(xiàng)目的不同,所選用的度量,評(píng)估方法也有不同之處。不過(guò)仍然有一些通用的步驟幫助我們完成一個(gè)性能測(cè)試項(xiàng)目。步驟如下 1. 制定目標(biāo)和分析系統(tǒng) 2. 選擇測(cè)試度量的方法 3. 學(xué)習(xí)的相關(guān)技術(shù)和工具 4. 制定評(píng)估標(biāo)準(zhǔn) 5. 設(shè)計(jì)測(cè)試用例 6. 運(yùn)行測(cè)試用例 7. 分析測(cè)試結(jié)果 ·制定目標(biāo)和分析系統(tǒng) 每一個(gè)性能測(cè)試計(jì)劃中第一步都會(huì)制定目標(biāo)和分析系統(tǒng)構(gòu)成。只有明確目標(biāo)和了解系統(tǒng)構(gòu)成才會(huì)澄清測(cè)試范圍,知道在測(cè)試中要掌握什么樣的技術(shù)。 目標(biāo): 1. 確定客戶需求和期望 2. 實(shí)際業(yè)務(wù)需求 3. 系統(tǒng)需求 系統(tǒng)組成 系統(tǒng)組成這里包含幾方面含義:系統(tǒng)類別,系統(tǒng)構(gòu)成,系統(tǒng)功能等。了解這些內(nèi)容的本質(zhì)其實(shí)是幫助我們明確測(cè)試的范圍,選者適當(dāng)?shù)臏y(cè)試方法來(lái)進(jìn)行測(cè)試。 系統(tǒng)類別:分清系統(tǒng)類別是我們掌握什么樣的技術(shù)的前提,掌握相應(yīng)技術(shù)做性能測(cè)試才可能成功。例如:系統(tǒng)類別是bs結(jié)構(gòu),需要掌握 http協(xié)議,java,html等技術(shù) 。或者是cs結(jié)構(gòu),可能要了解操作系統(tǒng),winsock,com等。所以甄別系統(tǒng)類別對(duì)于我們來(lái)說(shuō)很重要。 系統(tǒng)構(gòu)成:硬件設(shè)置,操作系統(tǒng)設(shè)置是性能測(cè)試的制約條件,一般性能測(cè)試都是利用測(cè)試工具模仿大量的實(shí)際用戶操作,系統(tǒng)在超負(fù)荷情形下運(yùn)作。不同的系統(tǒng)構(gòu)成性能測(cè)試就會(huì)得到不同的結(jié)果。 系統(tǒng)功能:系統(tǒng)功能指系統(tǒng)提供的不同子系統(tǒng),辦公管理系統(tǒng)中的公文子系統(tǒng),會(huì)議子系統(tǒng)等,系統(tǒng)工能是性能測(cè)試中要模擬的環(huán)節(jié),了解這些是必要的。 ·選擇測(cè)試度量的方法 經(jīng)過(guò)第一步,將會(huì)對(duì)系統(tǒng)有清醒的認(rèn)識(shí)。接下來(lái)我們將把精力放在軟件度量上,收集系統(tǒng)相關(guān)的數(shù)據(jù)。 度量的相關(guān)方面: * 制定規(guī)范 * 制定相關(guān)流程, 角色,職責(zé) * 制定改進(jìn)策略 * 制定結(jié)果對(duì)比標(biāo)準(zhǔn) ·學(xué)習(xí)的相關(guān)技術(shù)和工具 性能測(cè)試是通過(guò)工具,模擬大量用戶操作,對(duì)系統(tǒng)增加負(fù)載。所以需要掌握一定的工具知識(shí)才能進(jìn)行性能測(cè)試。大家都知道性能測(cè)試工具一般通過(guò)winsock,http等協(xié)議紀(jì)錄用戶操作。而協(xié)議選擇是基于軟件的系統(tǒng)架構(gòu)實(shí)現(xiàn)(web一般選擇http協(xié)議,cs選擇winsock協(xié)議),不同的性能測(cè)試工具,腳本語(yǔ)言也不同,比如rational robot中vu腳本用類c語(yǔ)言實(shí)現(xiàn)。 開(kāi)展性能測(cè)試需要對(duì)各種性能測(cè)試工具進(jìn)行評(píng)估,因?yàn)槊恳环N性能測(cè)試工具都有自身的特點(diǎn),只有經(jīng)過(guò)工具評(píng)估,才能選擇符合現(xiàn)有軟件架構(gòu)的性能測(cè)試工具。確定測(cè)試工具后,需要組織測(cè)試人員進(jìn)行工具的學(xué)習(xí),培訓(xùn)相關(guān)技術(shù)。 ·制定評(píng)估標(biāo)準(zhǔn) 任何測(cè)試的目的都是確保軟件符合預(yù)先規(guī)定的目標(biāo)和要求。性能測(cè)試也不例外。所以必須制定一套標(biāo)準(zhǔn)。 通常性能測(cè)試有四種模型技術(shù)可用于評(píng)估: *線性投射:用大量的過(guò)去的,擴(kuò)展的或者將來(lái)可能發(fā)生的數(shù)據(jù)組成散布圖,利用這個(gè)圖表不斷和系統(tǒng)的當(dāng)前狀況對(duì)比。 *分析模型:用排隊(duì)論公式和算法預(yù)測(cè)響應(yīng)時(shí)間,利用描述工作量的數(shù)據(jù)和系統(tǒng)本質(zhì)關(guān)聯(lián)起來(lái) *模仿:模仿實(shí)際用戶的使用方法測(cè)試你的系統(tǒng) *基準(zhǔn):定義測(cè)試和你最初的測(cè)試作為標(biāo)準(zhǔn),利用它和所有后來(lái)進(jìn)行的測(cè)試結(jié)果進(jìn)行對(duì)比 ·設(shè)計(jì)測(cè)試用例 設(shè)計(jì)測(cè)試用例是在了解軟件業(yè)務(wù)流程的基礎(chǔ)上。設(shè)計(jì)測(cè)試用例的原則是受最小的影響提供最多的測(cè)試信息,設(shè)計(jì)測(cè)試用例的目標(biāo)是一次盡可能的包含多個(gè)測(cè)試要素。這些測(cè)試用例必須是測(cè)試工具可以實(shí)現(xiàn)的,不同的測(cè)試場(chǎng)景將測(cè)試不同的功能。因?yàn)樾阅軠y(cè)試不同于平時(shí)的測(cè)試用例,盡可能把性能測(cè)試用例設(shè)計(jì)的復(fù)雜,才有可能發(fā)現(xiàn)軟件的性能瓶頸。 ·運(yùn)行測(cè)試用例 通過(guò)性能測(cè)試工具運(yùn)行測(cè)試用例。同一環(huán)境下作的性能測(cè)試得到的測(cè)試結(jié)果是不準(zhǔn)確的,所以在運(yùn)行這些測(cè)試用例的時(shí)候,需要用不同的測(cè)試環(huán)境,不同的機(jī)器配置上運(yùn)行。 ·分析測(cè)試結(jié)果 運(yùn)行測(cè)試用例后,收集相關(guān)信息,進(jìn)行數(shù)據(jù)統(tǒng)計(jì)分析,找到性能瓶頸。通過(guò)排除誤差和其他因素,讓測(cè)試結(jié)果體現(xiàn)接近真實(shí)情況。不同的體系結(jié)構(gòu)分析測(cè)試結(jié)果的方法也不同,bs結(jié)構(gòu)我們會(huì)分析網(wǎng)絡(luò)帶寬,流量對(duì)用戶操作響應(yīng)的影響,而cs結(jié)構(gòu)我們可能更關(guān)心會(huì)系統(tǒng)整體配置對(duì)用戶操作的影響。 四、性能測(cè)試方法 對(duì)于企業(yè)應(yīng)用程序,有許多進(jìn)行性能測(cè)試的方法,其中一些方法實(shí)行起來(lái)要比其他方法困難。所要進(jìn)行的性能測(cè)試的類型取決于想要達(dá)到的結(jié)果。例如,對(duì)于可再現(xiàn)性,基準(zhǔn)測(cè)試是最好的方法。而要從當(dāng)前用戶負(fù)載的角度測(cè)試系統(tǒng)的上限,則應(yīng)該使用容量規(guī)劃測(cè)試。本文將介紹幾種設(shè)置和運(yùn)行性能測(cè)試的方法,并討論這些方法的區(qū)別。 如果不進(jìn)行合理的規(guī)劃,對(duì)J2EE應(yīng)用程序進(jìn)行性能測(cè)試將會(huì)是一項(xiàng)令人望而生畏且有些混亂的任務(wù)。因?yàn)閷?duì)于任何的軟件開(kāi)發(fā)流程,都必須收集需求、理解業(yè)務(wù)需要,并在進(jìn)行實(shí)際測(cè)試之前設(shè)計(jì)出正式的進(jìn)度表。性能測(cè)試的需求由業(yè)務(wù)需要驅(qū)動(dòng),并由一組用例闡明。這些用例可以基于歷史數(shù)據(jù)(例如,服務(wù)器一周的負(fù)載模式)或預(yù)測(cè)的近似值。弄清楚需要測(cè)試的內(nèi)容之后,就需要知道如何進(jìn)行測(cè)試了。 在開(kāi)發(fā)階段前期,應(yīng)該使用基準(zhǔn)測(cè)試來(lái)確定應(yīng)用程序中是否出現(xiàn)性能倒退;鶞(zhǔn)測(cè)試可以在一個(gè)相對(duì)短的時(shí)間內(nèi)收集可重復(fù)的結(jié)果。進(jìn)行基準(zhǔn)測(cè)試的最好方法是,每次測(cè)試改變一個(gè)且只改變一個(gè)參數(shù)。例如,如果想知道增加JVM內(nèi)存是否會(huì)影響應(yīng)用程序的性能,就逐次遞增JVM內(nèi)存(例如,從1024 MB增至1224 MB,然后是1524 MB,最后是2024 MB),在每個(gè)階段收集結(jié)果和環(huán)境數(shù)據(jù),記錄信息,然后轉(zhuǎn)到下一階段。這樣在分析測(cè)試結(jié)果時(shí)就有跡可循。下一小節(jié)我將介紹什么是基準(zhǔn)測(cè)試,以及運(yùn)行基準(zhǔn)測(cè)試的最佳參數(shù)。 開(kāi)發(fā)階段后期,在應(yīng)用程序中的bug已經(jīng)被解決,應(yīng)用程序達(dá)到一種穩(wěn)定狀態(tài)之后,可以運(yùn)行更為復(fù)雜的測(cè)試,確定系統(tǒng)在不同的負(fù)載模式下的表現(xiàn)。這些測(cè)試被稱為容量規(guī)劃測(cè)試、滲入測(cè)試(soak test)、峰谷測(cè)試(peak-rest test),它們旨在通過(guò)測(cè)試應(yīng)用程序的可靠性、健壯性和可伸縮性來(lái)測(cè)試接近于現(xiàn)實(shí)世界的場(chǎng)景。對(duì)于下面的描述應(yīng)該從抽象的意義上理解,因?yàn)槊總(gè)應(yīng)用程序的使用模式都是不同的。例如,容量規(guī)劃測(cè)試通常都使用較緩慢的ramp-up(下文有定義),但是如果應(yīng)用程序在一天之中的某個(gè)時(shí)段中有快速突發(fā)的流量,那么自然應(yīng)該修改測(cè)試以反映這種情況。但是,要記住,因?yàn)楦牧藴y(cè)試參數(shù)(比如ramp-up周期或用戶的考慮時(shí)間(think-time)),測(cè)試的結(jié)果肯定也會(huì)改變。一個(gè)不錯(cuò)的方法是,運(yùn)行一系列的基準(zhǔn)測(cè)試,確立一個(gè)已知的可控環(huán)境,然后再對(duì)變化進(jìn)行比較。 基準(zhǔn)測(cè)試 基準(zhǔn)測(cè)試的關(guān)鍵是要獲得一致的、可再現(xiàn)的結(jié)果?稍佻F(xiàn)的結(jié)果有兩個(gè)好處:減少重新運(yùn)行測(cè)試的次數(shù);對(duì)測(cè)試的產(chǎn)品和產(chǎn)生的數(shù)字更為確信。使用的性能測(cè)試工具可能會(huì)對(duì)測(cè)試結(jié)果產(chǎn)生很大影響。假定測(cè)試的兩個(gè)指標(biāo)是服務(wù)器的響應(yīng)時(shí)間和吞吐量,它們會(huì)受到服務(wù)器上的負(fù)載的影響。服務(wù)器上的負(fù)載受兩個(gè)因素影響:同時(shí)與服務(wù)器通信的連接(或虛擬用戶)的數(shù)目,以及每個(gè)虛擬用戶請(qǐng)求之間的考慮時(shí)間的長(zhǎng)短。很明顯,與服務(wù)器通信的用戶越多,負(fù)載就越大。同樣,請(qǐng)求之間的考慮時(shí)間越短,負(fù)載也越大。這兩個(gè)因素的不同組合會(huì)產(chǎn)生不同的服務(wù)器負(fù)載等級(jí)。記住,隨著服務(wù)器上負(fù)載的增加,吞吐量會(huì)不斷攀升,直到到達(dá)一個(gè)點(diǎn)。 注意,吞吐量以穩(wěn)定的速度增長(zhǎng),然后在某一個(gè)點(diǎn)上穩(wěn)定下來(lái)。 在某一點(diǎn)上,執(zhí)行隊(duì)列開(kāi)始增長(zhǎng),因?yàn)榉⻊?wù)器上所有的線程都已投入使用,傳入的請(qǐng)求不再被立即處理,而是放入隊(duì)列中,當(dāng)線程空閑時(shí)再處理。 注意,最初的一段時(shí)間,執(zhí)行隊(duì)列的長(zhǎng)度為零,然后就開(kāi)始以穩(wěn)定的速度增長(zhǎng)。這是因?yàn)橄到y(tǒng)中的負(fù)載在穩(wěn)定增長(zhǎng),雖然最初系統(tǒng)有足夠的空閑線程去處理增加的負(fù)載,最終它還是不能承受,而必須將其排入隊(duì)列。 當(dāng)系統(tǒng)達(dá)到飽和點(diǎn),服務(wù)器吞吐量保持穩(wěn)定后,就達(dá)到了給定條件下的系統(tǒng)上限。但是,隨著服務(wù)器負(fù)載的繼續(xù)增長(zhǎng),系統(tǒng)的響應(yīng)時(shí)間也隨之延長(zhǎng),雖然吞吐量保持穩(wěn)定。 注意,在執(zhí)行隊(duì)列(圖2)開(kāi)始增長(zhǎng)的同時(shí),響應(yīng)時(shí)間也開(kāi)始以遞增的速度增長(zhǎng)。這是因?yàn)檎?qǐng)求不能被及時(shí)處理。 為了獲得真正可再現(xiàn)的結(jié)果,應(yīng)該將系統(tǒng)置于相同的高負(fù)載下。為此,與服務(wù)器通信的虛擬用戶應(yīng)該將請(qǐng)求之間的考慮時(shí)間設(shè)為零。這樣服務(wù)器會(huì)立即超載,并開(kāi)始構(gòu)建執(zhí)行隊(duì)列。如果請(qǐng)求(虛擬用戶)數(shù)保持一致,基準(zhǔn)測(cè)試的結(jié)果應(yīng)該會(huì)非常精確,完全可以再現(xiàn)。 您可能要問(wèn)的一個(gè)問(wèn)題是:“如何度量結(jié)果?”對(duì)于一次給定的測(cè)試,應(yīng)該取響應(yīng)時(shí)間和吞吐量的平均值。精確地獲得這些值的唯一方法是一次加載所有的用戶,然后在預(yù)定的時(shí)間段內(nèi)持續(xù)運(yùn)行。這稱為“flat”測(cè)試。 與此相對(duì)應(yīng)的是“ramp-up”測(cè)試。 ramp-up測(cè)試中的用戶是交錯(cuò)上升的(每幾秒增加一些新用戶)。ramp-up測(cè)試不能產(chǎn)生精確和可重現(xiàn)的平均值,這是因?yàn)橛捎谟脩舻脑黾邮敲看我徊糠郑到y(tǒng)的負(fù)載在不斷地變化。因此,flat運(yùn)行是獲得基準(zhǔn)測(cè)試數(shù)據(jù)的理想模式。 這不是在貶低ramp-up測(cè)試的價(jià)值。實(shí)際上,ramp-up測(cè)試對(duì)找出以后要運(yùn)行的flat測(cè)試的范圍非常有用。ramp-up測(cè)試的優(yōu)點(diǎn)是,可以看出隨著系統(tǒng)負(fù)載的改變,測(cè)量值是如何改變的。然后可以據(jù)此選擇以后要運(yùn)行的flat測(cè)試的范圍。 Flat測(cè)試的問(wèn)題是系統(tǒng)會(huì)遇到“波動(dòng)”效果。 ) 注意波動(dòng)的出現(xiàn),吞吐量不再是平滑的。 這在系統(tǒng)的各個(gè)方面都有所體現(xiàn),包括CPU的使用量。 注意,每隔一段時(shí)間就會(huì)出現(xiàn)一個(gè)波形。CPU使用量不再是平滑的,而是有了像吞吐量圖那樣的尖峰。 此外,執(zhí)行隊(duì)列也承受著不穩(wěn)定的負(fù)載,因此可以看到,隨著系統(tǒng)負(fù)載的增加和減少,執(zhí)行隊(duì)列也在增長(zhǎng)和縮減。 注意,每隔一段時(shí)間就會(huì)出現(xiàn)一個(gè)波形。執(zhí)行隊(duì)列曲線與上面的CPU使用量圖非常相似。 最后,系統(tǒng)中事務(wù)的響應(yīng)時(shí)間也遵循著這個(gè)波動(dòng)模式。 注意,每隔一段時(shí)間就會(huì)出現(xiàn)一個(gè)波形。事務(wù)的響應(yīng)時(shí)間也與上面的圖類似,只不過(guò)其效果隨著時(shí)間的推移逐漸減弱。 當(dāng)測(cè)試中所有的用戶都同時(shí)執(zhí)行幾乎相同的操作時(shí),就會(huì)發(fā)生這種現(xiàn)象。這將會(huì)產(chǎn)生非常不可靠和不精確的結(jié)果,所以必須采取一些措施防止這種情況的出現(xiàn)。有兩種方法可以從這種類型的結(jié)果中獲得精確的測(cè)量值。如果測(cè)試可以運(yùn)行相當(dāng)長(zhǎng)的時(shí)間(有時(shí)是幾個(gè)小時(shí),取決于用戶的操作持續(xù)的時(shí)間),最后由于隨機(jī)事件的本性使然,服務(wù)器的吞吐量會(huì)被“拉平”;蛘,可以只選取波形中兩個(gè)平息點(diǎn)之間的測(cè)量值。該方法的缺點(diǎn)是可以捕獲數(shù)據(jù)的時(shí)間非常短。 性能規(guī)劃測(cè)試 對(duì)于性能規(guī)劃類型的測(cè)試來(lái)說(shuō),其目標(biāo)是找出,在特定的環(huán)境下,給定應(yīng)用程序的性能可以達(dá)到何種程度。此時(shí)可重現(xiàn)性就不如在基準(zhǔn)測(cè)試中那么重要了,因?yàn)闇y(cè)試中通常都會(huì)有隨機(jī)因子。引入隨機(jī)因子的目的是為了盡量模擬具有真實(shí)用戶負(fù)載的現(xiàn)實(shí)世界應(yīng)用程序。通常,具體的目標(biāo)是找出系統(tǒng)在特定的服務(wù)器響應(yīng)時(shí)間下支持的當(dāng)前用戶的最大數(shù)。例如,您可能想知道:如果要以5秒或更少的響應(yīng)時(shí)間支持8,000個(gè)當(dāng)前用戶,需要多少個(gè)服務(wù)器?要回答這個(gè)問(wèn)題,需要知道系統(tǒng)的更多信息。 要確定系統(tǒng)的容量,需要考慮幾個(gè)因素。通常,服務(wù)器的用戶總數(shù)非常大(以十萬(wàn)計(jì)),但是實(shí)際上,這個(gè)數(shù)字并不能說(shuō)明什么。真正需要知道的是,這些用戶中有多少是并發(fā)與服務(wù)器通信的。其次要知道的是,每個(gè)用戶的“考慮時(shí)間”即請(qǐng)求間時(shí)間是多少。這非常重要,因?yàn)榭紤]時(shí)間越短,系統(tǒng)所能支持的并發(fā)用戶越少。例如,如果用戶的考慮時(shí)間是1秒,那么系統(tǒng)可能只能支持?jǐn)?shù)百個(gè)這樣的并發(fā)用戶。但是,如果用戶的考慮時(shí)間是30秒,那么系統(tǒng)則可能支持?jǐn)?shù)萬(wàn)個(gè)這樣的并發(fā)用戶(假定硬件和應(yīng)用程序都是相同的)。在現(xiàn)實(shí)世界中,通常難以確定用戶的確切考慮時(shí)間。還要注意,在現(xiàn)實(shí)世界中,用戶不會(huì)精確地按照間隔時(shí)間發(fā)出請(qǐng)求。 于是就引入了隨機(jī)性。如果知道普通用戶的考慮時(shí)間是5秒,誤差為20%,那么在設(shè)計(jì)負(fù)載測(cè)試時(shí),就要確保請(qǐng)求間的時(shí)間為5×(1 +/- 20%)秒。此外,可以利用“調(diào)步”的理念向負(fù)載場(chǎng)景中引入更多的隨機(jī)性。它是這樣的:在一個(gè)虛擬用戶完成一整套的請(qǐng)求后,該用戶暫停一個(gè)設(shè)定的時(shí)間段,或者一個(gè)小的隨機(jī)時(shí)間段(例如,2×(1 +/- 25%)秒),然后再繼續(xù)執(zhí)行下一套請(qǐng)求。將這兩種隨機(jī)化方法運(yùn)用到測(cè)試中,可以提供更接近于現(xiàn)實(shí)世界的場(chǎng)景。 現(xiàn)在該進(jìn)行實(shí)際的容量規(guī)劃測(cè)試了。接下來(lái)的問(wèn)題是:如何加載用戶以模擬負(fù)載狀態(tài)?最好的方法是模擬高峰時(shí)間用戶與服務(wù)器通信的狀況。這種用戶負(fù)載狀態(tài)是在一段時(shí)間內(nèi)逐步達(dá)到的嗎?如果是,應(yīng)該使用ramp-up類型的測(cè)試,每隔幾秒增加x個(gè)用戶。或者,所有用戶是在一個(gè)非常短的時(shí)間內(nèi)同時(shí)與系統(tǒng)通信?如果是這樣,就應(yīng)該使用flat類型的測(cè)試,將所有的用戶同時(shí)加載到服務(wù)器。兩種不同類型的測(cè)試會(huì)產(chǎn)生沒(méi)有可比性的不同測(cè)試。例如,如果進(jìn)行ramp-up類型的測(cè)試,系統(tǒng)可以以4秒或更短的響應(yīng)時(shí)間支持5,000個(gè)用戶。而執(zhí)行flat測(cè)試,您會(huì)發(fā)現(xiàn),對(duì)于5,000個(gè)用戶,系統(tǒng)的平均響應(yīng)時(shí)間要大于4秒。這是由于ramp-up測(cè)試固有的不準(zhǔn)確性使其不能顯示系統(tǒng)可以支持的并發(fā)用戶的精確數(shù)字。以門戶應(yīng)用程序?yàn)槔S著門戶規(guī)模的擴(kuò)大和集群規(guī)模的擴(kuò)大,這種不確定性就會(huì)隨之顯現(xiàn)。 這不是說(shuō)不應(yīng)該使用ramp-up測(cè)試。對(duì)于系統(tǒng)負(fù)載在一段比較長(zhǎng)的時(shí)間內(nèi)緩慢增加的情況,ramp-up測(cè)試效果還是不錯(cuò)的。這是因?yàn)橄到y(tǒng)能夠隨著時(shí)間不斷調(diào)整。如果使用快速ramp-up測(cè)試,系統(tǒng)就會(huì)滯后,從而報(bào)告一個(gè)較相同用戶負(fù)載的flat測(cè)試低的響應(yīng)時(shí)間。那么,什么是確定容量的最好方法?結(jié)合兩種負(fù)載類型的優(yōu)點(diǎn),并運(yùn)行一系列的測(cè)試,就會(huì)產(chǎn)生最好的結(jié)果。例如,首先使用ramp-up測(cè)試確定系統(tǒng)可以支持的用戶范圍。確定了范圍之后,以該范圍內(nèi)不同的并發(fā)用戶負(fù)載進(jìn)行一系列的flat測(cè)試,更精確地確定系統(tǒng)的容量。 滲入測(cè)試 滲入測(cè)試是一種比較簡(jiǎn)單的性能測(cè)試。滲入測(cè)試所需時(shí)間較長(zhǎng),它使用固定數(shù)目的并發(fā)用戶測(cè)試系統(tǒng)的總體健壯性。這些測(cè)試將會(huì)通過(guò)內(nèi)存泄漏、增加的垃圾收集(GC)或系統(tǒng)的其他問(wèn)題,顯示因長(zhǎng)時(shí)間運(yùn)行而出現(xiàn)的任何性能降低。測(cè)試運(yùn)行的時(shí)間越久,您對(duì)系統(tǒng)就越了解。運(yùn)行兩次測(cè)試是一個(gè)好主意——一次使用較低的用戶負(fù)載(要在系統(tǒng)容量之下,以便不會(huì)出現(xiàn)執(zhí)行隊(duì)列),一次使用較高的負(fù)載(以便出現(xiàn)積極的執(zhí)行隊(duì)列)。 測(cè)試應(yīng)該運(yùn)行幾天的時(shí)間,以便真正了解應(yīng)用程序的長(zhǎng)期健康狀況。要確保測(cè)試的應(yīng)用程序盡可能接近現(xiàn)實(shí)世界的情況,用戶場(chǎng)景也要逼真(虛擬用戶通過(guò)應(yīng)用程序?qū)Ш降姆绞揭c現(xiàn)實(shí)世界一致),從而測(cè)試應(yīng)用程序的全部特性。確保運(yùn)行了所有必需的監(jiān)控工具,以便精確地監(jiān)測(cè)并跟蹤問(wèn)題。 峰谷測(cè)試 峰谷測(cè)試兼有容量規(guī)劃ramp-up類型測(cè)試和滲入測(cè)試的特征。其目標(biāo)是確定從高負(fù)載(例如系統(tǒng)高峰時(shí)間的負(fù)載)恢復(fù)、轉(zhuǎn)為幾乎空閑、然后再攀升到高負(fù)載、再降低的能力。 實(shí)現(xiàn)這種測(cè)試的最好方法就是,進(jìn)行一系列的快速ramp-up測(cè)試,繼之以一段時(shí)間的平穩(wěn)狀態(tài)(取決于業(yè)務(wù)需求),然后急劇降低負(fù)載,此時(shí)可以令系統(tǒng)平息一下,然后再進(jìn)行快速的ramp-up;反復(fù)重復(fù)這個(gè)過(guò)程。這樣可以確定以下事項(xiàng):第二次高峰是否重現(xiàn)第一次的峰值?其后的每次高峰是等于還是大于第一次的峰值?在測(cè)試過(guò)程中,系統(tǒng)是否顯示了內(nèi)存或GC性能降低的有關(guān)跡象?測(cè)試運(yùn)行(不停地重復(fù)“峰值/空閑”周期)的時(shí)間越長(zhǎng),您對(duì)系統(tǒng)的長(zhǎng)期健康狀況就越了解。 結(jié)束語(yǔ) 本文介紹了進(jìn)行性能測(cè)試的幾種方法。取決于業(yè)務(wù)需求、開(kāi)發(fā)周期和應(yīng)用程序的生命周期,對(duì)于特定的企業(yè),某些測(cè)試會(huì)比其他的更適合。但是,對(duì)于任何情況,在決定進(jìn)行某一種測(cè)試前,都應(yīng)該問(wèn)自己一些基本問(wèn)題。這些問(wèn)題的答案將會(huì)決定哪種測(cè)試方法是最好的。 這些問(wèn)題包括: 結(jié)果的可重復(fù)性需要有多高? 測(cè)試需要運(yùn)行和重新運(yùn)行幾次? 您處于開(kāi)放周期的哪個(gè)階段? 您的業(yè)務(wù)需求是什么? 您的用戶需求是什么? 您希望生產(chǎn)中的系統(tǒng)在維護(hù)停機(jī)時(shí)間中可以持續(xù)多久? 在一個(gè)正常的業(yè)務(wù)日,預(yù)期的用戶負(fù)載是多少? 將這些問(wèn)題的答案與上述性能測(cè)試類型相對(duì)照,應(yīng)該就可以制定出測(cè)試應(yīng)用程序的總體性能的完美計(jì)劃。
抱歉,此頁(yè)面的內(nèi)容受版權(quán)保護(hù),復(fù)制需扣除次數(shù),次數(shù)不足時(shí)需付費(fèi)購(gòu)買。
如需下載請(qǐng)點(diǎn)擊:點(diǎn)擊此處下載
掃碼付費(fèi)即可復(fù)制
手機(jī)射頻 | 調(diào)制與解調(diào) | OSI模型 | 支撐網(wǎng) | 平板電腦 | cinr | 峰值帶寬 | 網(wǎng)絡(luò)安全技術(shù) | 移動(dòng)支付 | 光纖終端盒 | 寬帶無(wú)線接入技術(shù) | RFE |
移動(dòng)通信網(wǎng) | 通信人才網(wǎng) | 更新日志 | 團(tuán)隊(duì)博客 | 免責(zé)聲明 | 關(guān)于詞典 | 幫助