軟件測試:剖析軟件測試中的壓力測試

字號:

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