性能測試是為了保證產品發布后其性能能夠滿足用戶的需求,本文結合具體案例介紹了應用
我們都知道系統存在性能問題的時候,我們就要要在性能測試過程中查找形成系統瓶頸和故障的根本原因,可是如何做呢?有如下步驟。
1.確定明確的測試目標
性能調優是是無止境的,所以在測試之前應確定一個明確性能調優目標,這也是后面“評估性能驗證”的一個基準,也是測試終止的一個基準。在本案例中目標設定為:在相同系統環境配置下30個并發用戶在1~5秒鐘內完成各類在線操作。
2.測試需求分析
性能調優的測試分析主要目的是要挖掘出可能造成系統瓶頸的因素,并為后面的測試用例設計提供保證。影響系統性能有很多種原因,在此應關注如下幾個關鍵點:
● 應用配置需求: 例如應用整體框架、涉及到哪些第三方的組件、應用層與數據庫層的接口、使用了什么數據庫等。
● 系統配置需求: 例如用戶客戶端配置、客戶端與服務器端的網絡配置、應用服務器或數據庫服務器操作系統等。
● 用戶使用情況需求: 例如用戶分布情況; 哪些模塊用戶使用比較頻繁; 在用戶操作的數據有哪些特點等。
這方面工作是非常繁雜的,而且要求測試人員具有挖掘可能造成系統瓶頸因素的洞察力和敏銳感,但是很多測試人員在接手測試之后,很快進入到測試用例設計階段。實踐證明,這樣做往往都適得其反,要么工期延期,要么項目開發失敗。這個過程在測試整體過程中是非常關鍵的一環。性能測試分析有個特點: 它關注的是應用的整體,或者會仔細分析圍繞著應用的各種外部因素,比如說它所涉及到的硬件、第三方軟件,而不會深入到項目具體的內部。這是因為性能測試關注的是項目整體、是一種黑盒測試方法,我們關心一個項目的整體在運行時所暴露出來的問題。在此案例中我們獲取到如表所示需求。
3.測試用例設計
此過程主要目的是設計出一些合理的場景去驗證在需求分析階段獲得的可能影響性能的因素是否是造成系統瓶頸的因素。測試用例設計一般包括測試策略、測試案例、測試內容。
測試策略一般包括對比測試環境與真實的業務操作環境,真實業務操作環境又可能涉及局域網測試環境與機房測試環境等
測試案例主要是根據測試需求分析的結果制定出在測試執行時系統的執行方法,比如本案例中“5個人同時錄入不同的新客戶信息,以及具體的模擬步驟”。在測試案例設計時應注意如下幾點:
● 虛擬用戶的操作步驟要盡量類似于真實用戶的操作。
● 操作的數據要類同于真實用戶實際使用數據,例如在案例中用戶錄入客戶信息時,根據需求得到的結果,我們可以設計有3~4個虛擬用戶在錄入一些小客戶的信息,1~2個虛擬用戶在錄入大客戶的信息等。
● 在案例設計時要充分考慮到需求中用戶對模塊的使用頻率。使得在模擬時每個模塊使用情況盡量地類似于真實環境。
測試內容一般包括并發性能測試、疲勞強度測試、大數據量測試以及系統資源監控等,我們在做性能調優測試時主要是做并發性能測試以及系統資源監控這些方面的工作。從對系統產生并發性能測試過程中監控系統中各種資源的變化,來判斷導致性能瓶頸的原因。
4.腳本開發數據的準備以及測試執行與監控
測試執行與監控的主要目的是根據設計方案去驗證系統是否存在瓶頸,給測試分析提供各種分析數據。此過程會與下面的“測試分析”過程不斷進行重復執行,直至真正確定出系統瓶頸所在。
筆者認為,在此過程中如果有測試工具能夠滿足測試要求,那么應盡量使用測試工具,不要手工去開發測試程序,因為做企業項目往往時間緊張,而且測試工具畢竟是一個成熟的產品,在各方面都得到驗證。使用工具將會縮短測試周期,而且現在市場上有很多成熟的測試軟件。例如: Mercury的LoadRunner、IBM的Robot、Compuware的QALoad等。在這個案例中筆者使用的是Mercury的 LoadRunner。關于一些技術細節筆者就不再贅述了,在這里主要提兩點。
一是數據的準備。數據準備一定要關注數據的質量和數量,不要出現一些不符合業務邏輯的廢數據,并且數據量要滿足測試運行的需要。例如測試需要100組數據,但是實際只準備了50組,從而導致測試執行結果出現大的偏差。
二是測試執行。除了正確按照設計的要求去設置各種參數之外,還要關注系統是否存在功能問題,這往往成為性能測試的“盲點”。原則上性能測試之前必須確保功能測試已經完備,但是任何事情都不絕對,所以一般做性能測試之初,都會模擬一個用戶去運行設計的場景,主要是確!測試腳本正確性”、“在設計的場景中應用系統不存在功能上的問題”。很多性能測試過程往往因為功能問題導致性能測試失敗,或者是測試延期的現象。
文章來源于領測軟件測試網 http://www.k11sc111.com/