一種大型軟件測試方法
大型軟件具有涉及子模塊繁多、建設過(guò)程復雜、功能全面、性能具有較高要求的特點(diǎn)。依據ISO/IEC 9126軟件產(chǎn)品評估標準[1],需要對軟件的功能性、可靠性、可用性、效率、可維護性、可移植性等方面進(jìn)行評估。因此,需要有一種方法能夠對大型軟件進(jìn)行測試,保障其軟件質(zhì)量。
本論文針對大型軟件功能模塊多、流程復雜、性能要求高的特點(diǎn),總結了一種測試方法,該方法主要由功能測試和性能測試方法組成。功能測試方法由功能測試流程和功能測試用例設計方法組成,其中功能測試用例設計方法采用以等價(jià)類(lèi)劃分方法為主,多種其他黑盒方法為輔助的方法。性能測試方法由性能測試流程、測試工具選擇、性能測試指標設計和性能調優(yōu)方法組成。實(shí)踐表明,該測試方法具有良好的效果,能夠達到大型軟件進(jìn)行功能和性能把關(guān)的目的。
1 大型軟件的功能測試
某大型軟件在企業(yè)統一的電網(wǎng)設備和客戶(hù)信息模型、基礎資料和拓撲關(guān)系的基礎上,基于GIS的標準化、一體化企業(yè)級信息平臺,應用于供電可靠性管理、客戶(hù)停電管理、線(xiàn)損四分管理、業(yè)擴報裝輔助決策及配網(wǎng)建設規劃等領(lǐng)域。具有涉及子模塊繁多、建設過(guò)程復雜、功能全面的特點(diǎn),需對其進(jìn)行功能測試。
1.1 功能測試流程
功能測試目的是測試產(chǎn)品是否達到了合同技術(shù)協(xié)議書(shū)規定的功能。其流程如圖1所示。
1.2 功能測試測試用例設計
業(yè)務(wù)測試用例由10項內容組成:(1)用例ID,(2)用例名稱(chēng),(3)測試目的,(4)測試級別,(5)參考信息,(6)測試環(huán)境,(7)前提條件,(8)測試步驟,(9)預期結果,(10)設計人員。業(yè)務(wù)測試用例的方法有包括等價(jià)類(lèi)劃分方法、邊界值分析方法、錯誤推測方法、因果圖方法、判定表驅動(dòng)分析方法、正交實(shí)驗設計方法、功能圖分析方法和場(chǎng)景設計方法等,各種方法可以相互補充[2]。
在本文中,對一個(gè)模塊依據邏輯功能不同將其細分,并分別設計測試用例,主要采用等價(jià)類(lèi)劃分方法來(lái)設計測試用例[3-4]。同時(shí)采用邊界值分析方法、錯誤推測方法、因果圖方法等在測試過(guò)程中進(jìn)行輔助,輔助測試人員可以用較少的用例發(fā)現盡可能多的錯誤和缺陷。對某大型軟件的所有模塊均采取這種測試用例設計方法,其中某功能模塊的功能細分列表如表1所示。
某功能模塊的一個(gè)具體業(yè)務(wù)測試用例(運行數據查詢(xún))如表2所示。
2 大型軟件的性能測試
2.1 性能測試流程
性能測試需要驗證產(chǎn)品是否達到了合同技術(shù)協(xié)議書(shū)規定的性能指標。通過(guò)自動(dòng)化的測試工具模擬多種正常、峰值及異常負載條件來(lái)對系統的各項性能指標進(jìn)行測試。
性能測試可以分為負載測試、壓力測試、配置測試、容量測試、基準測試和并發(fā)測試等[5]。本文主要通過(guò)負載測試,確定在各種工作負載下系統的性能,目標是測試當負載逐漸增加時(shí),系統各項性能指標的變化情況。測試時(shí)監控系統的各項性能指標,以便為性能調優(yōu)提供支持。性能測試流程圖如圖2所示。
2.2 測試工具選擇
性能測試的工具種類(lèi)很多,簡(jiǎn)單劃分為以下幾種:負載壓力測試工具、資源監控工具、故障定位工具以及調優(yōu)工具。QA Load、SilkPerformer、LoadRunner、WebRunner都是主流的負載性能測試工具。本文采用LoadRunner作為測試工具,它也可以作為監控工具直接從中間件、數據庫以及主機自身提供的性能數據采集接口獲取性能指標,在負載壓力測試的同時(shí)對業(yè)務(wù)系統所處的測試環(huán)境進(jìn)行監控。
2.3 性能測試指標
性能指標包括應用性能、主機性能、網(wǎng)絡(luò )性能、多任務(wù)性能、可靠性、可用性、易用性、易學(xué)性、負載均衡等性能指標[6]。
本文的合同技術(shù)協(xié)議書(shū)主要考察系統的功能模塊在某測試點(diǎn)下的最大并發(fā)數和響應時(shí)間指標。測試時(shí)、對服務(wù)器的CPU使用率、CPU等待隊列、磁盤(pán)傳輸率(Mb/s)、內存頁(yè)交換率(頁(yè)/s)、網(wǎng)絡(luò )傳輸率(包/s)等指標進(jìn)行監控,編制服務(wù)器資源占用情況表,格式如表3所示。
對大型軟件的所有模塊均考察測試點(diǎn)的最大并發(fā)數和響應時(shí)間指標,其中某子系統的性能測試表如表4所示。
2.4 性能調優(yōu)
性能測試調優(yōu)是為了改善系統某些方面的性能,而對系統軟件或硬件進(jìn)行的修改,它與負載測試是性能測試的兩個(gè)核心內容,它們是多次交替進(jìn)行的。
當性能測試發(fā)現問(wèn)題后,通過(guò)檢查如下幾方面來(lái)收集系統的信息以便診斷系統:(1)應用環(huán)境(如JDK版本);(2)應用程序代碼;(3)數據庫配置參數;(4)操作系統配置參數;(5)硬件配置。如CPU的個(gè)數和主頻、磁盤(pán)的容量和速度及是否使用RAID,內存大小等;(6)網(wǎng)絡(luò )狀況。是否會(huì )有網(wǎng)絡(luò )負載過(guò)重的情況;(7)問(wèn)題的影響是什么,比如影響響應速度或吞吐量等;(8)多少用戶(hù)遇到了問(wèn)題,遇到問(wèn)題的用戶(hù)與其他用戶(hù)的操作有什么不同;(9)系統資源監控的結果是否正常,如CPU和I/O是否正常;(10)問(wèn)題是否集中在某一類(lèi)模塊中;(11)是客戶(hù)端還是服務(wù)器出現問(wèn)題;(12)實(shí)際負載是否超過(guò)了系統的負載能力;(13)是否未對系統進(jìn)行優(yōu)化。
收集完以上必要的信息后,即確定調優(yōu)的具體目標,如:(1)提高系統吞吐量;(2)縮短響應時(shí)間;(3)更好地支持并發(fā);(4)提高硬件配置(如CPU、內存、硬盤(pán)、網(wǎng)絡(luò )等)。
調優(yōu)完成后,再次進(jìn)行負載測試,確定調優(yōu)后的系統性能指標是否達到合同技術(shù)協(xié)議書(shū)的要求。若仍未達到,則需要再次進(jìn)行調優(yōu),并讓開(kāi)發(fā)方也改進(jìn)程序。
實(shí)踐證明,這種功能測試與性能測試方法能夠有效地驗證多個(gè)廠(chǎng)商的產(chǎn)品是否達到了合同技術(shù)協(xié)議書(shū)規定的功能和性能指標。性能測試是控制系統性能的有效手段,在軟件的能力驗證、能力規劃、性能調優(yōu)、缺陷修復等方面都發(fā)揮著(zhù)重要作用。本文總結的功能測試與性能測試方法可以對多模塊、有具體性能要求的大型軟件進(jìn)行測試,功能測試具有步驟明確、設計測試用例效率高和執行簡(jiǎn)單的特點(diǎn);性能測試具有步驟明確、監控全面和能夠進(jìn)行調優(yōu)的特點(diǎn),是一種較好的測試方法。
評論