利用現(xiàn)代的設(shè)計技術(shù)和正式的技術(shù)復(fù)審可以減少代碼中存在的初始錯誤,但是錯誤總是存在的,如果開發(fā)者找不到錯誤,那么,客戶就會找到它們。越來越多的軟件組織認(rèn)識到軟件測試是軟件質(zhì)量保證的重要元素之一,很多軟件開發(fā)組織將30%—40%甚至更多的項目資源用在測試上,軟件測試技術(shù)和軟件測試策略受到了高度的重視和廣泛的應(yīng)用。
本文不想就軟件測試技術(shù)和軟件測試策略作深入的理論分析,而是列舉一個在軟件系統(tǒng)測試階段進(jìn)行的壓力測試實例,希望能通過這個實例與從事軟件測試相關(guān)工作的朋友進(jìn)行交流。 首先介紹一下實例中軟件的項目背景,該軟件是一個典型的三層C/S架構(gòu)的MIS系統(tǒng)(客戶端/應(yīng)用服務(wù)器/數(shù)據(jù)庫管),中間層是業(yè)務(wù)邏輯層,應(yīng)用服務(wù)器處理所有的業(yè)務(wù)邏輯,但應(yīng)用服務(wù)器本身不提供負(fù)載均衡的能力,而是利用開發(fā)工具提供的ORB(對象請求代理)軟件保證多個應(yīng)用服務(wù)器間的負(fù)載均衡。本次測試的目的是:進(jìn)行單個應(yīng)用服務(wù)器的壓力測試,找出單個應(yīng)用服務(wù)器能夠支持的最大客戶端數(shù)。測試壓力估算的依據(jù)是:假定在實際環(huán)中,用戶只啟用一個應(yīng)用服務(wù)器進(jìn)行所有的業(yè)務(wù)處理。方法是:按照正常業(yè)務(wù)壓力估算值的1~10倍進(jìn)行測試,考察應(yīng)用服務(wù)器的運行情況。 壓力測試的詳細(xì)計劃如下: 壓力測試計劃 1、測試計劃名稱 河北省公安交通管理信息系統(tǒng)壓力測試計劃。 2、測試內(nèi)容 2.1背景 本次測試中的壓力測試是指模擬實際應(yīng)用的軟硬件環(huán)境及用戶使用過程的系統(tǒng)負(fù)荷,長時 間運行測試軟件來測試被測系統(tǒng)的可靠性,同時還要測試被測系統(tǒng)的響應(yīng)時間。 用戶的實際使用環(huán)境: ◇由兩臺IBM XSeries250 PC Server組成的Microsoft Cluster; ◇數(shù)據(jù)庫管理系統(tǒng)采用Oracle8.1.6; ◇應(yīng)用服務(wù)器程序和數(shù)據(jù)庫管理系統(tǒng)同時運行在Microsoft Cluster上。 ◇有200個用戶使用客戶端軟件進(jìn)行業(yè)務(wù)處理,每年通過軟件進(jìn)行處理的總業(yè)務(wù)量為:150萬筆業(yè)務(wù)/年。 2.2測試項 應(yīng)用服務(wù)器的壓力測試; 2.3不被測試的特性 ◇系統(tǒng)的客戶端應(yīng)用程序的內(nèi)部功能; ◇數(shù)據(jù)庫中的數(shù)據(jù)量對程序性能的影響。 3、測試計劃 3.1測試強度估算 測試壓力估算時采用如下原則: ◇全年的業(yè)務(wù)量集中在8個月完成,每個月20個工作日,每個工作日8個小時; ◇采用80—20原理,每個工作日中80%的業(yè)務(wù)在20%的時間內(nèi)完成,即每天80%的業(yè)務(wù)在1.6小時內(nèi)完成; 測試壓力的估算結(jié)果: 去年全年處理業(yè)務(wù)約100萬筆,其中15%的業(yè)務(wù)處理每筆業(yè)務(wù)需對應(yīng)用服務(wù)器提交7次請求;70%的業(yè)務(wù)處理每筆業(yè)務(wù)需對應(yīng)用服務(wù)器提交5次請求;其余15%的業(yè)務(wù)每筆業(yè)務(wù)向應(yīng)用服務(wù)器提交3次請求。根據(jù)以往統(tǒng)計結(jié)果,每年的業(yè)務(wù)增量為15%,考慮到今后三年業(yè)務(wù)發(fā)展的需 要,測試需按現(xiàn)有業(yè)務(wù)量的2倍進(jìn)行。 每年總的請求數(shù)量為:(100*15%*7+100*70%*5+100*15%*3)*2=300萬次/年。 每天的請求數(shù)量為:300/160=1.875萬次/天。 每秒的請求數(shù)量為:(18750*80%)/(8*20%*3600)=2.60次/秒。 正常情況下,應(yīng)用服務(wù)器處理請求的能力應(yīng)達(dá)到:3次/秒。 3.2測試環(huán)境準(zhǔn)備 3.2.1基本硬件及軟件環(huán)境的準(zhǔn)備 1)網(wǎng)絡(luò)環(huán)境:公司內(nèi)部的以太網(wǎng),與服務(wù)器的連接速率為100M,與客戶端的連接速率為10/100M自適應(yīng)。 2)使用兩臺IBM XSeries250(1G內(nèi)存)PC Server作Microsoft Cluster,安裝系統(tǒng)軟件 Windows 2000 Advance Server及Microsoft Cluster Server(MSCS)。 3)數(shù)據(jù)庫管理系統(tǒng)的安裝及配置:在測試用的IBM XSeries服務(wù)器上安裝Oracle8.1.6,數(shù)據(jù) 庫采用Oracle Fail Safe(ofs)的Active/Passive配置。 安裝數(shù)據(jù)庫管理系統(tǒng)及支撐軟件(包括VisiBroker和BDE Administrator)。 4)安裝被測的應(yīng)用服務(wù)器程序。 5)客戶端的PC機(jī):10臺(PⅢ600/128M RAM)。 3.2.2系統(tǒng)客戶端測試程序的編寫系統(tǒng)客戶端測試程序使用Delphi編寫,要求測試程序?qū)崿F(xiàn)如下功能: 1)模擬一個主要的向應(yīng)用服務(wù)器發(fā)送請求并接收響應(yīng)信息的功能。要求交替模擬兩種情況:第一種,發(fā)送的請求至少包括10個參數(shù),參數(shù)類型涵蓋字符、日期、數(shù)字種類型;接收的 響應(yīng)信息不少于1個參數(shù);第二種,發(fā)送的請求不少于1個參數(shù);接收的響應(yīng)信息至少包括10個參數(shù),參數(shù)類型涵蓋字符、日期、數(shù)字種類型。 2)必須能夠通過參數(shù)設(shè)定在每臺PC機(jī)上運行的客戶端測試程序個數(shù)、請求的時間間隔(單位:毫秒)、運行時間(單位:小時)。 3)在數(shù)據(jù)庫中建立測試記錄表,生成測試記錄,向數(shù)據(jù)庫寫入測試記錄的功能不通過被測的應(yīng)用服務(wù)器實現(xiàn)。日志內(nèi)容包括:發(fā)送測試請求的機(jī)器名、客戶端測試程序序號、發(fā)出請求時間、收到響應(yīng)時間、處理是否成功。表名:TEST_LOG,字段名:MACHINE、ID、START_TIME、END_TIME、FLAG。 3.2.3系統(tǒng)本底數(shù)據(jù)的準(zhǔn)備 為考察系統(tǒng)運行一段時間后系統(tǒng)的響應(yīng)性能,參照實際運行情況及發(fā)展進(jìn)行系統(tǒng)的本底數(shù)據(jù)準(zhǔn)備。業(yè)務(wù)處理中涉及到的業(yè)務(wù)表中都要求按設(shè)計規(guī)模進(jìn)行本底數(shù)據(jù)的準(zhǔn)備。要求準(zhǔn)備的數(shù)據(jù)記錄的有效性符合系統(tǒng)要求,數(shù)據(jù)有效性的具體要求參見數(shù)據(jù)庫設(shè)計及系統(tǒng)設(shè)計文檔。 3.3破壞性測試 按照設(shè)計連接的客戶端連接數(shù)量進(jìn)行測試,把應(yīng)用服務(wù)器處理請求的設(shè)計頻度增加1-10倍,分別測試出現(xiàn)錯誤的狀態(tài)和和出現(xiàn)錯誤的比率,考察是否出現(xiàn)不可恢復(fù)錯誤,系統(tǒng)設(shè)計要考 慮出現(xiàn)嚴(yán)重錯誤情況下負(fù)荷減輕錯誤自動恢復(fù)的實現(xiàn)方法。 計劃時間:2天;這個時間包括破壞性的修復(fù)和自動恢復(fù)的實現(xiàn)需要的時間。 在測試過程中每10分鐘記錄一次IBM Xseries PC Server的內(nèi)存及CPU使用情況,包括被測程序的內(nèi)存占用百分比、數(shù)據(jù)庫管理系統(tǒng)的內(nèi)存占用百分比、操作系統(tǒng)的內(nèi)存占用百分比。 3.4強度穩(wěn)定性測試 選擇一種負(fù)荷比設(shè)計負(fù)荷重的情況(應(yīng)用服務(wù)器處理請求的頻度為應(yīng)用服務(wù)器處理請求的 設(shè)計頻度的1.5倍),進(jìn)行24小時穩(wěn)定性測試。 3.5測試方法和工具 黑盒測試 測試工具:無外購的測試工具,自己編制的測試工具。 3.6測試時間計劃 3.6.1環(huán)境準(zhǔn)備:2天。 其中:基本硬件、軟件環(huán)境及系統(tǒng)本底數(shù)據(jù)的準(zhǔn)備:1天, 系統(tǒng)客戶端測試程序的編寫及測試:1天。 3.6.2破環(huán)性測試:2天。 3.6.3強度穩(wěn)定性測試:1天。 3.7測試中的問題及處理 3.7.1暫停標(biāo)準(zhǔn)和再啟動要求 暫停標(biāo)準(zhǔn):被測試軟件在強度穩(wěn)定性測試中頻繁出現(xiàn)異常(每小時出現(xiàn)1次以上)時。用戶或公司要求暫停測試時。 再啟動要求:通過調(diào)試后,預(yù)計被測試軟件的可靠性有所提高時,可再次啟動測試。 3.7.2不可預(yù)見問題 不可預(yù)見問題包括: ◇測試環(huán)境被破壞而導(dǎo)致測試無法進(jìn)行; ◇當(dāng)出現(xiàn)上述不可預(yù)見問題時,測試終止,就已完成的測試內(nèi)容編制測試總結(jié)報告,并在報告中說明測試終止的原因。 3.8測試報告 2002.06.21 測試總結(jié)報告提交日期:2002.06.21。 3.8.1應(yīng)生成的測試文件 測試記錄(測試負(fù)責(zé)人和參與測試的人員簽字); 測試總結(jié)報告。 3.8.2測試總結(jié)報告中必須包含的內(nèi)容 被測試軟件名稱、測試項、測試環(huán)境; 被測試軟件的壓力測試結(jié)論:響應(yīng)時間、最大/最小并發(fā)數(shù)、失敗的次數(shù)、正常連續(xù)運行的最長/最短時間,并發(fā)數(shù)與失敗的關(guān)系。 4、人員和職責(zé) 4.1職責(zé) 測試工程師:負(fù)責(zé)編寫測試計劃,組織測試,對測試過程進(jìn)行記錄,收集、整理測試記錄數(shù)據(jù),對測試結(jié)果進(jìn)行分析,編寫測試總結(jié)報告。 軟件工程師:負(fù)責(zé)編寫、調(diào)試客戶端測試軟件;數(shù)據(jù)庫管理系統(tǒng)的安裝、ofs配置及系統(tǒng)的本底數(shù)據(jù)準(zhǔn)備。 系統(tǒng)工程師:負(fù)責(zé)測試用的硬件維護(hù)及操作系統(tǒng)安裝、MSCS配置。 總工程師:負(fù)責(zé)對測試計劃及測試總結(jié)報告進(jìn)行批準(zhǔn)。 用戶:必要時可參加測試,并提出具體的測試要求;可要求暫停測試。 4.2人員和訓(xùn)練要求 本次測試無特別的人員及培訓(xùn)要求。 5、批準(zhǔn) 本測試計劃必須經(jīng)過總工程師批準(zhǔn)后才能開始實施。 |
|