自動化性能測試

發表于:2007-04-22來源:作者:點擊數: 標簽:自動化性能測試
摘要 在過去的20年中,很多公司已經轉向用軟件將工作數字化方式。在軟件應用的推動下,已經產生了巨大生產效率,同時,為全球經濟的協作和信息共享提供了新的方式。軟件應用實際上已經成為業務關鍵信息共享和各種事務處理兩領域的主要渠道。當前,軟件應用--
  摘要

        在過去的20年中,很多公司已經轉向用軟件將工作數字化方式。在軟件應用的推動下,已經產生了巨大生產效率,同時,為全球經濟的協作和信息共享提供了新的方式。軟件應用實際上已經成為業務關鍵信息共享和各種事務處理兩領域的主要渠道。當前,軟件應用----從e-mail到CRM(客戶關系管理)到事務處理----就意味著業務本身。

        軟件開發技術在這段時期內已經發生改變并且相當成熟,現代應用軟件的復雜性也正在爆發。應用可以使用數十和數百種組件完成曾經使用紙張或手工的工作。復雜性直接導致業務過程中出現更多的潛在故障點,從而使分析問題的根源更為困難。

        此外,軟件應用的運行與汽車不同。它們沒有那些當磨損后可直接更換的耐久部件。不論目標是為了建立競爭優勢還是為了滿足業務的變化,軟件應用每周每月每年都在改進。這一連串的變化使公司不得不面對另外一系列風險。

        難以置信的改變速度和爆炸性的軟件復雜性給軟件開發過程帶來了巨大風險。嚴格的測試,對于量化和降低業務風險,是最常用的策略。開發人員,測試團隊和管理層等會提出一個相似的問題:在投入運行前如何準確,全面地驗證系統性能,而不超出預算。

        通過性能測試,公司可以在投入運行之前檢驗應用是否滿足業務需求,量化最終用戶體驗的變化的影響,并且快速分析和解決發生故障的組件,因而在部署時就較少出現意外。然而,自動化性能測試的美好前景需要面對一些新問題:

  1. 什么是性能測試?
  2. 為什么要使它自動化?
  3. 性能測試正確的過程?

            -設計
            -構建
            -執行
            -分析,診斷,和調整

  4. 好的性能測試涉及到哪些人?
  5. 誰需要看結果并且如何報告結果來量化ROI?
  6. 當比較自動化負載測試方案時,哪些特性是最重要的?

       通過我們的負載測試經驗和大量的顧客輸入和回饋,我們已經在正確的方法中積累了大量的專門技術,使得性能測試的步驟自動化。這篇文章總體介紹了自動化性能測試和最佳覆蓋性能測試方法的益處。

    什么是性能測試?

        性能測試是在上線前對系統進行端到端性能測試的唯一方法。性能測試解決方案是:

  1. 使用最少的硬件模擬成百上千的用戶與系統進行交互。
  2. 測量最終用戶的響應時間
  3. 以一致的方式重復負載
  4. 在負載下監測系統組件
  5. 提供健壯的的分析和報告機制

        自動化測試方案通常使用4個主要的組件來構建和運行測試。這些包括:

  1. 虛擬用戶發生器可以捕獲最終用戶業務過程,并轉化為自動化腳本。
  2. 控制器將組織、驅動、管理、和監測負載
  3. 執行期間負載發生器執行虛擬用戶
  4. 分析引擎觀測、分析和對比結果

    為什么使性能測試自動化?

        自動化測試是一種方法,發揮人力,過程,技術的作用,以降低應用,升級或補丁部署的風險。其核心,自動化性能測試是在預部署的系統上施加生產環境的負載,同時測量系統性能和最終用戶的體驗。構建良好的性能測試可以回答類似下面的問題:

        

  1. 應用響應時間對于計劃的用戶足夠快么?
  2. 應用是否能夠處理期望的用戶負載或更多?
  3. 應用是否能處理業務所需的事務數量?
  4. 應用在期望內或期望外的用戶負載下是否穩定?
  5. 你確定用戶會在上線時得到積極的體驗么?

       通過回答這些問題,自動化性能測試采用業務術語量化改變所帶來的影響。這樣,就明確了部署的風險。一個有效的自動化性能測試過程可以幫助制定考慮周詳的發布決策并防止系統故障和可用性問題。

  自動化性能測試過程

        一些已經成功實行自動化性能測試的組織,已經將這個過程分解為獨立的階段。雖然具體的實施可能有所不同,但是,寬泛地說,性能測試可以分為四個階段—設計,構建,執行和診斷/調整。每個階段有具體的任務,涉及到不同的角色,這些任務在轉到下一階段前必須完成。在最高級別,四個階段可以被描述如下:

  1. 設計階段包括定義系統中所要測試的業務過程,在平均或峰值生產時間的綜合業務過程,和用戶和響應時間的全面目標。
  2. 階段包括建立和配置測試系統和基礎設施,并且使用自動化性能測試解決方案來構建測試腳本和負載場景。
  3. 執行階段由運行負載場景和測量系統性能組成。
  4. 診斷調整反復迭代的階段超出了測量系統性能和負載測試,達到另外一個層次,關鍵是要查明問題來快速幫助解決問題,并且調整系統參數來最優化性能

       讓我們詳細分析關系到每個階段成功與否的必要任務。

    設計

        這是性能測試團隊向業務部門搜集性能需求的主要階段。需求可以被認為分為四個方面—業務,技術,系統和團隊需求。

        業務需求一般通過與主題專家(SME,subject matter expert)的會議來搜集。這些人可以是業務分析師和最終用戶。當下面內容準備好后,一套全面的業務需求就形成了:

  1. 應用概要:系統用法的演示使得性能團隊得到更高層次的理解,應用是如何被使用的。
  2. 業務過程列表:最終用戶在系統上所執行的關鍵業務過程列表。
  3. 業務流程:Word文檔,詳盡記錄每個業務過程的精確步驟和屏幕。
  4. 事務列表:業務過程中關鍵活動的列表—例如登錄或轉移資金—需要在負載下測量。
  5. 業務過程圖:業務流程圖說明業務流程的分支條件。

        技術需求可以通過與系統管理員和數據庫管理員(DBA)的會議來搜集。這些人可以隸屬于開發或運營部門,或者隸屬于兩者。一套全面的技術需求僅當以下內容齊備時完成:

  1. 環境評審:按照測試體系結構由系統或基礎設施組進行走查評審。
  2. 系統范圍的會議:召開會議,討論和確認在測試過程中系統需要排出的部分。
  3. 生產圖:一個生產基礎設施圖,用于說明測試與生產環境的差異,當從QA向生產遷移時可能對性能造成影響。

       最后,重要的是,必須收集系統需求。這些是系統的高層次目標,決定著負載測試過程的通過/失敗狀態。這些一般在與LOB的項目經理工作中達成一致。系統需求包括對以下問題的回答:

  1. 系統在正常和最高峰時期必須支持多少用戶?
  2. 每秒鐘它必須處理多少個事務?
  3. 對于可業務關鍵事務最大和最小可接受的響應時間是多少?
  4. 用戶群體如何聯系?
  5. 生產中系統承受的工作負載是什么?以及混合的事務?

        團隊需求是進展到構建階段前需要解決的最后一個問題。這只不過是決定適合的性能團隊成員來參與到未來的負載測試。最初,這也許被自動的確定(例如,當只有一個團隊)。然而,如果性能測試成為卓越中心(CoE)的一部分,那么資源分配,內部后勤就應該在設計階段考慮和解決。

        預先收集一套完整的業務,技術,系統,和團隊需求是使負載測試有效和成功的基礎。

    構建

        構建階段將在設計階段確定的業務過程和工作負載轉變為自動化組件,這部分可以驅動可重復的,實際的負載。這可以分為兩個方面:自動化設置和環境設置。自動化設置是由性能工程師完成的一系列連續的工作。

  1. 腳本:將確定的業務過程記錄為自動腳本。
  2. 事務:插入定時器來產生業務所需的邏輯計時。
  3. 參數用一個池替代所有的輸入數據,例如ID和密碼,這樣每個虛擬用戶用唯一的數據訪問應用。
  4. 場景通過給用戶組分配不同的腳本,連通性和用戶行為等方法,創建生產工作負載。
  5. 監測器:確定負載下所要監控的服務器或機器。

        環境設置由執行成功,現實的負載測試所需的硬件,軟件,和數據組成。這些可能涉及到系統,DBA,運營和業務團隊。

        構建階段的最終成果就是可以執行在可用的,已配置的環境上的一系列自動化“資產”。

    執行

        對于剛接觸性能測試的新手來說,經常存在一個誤解,就是執行是一個單一事件。實際上,它是一個由多種類型的性能測試組成的多步驟的過程。每種測試都提供了理解發布應用所帶來風險的必要信息。負載測試的類型包括:

  1. 基線測試驗證了系統和其周圍環境可在合理的技術參數下運行。性能測試按5到10個用戶執行,作為最終用戶事務性能的基線。這些測試應該在性能測試的開始和結束時執行,來測量響應時間的絕對改進。
  2. 性能測試在環境中模仿負載,并確定系統可以支撐的最佳和最大用戶數量。這些測試應該仿效平均和峰值時間的生產用法,他們應當最大限度地仿真用戶的真實行為,例如思考時間,調制解調器的仿真,和各種類型的瀏覽器。同時,采用其它專用的監控和診斷工具,有效地查看系統內部行為,診斷系統衰變和瓶頸。
  3. 基準測試被設計來測量和對比理想情況下的各種機器類型,環境,或應用的版本。當系統經過擴展性測試后,執行這些測試可以幫助了解不同體系結構的影響。
  4. 滲透測試被設計用于在長時間的負載下檢測系統的執行情況。
  5. 峰值測試被設計用于模擬系統在峰值負載下運行一段時間來保證應用和其硬件可以在合理的時間段內支持高負載

    分析,診斷,和調整

    如何確定性能測試的 ROI

        良好的性能測試的ROI有雙重意義:

  1. 緩解風險保證項目達到正確的擴展性和性能。緩解風險是標準的性能測試好處。大多數自動化性能測試的用戶可以向開發部門或項目團隊反饋清晰的,可量化的信息,預測系統在生產環境的擴展和性能情況。
  2. 性能最優化以量化方式改善系統的性能,通過測量改進的最終用戶響應時間,或者通過減少所需的全面硬件基礎設施

    如何優化性能

       在性能測試后的階段中,提供了很多有利于改善系統性能的有價值信息。

  1. 監測性能測試期間的監測顯示出基礎設施中每一層發生的情況,在性能測試期間提供了數據庫服務器,Web服務器,應用服務器,或單獨的應用和過程的更加清晰的記錄。例如,這些信息可以快速表明應用服務器的CPU使用率在200用戶的時候達到100%,而不能達到300用戶的目標。這意味著要么需要更多的應用服務器容量要么需要優化應用自身。
  2. 分析:在負載測試完成之后,用戶可以關聯分析—例如創建虛擬用戶對抗CPU或應用服務器CPU到Web服務器—來測定應用行為更深一層次的信息。
  3. 調整:許多公司在應用部署的前中后期使用壓力測試工具來實施自動化性能測試。同時可以采用其它工具允許用戶通過修改系統配置設置系統地識別,隔離,和解決基礎設施的性能瓶頸。通過反復實施解決基礎設施的瓶頸的過程,用戶可以建立當前最優的黃金配置。
  4. 診斷:當前的技術可以允許,性能工程師在負載條件下對各個層,組件和SQL語句如何影響整個業務過程性能有一個統一的認識。診斷時,性能工程師使用診斷工具可以看到最終用戶事務當前涉及到的所有組件。此外,用戶也可以看到每一個組件花費的時間和被調用的次數。依靠這些信息,項目和QA經理可以定位到最重要的Web,應用,和數據庫服務器瓶頸,集中資源來改善用戶體驗。它為開發者提供了如此有效的實際數據以至于用戶把它稱為“性能測試的圣杯?!?/LI>

    良好的性能測試涉及到哪些人?

  1. 項目經理
            協調多個性能項目,管理測試進度,獲得必要的硬件或軟件,處理資源和資金問題。
  2. 業務分析師
            負責從業務的角度對系統性能作出評價和結論。幫助開發性能測試中的混合事務和期望時間。
  3. 性能經理
            負責協調性能支持團隊的工作,作為小組的聯系人。負責管理日常性能工作。
  4. 性能測試人員
            負責創建和執行自動測試和收集測試結果。
  5. 應用構造師
            接受負載測試的診斷和分析的信息,來最優化應用性能和解決性能問題。
  6. 基礎設施專家:DBA,網絡管理員,系統架構師
            接受負載測試調整和分析的信息,來最優化應用性能和解決性能問題。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97