如何有效開展性能測試

一、性能測試類型

  性能測試是一種廣義上的說法,包括了以下各種不同的性能測試類型,每種測試類型都帶着明確的測試目的。

  1.性能測試(Performance Testing)

  性能測試的方法是通過模擬生產運行的業務壓力量和使用場景組合,測試系統的性能是否滿足生產的性能要求。即在特定的運行條件下驗證系統的能力狀況。

  主要強調在特定的軟硬件環境、特定的測試業務場景下,獲得系統的各個性能指標。

  2.負載測試(Load Testing)

  在給定的測試環境下,通過在被測系統上不斷增加壓力,直到性能指標超過預定指標或某種資源使用已經達到飽和狀態,目的是瞭解系統性能容量和處理能力極限。負載測試的主要用途是發現系統性能的拐點,尋找系統能夠支持的最大用戶、業務等處理能力的約束。

  負載測試是在固定測試環境,在其它測試角度(負載方面)不變的情況下,變化一個測試角度並持續增加壓力,查看系統的性能曲線和處理極限,以及是否有性能瓶頸存在(拐點)。主要意義是從多個不同的測試角度去探測分析系統的性能變化情況,配合性能調優。測試角度可以是併發用戶數、業務量、數據量等不同方面的負載。

  3.壓力測試(Stress Testing)

  測試系統在一定飽和狀態下系統能夠處理的會話能力,以及是否出現錯誤,一般用於穩定性測試。

  可以理解爲資源的極限測試。測試關注在資源處於飽和或超負荷的情況下,系統能否正常運行,是一種在極端壓力下的穩定性測試。其主要意義是通過測試、調優保證系統即使在用戶的極端壓力下也不會出錯甚至系統崩潰。

  壓力測試的目的是調查系統在其資源超負荷的情況下的表現,尤其是對系統的處理時間有什麼影響。這類測試在一種需要在反常數量、頻率或資源的方式下執行系統。目標是通過極限測試方法,發現系統在極限或惡劣環境中自我保護能力。主要驗證系統的可靠性。

  4.配置測試(Configuration Testing)

  通過對被測系統的軟硬件環境的調整,瞭解各種不同環境對性能影響的程度,從而找到系統各項資源的最有分配原則。

  主要用於性能調優,在經過測試獲得了基準測試數據後,進行環境調整(包括硬件配置、網絡、操作系統、應用服務器數據庫等),再將測試結果與基準數據進行對比,判斷調整是否達到最佳狀態。

  5.併發測試(Concurrency Testing)

  模擬併發訪問,測試多用戶併發訪問同一個應用、模塊、數據時是否產生隱藏的併發問題,如內存泄漏、線程鎖、資源爭用問題。

  6.可靠性測試(Reliability Testing)

  通過給系統加載一定的業務壓力的情況下,讓應用持續運行一段時間,測試系統在這種條件下是否能夠穩定運行。

  需要和壓力測試區分開,兩者的測試環境和測試目的不一樣。壓力測試強調在資源極限情況下系統是否出錯,可靠性測試強調在 一定的業務壓力下長時間(如24×7)運行系統,關注系統的運行情況(如資源使用率是否逐漸增加、響應時間是否越來越慢),是否有不穩定徵兆。

  二、如何有效開展性能測試

  1.引言

  作爲評價產品性能的重要手段,性能測試在軟件測試工作中佔的比重一直很大,要最終提供一份準確,權威的測試報告,測試人員的努力工作自然不可或缺,但更重要的是測試人員清晰的工作思路,簡潔的測試流程和良好的測試方法。

  2.目前性能測試存在的問題

  總結以往進行的性能測試,雖然測試人員自始至終對測試工作都做到了認真負責,但測試報告出爐後,大家總覺得美中不足,對測試結果都心存疑慮,尤其在那些時間跨度較長、針對不同的測試對象的性能對比測試中,或多或少都存在以下幾個方面的問題:

  ① 測試準備不充分,測試目標不明確,測試計劃不詳細;

  ② 缺乏測試以及針對測試對象的技術儲備;

  ③ 測試環境的穩定性及前後一致性不足;

  ④ 測試數據精確性和代表性不足;

  ⑤ 測試描述不精練;

  下面,我們就剖析以上問題的同時,探討一下如何解決這些問題。

  三. 性能測試準備

  這是一個經常被忽略的環節,在接到測壓任務後,基於種種其它因素的考慮,測試人員往往急於進度,立即投入到具體的測試工作去了,測試、記錄、分析,忙的不亦樂乎,工作進行了一半才發現,或是硬件配置不符合要求,或是網絡環境不理想,甚至軟件版本不對,一時弄得騎虎難下,這都是沒有做好測試準備惹的禍。

