本發(fā)明涉及性能測試技術(shù)領(lǐng)域,特別涉及一種Web系統(tǒng)的性能測試方法和裝置。
背景技術(shù):
由于Web應(yīng)用是一系列分布于Wed服務(wù)器的程序和多媒體資源的集合,具有分布性、異構(gòu)性和多用戶的特點,并且Web應(yīng)用大多為B/S(Browser/Server,瀏覽器/服務(wù)器)架構(gòu),使用Http協(xié)議,采用客戶/Web服務(wù)器/數(shù)據(jù)庫服務(wù)器的設(shè)計模式,這種多層次結(jié)構(gòu)使得系統(tǒng)出現(xiàn)問題的概率大大增加。因而,Web系統(tǒng)的質(zhì)量越來越引起用戶的關(guān)注,特別是Web性能測試,往往需要深入到軟件開發(fā)、數(shù)掘通信、硬件支持等多個方面,愈加受到人們的關(guān)注。
但性能測試難度大、周期長、要求高是一直困擾性能測試人員和開發(fā)人員的問題,雖然有一些工具能夠?qū)ο到y(tǒng)的某些性能指標(biāo)有監(jiān)控和跟蹤,但是基于應(yīng)用系統(tǒng)的業(yè)務(wù)繁瑣性、系統(tǒng)架構(gòu)的技術(shù)難度復(fù)雜性,用戶行為的不可預(yù)見性等諸多因素的影響,Web系統(tǒng)的性能測試正變得比較困難,如果測試方法不當(dāng),系統(tǒng)性能測試反而無法反應(yīng)系統(tǒng)本身的真實情況,有些測試結(jié)果反而誤導(dǎo)開發(fā)和測試人員,致使系統(tǒng)的開發(fā)和測試?yán)速M大量的時間和金錢,影響了產(chǎn)品的發(fā)布,最終影響到了用戶的體驗。
技術(shù)實現(xiàn)要素:
鑒于上述問題,本發(fā)明提供一種Web系統(tǒng)的性能測試方法和裝置,以解決現(xiàn)有技術(shù)Web系統(tǒng)性能測試周期長、成本高、測試效率低的問題。
為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實現(xiàn)的:
一方面,本發(fā)明提供了一種Web系統(tǒng)的性能測試方法,所述方法包括:
在Web系統(tǒng)未滿足用戶的性能需求時,從Web系統(tǒng)的應(yīng)用組件中選取 一應(yīng)用組件作為測試對象進行迭代化的壓力測試;
分析應(yīng)用組件在進行每次壓力測試時Web系統(tǒng)的性能,在確定Web系統(tǒng)出現(xiàn)所述應(yīng)用組件在壓力測試下引起的性能瓶頸時,優(yōu)化應(yīng)用組件;
在應(yīng)用組件結(jié)束所述迭代化的壓力測試時,對Web系統(tǒng)進行混合場景的壓力測試,判斷Web系統(tǒng)是否滿足用戶的性能需求;
在Web系統(tǒng)仍不滿足用戶的性能需求時,根據(jù)預(yù)先建立的性能瓶頸分布模型從Web系統(tǒng)的應(yīng)用組件中選取下一應(yīng)用組件作為新的測試對象進行迭代化的壓力測試。
優(yōu)選地,所述性能瓶頸分布模型通過下述方法建立:
獲取所述Web系統(tǒng)的各應(yīng)用組件以及各應(yīng)用組件之間的通訊方式;
根據(jù)所述Web系統(tǒng)的性能瓶頸的潛在位置將所述Web系統(tǒng)從下向上依次劃分為底層的硬件層性能瓶頸、中間層的系統(tǒng)層性能瓶頸和頂層的應(yīng)用層性能瓶頸,并將所述Web系統(tǒng)的各應(yīng)用組件劃分到相應(yīng)的層級;
根據(jù)所述應(yīng)用組件之間的通訊方式建立所述Web系統(tǒng)的應(yīng)用組件間的業(yè)務(wù)邏輯關(guān)系,從而獲得所述性能瓶頸分布模型。
進一步優(yōu)選地,所述根據(jù)預(yù)先建立的性能瓶頸分布模型從所述Web系統(tǒng)的應(yīng)用組件中選取下一應(yīng)用組件作為新的測試對象進行迭代化的壓力測試包括:
確定當(dāng)前應(yīng)用組件在所述性能瓶頸分布模型中的層級,首先判斷所述當(dāng)前應(yīng)用組件所在層級中是否存在與其具有業(yè)務(wù)邏輯關(guān)系的其他應(yīng)用組件,若存在,則選取該層級中與所述當(dāng)前應(yīng)用組件具有業(yè)務(wù)邏輯關(guān)系的一應(yīng)用組件作為新的測試對象;
若不存在,當(dāng)所述當(dāng)前應(yīng)用組件處于所述性能瓶頸分布模型中的底層時,則按照從下向上的方向依次判斷中間層、頂層中是否存在與該當(dāng)前應(yīng)用組件具有業(yè)務(wù)邏輯關(guān)系的其他應(yīng)用組件;
當(dāng)所述當(dāng)前應(yīng)用組件處于所述性能瓶頸分布模型中的頂層時,則按照從上向下的方向依次判斷中間層、底層中是否存在與該當(dāng)前應(yīng)用組件具有業(yè)務(wù)邏輯關(guān)系的其他應(yīng)用組件;
當(dāng)所述當(dāng)前應(yīng)用組件處于所述性能瓶頸分布模型中的中間層時,先判斷 頂層中是否存在與該當(dāng)前應(yīng)用組件具有業(yè)務(wù)邏輯關(guān)系的其他應(yīng)用組件,在頂層不存在與其具有業(yè)務(wù)邏輯關(guān)系的其他應(yīng)用組件時,再判斷底層是否存在與其具有業(yè)務(wù)邏輯關(guān)系的其他應(yīng)用組件。
優(yōu)選地,所述從所述Web系統(tǒng)的應(yīng)用組件中選取一應(yīng)用組件作為測試對象進行迭代化的壓力測試包括:
根據(jù)用戶的性能需求,確定所述Web系統(tǒng)的相關(guān)應(yīng)用組件;
根據(jù)所述Web系統(tǒng)的相關(guān)應(yīng)用組件的通訊方式,從所述Web系統(tǒng)的相關(guān)應(yīng)用組件中確定一重點影響的應(yīng)用組件作為測試對象進行迭代化的壓力測試。
進一步優(yōu)選地,所述從所述Web系統(tǒng)的相關(guān)應(yīng)用組件中確定一重點影響的應(yīng)用組件作為測試對象進行迭代化的壓力測試包括:
選取測試工具,并設(shè)定所述測試對象的壓力測試參數(shù)的初始值、終止值和迭代步長,所述壓力測試參數(shù)包括測試環(huán)境參數(shù)和測試壓力值;
利用所述測試工具,從所述壓力測試參數(shù)的初始值開始對所述測試對象進行壓力測試,并收集用于反映所述Web系統(tǒng)性能的測試數(shù)據(jù);
按照所述迭代步長調(diào)整所述壓力測試參數(shù),對所述測試對象進行調(diào)整后的壓力測試參數(shù)的壓力測試,并在所述壓力測試參數(shù)值達(dá)到所述壓力測試參數(shù)的終止值時,結(jié)束所述測試對象的壓力測試。
優(yōu)選地,分析所述應(yīng)用組件在進行每次壓力測試時所述Web系統(tǒng)的性能具體為:根據(jù)用于反映所述Web系統(tǒng)性能的測試數(shù)據(jù)來分析所述Web系統(tǒng)的性能;
所述方法還包括:所述對所述Web系統(tǒng)進行混合場景的壓力測試,判斷所述Web系統(tǒng)是否滿足用戶的性能需求,在所述Web系統(tǒng)已滿足用戶的性能需求時,所述方法結(jié)束。
優(yōu)選地,所述對所述Web系統(tǒng)進行混合場景的壓力測試,判斷所述Web系統(tǒng)是否滿足用戶的性能需求包括:
利用所述測試工具對所述Web系統(tǒng)的所有相關(guān)應(yīng)用組件進行壓力測試,并收集所述Web系統(tǒng)的性能數(shù)據(jù);
將收集到的所述Web系統(tǒng)的性能數(shù)據(jù)與所述用戶的性能需求進行比較, 在所述Web系統(tǒng)的性能數(shù)據(jù)達(dá)到所述用戶的性能需求時,判斷所述Web系統(tǒng)滿足用戶的性能需求。
另一方面,本發(fā)明提供了一種Web系統(tǒng)的性能測試裝置,所述性能測試裝置包括:
應(yīng)用組件測試單元,用于在Web系統(tǒng)未滿足用戶的性能需求時,從Web系統(tǒng)的應(yīng)用組件中選取一應(yīng)用組件作為測試對象進行迭代化的壓力測試;
應(yīng)用組件優(yōu)化單元,用于分析應(yīng)用組件在進行每次壓力測試時Web系統(tǒng)的性能,在確定Web系統(tǒng)出現(xiàn)性能瓶頸時,優(yōu)化應(yīng)用組件;
混合場景測試單元,用于在應(yīng)用組件結(jié)束迭代化的壓力測試時,對Web系統(tǒng)進行混合場景的壓力測試,判斷Web系統(tǒng)是否滿足用戶的性能需求;
應(yīng)用組件選取單元,用于在混合場景測試單元判斷Web系統(tǒng)仍不滿足用戶的性能需求時,根據(jù)預(yù)先建立的性能瓶頸分布模型從Web系統(tǒng)的應(yīng)用組件中選取下一應(yīng)用組件作為新的測試對象,并驅(qū)動應(yīng)用組件測試單元對新的測試對象進行迭代化的壓力測試。
優(yōu)選地,所述性能瓶頸分布模型通過下述方法建立:
獲取所述Web系統(tǒng)的各應(yīng)用組件以及各應(yīng)用組件之間的通訊方式;
根據(jù)所述Web系統(tǒng)的性能瓶頸的潛在位置將所述Web系統(tǒng)從下向上依次劃分為底層的硬件層性能瓶頸、中間層的系統(tǒng)層性能瓶頸和頂層的應(yīng)用層性能瓶頸,并將所述Web系統(tǒng)的各應(yīng)用組件劃分到相應(yīng)的層級;
根據(jù)所述應(yīng)用組件之間的通訊方式建立所述Web系統(tǒng)的應(yīng)用組件間的業(yè)務(wù)邏輯關(guān)系,從而獲得所述性能瓶頸分布模型。
優(yōu)選地,所述應(yīng)用組件選取單元包括:
層級確定模塊,用于確定當(dāng)前應(yīng)用組件在所述性能瓶頸分布模型中的層級;
主判斷模塊,用于首先判斷所述當(dāng)前應(yīng)用組件所在層級中是否存在與其具有業(yè)務(wù)邏輯關(guān)系的其他應(yīng)用組件,若存在,則選取該層級中與所述當(dāng)前應(yīng)用組件具有業(yè)務(wù)邏輯關(guān)系的一應(yīng)用組件作為新的測試對象;
從判斷模塊,用于在所述主判斷模塊判斷所述當(dāng)前應(yīng)用組件所在層級中不存在與其具有業(yè)務(wù)邏輯關(guān)系的其他應(yīng)用組件時,
若所述當(dāng)前應(yīng)用組件處于所述性能瓶頸分布模型中的底層,則按照從下向上的方向依次判斷中間層、頂層中是否存在與該當(dāng)前應(yīng)用組件具有業(yè)務(wù)邏輯關(guān)系的其他應(yīng)用組件;
若所述當(dāng)前應(yīng)用組件處于所述性能瓶頸分布模型中的頂層,則按照從上向下的方向依次判斷中間層、底層中是否存在與該當(dāng)前應(yīng)用組件具有業(yè)務(wù)邏輯關(guān)系的其他應(yīng)用組件;
若所述當(dāng)前應(yīng)用組件處于所述性能瓶頸分布模型中的中間層,先判斷頂層中是否存在與該當(dāng)前應(yīng)用組件具有業(yè)務(wù)邏輯關(guān)系的其他應(yīng)用組件,在頂層不存在與其具有業(yè)務(wù)邏輯關(guān)系的其他應(yīng)用組件時,再判斷底層是否存在與其具有業(yè)務(wù)邏輯關(guān)系的其他應(yīng)用組件。
本發(fā)明實施例的有益效果是:本發(fā)明在Web系統(tǒng)的性能測試過程中,每次測試只測試相關(guān)應(yīng)用組件中的一個,在測試過程中若發(fā)現(xiàn)Web系統(tǒng)出現(xiàn)性能瓶頸,則通過對應(yīng)用組件進行優(yōu)化來解決出現(xiàn)的性能瓶頸,在該應(yīng)用組件完成其壓力測試后,再根據(jù)性能瓶頸分布模型選取下一應(yīng)用組件作為新的測試對象,繼續(xù)該新的測試對象的壓力測試,從而實現(xiàn)了Web系統(tǒng)性能測試的組件化測試方法,能夠在較短時間內(nèi)確定性能瓶頸,縮短性能測試周期,有效地減少測試工程師的工作量,提高性能測試的測試效率;以及在每個應(yīng)用組件的壓力測試過程中,通過設(shè)定相應(yīng)的壓力測試參數(shù),測試應(yīng)用組件在不同測試環(huán)境下的性能表現(xiàn),從而實現(xiàn)Web系統(tǒng)性能測試的迭代化測試方法,以提高定位性能瓶頸的準(zhǔn)確性。
附圖說明
圖1為本發(fā)明實施例一提供的Web系統(tǒng)的性能測試方法流程圖;
圖2為本發(fā)明實施例一提供的Web系統(tǒng)性能瓶頸分布模型示意圖;
圖3為本發(fā)明實施例二提供的Web系統(tǒng)的性能測試方法的測試流程圖;
圖4為本發(fā)明實施例三提供的Web系統(tǒng)的性能測試裝置結(jié)構(gòu)示意圖。
具體實施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進一步地詳細(xì)描述。
實施例一:
圖1為本實施例提供的Web系統(tǒng)的性能測試方法流程圖,如圖1所示,圖1中的方法包括:
S110,在Web系統(tǒng)未滿足用戶的性能需求時,從Web系統(tǒng)的應(yīng)用組件中選取一應(yīng)用組件作為測試對象進行迭代化的壓力測試。
由于每次性能測試所付出的代價與測試過程中對Web系統(tǒng)施加的壓力有直接關(guān)系,因此本實施例優(yōu)選地采用迭代化的測試方法測試Web系統(tǒng)在不同壓力下的性能表現(xiàn)。
在步驟S110中,從Web系統(tǒng)的應(yīng)用組件中選取一應(yīng)用組件作為測試對象進行迭代化的壓力測試具體為:
根據(jù)用戶的性能需求,確定Web系統(tǒng)的相關(guān)應(yīng)用組件;
根據(jù)Web系統(tǒng)的相關(guān)應(yīng)用組件的通訊方式,從Web系統(tǒng)的相關(guān)應(yīng)用組件中確定一重點影響的應(yīng)用組件作為測試對象進行迭代化的壓力測試。
本實施例優(yōu)選地通過下述迭代方式對重點影響的應(yīng)用組件進行壓力測試:
選取測試工具,并設(shè)定測試對象的壓力測試參數(shù)的初始值、終止值和迭代步長,其中壓力測試參數(shù)包括測試環(huán)境參數(shù)和測試壓力值;
利用測試工具,從壓力測試參數(shù)的初始值開始對測試對象進行壓力測試,并收集用于反映Web系統(tǒng)性能的測試數(shù)據(jù);
按照迭代步長調(diào)整壓力測試參數(shù),對測試對象進行調(diào)整后的壓力測試參數(shù)的壓力測試;
在壓力測試參數(shù)值達(dá)到壓力測試參數(shù)的終止值時,結(jié)束測試對象的壓力測試。
S120,分析該應(yīng)用組件在進行每次壓力測試時Web系統(tǒng)的性能,在確定Web系統(tǒng)出現(xiàn)該應(yīng)用組件在壓力測試下引起的性能瓶頸時,優(yōu)化應(yīng)用組件。
其中,在對選取的應(yīng)用組件進行優(yōu)化時,若選取的應(yīng)用組件為硬件,優(yōu)選地優(yōu)化該應(yīng)用組件的配置參數(shù);若選取的應(yīng)用組件為軟件,優(yōu)選地優(yōu)化該應(yīng)用組件的代碼邏輯,優(yōu)選地,每次壓力測試后若出現(xiàn)性能瓶頸則優(yōu)化該組件以消除該次壓力測試出現(xiàn)的性能瓶頸,具體可以通過再次進行相同的壓力 參數(shù)來進行一次壓力測試確定是否消除性能瓶頸。
當(dāng)在步驟S110中收集每次壓力測試的測試數(shù)據(jù)時,則步驟S120中分析應(yīng)用組件在進行每次壓力測試時Web系統(tǒng)的性能數(shù)據(jù)具體為根據(jù)用于反映Web系統(tǒng)性能的測試數(shù)據(jù)來分析Web系統(tǒng)的性能。
S130,在該應(yīng)用組件結(jié)束迭代化的壓力測試時,對Web系統(tǒng)進行混合場景的壓力測試,判斷Web系統(tǒng)是否滿足用戶的性能需求。
本步驟優(yōu)選地通過下述方式對Web系統(tǒng)進行混合場景的壓力測試:
利用測試工具對Web系統(tǒng)的所有相關(guān)應(yīng)用組件進行壓力測試,并收集Web系統(tǒng)的性能數(shù)據(jù);
將收集到的Web系統(tǒng)的性能數(shù)據(jù)與所述用戶的性能需求進行比較,在Web系統(tǒng)的性能數(shù)據(jù)達(dá)到所述用戶的性能需求時,判斷Web系統(tǒng)滿足用戶的性能需求。
需要指出的是,本步驟中所述的該應(yīng)用組件結(jié)束迭代化的壓力測試時應(yīng)應(yīng)理解為:若在對應(yīng)用組件進行迭代化的壓力測試過程中,Web系統(tǒng)未出現(xiàn)性能瓶頸,則在達(dá)到迭代化測試的終止條件時即壓力測試參數(shù)滿足用戶需求的上限值時,結(jié)束該應(yīng)用組件的迭代化測試;若在對應(yīng)用組件進行迭代化的壓力測試過程中,Web系統(tǒng)出現(xiàn)該應(yīng)用組件在壓力測試下引起的性能瓶頸,則對該應(yīng)用組件進行優(yōu)化消除該性能瓶頸,在徹底優(yōu)化消除由該組件引起的性能瓶頸后結(jié)束該應(yīng)用組件的迭代化測試。
S140,在Web系統(tǒng)仍不滿足用戶的性能需求時,根據(jù)預(yù)先建立的性能瓶頸分布模型從Web系統(tǒng)的應(yīng)用組件中選取下一應(yīng)用組件作為新的測試對象進行迭代化的壓力測試。
本實施例通過在測試過程中,每次測試只測試相關(guān)應(yīng)用組件中的一個,在測試過程中若發(fā)現(xiàn)Web系統(tǒng)出現(xiàn)所述應(yīng)用組件在壓力測試下引起的性能瓶頸,則通過對應(yīng)用組件進行優(yōu)化來解決出現(xiàn)的性能瓶頸,在該應(yīng)用組件完成其壓力測試后,再根據(jù)性能瓶頸分布模型選取下一應(yīng)用組件作為新的測試對象,繼續(xù)該新的測試對象的壓力測試,從而實現(xiàn)了Web系統(tǒng)性能測試的組件化測試方法,能夠在較短時間內(nèi)確定性能瓶頸,縮短性能測試周期,有效地減少測試工程師的工作量,提高性能測試的測試效率;以及在每個應(yīng)用組 件的壓力測試過程中,通過設(shè)定相應(yīng)的壓力測試參數(shù),測試應(yīng)用組件在不同測試環(huán)境下的性能表現(xiàn),從而實現(xiàn)Web系統(tǒng)性能測試的迭代化測試方法,以提高定位性能瓶頸的準(zhǔn)確性。
在本實施例的一個優(yōu)選方案中,步驟S140中的性能瓶頸分布模型通過下述方法建立:
獲取Web系統(tǒng)的各應(yīng)用組件以及各應(yīng)用組件之間的通訊方式;
根據(jù)Web系統(tǒng)的性能瓶頸的潛在位置將Web系統(tǒng)從下向上依次劃分為底層的硬件層性能瓶頸、中間層的系統(tǒng)層性能瓶頸和頂層的應(yīng)用層性能瓶頸,并將Web系統(tǒng)的各應(yīng)用組件劃分到相應(yīng)的層級;
根據(jù)應(yīng)用組件之間的通訊方式建立Web系統(tǒng)的應(yīng)用組件間的業(yè)務(wù)邏輯關(guān)系,從而獲得上述性能瓶頸分布模型。
其中,底層一般包括交換機、路由器等網(wǎng)絡(luò)硬件、處理器、內(nèi)存、磁盤等應(yīng)用組件的性能瓶頸;中間層的系統(tǒng)層性能瓶頸一般包括服務(wù)器操作系統(tǒng)、應(yīng)用服務(wù)器、數(shù)據(jù)庫服務(wù)器、中間件等應(yīng)用組件的性能瓶頸;頂層的應(yīng)用層性能瓶頸一般包括架構(gòu)設(shè)計缺陷、程序設(shè)計缺陷、數(shù)據(jù)庫設(shè)計缺陷等。
則步驟S140中根據(jù)預(yù)先建立的性能瓶頸分布模型從Web系統(tǒng)的應(yīng)用組件中選取下一應(yīng)用組件作為新的測試對象進行迭代化的壓力測試具體為:
確定當(dāng)前應(yīng)用組件在所述性能瓶頸分布模型中的層級,首先判斷當(dāng)前應(yīng)用組件所在層級中是否存在與其具有業(yè)務(wù)邏輯關(guān)系的其他應(yīng)用組件,若存在,則選取該層級中與當(dāng)前應(yīng)用組件具有業(yè)務(wù)邏輯關(guān)系的一應(yīng)用組件作為新的測試對象;
若不存在,當(dāng)所述當(dāng)前應(yīng)用組件處于性能瓶頸分布模型中的底層時,則按照從下向上的方向依次判斷中間層、頂層中是否存在與該當(dāng)前應(yīng)用組件具有業(yè)務(wù)邏輯關(guān)系的其他應(yīng)用組件;
當(dāng)所述當(dāng)前應(yīng)用組件處于性能瓶頸分布模型中的頂層時,則按照從上向下的方向依次判斷中間層、底層中是否存在與該當(dāng)前應(yīng)用組件具有業(yè)務(wù)邏輯關(guān)系的其他應(yīng)用組件;
當(dāng)所述當(dāng)前應(yīng)用組件處于性能瓶頸分布模型中的中間層時,先判斷頂層中是否存在與該當(dāng)前應(yīng)用組件具有業(yè)務(wù)邏輯關(guān)系的其他應(yīng)用組件,在頂層不 存在與其具有業(yè)務(wù)邏輯關(guān)系的其他應(yīng)用組件時,再判斷底層是否存在與其具有業(yè)務(wù)邏輯關(guān)系的其他應(yīng)用組件。
本優(yōu)選方案通過預(yù)先構(gòu)建的性能瓶頸分布模型選取下一應(yīng)用組件作為新的測試對象,在Web系統(tǒng)性能測試過程中,逐層、順序地定位性能瓶頸,避免由于層與層之間的應(yīng)用組件的相互影響造成的混亂,從而能夠快速、高效、準(zhǔn)確地定位性能瓶頸。
如圖2所示,圖2為本實施例提供的Web系統(tǒng)性能瓶頸分布模型示意圖,圖2中兩個應(yīng)用組件之間的連線表示該兩個應(yīng)用組件具有業(yè)務(wù)邏輯關(guān)系。
本實施依據(jù)系統(tǒng)由底層到頂層的方向,即從下向上的方向,將系統(tǒng)性能瓶頸的潛在位置劃分為三個層級,底層為硬件層性能瓶頸,中間層為系統(tǒng)層性能瓶頸,頂層為應(yīng)用層性能瓶頸。
若假設(shè)中間層的數(shù)據(jù)庫為該Web系統(tǒng)的重點影響的應(yīng)用組件:
在該Web系統(tǒng)的性能測試過程中,若在對重點影響的應(yīng)用組件進行壓力測試時,發(fā)現(xiàn)該Web系統(tǒng)發(fā)生由該重點影響的應(yīng)用組件引起的性能瓶頸,并且在重點影響的應(yīng)用組件優(yōu)化消除該性能瓶頸后,該web系統(tǒng)仍不能滿足用戶性能需求,則根據(jù)性能瓶頸分布模型在中間層選擇一個與該數(shù)據(jù)庫具有業(yè)務(wù)邏輯關(guān)系的應(yīng)用組件作為新的測試對象,如2所示,可以選取應(yīng)用服務(wù)器A作為新的測試對象;在中間層的相關(guān)應(yīng)用組件都優(yōu)化后,發(fā)現(xiàn)該Web系統(tǒng)不能滿足用戶性能需求,則先在頂層中選取與中間層的相關(guān)應(yīng)用組件具有業(yè)務(wù)邏輯關(guān)系的應(yīng)用組件作為新的測試對象;在頂層中的相關(guān)應(yīng)用組件都優(yōu)化后,該Web系統(tǒng)仍不能滿足用戶性能需求時,最后從底層選取具有業(yè)務(wù)邏輯關(guān)系的應(yīng)用組件作為測試對象。
若假設(shè)頂層的應(yīng)用系統(tǒng)為該Web系統(tǒng)的重點影響的應(yīng)用組件:
在該Web系統(tǒng)的性能測試過程中,若在對該重點影響的應(yīng)用組件進行壓力測試時,發(fā)現(xiàn)該Web系統(tǒng)發(fā)生由該重點影響的應(yīng)用組件引起的性能瓶頸,并且在重點影響的應(yīng)用組件優(yōu)化消除該性能瓶頸后,該Web系統(tǒng)仍不能滿足用戶性能需求,則根據(jù)性能瓶頸分布模型在頂層選擇一個與該應(yīng)用系統(tǒng)具有業(yè)務(wù)邏輯關(guān)系的應(yīng)用組件作為新的測試對象,如2所示,可以選取業(yè)務(wù)系統(tǒng)作為新的測試對象;在頂層的相關(guān)應(yīng)用組件都優(yōu)化后,發(fā)現(xiàn)該Web系統(tǒng)不能 滿足用戶性能需求,則先在中間層中選取與頂層的相關(guān)應(yīng)用組件具有業(yè)務(wù)邏輯關(guān)系的應(yīng)用組件作為新的測試對象;在中間層中的相關(guān)應(yīng)用組件都優(yōu)化后,該Web系統(tǒng)仍不能滿足用戶性能需求時,最后從底層選取具有業(yè)務(wù)邏輯關(guān)系的應(yīng)用組件作為測試對象。
若假設(shè)底層的處理器為該Web系統(tǒng)的重點影響的應(yīng)用組件:
在該Web系統(tǒng)的性能測試過程中,若在對該重點影響的應(yīng)用組件進行壓力測試時,發(fā)現(xiàn)該Web系統(tǒng)發(fā)生由該重點影響的應(yīng)用組件引起的性能瓶頸,并且在重點影響的應(yīng)用組件優(yōu)化消除該性能瓶頸后,該Web系統(tǒng)仍不能滿足用戶性能需求,則根據(jù)性能瓶頸分布模型在中間層選擇一個與該處理器具有業(yè)務(wù)邏輯關(guān)系的應(yīng)用組件作為新的測試對象,如2所示,可以選取存儲設(shè)備作為新的測試對象;在底層的相關(guān)應(yīng)用組件都優(yōu)化后,發(fā)現(xiàn)該Web系統(tǒng)仍不能滿足用戶性能需求,則先在中間層中選取與底層的相關(guān)應(yīng)用組件具有業(yè)務(wù)邏輯關(guān)系的應(yīng)用組件作為新的測試對象;在中間層中的相關(guān)應(yīng)用組件都優(yōu)化后,該Web系統(tǒng)仍不能滿足用戶性能需求時,最后從頂層選取具有業(yè)務(wù)邏輯關(guān)系的應(yīng)用組件作為測試對象。
實施例二:
本實施例提供了一種對Web系統(tǒng)進行性能測試的方法。在本實施例中,假設(shè)測試人員在對Web系統(tǒng)進行綜合測試時,發(fā)現(xiàn)該Web系統(tǒng)不滿足用戶的性能需求,繼而按照圖3中所示的方法進行下述性能測試。
如圖3所示,圖3為本實施例提供的Web系統(tǒng)的性能測試方法的測試流程圖,該性能測試方法的具體流程如下:
S310,從Web系統(tǒng)的相關(guān)應(yīng)用組件中選取一應(yīng)用組件作為測試對象,并設(shè)定該應(yīng)用組件的壓力測試參數(shù)的初始值、終止值和迭代步長。其中,壓力測試參數(shù)包括測試環(huán)境參數(shù)和測試壓力值。
需要說明的是,本實施例優(yōu)選地將Web系統(tǒng)的重點影響應(yīng)用組件作為第一個測試對象,以便于節(jié)省測試流程。
S320,利用測試工具對測試對象進行壓力測試。
需要說明的是,本實施例從壓力測試參數(shù)的初始值開始對測試對象進行壓力測試。
S330,收集用于反映Web系統(tǒng)性能的測試數(shù)據(jù)。
S340,分析收集到的用于反映Web系統(tǒng)性能的測試數(shù)據(jù),判斷Web系統(tǒng)是否出現(xiàn)性能瓶頸,若出現(xiàn)性能瓶頸則執(zhí)行步驟S341,否則執(zhí)行步驟S342。
S341,對當(dāng)前的應(yīng)用組件進行優(yōu)化消除性能瓶頸,并執(zhí)行步驟S350。
其中,若當(dāng)前的應(yīng)用組件為硬件,優(yōu)選地優(yōu)化該應(yīng)用組件的配置參數(shù);若當(dāng)前的應(yīng)用組件為軟件,優(yōu)選地優(yōu)化該應(yīng)用組件的代碼邏輯。
S342,判斷當(dāng)前壓力測試參數(shù)值是否達(dá)到壓力測試參數(shù)的終止值,在當(dāng)前壓力測試參數(shù)值未達(dá)到壓力測試參數(shù)的終止值時,執(zhí)行步驟S343,否則執(zhí)行步驟S350。
S343,按照迭代步長調(diào)整壓力測試參數(shù),返回步驟S320。
S350,對Web系統(tǒng)進行混合場景的壓力測試。
S360,判斷Web系統(tǒng)是否滿足用戶的性能需求,在Web系統(tǒng)不滿足用戶的性能需求時,執(zhí)行步驟S370,否則執(zhí)行步驟S380。
S370,根據(jù)預(yù)先建立的性能瓶頸分布模型從所述Web系統(tǒng)的應(yīng)用組件中選取下一應(yīng)用組件作為新的測試對象,并返回S320對新的測試對象進行迭代化的壓力測試。
S380,結(jié)束Web系統(tǒng)的性能測試。
實施例三:
基于與實施例一相同的設(shè)計構(gòu)思,本實施例提供了一種Web系統(tǒng)的性能測試裝置。
圖4為本實施例提供的Web系統(tǒng)的性能測試裝置結(jié)構(gòu)示意圖,如圖4所示,圖4中的性能測試裝置包括:應(yīng)用組件測試單元41、應(yīng)用組件優(yōu)化單元42、混合場景測試單元43和應(yīng)用組件選取單元44。
應(yīng)用組件測試單元41,用于在Web系統(tǒng)未滿足用戶的性能需求時,從Web系統(tǒng)的應(yīng)用組件中選取一應(yīng)用組件作為測試對象進行迭代化的壓力測試。
應(yīng)用組件優(yōu)化單元42,用于分析應(yīng)用組件每次壓力測試時Web系統(tǒng)的性能,在確定Web系統(tǒng)出現(xiàn)所述應(yīng)用組件在壓力測試下引起的性能瓶頸時,優(yōu)化應(yīng)用組件。
混合場景測試單元43,用于在應(yīng)用組件結(jié)束迭代化的壓力測試時,對Web系統(tǒng)進行混合場景的壓力測試,判斷Web系統(tǒng)是否滿足用戶的性能需求。
應(yīng)用組件選取單元44,用于在混合場景測試單元43判斷Web系統(tǒng)仍不滿足用戶的性能需求時,根據(jù)預(yù)先建立的性能瓶頸分布模型從Web系統(tǒng)的應(yīng)用組件中選取下一應(yīng)用組件作為新的測試對象,并驅(qū)動應(yīng)用組件測試單元41對新的測試對象進行迭代化的壓力測試。
在本實施例的一個優(yōu)選方案中,性能瓶頸分布模型通過下述方法建立:
獲取Web系統(tǒng)的各應(yīng)用組件以及各應(yīng)用組件之間的通訊方式;
根據(jù)Web系統(tǒng)的性能瓶頸的潛在位置將Web系統(tǒng)從下向上依次劃分為底層的硬件層性能瓶頸、中間層的系統(tǒng)層性能瓶頸和頂層的應(yīng)用層性能瓶頸,并將Web系統(tǒng)的各應(yīng)用組件劃分到相應(yīng)的層級;
根據(jù)應(yīng)用組件之間的通訊方式建立所述Web系統(tǒng)的應(yīng)用組件間的業(yè)務(wù)邏輯關(guān)系,從而獲得性能瓶頸分布模型。
則應(yīng)用組件選取單元44包括:
層級確定模塊,用于確定當(dāng)前應(yīng)用組件在性能瓶頸分布模型中的層級;
主判斷模塊,用于首先判斷當(dāng)前應(yīng)用組件所在層級中是否存在與其具有業(yè)務(wù)邏輯關(guān)系的其他應(yīng)用組件,若存在,則選取該層級中與當(dāng)前應(yīng)用組件具有業(yè)務(wù)邏輯關(guān)系的一應(yīng)用組件作為新的測試對象;
從判斷模塊,用于在主判斷模塊判斷所述當(dāng)前應(yīng)用組件所在層級中不存在與其具有業(yè)務(wù)邏輯關(guān)系的其他應(yīng)用組件時,
若當(dāng)前應(yīng)用組件處于所述性能瓶頸分布模型中的底層,則按照從下向上的方向依次判斷中間層、頂層中是否存在與該當(dāng)前應(yīng)用組件具有業(yè)務(wù)邏輯關(guān)系的其他應(yīng)用組件;
若當(dāng)前應(yīng)用組件處于性能瓶頸分布模型中的頂層,則按照從上向下的方向依次判斷中間層、底層中是否存在與該當(dāng)前應(yīng)用組件具有業(yè)務(wù)邏輯關(guān)系的其他應(yīng)用組件;
若當(dāng)前應(yīng)用組件處于所述性能瓶頸分布模型中的中間層,先判斷頂層中是否存在與該當(dāng)前應(yīng)用組件具有業(yè)務(wù)邏輯關(guān)系的其他應(yīng)用組件,在頂層不存在與其具有業(yè)務(wù)邏輯關(guān)系的其他應(yīng)用組件時,再判斷底層是否存在與其具 有業(yè)務(wù)邏輯關(guān)系的其他應(yīng)用組件。
本實施例的各單元的具體工作方式可以參見本發(fā)明實施例一的具體內(nèi)容,在此不再贅述。
綜上所述,本發(fā)明公開了一種Web系統(tǒng)的性能測試方法和裝置,在Web系統(tǒng)的性能測試過程中,每次測試只測試相關(guān)應(yīng)用組件中的一個,在測試過程中若發(fā)現(xiàn)Web系統(tǒng)出現(xiàn)所述應(yīng)用組件在壓力測試下引起的性能瓶頸,則通過對應(yīng)用組件進行優(yōu)化來解決出現(xiàn)的性能瓶頸,在該應(yīng)用組件完成其壓力測試后,再根據(jù)性能瓶頸分布模型選取下一應(yīng)用組件作為新的測試對象,繼續(xù)該新的測試對象的壓力測試,從而實現(xiàn)了Web系統(tǒng)性能測試的組件化測試方法,能夠在較短時間內(nèi)確定性能瓶頸,縮短性能測試周期,有效地減少測試工程師的工作量,提高性能測試的測試效率;以及在每個應(yīng)用組件的壓力測試過程中,通過設(shè)定相應(yīng)的壓力測試參數(shù),測試應(yīng)用組件在不同測試環(huán)境下的性能表現(xiàn),從而實現(xiàn)Web系統(tǒng)性能測試的迭代化測試方法,以提高定位性能瓶頸的準(zhǔn)確性。。
以上所述僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進等,均包含在本發(fā)明的保護范圍內(nèi)。