亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

WEB網(wǎng)站壓力測試教程詳解 .

系統(tǒng) 2039 0

WEB 網(wǎng)站壓力測試教程詳解

?

??? Web 服務(wù)處于分布式計算的核心位置,它們之間的交互通常很難測試。分布式開發(fā)、大型的開發(fā)者團隊以及對代碼日益組件化的期望都有可能使 Web 服務(wù)的開發(fā)變得越來越容易隱藏錯誤。這些類型的錯誤極難檢測出來。壓力測試是檢測這類代碼錯誤的一種有效方法,但是只有在壓力系統(tǒng)設(shè)計得比較有效的情況下才能發(fā)揮作用。本文將讓您深入了解一下這種壓力系統(tǒng)的基本要求。

測試方法

傳統(tǒng)的測試方法包括某種形式的簡單單元測試,通常由開發(fā)人員執(zhí)行。設(shè)計這些測試需要了解軟件的內(nèi)部知識,并且這些測試幾乎總是針對產(chǎn)品的非常小的、特定的部分。這些類型的測試非常適合與其他代碼組件極少交互,甚至沒有交互的簡單 Web 服務(wù)。

  功能驗證(Functional Verification) 也是一種測試過程,在這個過程中,對產(chǎn)品源代碼了解有限的設(shè)計者進行測試以確認產(chǎn)品或服務(wù)的核心功能。設(shè)計這種測試是為了證明這個核心功能符合某個規(guī)范。舉個例子,我的在線拍賣顯示的是輸入的正確出價嗎? 我的保險經(jīng)紀人系統(tǒng)找到最便宜的報價了嗎?如果這些測試失敗,通常就意味著檢測到了產(chǎn)品的一個基本問題(這個問題通常是可以直接修復)。這種測試也是適合簡單的 Web 服務(wù),使您可以檢查服務(wù)是否能夠正確執(zhí)行它的各個功能。

  系統(tǒng)測試(System Test) 通常是在功能驗證階段完成,驗證了核心功能后進行。它傾向于把整個系統(tǒng)作為一個整體來查找問題 — 弄清 Web 服務(wù)作為系統(tǒng)的一部分怎樣運作,以及 Web 服務(wù)相互之間如何交互。由于系統(tǒng)測試是在開發(fā)生命周期快結(jié)束時才進行,所以通常不能給它分配足夠的時間來完成。又因為緊張的發(fā)行日程安排以及開發(fā)的各個重要階段的后移,系統(tǒng)測試階段經(jīng)常被忽略,并且一些通常都可以發(fā)現(xiàn)的、少見的錯誤都不能被檢測到。即使發(fā)現(xiàn)了這種錯誤,這時也來不及確定錯誤的原因并設(shè)法修復它們了。因此,在查找代碼錯誤時,必需把系統(tǒng)測試應(yīng)用設(shè)計得盡可能高效。系統(tǒng)測試通常由三部分組成,它們是:

  性能(Performance): 這涉及到確定相關(guān)的產(chǎn)品統(tǒng)計數(shù)據(jù)的過程。例如:每秒有多少條消息?一個服務(wù)可同時接受多少個用戶?

  案例(Scenario): 這是重新創(chuàng)建客戶所需的確切配置的過程。因此在案例中發(fā)現(xiàn)的任何問題都可以在客戶使用該產(chǎn)品之前被檢測出來。

  壓力(或稱工作負載平衡): 它與另兩個部分不同,因為它被設(shè)計為通過應(yīng)用很大的工作負載來使軟件超負荷運轉(zhuǎn)。如果壓力測試通過對產(chǎn)品保持高強度的使用(但不超過性能統(tǒng)計數(shù)字確定的限制)能有效地執(zhí)行,那么它就經(jīng)常能夠發(fā)現(xiàn)許多隱蔽的錯誤,而這些錯誤用上面提到的任何其他技術(shù)都是發(fā)現(xiàn)不了的(這些錯誤也經(jīng)常是最難修復的)。

  從檢測代碼錯誤這方面來說,可以證明這三個系統(tǒng)測試組件中效率最高的是壓力測試部分。但由于這個過程經(jīng)常跟系統(tǒng)的其他要素或功能測試混淆在一起,所以這個過程涉及到的方法還沒有被正確著手處理或?qū)崿F(xiàn)。

  壓力下的錯誤

  使用壓力測試,您有希望找到很多種用其他測試方法更難發(fā)現(xiàn)的錯誤。有兩種錯誤類型是:

  內(nèi)存泄漏(Memory leak): 一種極難檢測的現(xiàn)象。內(nèi)存泄漏經(jīng)常發(fā)生在已發(fā)行的產(chǎn)品中,原因很簡單,很難設(shè)計測試用例來檢測它們。使用簡單的功能測試,幾乎發(fā)現(xiàn)不了內(nèi)存泄漏問題,因為在產(chǎn)品完成之前測試沒對產(chǎn)品進行足夠多的使用。內(nèi)存泄漏通常要求操作作要重復非常多的次數(shù)以使內(nèi)存消耗達到能引起注意的程度。盡管與其它編程語言(如 C/C++)相比,Java 程序更難引入內(nèi)存泄漏錯誤,但只要程序仍保持著對對象的引用,該對象仍有可能被實例化并且它占用的內(nèi)存永遠不會被釋放。

  并發(fā)與同步(Concurrency and Synchronization): 壓力測試在查找并發(fā)性問題上非常出眾,這是因為在任何一個測試生命周期中,它都應(yīng)用了許多不同的代碼路徑和定時條件。一般的規(guī)則是,壓力測試運行的時間越長,涉及并應(yīng)用的代碼路徑組合和定時條件就越多。當然,這也的確使得這些問題很難再現(xiàn)(錯誤可以在 5 分鐘或 5 天后發(fā)生)。死鎖、線程泄漏以及任何一般的同步問題通常只能在壓力測試階段被檢測出來。這些類型的問題很難通過執(zhí)行單元測試來發(fā)現(xiàn)。開發(fā)人員不會一直考慮他或她的代碼將與其他地方的代碼(在執(zhí)行單元測試時這些代碼可能還沒寫出來)進行交互。

  現(xiàn)有的壓力測試工具

  有許多聲稱能夠?qū)Ξa(chǎn)品進行壓力測試的可用工具目前正在開發(fā)中。被廣泛應(yīng)用的是針對 Web 服務(wù)的那些工具。然而,這些工具中有許多只是簡單的 HTML/SOAP 生成器,它們模擬許多客戶機連接,并因此對 Web 服務(wù)器生成高負載(這對于查找 Web 服務(wù)器的問題很有用,但對于查找 Web 服務(wù)的問題就沒那么有用了)。這些工具對基本的壓力測試比較有用,但它們經(jīng)常是僅僅擴展功能驗證階段來重復地執(zhí)行相同的功能任務(wù)。如果足夠的時間和資源可用,就可以通過創(chuàng)建定制構(gòu)建的壓力測試系統(tǒng)來實現(xiàn)更有效的測試。由于壓力系統(tǒng)的設(shè)計者通常對要測試的產(chǎn)品和 Web 服務(wù)有更多的了解,所以他們將能夠確保壓力系統(tǒng)可以用于哪些具體的代碼區(qū)域。

  設(shè)計壓力應(yīng)用

  設(shè)計試圖對 Web 服務(wù)進行壓力測試的壓力測試系統(tǒng)時,要讓它們以某種特定的方式運行代碼。這些風格超越了功能驗證,目的是要弄清楚被測試的 Web 服務(wù)是不是不僅能做我們認為它能做的事,而且在被施加了某些高強度壓力的情況下仍然繼續(xù)正常運行。壓力測試必須對 Web 服務(wù)應(yīng)用四個基本條件。許多已建立的壓力系統(tǒng)應(yīng)用了這些條件。有效的壓力測試系統(tǒng)將應(yīng)用以下這些關(guān)鍵條件:

  重復(Repetition): 或許最明顯的且最容易理解的壓力條件就是測試的重復。換句話說,測試的重復就是一遍又一遍地執(zhí)行某個操作作或功能,比如重復調(diào)用一個 Web 服務(wù)。功能驗證測試可以用來被弄清楚一個操作作能否正常執(zhí)行。而壓力測試將確定一個操作作能否正常執(zhí)行,并且能否繼續(xù)在每次執(zhí)行時都正常。這對于推斷一個產(chǎn)品是否適用于某種生產(chǎn)情況至關(guān)重要。客戶通常會重復使用產(chǎn)品,因此壓力測試應(yīng)該在客戶之前發(fā)現(xiàn)代碼錯誤。許多最簡單的壓力系統(tǒng)只實現(xiàn)這一個條件,但簡單地擴展功能驗證測試來多次重復并不能構(gòu)成一個有效的壓力測試。當與下面的一些原則結(jié)合起來使用時,重復就可以發(fā)現(xiàn)許多隱蔽的代碼錯誤。

  并發(fā)(Concurrency): 并發(fā)是同時執(zhí)行多個操作作的行為。換句話說,就是在同一時間執(zhí)行多個測試,例如在同一個服務(wù)器上同時調(diào)用許多 Web 服務(wù)。這個原則不一定適用于所有的產(chǎn)品(比如無狀態(tài)服務(wù)),但是多數(shù)軟件都具有某個并發(fā)行為或多線程行為元素,這一點只能通過執(zhí)行多個代碼示例才能測出來。功能測試或單元測試幾乎不會與任何并發(fā)設(shè)計結(jié)合。壓力系統(tǒng)必須超越功能測試,要同時遍歷多條代碼路徑。至于怎么做到這一點取決于具體的產(chǎn)品。例如,一個 Web 服務(wù)壓力測試需要一次模擬多個客戶機。Web 服務(wù)(或者任何多線程代碼)通常會訪問多個線程實例間的一些共享數(shù)據(jù)。因額外方面的編程而增加的復雜性通常意味著代碼會具有許多因并發(fā)引起的錯誤。由于引入并發(fā)性意味著一個線程中的代碼有可能被其他線程中的代碼中斷,所以錯誤只在一個指令集以特定的順序(例如以特定的定時條件)執(zhí)行時才會被發(fā)現(xiàn)。把這個原則與重復原則結(jié)合在一起,您可以應(yīng)用許多代碼路徑和定時條件。

  量級(Magnitude): 壓力系統(tǒng)應(yīng)該應(yīng)用于產(chǎn)品的另一個條件考慮到了每個操作作中的負載量。壓力測試可以重復執(zhí)行一個操作作,但是操作作自身也要盡量給產(chǎn)品增加負擔。例如,一個 Web 服務(wù)允許客戶機輸入一條消息,您可以通過模擬輸入超長消息的客戶機來使這個單獨的操作作進行高強度的使用。換句話說就是,您增加了這個操作作的量級。這個量級總是特定于應(yīng)用的,但是可以通過查找產(chǎn)品的可被用戶計量和修改的值來確定它。例如,數(shù)據(jù)的大小、延遲的長度、資金數(shù)量的轉(zhuǎn)移、輸入速度以及輸入的變化等等。單獨的高強度操作作自身可能發(fā)現(xiàn)不了代碼錯誤(或者僅能發(fā)現(xiàn)功能上的缺陷),但與其他壓力原則結(jié)合在一起時,您將可以增加發(fā)現(xiàn)問題的機會。

  隨機變化: 最后一點,任何壓力系統(tǒng)都多多少少具有一些隨機性。如果您隨機使用前面的壓力原則中介紹的無數(shù)變化形式,您就能夠在每次測試運行時應(yīng)用許多不同的代碼路徑。下面是幾個關(guān)于怎樣在測試生命周期內(nèi)改變測試的示例。使用重復時,在重新啟動或重新連接服務(wù)之前,您可以改變重復操作作間的時間間隔、重復的次數(shù),或者也可以改變被重復的 Web 服務(wù)的順序。使用并發(fā),您可以改變一起執(zhí)行的 Web 服務(wù)、同一時間運行的 Web 服務(wù)數(shù)目,或者也可以改變關(guān)于是運行許多不同的服務(wù)還是運行許多同樣的實例的決定。量級或許是最容易更改的 — 每次重復測試時都可以更改應(yīng)用程序中出現(xiàn)的變量(例如,發(fā)送各種大小的消息或數(shù)字輸入值)。如果測試完全隨機的話,因為很難一致地重現(xiàn)壓力下的錯誤,所以一些系統(tǒng)使用基于一個固定隨機種子的隨機變化。這樣,用同一個種子,重現(xiàn)錯誤的機會就會更大。

  一個壓力測試通常會結(jié)合上述的所有原則,并且在允許的范圍內(nèi)盡可能長時間地運行。測試被允許的執(zhí)行時間越長,就可以遍歷越多的代碼路徑,并且發(fā)現(xiàn)的錯誤也越多。當然,一旦找到錯誤就必須診斷并修復它。由于一個代碼錯誤可以在壓力測試運行多日以后自己顯示出來,所以系統(tǒng)必須保證當出現(xiàn)錯誤時所有可用的調(diào)試信息都被生成,否則可能就必須花費同樣多的時間來重現(xiàn)這個錯誤。

  結(jié)束語

  測試是軟件開發(fā)過程中至關(guān)重要的部分,并且一個重要的、經(jīng)常被曲解或忽略的部分是壓力測試。遵循上面詳細說明的原則,您就可以設(shè)計并實現(xiàn)有效的壓力測試系統(tǒng),用來查找一些與您的代碼相關(guān)的、比較隱蔽的問題。無論是利用預(yù)先寫好的工具,還是創(chuàng)建一個完全專用的壓力系統(tǒng),壓力測試都是用于查找 Web 服務(wù)(或其他任何程序)問題的本質(zhì)方法?
