|
在性能測(cè)試的學(xué)習(xí)過(guò)程中,堅(jiān)持思想與工具(分開(kāi))并行,當(dāng)前面世面上的性能測(cè)試書籍大多把理論與loadrunner融為一體講解,這樣做是正確的,因?yàn)橛幸恍┬阅苊~概念也源于工具。但是,性能測(cè)試不是loadrunner,所有的作者也是這么認(rèn)為的。但他們?cè)谥v性能測(cè)試的時(shí)候講的就是loadrunner有,只是講的多少不同罷啦。 你是否覺(jué)得我對(duì)loadrunner有仇?我之所以將其分開(kāi)來(lái)學(xué),只是希望自己在學(xué)習(xí)性能測(cè)試的時(shí)候不要被loadrunner局限了而已。只是覺(jué)得在做性能測(cè)試時(shí)不要帶loadrunner的思維,這樣更容易把握性能測(cè)試的本質(zhì)。 ----------------------------------------------------- 性能測(cè)試工具,從廣義上講,在性能測(cè)試過(guò)程中使用到的所有工具都可以稱其為性能測(cè)試工具。從狹義上來(lái)講,我們可以把性能測(cè)試工具分為服務(wù)器端性能測(cè)試工具與前段性能測(cè)試工具。 服務(wù)器端性能測(cè)試工具也我們測(cè)試人員通常所認(rèn)為的性能測(cè)試工具。LoadRunner、JMeter、SilkPerformance、服務(wù)器端壓力性能工具需要支持產(chǎn)生壓力和負(fù)載,錄制和生成腳本,設(shè)置和部署場(chǎng)景,產(chǎn)生并發(fā)用戶和向系統(tǒng)施加持續(xù)的壓力。 前端性能測(cè)試工具應(yīng)用比較廣泛,開(kāi)發(fā)人員,前端開(kāi)發(fā)人員、測(cè)試人員都會(huì)經(jīng)常用到。Firebug 、fildder2、Yslow 、前端性能測(cè)試工具只需要關(guān)于心瀏覽器等客戶端工具對(duì)具體需要展現(xiàn)的頁(yè)面的處理過(guò)程。
服務(wù)器性能測(cè)試工具原理
性能測(cè)試工具的主要作用是通過(guò)模擬生產(chǎn)環(huán)境中的真實(shí)業(yè)務(wù)操作,對(duì)被測(cè)試系統(tǒng)實(shí)行壓力負(fù)載測(cè)試,監(jiān)視被 測(cè)試系統(tǒng)在不同業(yè)務(wù)、不同壓力性能下的性能表現(xiàn),找出潛在的性能瓶頸進(jìn)行分析、優(yōu)化。 客戶端與服務(wù)器相當(dāng)于兩個(gè)人,通過(guò)信息來(lái)進(jìn)行交流。由于初次見(jiàn)面不好意思直接交流,與是找來(lái)了中間傳話人,客戶端把信息告訴給傳話人,由傳話人來(lái)轉(zhuǎn)達(dá)給服務(wù)器。那么服務(wù)器反饋的信息也由傳話人轉(zhuǎn)達(dá)給客戶端。一般性能測(cè)試工具都需要錄制或編寫客戶端行為腳本。 這樣傳達(dá)人就有了客戶端的行為能力,從而假扮客戶端來(lái)欺騙服務(wù)器,與之進(jìn)行通信。有了客戶端行為了傳達(dá)人可以進(jìn)行自我復(fù)制。從而變出N多個(gè)傳達(dá)人對(duì)服務(wù)器進(jìn)通信。---這個(gè)傳達(dá)人的行為和能力也就是性能測(cè)試工具的基本特質(zhì)。(突然覺(jué)得性能工具像第三者插足,而且是可以自我復(fù)制瘋狂變態(tài)的第三者,哈哈?。?/span> 對(duì)于目前流行的性能測(cè)試工具,他們的基本工作原理都是一致的。在客戶端通過(guò)多線程或多進(jìn)程模擬虛擬用戶訪問(wèn),對(duì)服務(wù)器端施加壓力,然后在過(guò)程中監(jiān)控和收集性能數(shù)據(jù)。
性能測(cè)試工具應(yīng)該具備什么的特質(zhì)呢? 1、工具本身占用系統(tǒng)資源少,可擴(kuò)展性好,可用性強(qiáng)。 2、能模擬真實(shí)業(yè)務(wù)事務(wù)操作,在并發(fā)時(shí)能真正產(chǎn)生業(yè)務(wù)壓力。(這一點(diǎn)是核心) 3、對(duì)壓力測(cè)試結(jié)果能很好地進(jìn)行性能分析,快速找出被測(cè)試系統(tǒng)的瓶頸。 4、測(cè)試腳本的重復(fù)性強(qiáng)。
服務(wù)器性能測(cè)試工具的架構(gòu)
用戶行為生成部分 我為什么說(shuō)的這么朦朧,對(duì)于熟悉loadrunner的朋友,我說(shuō)成虛擬用戶腳本生成器,你更容易理解,這個(gè)腳本,我們可以錄制,也可以手工編寫。你不要以為這是生成用戶行為的唯一方式。因?yàn)樵?/span>JMeter成中是添加各種組件,通過(guò)對(duì)組件的配置來(lái)完成用戶行為的,當(dāng)然也可以通過(guò)錄制。而在相對(duì)簡(jiǎn)陋的性能測(cè)試工具curl_loader(linux環(huán)境下的運(yùn)行的),他是通過(guò)編寫配置文件的形式來(lái)描述用戶形為的。 我前面也有提了,雖然性能測(cè)試工具由不同的形式來(lái)描述,但他們的原理是一樣的,都是通過(guò)Proxy方式來(lái)實(shí)現(xiàn),具體來(lái)說(shuō),Proxy作為客戶端和服務(wù)器之間的中間人,接收客戶端的數(shù)據(jù)包。
壓力產(chǎn)生器 壓力產(chǎn)生器用于根據(jù)腳本內(nèi)容產(chǎn)生實(shí)際的負(fù)載,在性能測(cè)試工具中,壓力產(chǎn)生器扮演著“產(chǎn)生負(fù)載”的角色。也就根用戶的設(shè)置,進(jìn)行自我復(fù)制來(lái)生成多個(gè)客戶端向服務(wù)器發(fā)送請(qǐng)求。對(duì)于工具來(lái)說(shuō),每復(fù)制出來(lái)的一份就是一個(gè)進(jìn)程或線程,進(jìn)程和線程的運(yùn)行是要占用系統(tǒng)資源的。所以,對(duì)一臺(tái)壓力測(cè)試機(jī)來(lái)說(shuō)能運(yùn)行的虛擬用戶數(shù)也是有限的。根基測(cè)試機(jī)的配置而定。那么這個(gè)時(shí)候就要通過(guò)多臺(tái)測(cè)試機(jī)合作,來(lái)模擬更多的虛擬用戶向服務(wù)器發(fā)請(qǐng)求。 那么,對(duì)于性能測(cè)試來(lái)說(shuō),很重要的一點(diǎn)就是產(chǎn)生“并發(fā)”的請(qǐng)求,不然就不會(huì)對(duì)服務(wù)器產(chǎn)生壓力。那多臺(tái)機(jī)子如何產(chǎn)生“步調(diào)一致”的虛擬用戶呢?使用“用戶代理”
用戶代理 用戶代理是運(yùn)行在負(fù)載機(jī)上的進(jìn)程,該進(jìn)程與產(chǎn)生負(fù)載壓力的進(jìn)程或線程協(xié)作,接收調(diào)度系統(tǒng)的命令,調(diào)度產(chǎn)生負(fù)載壓力的進(jìn)程或線程,從這個(gè)意義上看,用戶代理也是壓力產(chǎn)生器的一部分。
調(diào)度能力 我們?cè)谧鰪?fù)雜的性能測(cè)試時(shí),常常會(huì)設(shè)計(jì)各種場(chǎng)景,不同的虛擬用戶數(shù),不同事務(wù)的用戶比例,運(yùn)行時(shí)間,設(shè)置同步點(diǎn)等,這個(gè)時(shí)候也需要我們的測(cè)試工具有壓力調(diào)度能力。從而才能更真實(shí)的模擬我們所設(shè)計(jì)的運(yùn)行場(chǎng)景。
監(jiān)控系統(tǒng) 監(jiān)控系統(tǒng)是性能測(cè)試工具直接與用戶進(jìn)行交互的主要部分,監(jiān)控系統(tǒng),主要用戶在壓力測(cè)試過(guò)程中對(duì)各種軟硬件進(jìn)行監(jiān)控,如對(duì)數(shù)據(jù)庫(kù)、應(yīng)用服務(wù)器,服務(wù)器的主要性能表現(xiàn)情況進(jìn)行監(jiān)控。用于判斷系統(tǒng)當(dāng)前處于什么狀態(tài)。 當(dāng)然,監(jiān)控系統(tǒng)不是性能工具必須的部分,可以通過(guò)軟硬件系統(tǒng)自身的監(jiān)控工具或者第三方監(jiān)控工具進(jìn)行監(jiān)控。但是否有強(qiáng)大的性能計(jì)數(shù)器監(jiān)控系統(tǒng)是衡量性能測(cè)試工具是否強(qiáng)大的指標(biāo)之一。
壓力結(jié)果分析 壓力結(jié)果分析工具可以用來(lái)輔助進(jìn)行測(cè)試結(jié)果的分析,性能測(cè)試工具一般都能將監(jiān)控系統(tǒng)獲取的性能技術(shù)數(shù)器值生成曲線圖,折線圖等各種圖表。通過(guò)展現(xiàn)性能測(cè)試過(guò)程中的各種參數(shù)指標(biāo),來(lái)供測(cè)試人員進(jìn)行分析。 但這里需要強(qiáng)調(diào)的是,壓力結(jié)果分析工具本身不能代替分析者進(jìn)行性能結(jié)果分析,而只是提供多種不同的數(shù)據(jù)揭示和呈現(xiàn)方法而已。對(duì)于這些數(shù)據(jù)進(jìn)行分析必然要依靠測(cè)試工程師對(duì)系統(tǒng)性能分析的知識(shí)和經(jīng)驗(yàn)。 ------------------------------------------------------- 對(duì)上面介紹的性能測(cè)試工具架構(gòu)的組成部分,不是第一個(gè)性能測(cè)試工具都具備,而所具備的強(qiáng)大程度也不相同。比如,有些性能測(cè)試工具不具備用戶代理能,有些監(jiān)控系統(tǒng)能監(jiān)控的資源很有限或簡(jiǎn)陋,有些結(jié)果分析數(shù)據(jù)的呈現(xiàn)不夠詳盡等。
|
|
|