那麼我們應該如何做好性能測試的準備工作呢?

  做軟件項目有需求調查、需要分析,我們做測試也一樣。在拿到測試任務後,我們首要的任務就是分析測試任務,在開始測試前,我們至少要弄清以下幾個問題:

  1. 要測試什麼或測試的對象是誰?

  2. 要測試什麼問題或我們想要弄清楚或是論證的是什麼問題?

  3. 哪些因素會影響測試結果?

  4. 需要怎樣的測試環境(軟件、硬件、網絡環境)?

  5. 應該怎樣測試?

  只有在認真調查測試需求和仔細分析測試任務後,纔有可能弄清以上一系列的問題,只有對測試任務非常清楚,測試目標極其明確的前提下,我們纔可能制定出切實可行的測試計劃。明確測試目標,詳盡測試計劃在對測試需求充分了解的基礎上,制定儘可能詳細的測試計劃,對測試的實施是大有裨益的。

  3.1 測試技術準備

  在目前的大環境下,要求測試人員在短時間撐握所有的軟、硬件知識是不太現實的,但平時測試人員應抓緊對測試工具和測試理論的研究,在測試計劃中,應給研究測試對象和測試工具分配充足的學習時間,只有在充分撐握測試工具,完全瞭解測試對象的前提下,我們才能夠實施測試。建立在錯誤的認識上的測試,既使你再努力,結果也是背道而馳,也很難證明問題,更不用說用這樣的測試報告去說服用戶。

  技術準備列表:

  1) 紮實的計算機專業基礎知識;

  2) 大量的實際性能測試及優化經驗;

  3) 性能測試相關工具的使用;

  4) 操作系統的原理:熟悉操作系統的體系架構、操作系統的重要基礎概念,以及內存管理、存儲/文件系統、驅動/硬件的管理、網絡協議的實現及構成、性能的監控方法和原理,熟悉常用的性能計數器;

  5) 數據庫原理:能進行一般的數據庫管理操作,熟悉SQL腳本的使用,熟悉常用的數據調優工具和常用的性能計數器;

  6) web應用服務器原理:瞭解一般的配置,熟悉常用的服務器性能監控方法和原理,熟悉常用的性能計數器;

  7) 計算機網絡原理:至少熟悉TCP/IP協議,熟悉HTTP協議,至少見過並瞭解三層、四層交換或者路由器的使用和配置。瞭解常用的與網絡性能相關的性能計數器;

  8) 行業知識:熟悉專屬行業的業務知識和用戶場景,例如銀行網站後臺管理系統所涉及的業務知識和用戶場景,證券交易系統所涉及的業務知識和用戶場景。

  3.2 配置測試環境

  配置測試環境是測試實施的一個重要環節,測試環境適合與否會嚴重影響測試結果的真實性和正確性。測試環境包括硬件環境和軟件環境,硬件環境指測試必需的服務器、客戶端、網絡連接設備,以及打印機/掃描儀等輔助硬件設備所構成的環境;軟件環境指被測軟件運行時的操作系統、數據庫及其他應用軟件構成的環境。考慮到其它因素,如網絡鎖、網速、顯示分辯率,數據庫權限、容量等對測試結果的影響。如條件允許,我們最好能配置幾組不同的測試環境。

  搭建測試環境步驟:

  1) 測試環境規劃

  測試環境的規劃包括硬件、軟件及所有構建測試環境所需的資源的規劃,可以利用Checklist或是測試環境部署矩陣的方式完成;

測試環境部checklist
測試環境說 對測試環境的簡介
項目名稱 測試項目名稱
項目簡介 對項目的簡介
網絡拓撲圖 測試環境的網絡拓撲圖
硬件配置 描述配置環境硬件配置信息
例如:
CPU:至強 3.0
內存: 4GB
硬盤: 200G
網卡:千兆
軟件配置 測試環境中所使用的軟件環境配置(要有詳細版本)
例如:
操作系統: Windows
系統服務: AD域、消息隊列、 MSDTC訪問
應用平臺: Microsoft .Net Framework2.0 SP1
應用軟件: MCMS 2002 SP1
數據庫:SQL
中間件: IIS6.0
瀏覽器: IE7.0
殺毒軟件:諾頓 SEP
軟件防火牆: windows防火牆
軟件要求 描述軟件環境的詳細配置:
例如:
操作系統需要配置 /3G的支持
需要打開 windows防火牆
IIS應用連接池的詳細配置
IE需要將應用網址添加到信任站點
網卡型號 描述測試環境的網卡型號信息詳細
例如:
Intel PRO/100 NIC
Intel(R) 82567V-2 Gigabit Network Connection
網絡信息 描述網絡的具體配置項
例如:
域名或 工作組名
IP地址
子網掩碼
默認網關
DNS服務器
測試工具 描述環境中需要安裝的測試工具
測試工具名稱
測試工具版本
測試工具簡介
用戶權限 描述測試環境中的用戶權限
應用軟件列表 被測試的軟件及版本描述如:
門戶網站後臺管理服務端
靜態抓取服務端
外來數據導入應用
應用軟件要求 描述應用軟件的詳細配置
Dao.config數據庫連接的配置
Webconfig配置
外來數據導入配置

