性能測試——3、性能測試過程


性能測試——3、性能測試過程


概念驗證(Proof of Concept:POC)

維基百科

概念驗證(Proof of concept,簡稱POC) 是對某些想法的一個較短而不完整的實現,以證明其可行性,示範其原理,其目的是為了驗證一些概念或理論。概念驗證通常被認為是一個有里程碑意義的實作的原型 。

網絡解釋

概念性驗證(Proof of Concept;POC) 正如其字面意義一般,是1種架構師(Architect)為了「驗證」概念是否能確實執行,所擷取出最精要、核心的解決方案(Solution),以作為解釋架構的概念依據。POC可以協助架構師在驗證概念時,以更宏觀的角度看待複雜系統,並讓所有關連的人更容易提供意見,修改架構,避免落入計較細節,本末倒置的情況發生。 POC除了可以協助架構師更瞭解系統的概念全貌外,也有助於幫助瞭解系統內部的結構分析與設計呈現。
POC一般來說,會包含以下幾個部分:1、為了驗證概念所需的技術架構,如Framework、Pattern;2、利用UML語法所建構的概念模型; 3、模擬解決方案; 4、可被實際執行的解決方案原型(Prototype)。


解決方案的原型,必須要是1個可被驗證的框架,強調的是對系統的整體觀與結構觀,而非單純的圖形介面。這個原型的功用在確定系統架構的大方向,然後才是校正細節。

在銷售環節中,POC提供如下信息:

  • POC提供了一個在技術上評估針對目標程序的性能測試工具的機會 (從技術角度驗證性能測試工具的可行性;在被測應用程序上對測試工具進行試驗。);
  • 識別腳本數據需求 (針對少數的事務,組建性能測試的基本部分,是一次針對腳本測試階段的“彩排”,能識別出執行成功所必需的輸入數據和運行中的數據需求。);
  • 評估腳本 (估算出編寫腳本所需要的時間,為以後的測試提供決策基準);
  • 在目標應用程序上演示性能測試解決方案的能力(POC象形的展示了自動化測試工具的優越性,為你的計劃和方案提供決策支持)。

POC一覽表

前提

  1. 與客戶共同制定一套成功或者退出標準,並以書面的形式確定;
  2. 配備一個標準的能夠滿足性能測試工具及其解決方案的最低規格的軟件和硬件環境;
  3. 應用環境安裝必要的監控軟件,如服務器和網絡監控器;
  4. 理想的情況下,有一個獨立的權限去訪問POC過程中的程序;
  5. 業務人員或者熟悉軟件的用戶,當出現易用性的問題時,提供諮詢和建議;
  6. 提供技術支持人員(瞭解程序的構架以及中間環節的工作原理並能解決技術性問題);
  7. 應用環境和被測程序的權限賬號(至少準備兩套權限用戶,多用戶操作);
  8. 要至少有兩個樣本事務組成的POC的基礎(一個是簡單的只讀,另一個應該是對目標數據進行更新的複雜事務)。

流程

  1. 為每一個樣本事務錄製兩個事件,然後對比兩者的不同,確定需要什麼樣的“運行時數據”(對比工具:Windiff、ExamDiff Pro from prestoSoft、WinMerge);
  2. 完成針對輸入和運行時數據需求的識別,以及所有對腳本必需的修改後,還要確定事務能夠在單用戶和多用戶的條件下正確的回放(數據庫更新、預期結果、事務回放日誌沒有報錯)。

可交付

  1. 測試工具成功的運行腳本,回放應用程序的事務,是評價POC通過的標準;
  2. POC通過後,可以確認範例事務的輸入和運行時數據的要求,並且能夠大致瞭解性能測試項目的數據需求;
  3. 確定為了保證腳本準確回放做所有修改,以及評估錄製一個應用程序事務腳本所需的大致時間;
  4. 在銷售方面,可以給客戶提供一個良好的印象,滿足所有已承諾的成功標準。

性能測試具體過程(從需求到完成)

過程時間指南

在性能測試項目中大部分的時間花費在獲取需求、驗證需求以及實現需求上,只有這樣才能為性能測試打下堅實的基礎。其餘的時間則用於錄製事務腳本、執行性能測試和分析測試結果。

關鍵任務的時間尺度指導:

  1. 錄製性能測試腳本:每個事務需要半天的時間;
  2. 創建驗證測試階段或者測試場景:一般需要一到兩天;
  3. 執行性能測試時間:需要至少五天時間(驗證問題的測試是未知數;數據庫重建也會耗時很多);
  4. 數據收集:需要一天的時間(收集測試結果和(關鍵性能指標)KPI監控數據)。

第一步:需求分析

從所有利益相關者那裡收集或諮詢各種性能需求(詳細說明)。

其他注意點:

  1. 為性能測試設定一個截止日期,包括已經計劃好的時間安排;
  2. 決定是外部資源測試還是用內部資源來執行測試(取決於時間進度和自身資源);
  3. 制定測試環境設計方案(儘量接近真實環境,創建的時間要充分考慮);
  4. 確保測試周期匯中,都會把代碼凍結應用於測試環境;
  5. 確保性能測試中,不會受到其他用戶的影響(防止對性能測試執行和結果造成影響);
  6. 確定所有性能測試的目標,並徵求各利益方(整個測試團隊和相關人員)的同意,在性能測試目標上達成一致;
  7. 確認軟件的關鍵失誤,並記錄在案,以備錄製(很重要的過程,可能導致性能測試面臨失效的風險);
  8. 確定事務的檢查點,特別是一些特殊的監視要求(比如登陸、搜索);
  9. 檢查您所選擇的事務的輸入、目標、運行時數據的需求(數據對於性能測試十分重要;要保證性能測試項目的時間框架內獲取足夠的準確的數據;同時考慮數據的安全和保密);
  10. 驗證性能測試的數目、類型、事務內容以及虛擬用戶的配置;思考時間、步進以及負載生成策略;
  11. 驗證並記錄服務器,應用服務器以及KPI(關鍵性能指標);儘可能全面的監視軟件環境,以保證有可用的信息來驗證並解決發生的問題;
  12. 驗證性能測試結果,並生成性能測試結果與測試目標對比的報告;
  13. 制定性能測試中發現缺陷的提交步驟規範。