========================================
網(wǎng)站壓力測試工具集

?



工具 相關(guān)網(wǎng)址
LoadRunner http://www.mercuryinteractive.com/products/loadrunner/
SilkPerformer http://www.segue.com/products/load-s ... nce-testing/index.asp
QALoad http://www.compuware.com/products/qacenter/qaload.htm
WebLoad
OpenSTA 開源
Jmeter 開源

自動測試工具集

工具 相關(guān)網(wǎng)址
WinRunner http://www.mercuryinteractive.com/products/winrunner/
SilkTest http://www.segue.com/products/functio ... l-testing/silktest.asp
QARun http://www.compuware.com/products/qacenter/qarun.htm
SAFS http://safsdev.sourceforge.net/Default.htm

Bug追蹤系統(tǒng)
工具 相關(guān)網(wǎng)址
JIRA http://www.atlassian.com/software/jira/
Bugzilla http://www.bugzilla.org
TestDirector http://www.mercuryinteractive.com/products/testdirector/
GNATS http://www.gnu.org/software/gnats/
TestTrackPro http://www.seapine.com/ttpro.html

軟件測試網(wǎng)站
http://www.51cmm.com
http://www.sqe.com
http://www.qadirect.com
http://www.bonoy.com
http://www.sztest.net
http://www.testage.net
http://www.sqatester.com
http://www.testingfaqs.org
Webserver Stress Tool Enterprise v7.0.2.173 特別版
簡介說明:
可以模擬任何人數(shù)在同一時間內(nèi)進站或是順序進站時你的 Server 的反映表現(xiàn),只要輸入網(wǎng)站的 URL 網(wǎng)址以及模擬的上站人數(shù),就可以看出 Server 在這種壓力測試下的評比,它以調(diào)解圖明白地 表示出 Server 反映時間、傳輸速率等相關(guān)數(shù)據(jù),除了 Http 的網(wǎng)頁外,CGI 或 ASP 等語言編寫的程式一樣逃不過 WebStress 的測試,支持 Proxy 設(shè)定、密碼輸入、Cookies 與 ASP、
Session-IDs 等功能
特別說明:
Name: Matthias Kozel
Key : 000017-ZNG4YN-ZYEP6H-AYUF6V-WXNDYA-EJ1R4W-RH7R9F-D9GEBA-36M4VC-YYDXMH

