軟件測(cè)試:剖析軟件測(cè)試中的壓力測(cè)試

字號(hào):

概念之一【壓力測(cè)試】來(lái)自VisualStudio.NET設(shè)計(jì)分布式應(yīng)用程序可靠性測(cè)試:是指模擬巨大的工作負(fù)荷以查看應(yīng)用程序在峰值使用情況下如何執(zhí)行操作。對(duì)每個(gè)單獨(dú)的組件進(jìn)行壓力測(cè)試后,應(yīng)對(duì)帶有其所有組件和支持服務(wù)的整個(gè)應(yīng)用程序進(jìn)行壓力測(cè)試。集中測(cè)試從最基礎(chǔ)的功能測(cè)試開(kāi)始。您需要知道編碼路徑和用戶方案、了解用戶試圖做什么以及確定用戶運(yùn)用您的應(yīng)用程序的所有方式。測(cè)試腳本應(yīng)根據(jù)預(yù)期的用法運(yùn)行應(yīng)用程序。例如,如果您的應(yīng)用程序顯示W(wǎng)eb頁(yè),而且99%的客戶只是搜索該站點(diǎn),只有1%的客戶將真正購(gòu)買,這使得提供對(duì)搜索和其他瀏覽功能進(jìn)行壓力測(cè)試的測(cè)試腳本才有意義。當(dāng)然,也應(yīng)對(duì)購(gòu)物車進(jìn)行測(cè)試,但是預(yù)期的使用暗示搜索測(cè)試應(yīng)在測(cè)試中占很大比重。
    概念之二【壓力測(cè)試】來(lái)自.NET應(yīng)用程序性能測(cè)試:壓力測(cè)試用來(lái)評(píng)估在超越負(fù)載的情況下系統(tǒng)將如何運(yùn)行。壓力測(cè)試的目標(biāo)就是發(fā)現(xiàn)在高負(fù)載的條件下應(yīng)用程序的缺陷(BUG)。包括:synchronizationissues,raceconditions,andmemoryleaks(內(nèi)存泄漏)。壓力測(cè)試能讓您識(shí)別程序的弱點(diǎn)和在極限負(fù)載下程序?qū)⑷绾芜\(yùn)行。
    概念之三【壓力測(cè)試】壓力測(cè)試主要是為了發(fā)現(xiàn)在一(任意)定條件下軟件系統(tǒng)的性能的變化情況。通過(guò)改變應(yīng)用程序的輸入以對(duì)應(yīng)用程序施加越來(lái)越大的負(fù)載(并發(fā),循環(huán)操作,多用戶)并測(cè)量在這些不同的輸入時(shí)性能的改變,也就是通常說(shuō)的概念:壓力測(cè)試考察當(dāng)前軟硬件環(huán)境下系統(tǒng)所能承受的負(fù)荷并幫助找出系統(tǒng)瓶頸所在。其實(shí)這種測(cè)試也可以稱為負(fù)載測(cè)試,但是負(fù)載測(cè)試通常描述一種特定類型的壓力測(cè)試——增加用戶數(shù)量以對(duì)應(yīng)用程序進(jìn)行壓力測(cè)試。
    網(wǎng)上可能還有多于以上三種所描述的對(duì)壓力測(cè)試這個(gè)名詞的定義。
    比較贊同第一種概念,壓力測(cè)試應(yīng)該是指模擬巨大的工作負(fù)荷以查看應(yīng)用程序在峰值使用情況下如何執(zhí)行操作。擴(kuò)展開(kāi)來(lái)說(shuō),其一壓力測(cè)試應(yīng)該是較短時(shí)間的,其次是模擬巨大的工作負(fù)荷的,再次壓力測(cè)試是要使應(yīng)用程序的使用達(dá)到峰值。對(duì)這三點(diǎn)繼續(xù)補(bǔ)充,對(duì)第一點(diǎn)長(zhǎng)時(shí)間的壓力測(cè)試就轉(zhuǎn)變成了負(fù)載測(cè)試;對(duì)第二點(diǎn),對(duì)應(yīng)用程序施加的壓力是超負(fù)荷的,所以要不斷地加壓;第三點(diǎn),使應(yīng)用程序的使用達(dá)到峰值,如果超過(guò)這個(gè)界限則應(yīng)用程序會(huì)崩潰或錯(cuò)誤率激增,這個(gè)峰值是針對(duì)某一時(shí)刻來(lái)說(shuō)的,也是針對(duì)某個(gè)臨界的壓力來(lái)說(shuō)的,轉(zhuǎn)變?yōu)閳?chǎng)景設(shè)置中的說(shuō)法就是能夠支持的并發(fā)用戶數(shù)。
    在最近的一次測(cè)試中定義了測(cè)試的目的是:需要了解AUT(被測(cè)應(yīng)用程序)一般能夠承受的壓力,同時(shí)能夠承受的用戶訪問(wèn)量(容量),最多支持有多少用戶同時(shí)訪問(wèn)某個(gè)功能。在AUT中選擇了用戶最常用的五個(gè)功能作為本次測(cè)試的內(nèi)容,包括登錄。大概的需求就是這樣。
    接下來(lái)我AUT的登錄說(shuō)一說(shuō)怎么用LoadRunner和Jmeter來(lái)實(shí)現(xiàn)場(chǎng)景的設(shè)置達(dá)到測(cè)試的目的。(注:對(duì)服務(wù)器的檢測(cè)不是本次測(cè)試的重點(diǎn),本次測(cè)試主要收集并發(fā)訪問(wèn)用戶數(shù)和發(fā)生錯(cuò)誤用戶數(shù))
    首先是對(duì)腳本的要求:
    1、錄制腳本(注意所有的腳本都應(yīng)錄制到Action中),自定義事務(wù),事務(wù)從提交用戶名和口令的腳本之前開(kāi)始;
    2、在定義事務(wù)開(kāi)始的腳本前加入集合點(diǎn);
    3、在腳本中加入檢查點(diǎn),以登錄成功的頁(yè)面出現(xiàn)登錄用戶的ID即可;
    4、參數(shù)化登錄用戶的身份;
    其次是對(duì)場(chǎng)景設(shè)置的要求:
    1、因?yàn)槭孪任覀儾恢缹⒂卸嗌儆脩粼L問(wèn)是臨界點(diǎn),所以在測(cè)試過(guò)程中需要多次改變用戶數(shù)來(lái)確定;
    2、建議修改運(yùn)行時(shí)設(shè)置,優(yōu)化對(duì)服務(wù)器的訪問(wèn);
    3、計(jì)劃的設(shè)置,每x時(shí)間后加載10用戶(根據(jù)總用戶數(shù)設(shè)置),完全加載后持續(xù)運(yùn)行不超過(guò)5分鐘(根據(jù)需要設(shè)置);
    4、集合策略,當(dāng)運(yùn)行中的用戶數(shù)100%達(dá)到集合點(diǎn)時(shí)釋放;
    5、注意事項(xiàng),需要注意幾個(gè)時(shí)間:
    1)服務(wù)器響應(yīng)超時(shí)時(shí)間;
    2)登錄事務(wù)迭代一次所使用的時(shí)間;
    3)集合點(diǎn)等待超時(shí)時(shí)間;
    4)計(jì)劃中設(shè)置的間隔時(shí)間。在我的測(cè)試中事務(wù)運(yùn)行一次的時(shí)間不超過(guò)30秒,通過(guò)修改腳本使它的運(yùn)行時(shí)間達(dá)到一分鐘左右,服務(wù)器響應(yīng)超時(shí)時(shí)間、結(jié)合點(diǎn)等待超時(shí)時(shí)間、計(jì)劃中設(shè)置的間隔時(shí)間都設(shè)置為了2分鐘。
    這樣場(chǎng)景開(kāi)始運(yùn)行后運(yùn)行用戶數(shù)呈階梯增長(zhǎng),另外在每個(gè)上升點(diǎn)新增的用戶都會(huì)隨原來(lái)已經(jīng)運(yùn)行的用戶并發(fā)訪問(wèn)服務(wù)器。
    通過(guò)多次的運(yùn)行和對(duì)測(cè)試結(jié)果中正在運(yùn)行用戶數(shù)與錯(cuò)誤用戶的對(duì)比,然后根據(jù)定義可接受錯(cuò)誤率就可得到該功能的并發(fā)訪問(wèn)的用戶數(shù)。
    以上測(cè)試中排除了對(duì)網(wǎng)絡(luò)、客戶端等的要求。在實(shí)際測(cè)試中首先要保證這些資源是足夠的。
    使用Jmeter也能夠達(dá)到上述描述的場(chǎng)景的測(cè)試,并且更加的便捷。