內部性能測試額外關注的點:

  1. 團隊成員以及彙報制度(建立專門的性能測試團隊或有內部測試專家組成的核心團隊(大型公司);最起碼要確保您有一位項目經理和足夠的性能測試工程師);
  2. 準備好性能測試中需要用到的測試工具和資源(滿足團隊進行有效性能測試的所有需求);
  3. 確保所有成員都接受了關於所有測試工具的相關培訓。

滿足一手要求,繼續一下活動:

  1. 制定一個包含資源、時間點以及基於需求的里程碑的總體規劃;
  2. 制定詳細的性能測試計劃,包括所有相關的時間點、測試場景和測試用例、負載量,以及環境信息等;
  3. 確保計劃中包含風險評估,例如時間進度偏差、性能目標未實現等,以防止實際測試與計劃的偏離。

技巧(常被忽略的問題):
如果在性能測試執行過程中發現了軟件的問題,您要確保計劃中為額外測試環境和缺陷解決方案預備了意外事件處理機制。

第二步:搭建測試環境

儘早為測試環境準備好硬件、軟件、網絡設備,它耗費的時間可能比預期要長的多;測試環境儘量和真實環境相似;

搭建測試環境需要考慮的步驟:

  1. 提前搜索相關設備和配置,為搭建環境準備足夠的時間;
  2. 考慮所有的配置模型(局域網,廣域網);
  3. 把外部系統的鏈接考慮進去;外部鏈接可能是性能瓶頸的主要所在;
  4. 為目前的測試模型準備足夠的負載生成能力;(負載生成的位置:本地、遠程);
  5. 確保被測應用程序在測試環境中進行正確的配置;
  6. 為被測應用程序和支持應用程序的軟件準備足夠的軟件許可協議;
  7. 配置調試性能測試工具;
  8. 配置(關鍵業務指標)KPI監控工具。

第三步:錄製事務腳本

事務錄製之前,需要做的幾點:

  1. 驗證事務的運行時數據需求;
  2. 確定並運用事務輸入數據需求;
  3. 決定如何為事務需要特別監控的部分添加檢查點(Checkpoint),以評估特定事務的響應時間;
  4. 識別並執行應用所錄製的腳本之間的不同,這些是事務成功回放所必需的(LR中的關聯技術);
  5. 創建性能測試場景之前,確保事務無論從單用戶或者多用戶的角度都能回放成功。

第四步:創建性能測試場景

考慮如下幾點:

  1. 你所做的性能測試屬於哪種類型的性能測試:基準測試、負載測試、滲透測試(疲勞測試)、壓力測試(峰值測試)、非性能測試;
  2. 設置思考時間和步進時間(壓力測試除外),真實反映用戶情況;
  3. 負載生成器配置策略;
  4. 為每個負載生成器設置負載生成策略:爆炸式(Big-Bang)、漸進(ramp-up)、漸進(ramp-up)/漸退(ramp-down);
  5. 測試數據準備充分;
  6. 考慮是否使用IP欺騙技術;如果用,提前準備合法的IP清單;
  7. 考慮帶寬的不同情況;
  8. 根據服務器和網絡KPI指標,確定性能監控軟件;
  9. 基於網絡的性能測試,考慮瀏覽器緩存(新用戶、舊用戶、以及訪問過的用戶),取決於軟件的解決方案;
  10. 考慮應用技術對您的性能測試設計的所有影響。

第五步:執行性能測試

執行性能測試僅僅是驗證軟件的性能目標。

注意點:

  1. 證實測試之前,進行預演測試;檢查負載生成器是否達標;確定測試環境配置正確;
  2. 執行基準測試為性能測試建立一個響應時間的理想值;(每個事務單用戶運行一定時間或者多次重複一個事務獲得的響應時間);
  3. 執行負載測試時,下一次負載測試前,執行重置數據庫(保證性能基線);
  4. 負載測試中發現的問題,需要單獨進行測試(考慮計劃時,需要安排額外的時間);
  5. 滲透測試(疲勞測試)發現內存洩露或者發現與高數據交互事務執行相關的問題;
  6. 壓力測試(容量測試或峰值測試),對系統容量的設置具有參考價值;另外,為以後測試中增長的事務容量和最終系統用戶提供數據的參考,還可以利用壓力測試為處於特定應用級別的服務器設定水平擴展性限制;
  7. 執行其他與性能無關的測試(配置不同的負載平衡性、容錯災備等)。

第六步(後測試階段):分析測試結果、撰寫測試報告和環境恢復

  1. 數據收集(收集並備份所有在性能測試項目中生成的數據);
  2. 對比項目需求設定的性能目標和測試結果,確定性能測試是否達標(提前確定性能指標的“一致性”);
  3. 根據報告模板將測試結果整理成文檔;
  4. 將最終結果作為基線數據並用於跟蹤最終用戶體驗。

參考文檔

  • 《應用程序性能測試的藝術》


分享到:


相關文章: