軟件壓力測試技術概述論文
摘 要:隨著軟件規(guī)模的不斷擴大和復雜程度的不斷提高,軟件產(chǎn)品面臨著大量的并發(fā)用戶和業(yè)務運算,因此軟件的性能越來越受到業(yè)內(nèi)的重視。在這種情況下,為了驗證系統(tǒng)性能而執(zhí)行的壓力測試變得尤為重要。本文對目前的研究熱點--軟件壓力測試技術進行了概述。
關鍵詞:軟件性能;壓力測試;自動化
1.軟件性能
壓力測試關注的對象是軟件的性能,所以首先介紹一下軟件性能的有關知識。一般來說,軟件性能是一種指標,表明軟件系統(tǒng)或構(gòu)建對于其及時性要求的符合程度;同時,軟件性能也是軟件產(chǎn)品的一種特性,可以用時間來度量。軟件性能的及時性用軟件的響應時間或吞吐量來衡量。軟件的響應時間是指軟件產(chǎn)品從收到請求到響應請求所需要的時間。
在實際軟件項目中,不同的角色對軟件性能的關注是不同的。從軟件產(chǎn)品用戶的角度來看,他們關注的是軟件產(chǎn)品處理請求的效率,也就是軟件的響應時間。從管理員的角度來看,他們不僅會關注軟件的響應時間,還會關注軟件產(chǎn)品運行時系統(tǒng)資源的使用狀態(tài)和系統(tǒng)的可擴展性。從產(chǎn)品開發(fā)人員的角度來看,他們關注的就更全面更深入了。他們除了會關注用戶和管理員關注的內(nèi)容,還會關注對軟件性能不佳的原因和大量并發(fā)用戶同時訪問而引起的軟件故障。如何通過修改設計和代碼來消除系統(tǒng)的性能瓶頸也是他們所關注的。那么,正是由于不同角色對軟件性能有著不同的關注,壓力測試就應該為不同的角色提供可靠的測試結(jié)果,以便他們分析軟件性能。
2.壓力測試的概念
軟件系統(tǒng)的負載壓力是指系統(tǒng)在某種指定軟件、硬件及網(wǎng)絡環(huán)境下承受的流量,例如并發(fā)用戶數(shù)、持續(xù)運行時間、數(shù)據(jù)量等。其中并發(fā)用戶數(shù)是負載壓力的重要指標。
負載測試是通過逐步增加系統(tǒng)負載,測試系統(tǒng)性能的變化,并最終確定在滿足性能指標的情況下,系統(tǒng)所能承受的最大負載量的測試。其中還有一種特定類型的負載測試,它是通過逐步增加軟件系統(tǒng)的負載,測試系統(tǒng)性能的變化,并最終確定在什么負載條件下系統(tǒng)性能處于失效狀態(tài),以此來獲得系統(tǒng)提供的最大服務級別。
并發(fā)性能測試通過逐漸增加并發(fā)用戶數(shù)負載,直到系統(tǒng)的瓶頸或者不能接收的狀態(tài),綜合分析交易執(zhí)行指標、資源監(jiān)控指標等來確定系統(tǒng)并發(fā)性能的過程。并發(fā)性能測試是負載壓力測試的重要內(nèi)容。
疲勞強度測試是指構(gòu)建系統(tǒng)穩(wěn)定運行情況下能夠支持的最大并發(fā)用戶數(shù)或者日常運行用戶數(shù),使其在持續(xù)一段時間內(nèi)執(zhí)行業(yè)務,保證到達系統(tǒng)疲勞強度需求的業(yè)務量,通過綜合分析交易執(zhí)行指標和資源監(jiān)控指標,來確定系統(tǒng)在處理業(yè)務上的最大工作強度的過程。
大數(shù)據(jù)量測試包括針對系統(tǒng)存儲、傳輸、統(tǒng)計、查詢等業(yè)務進行的獨立數(shù)據(jù)量測試,以及結(jié)合壓力性能測試、負載性能測試、疲勞性能測試相結(jié)合的綜合數(shù)據(jù)量測試。
3.并發(fā)性能測試
系統(tǒng)的'并發(fā)性能是負載壓力性能的最主要的組成部分。目前廣泛應用的網(wǎng)上購物系統(tǒng)、在線訂票系統(tǒng)、資源查詢統(tǒng)計系統(tǒng)等系統(tǒng),都存在著大量用戶同時訪問這樣的并發(fā)操作。這些并發(fā)操作可能會暴露軟件系統(tǒng)在設計和開發(fā)時的缺陷,這些缺陷會使系統(tǒng)網(wǎng)絡性能降低,加劇服務器資源互斥訪問沖突,造成應用層程序和數(shù)據(jù)庫表單的死鎖等等,給系統(tǒng)帶來不同程度的破壞,給用戶帶來經(jīng)濟損失。因此,為了保證系統(tǒng)的性能可靠,實施有效的并發(fā)性能測試是非常重要的。并發(fā)性能測試是從客戶端性能、網(wǎng)絡性能、服務器性能三個方面去進行測試和監(jiān)測的。下面將分別介紹這三個方面。
應用在客戶端的性能測試主要是采用負載壓力測試工具模擬大量并發(fā)用戶訪問被測系統(tǒng),執(zhí)行不同業(yè)務操作,來達到實施負載壓力的目的。測試系統(tǒng)通常包括一臺主控機、多臺壓力生成器和被測服務器,各部分采用系統(tǒng)要求的網(wǎng)絡類型連接。主控機負責管理壓力生成器,同步時間,部署測試腳本和收集測試結(jié)果,在整個測試系統(tǒng)中有且僅有一臺主控機。壓力生成器負責通過多線程的方式來模擬虛擬用戶(VU)向被測系統(tǒng)施加壓力,在測試系統(tǒng)中可以有多臺壓力生成器。
應用在網(wǎng)絡上的性能測試主要是對網(wǎng)絡應用性能的監(jiān)控和應用網(wǎng)絡故障的分析,可以為性能優(yōu)化、帶寬需求確定、應用程序和網(wǎng)絡故障的定位等方面提供依據(jù)。其監(jiān)控系統(tǒng)是由探針主控機和探針機組成。探針主控機主要用于配置管理探針,同步探針機時間,收集并處理監(jiān)測數(shù)據(jù),并且提供監(jiān)測數(shù)據(jù)的展示平臺,在整個監(jiān)控系統(tǒng)中有且僅有一臺探針主控機。探針分布在被測系統(tǒng)的整個應用網(wǎng)絡環(huán)境中,采集并存儲相應的數(shù)據(jù),在監(jiān)控系統(tǒng)中可以有多臺探針機。
應用在服務器上的性能測試主要是對被測系統(tǒng)服務器的操作系統(tǒng)、數(shù)據(jù)庫、中間件等組成部分進行監(jiān)控。目前常用的操作系統(tǒng)、數(shù)據(jù)庫和中間件自身都提供了良好的監(jiān)控工具,測試者可以適時地收集需要的信息。
四、壓力測試自動化
壓力測試可以采取手工測試和利用自動化工具測試兩種方式。采用手工測試不僅需要大量的測試人員和機器設備,還要考慮同步操作和對被測系統(tǒng)的同步監(jiān)控的問題,所以執(zhí)行起來有一定的局限性,測試結(jié)果不一定能夠有效地為系統(tǒng)調(diào)優(yōu)提供服務,而且還會耗費巨大的人力和物力。相比之下,在壓力測試中采用自動化測試工具能更快捷地解決問題。自動化測試工具可以在一臺或多臺機器上模擬成百上千的用戶同時執(zhí)行業(yè)務操作的場景,并可以很好地同步用戶的執(zhí)行時間,進行有效的實時監(jiān)測。因此越來越多的壓力測試項目中都用到了自動化的測試工具,自動化測試工具也在壓力測試多方面的要求中得到了發(fā)展和改良。
目前,利用自動化測試工具進行壓力測試是壓力測試發(fā)展的主流趨勢。在實際的測試項目實施中,大都使用三類自動化測試工具,它們分別是商業(yè)化壓力測試工具、開源壓力測試工具和自主研發(fā)的壓力測試工具。.
商業(yè)化壓力測試工具適用范圍廣,大都經(jīng)過全面的檢測,測試系統(tǒng)本身比較穩(wěn)定,測試結(jié)果比較準確,在業(yè)界能得到大多數(shù)人的認可,并且還有廠商的技術支持和版本升級服務。但是商業(yè)化的壓力測試工具一般價格都比較昂貴,適用于大規(guī)模的、長期性的、專業(yè)標準要求高的測試項目,F(xiàn)在常用的商業(yè)化壓力測試軟件主要有 HP LoadRunne、 Borland SilkPerformer等,它們都是業(yè)內(nèi)優(yōu)秀的性能測試軟件。
開源壓力測試工具一般都是免費的,用戶可以在不侵犯任何專利權和著作權的情況下訪問、修改測試工具的源代碼。目前常用的開源壓力測試軟件主要有 Apache JMester、opensTA等。 ApacheJMester是一個完全用Java編寫的壓力測試軟件,用于負載測試和性能度量,最初它適用于Web應用測試,
目前己經(jīng)擴展到其他的測試領域。openSTA是一個基于CORBA的分布式軟件測試架構(gòu)。WebLOAD是一個由Radview軟件支持的開源的負載壓生成引擎。
自主研發(fā)的壓力測試工具是測試開發(fā)人員根據(jù)被測系統(tǒng)的特點而開發(fā)的,適用于被測系統(tǒng)的測試工具。商業(yè)化的測試工具和開源的測試工具雖然比較通用,但是也有其局限性,比如說對一些協(xié)議、腳本、控件等兼容性不好,在一些性能點上缺乏監(jiān)測,模擬負載的情況不夠理想,性能監(jiān)測定位不夠準確。所以很多測試工程師不得不去編寫一些適用于實際測試項目的程序和工具。在設計和實現(xiàn)壓力測試工具時,主要的難點是模擬用戶操作、控制并發(fā)訪問和設置監(jiān)測點。
參考文獻:
[l]段念.軟件性能測試過程詳解與案例剖析[M].北京:清華大學出版社,2006.
[2]柳純錄.軟件評測師教程〔MJ.北京:清華大學出版社,2005.
【軟件壓力測試技術概述論文】相關文章:
軟件測試技術與管理方法探討的論文05-31
五年高職軟件技術軟件測試課程設置論文12-12
軟件測試技術就業(yè)前景01-13
軟件測試課程的建構(gòu)的論文05-30
軟件測試課程的建構(gòu)論文12-10
軟件工程數(shù)據(jù)挖掘開發(fā)測試技術論文05-30
USB On-The-Go 技術概述論文12-22
軟件測試專業(yè)論文致謝范文05-13
航空設備的測試性設計和驗證技術概述10-03