WEB網(wǎng)站壓力測試教程詳解 .


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲国产九九精品一区二区 | 77777奇米 | 97视频在线观看免费 | 精品动漫一区二区三区 | 国产在线91观看免费观看 | 妖精视频在线看免费视频 | 热er99久久6国产精品免费 | 99久久99久久久99精品齐 | 手机观看毛片 | 国产精品区一区二区免费 | 中文字幕日韩一区二区不卡 | 毛片视屏 | 99久热在线精品视频播放6 | 一级有奶水毛片免费看 | 精品国产免费观看一区 | 99re热久久精品这里都是精品 | 一级毛片aaa片免费观看 | 青草社区| 99热久久国产精品这里小说 | 国产区1| 日韩在线一区二区三区免费视频 | 欧美综合一区二区三区 | 天海翼一区二区三区高清视频 | 国产69精品久久久久99尤物 | 成年女人18级毛片毛片免费观看 | 国产精片| 人人揉揉香蕉大免费不卡 | 色综合社区 | 爱爱视频在线免费观看 | 亚洲一级毛片免费看 | 99国产精品久久久久久久成人热 | 亚洲精品丝袜在线一区波多野结衣 | 欧美精品www| 大狠狠大臿蕉香蕉大视频 | 日日日夜夜操 | 久九精品 | 成人综合婷婷国产精品久久免费 | 青青久久国产成人免费网站 | 国产日本欧美在线观看 | 日日摸夜夜添夜夜添毛片 | 亚洲爱爱久久精品 |