2) 測試環境創建 按照checklist中的網絡拓撲、硬件配置、網卡型號的要求創建測試環境的硬件和網絡環境,搭建完畢後,每個設備(PC或服務器)要整理出《硬

  2) 測試環境創建

  按照checklist中的網絡拓撲、硬件配置、網卡型號的要求創建測試環境的硬件和網絡環境,搭建完畢後,每個設備(PC或服務器)要整理出《硬件配置表》,以便於維護

  3) 測試環境配置

  按照checklist中的軟件配置、軟件要求、網絡信息、用戶權限配置測試環境中PC和服務器的軟件環境,配置完畢後,每個設備(PC或服務器)要整理出《環境配置文檔》,以便於後期的環境維護。

  4) 應用程序部署

  按照checklist中的應用軟件列表和應用軟件要求,將應用程序部署到測試環境中,部署完畢後,每個應用程序的部署要整理出《應用軟件部署文檔》,以便於後期的升級維護。

  5) 測試環境的使用

  在使用過程中可能會對測試環境做一定的調整,每次調整後,都要對相應的文檔《測試環境部署checklist》、《硬件配置表》、《應用軟件部署文檔》和《應用軟件部署文檔》進行修改,以保持環境和文檔的一致。

  6) 測試環境回收

  項目結束後,需要對項目中使用的資源進行整理,並將不使用的資源進行釋放。

  硬件資源:PC機、服務器、磁盤空間、交換機等

  網絡資源:IP地址

  3.3 測試數據的獲取和處理

  功能測試的數據獲取主要有三個方式

  1) “造”數據:針對正常業務,異常情況,邊界情況等構建測試數據,不僅僅包括最基本的基礎數據,比如:用戶、權限、配置、基礎編碼、原數據等,還包括系統的業務數據;

  2) “導”數據:把已經在生產環境中運行的數據或老版本中的數據導出,在此基礎上進行數據的整理後加工爲測試數據;

  3) “積累”數據:使用現實的業務流程將現有的非電子化業務數據手工錄入系統,在驗證業務的同時也完成了測試數據的積累,即邊測試邊積累數據。但是這種情況積累的數據往往有一定侷限性,因爲已經發生的業務數據基本是正確的、一致的,而且可能缺少某些特定業務的數據(不常發生的分支業務)。這樣就需要根據對測試需求的分析,追加新的測試數據,以便能完整覆蓋業務類型。

  性能測試使用的數據和功能測試有一定的區別,準備測試數據的側重點不同,性能測試使用的數據不用考慮如何去校驗功能。性能測試數據要注意以下幾點:

  1) 測試數據的唯一問題

  性能測試往往使用自動化測試工具進行測試,會使用相同的腳步反覆的運行來進行測試,所以在測試過程中一定要注意腳本中參數的重複問題,設計測試數據時要考慮併發用戶數以及每個用戶可能迭代的次數,避免因測試數據數量不夠而使用重複數據,最終導致測試失敗。

  2) 測試數據的清理問題

  性能測試往往會向系統中增加大量的數據,增加的數據量足以達到影響系統性能的程度(例如:數據庫表中有100條數據和表中有100W條數據的響應時間一定是不同的),所以必須及時的對增加的測試數據進行清理,以保證測試環境的公平性,進而保證測試結果的真實性。

  3) 測試數據數量和容量(大小)問題

  性能測試往往要使用“大”數據量來進行測試,“大”數據量不僅僅指數量的多少,還要考慮到數據容量的大小。例如:發佈文章的測試,不僅要滿足發佈文章數量的要求,還要考慮到文章內容的大小,也就是說不僅要考慮發佈10W個1K大小的文章的性能還要考慮發佈10W個10M大小的文章的性能。

  4) 測試數據隨意性問題

  測試數據忌隨意性,隨意輸入指定長度的字符串,雖然滿足測試執行的要求,但是對後續工作會產生很多不良影響,例如:無法保證數據的唯一性,隨意的輸入數據有機率產生重複數據;收集的測試結果開發人員不易分析,性能測試中的開發人員可能需要分析內存的 Dump文件,隨意輸入的、沒有規則的字符串不利於開發人員對dump文件的分析。

  四. 如何開展性能測試

  測試前期的準備工作紛繁複雜,做好測試準備工作,已是完成了測試工作的一大半,但要產生一份具有說服力的測試報告,還應正確把握測試的強度,保持測試的一致性,提高測試的精度。

  判斷軟件的好壞,要看軟件解決實際應用的能力,只有在一定的測試強度下,才能測試出各種軟件資源的消耗率,軟件運行的速度,軟件的穩定性。通過對比在不同的測試強度下,不同軟件每一個功能模塊解決實際問題的能力和軟件運行的效率,我們纔可能判斷出不同軟件的每一個模塊的強弱,甚至於整個軟件的優劣。

性能測試開始後,所有參數的輸入都應遵循統一的標準,無論是哪一個環節,哪怕是一點點偏差,都應立即糾正,絕不能心存僥倖。要特別注意外部環境對測試結果的影響,如果在整個測試過程中,外部環境不一致,如網速、機器內存使用率不一樣,就有可能導致測試結果與實際情況有出入。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章