雖然B/S結(jié)構(gòu)愈來愈成為流行模式,但基于C/S結(jié)構(gòu)的應(yīng)用程序還廣泛地應(yīng)用于各種行業(yè)。對于某些應(yīng)用軟件,其承受大用戶量并發(fā)訪問的能力常常是應(yīng)用者重點(diǎn)考慮的一個方面。的方法是用測試工具來模擬多個客戶端同時訪問服務(wù)器,并使用性能監(jiān)測工具獲得關(guān)于服務(wù)器、數(shù)據(jù)庫等用戶關(guān)心的性能指標(biāo)。中國軟件評測中心在多年的測試歷程中,使用過多種性能測試工具,而對于C/S結(jié)構(gòu)的應(yīng)用程序,也總結(jié)了不少性能測試經(jīng)驗(yàn)和方法。下面以中國軟件評測中心經(jīng)常用到的一種壓力測試工具 QALoad為例,說明這類性能測試需要注意的地方。
1、首先分析壓力測試中最容易出現(xiàn)瓶頸的地方,從而有目的地調(diào)整測試策略或測試環(huán)境,使壓力測試結(jié)果真實(shí)地反映出軟件的性能。例如,服務(wù)器的硬件限制、數(shù)據(jù)庫的訪問性能設(shè)置等常常會成為制約軟件性能的重要因素,但這些因素顯然不是用戶最關(guān)心的,我們在測試之前就要通過一些設(shè)置把這些因素的影響調(diào)至最低。
2、測試腳本至關(guān)重要。對于某些應(yīng)用,如ADO、ODBC等等,QALoad可以錄制/回放腳本,這給測試工作帶來極大的便利,但用這樣采集來的腳本直接作為壓力測試的腳本往往會導(dǎo)致錯誤的結(jié)果。我們需要對原始的腳本進(jìn)行修改,根據(jù)應(yīng)用程序的實(shí)際情況和用戶可能的操作情況調(diào)整腳本的結(jié)構(gòu),從而使腳本更符合實(shí)際情況。比如,我們錄制一個用戶登錄、操作和注銷的過程,實(shí)際情況是多數(shù)用戶只登錄一次,然后進(jìn)行多次操作,這時我們只需在腳本中把登錄和注銷部分轉(zhuǎn)至循環(huán)(即腳本中的Transaction部分)外即可。
3、選用不同的加載策略可以反映不同狀況下的性能。QALoad可采用的策略有:
(1)并發(fā)用戶數(shù)和每個模擬用戶運(yùn)行的事務(wù)數(shù)都為固定值;
(2)并發(fā)用戶按固定的時間間隔遞增,每個模擬用戶數(shù)運(yùn)行的事務(wù)數(shù)不限;
(3)以類似于批處理的方式順序運(yùn)行不同并發(fā)數(shù)的模擬用戶,每個模擬用戶運(yùn)行的事務(wù)數(shù) 固定;
(4)并發(fā)用戶數(shù)固定,運(yùn)行事務(wù)數(shù)不限,在一定的時間范圍內(nèi)持續(xù)運(yùn)行腳本,然后手動停止;
(5)不同模擬用戶運(yùn)行不同的腳本,模擬真實(shí)的訪問情況。 另外,QALoad還提供設(shè)置數(shù)據(jù)變量和數(shù)據(jù)池,設(shè)置操作之間的間歇時間等功能,我們在運(yùn)行腳本時可以充分利用這些策略和功能。
4、尋求多種性能指標(biāo)的獲取方法。由QALoad本身提供的性能指標(biāo)是每個“檢查點(diǎn)”的響應(yīng)時間,這些響應(yīng)時間可以通過統(tǒng)計分析以獲得更直觀的結(jié)果,如平均響應(yīng)時間、響應(yīng)時間方差等等,但這些遠(yuǎn)遠(yuǎn)不能滿足我們壓力測試的需要。對于基于Windows系列平臺的應(yīng)用,QALoad可以添加Windows服務(wù)捕獲的性能指標(biāo),前提是在服務(wù)器上安裝QALoad的Agent組件并啟動服務(wù)器上的SNMP等服務(wù)。對于如UNIX的其他平臺,我們可以借助專用性能監(jiān)測工具,如MAX、 ECOTool,以獲取更有價值的性能數(shù)據(jù)。
大多數(shù)性能測試,特別是基于C/S結(jié)構(gòu)的應(yīng)用軟件的性能測試只有借助于測試工具才能完 成,另一方面,也需要測試工程師靈活的運(yùn)用才能讓測試工具充分發(fā)揮作用。
1、首先分析壓力測試中最容易出現(xiàn)瓶頸的地方,從而有目的地調(diào)整測試策略或測試環(huán)境,使壓力測試結(jié)果真實(shí)地反映出軟件的性能。例如,服務(wù)器的硬件限制、數(shù)據(jù)庫的訪問性能設(shè)置等常常會成為制約軟件性能的重要因素,但這些因素顯然不是用戶最關(guān)心的,我們在測試之前就要通過一些設(shè)置把這些因素的影響調(diào)至最低。
2、測試腳本至關(guān)重要。對于某些應(yīng)用,如ADO、ODBC等等,QALoad可以錄制/回放腳本,這給測試工作帶來極大的便利,但用這樣采集來的腳本直接作為壓力測試的腳本往往會導(dǎo)致錯誤的結(jié)果。我們需要對原始的腳本進(jìn)行修改,根據(jù)應(yīng)用程序的實(shí)際情況和用戶可能的操作情況調(diào)整腳本的結(jié)構(gòu),從而使腳本更符合實(shí)際情況。比如,我們錄制一個用戶登錄、操作和注銷的過程,實(shí)際情況是多數(shù)用戶只登錄一次,然后進(jìn)行多次操作,這時我們只需在腳本中把登錄和注銷部分轉(zhuǎn)至循環(huán)(即腳本中的Transaction部分)外即可。
3、選用不同的加載策略可以反映不同狀況下的性能。QALoad可采用的策略有:
(1)并發(fā)用戶數(shù)和每個模擬用戶運(yùn)行的事務(wù)數(shù)都為固定值;
(2)并發(fā)用戶按固定的時間間隔遞增,每個模擬用戶數(shù)運(yùn)行的事務(wù)數(shù)不限;
(3)以類似于批處理的方式順序運(yùn)行不同并發(fā)數(shù)的模擬用戶,每個模擬用戶運(yùn)行的事務(wù)數(shù) 固定;
(4)并發(fā)用戶數(shù)固定,運(yùn)行事務(wù)數(shù)不限,在一定的時間范圍內(nèi)持續(xù)運(yùn)行腳本,然后手動停止;
(5)不同模擬用戶運(yùn)行不同的腳本,模擬真實(shí)的訪問情況。 另外,QALoad還提供設(shè)置數(shù)據(jù)變量和數(shù)據(jù)池,設(shè)置操作之間的間歇時間等功能,我們在運(yùn)行腳本時可以充分利用這些策略和功能。
4、尋求多種性能指標(biāo)的獲取方法。由QALoad本身提供的性能指標(biāo)是每個“檢查點(diǎn)”的響應(yīng)時間,這些響應(yīng)時間可以通過統(tǒng)計分析以獲得更直觀的結(jié)果,如平均響應(yīng)時間、響應(yīng)時間方差等等,但這些遠(yuǎn)遠(yuǎn)不能滿足我們壓力測試的需要。對于基于Windows系列平臺的應(yīng)用,QALoad可以添加Windows服務(wù)捕獲的性能指標(biāo),前提是在服務(wù)器上安裝QALoad的Agent組件并啟動服務(wù)器上的SNMP等服務(wù)。對于如UNIX的其他平臺,我們可以借助專用性能監(jiān)測工具,如MAX、 ECOTool,以獲取更有價值的性能數(shù)據(jù)。
大多數(shù)性能測試,特別是基于C/S結(jié)構(gòu)的應(yīng)用軟件的性能測試只有借助于測試工具才能完 成,另一方面,也需要測試工程師靈活的運(yùn)用才能讓測試工具充分發(fā)揮作用。