在性能測試開(kāi)始前沒(méi)有從幾個(gè)不同的角度設置期望,以確保測試結果是有價(jià)值的,這是最常見(jiàn)的性能測試誤區。這些期望包括測試小組需要定義合理的輸入和輸出性能期望,如果沒(méi)有提前設置,那么很難判斷被測試的應用程序的性能是否合格。
(2)性能測試環(huán)境失真
顯然,測試環(huán)境應盡可能地與生產(chǎn)環(huán)境相似,因為任何差異都將引入不確定性。因此,性能測試環(huán)境應在每個(gè)細節(從服務(wù)器防火墻和后端資源的數量到網(wǎng)絡(luò )電纜的規格)上完全模仿生產(chǎn)環(huán)境。
理想的性能測試環(huán)境應該由專(zhuān)用的服務(wù)器機器與連接它們的專(zhuān)用網(wǎng)絡(luò )組成,非專(zhuān)用服務(wù)器環(huán)境可能會(huì )產(chǎn)生許多的問(wèn)題。例如共享的網(wǎng)絡(luò )資源和內部網(wǎng)共享性能環(huán)境,這些都可能造成性能測試結果的失真,這與測試時(shí)網(wǎng)絡(luò )的利用率直接有關(guān)。因此,如果基于應用程序的服務(wù)器也作為其他無(wú)關(guān)的應用程序或配置的服務(wù)器在運行,那么進(jìn)行性能測試將是失真的。
另一方面,性能測試環(huán)境的客戶(hù)機端對性能測試結果也有重大影響。負載測試客戶(hù)機機器應被完全專(zhuān)用于負載測試任務(wù),客戶(hù)機機器也應保持在網(wǎng)絡(luò )配置上并盡可能地接近專(zhuān)用的環(huán)境,例如類(lèi)似競爭本地CPU、內存和磁盤(pán)資源的其他應用程序不應共享這些機器,這些對本地資源的競爭也會(huì )影響被測量的響應可靠性。
(3)性能測試沒(méi)有與功能測試相結合
眾所周知,功能測試可以發(fā)現性能問(wèn)題,性能測試也能發(fā)現功能問(wèn)題。因此,性能測試和功能測試應是緊密聯(lián)系在一起的,原因之一是很多性能問(wèn)題是由軟件自身功能缺陷引起的。如果應用系統功能不完善或者代碼運行效率低下,通常會(huì )帶來(lái)一些性能問(wèn)題。所以,功能測試要先于性能測試執行或者同步相結合進(jìn)行,軟件功能完善可以保證性能測試進(jìn)行得更加順利。
性能測試的步驟
每種不同的應用系統的開(kāi)發(fā),開(kāi)發(fā)人員可能選擇不同的實(shí)現方式。因此,根據測試項目的不同,所選用的度量和評估方法也有不同。不過(guò)仍然有一些通用的步驟幫助我們完成一個(gè)性能測試項目,步驟如下:
(1)明確性能測試的目標和需求
一般來(lái)說(shuō),一個(gè)性能測試計劃的第一步是確定客戶(hù)需求和期望,并根據實(shí)際業(yè)務(wù)需求確定系統需求。只有清楚了解各方面的需求,才能明確測試的范圍,才能選擇適當的測試方法。
性能測試需求的來(lái)源一般是軟件需求、設計文檔或用戶(hù)備忘錄等設計和需求相關(guān)的文檔。當然,并非所有的性能測試需求都在這些文檔中以明確的方式標識出來(lái),此時(shí)就需要根據不十分明確的文檔描述進(jìn)行進(jìn)一步的細化。在條件允許的情況下,還可以包括開(kāi)發(fā)工程師和客戶(hù)代表,輔助對性能測試需求進(jìn)行分析和確認。
(2)確定測試計劃和測試基準
如果不進(jìn)行合理的規劃,性能測試將會(huì )是一項令人望而生畏且有些混亂的任務(wù)。性能測試計劃是用來(lái)指導性能測試過(guò)程的主要文檔,在測試計劃中除了要寫(xiě)明本次測試的測試目標、測試需求外,還需要在測試計劃中給出明確的測試通過(guò)條件,測試時(shí)間和資源計劃。
在制定測試計劃時(shí),應該使用測試基準來(lái)確定應用程序中是否出現性能倒退;鶞蕼y試可以在一個(gè)相對短的時(shí)間內收集可重復的結果。性能測試基準的來(lái)源主要是用戶(hù)對各項指標提出的明確需求;如果用戶(hù)沒(méi)有提出性能指標則根據用戶(hù)需求、測試設計人員的經(jīng)驗來(lái)設計各項測試指標。任何測試的目的都是確保軟件符合預先規定的目標和要求,性能測試也不例外,所以必須制定一套標準的測試基準。
(3)設計測試場(chǎng)景和設計測試用例
這是性能測試的主要內容。性能測試的測試設計一般基于測試場(chǎng)景(Test Scenario),一個(gè)測試場(chǎng)景就是一個(gè)用戶(hù)的實(shí)際使用系統的剖面。在性能測試過(guò)程中,明確每個(gè)場(chǎng)景的參與者人數、比例和具體行為是非常重要的,這些都是構成性能測試腳本的基礎。
因此,測試場(chǎng)景的提取需要測試設計人員對用戶(hù)的行為和業(yè)務(wù)有較為深入的了解。明確了性能測試場(chǎng)景之后,可根據不同的應用領(lǐng)域設計各種測試用例來(lái)達到性能測試目標。最后需要注意的是,性能測試設計還應該包括測試環(huán)境、測試數據等的設計,因為影響系統性能的因素很多,保持測試過(guò)程中環(huán)境和數據的可控性是非常重要的。
(4)測試工具的選擇和使用
性能測試是一項復雜的工作,一個(gè)性能測試項目的質(zhì)量如何,測試人員的素質(zhì)、能力和經(jīng)驗是最關(guān)鍵的因素。要保證性能測試項目的高質(zhì)量,必須依賴(lài)兩個(gè)重要的因素:人和工具!肮び破涫,必先利其器”,擁有一套熟悉,功能全面、質(zhì)量可靠的性能測試工具對于從事性能測試的人員非常有幫助。
性能測試是通過(guò)工具模擬大量用戶(hù)操作,對系統增加負載和壓力。例如通過(guò)產(chǎn)生模擬真實(shí)業(yè)務(wù)的負載對被測系統進(jìn)行加壓,研究被測系統在不同負載壓力情況下的表現,找出其潛在的瓶頸。因此,一個(gè)良好的性能測試工具必需能做到以下幾點(diǎn):提供產(chǎn)生壓力的手段,能夠對后臺系統進(jìn)行監控,對壓力數據能夠進(jìn)行分析,快速找出被測系統的瓶頸。
例如,一組性能測試運行完畢后,我們會(huì )得到詳盡的數據。這些數據的量非常大,靠人工去分析這些數據幾乎是不可能的,性能測試工具能提供數據分析,幫助性能測試人員去閱讀、解讀和分析數據,輔助測試人員定位系統的瓶頸。因此,選擇一款合適的性能測試工具并培訓一支高素質(zhì)的工具使用隊伍無(wú)疑是至關(guān)重要的。
(5)性能測試結果分析
這是性能測試過(guò)程中最困難,也是最重要的步驟。它需要分析人員在運行性能測試后,收集相關(guān)信息,進(jìn)行數據統計分析,通過(guò)排除誤差和其他因素,讓測試結果體現接近真實(shí)情況,以找到性能瓶頸。
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/