1. 程式人生 > >軟體測試之效能測試

軟體測試之效能測試

最近一直在忙於找工作,很久都沒有更新部落格了。記得前幾天去面試迅雷,面試官問我效能測試的相關問題,自己答得不是很滿意,遂今天抽空來整理一下效能測試的知識。

首先說說什麼是效能測試。效能測試主要是描述軟體在特定的負載和配置環境下程式的響應時間和吞吐率。

既然有效能測試,那麼一個軟體的效能測試指標有什麼?常用的效能指標通常有軟體的事務處理效率、IO效率、資料庫效能、記憶體利用率、CPU利用率等一些時間與資源的使用效率。

下來分別說說這幾個概念。
軟體的事務處理效率:當某一項軟體在處理某一項事務時,從開始完成花費的所有時間。這個時間不僅僅包括軟體本處理這個操作花費的時間,也包括在手動操作時,也就是說人機互動時花費的時間。

**軟體的IO效能:**IO效能一般指的是物理硬碟的IO效能、網路效能和其他硬體的IO效能。

資料庫效能:主要指的是在資料庫中進行查詢、刪除、新增、更新記錄所花費的時間和資源。

資源利用率:資源利用率就是軟體產品實際使用資源數量與所申請的資源總量之間的比例。記憶體空間利用率,指的是實際使用的記憶體空間和軟體所申請的記憶體空間的比例。CPU的利用率,即應用程式使用CPU時間與應用程式總的執行時間的比例。

有時候面試官會讓你分析以上幾種情況如何解決或者怎麼測試這項內容。對事務處理時間這項來說,程式應用的彈出視窗如果過多,會降低人機互動效率等。而軟體的IO效能主要是說大量讀寫造成的效率問題,以物理硬碟的IO效能為例,進行大量的讀寫硬碟操作的軟體產品中物理硬碟的IO效能就很容易出現效率低下的問題。作為一個產品本身呢,可以考慮通過降低讀寫硬碟的次數,提高每次讀寫資料量來降低硬碟IO效能對軟體效能的影響。對資料庫效能來說,想必學過資料庫知識的人都知道,是對記錄的操作(比如增刪查改更新)會影響時間和效率,那麼針對這種情況,我們肯定會考慮到減少對資料庫操作的次數,減少表和表之間的依賴性。

在效能測試中,往往負載測試也是比較關注的點,負載測試是通過對被測軟體產品進行各種方式的載入負荷以獲得被測產品在各種情況下的效能引數等資訊

一般來說,類似負載測試這樣的非功能性測試,需要在產品的基本功能穩定後才能開展,所以這種測試一般都會被安排產品的功能測試進行了一段時間之後或者當產品的各項功能基本穩定的時候,這個時候非功能性測試的執行不會受到功能不健全或功能性錯誤的影響。但值得注意的是,非功能性測試開始之前,就應該開始負載測試,因為其他效能測試大都需要通過負載測試來產生其參考值。

當然,對負載測試來說對系統的測試環境要求很高,對各項軟體/硬體、網路等的配置都要接近甚至和真實產品的執行環境相同。軟體方面主要包括伺服器的作業系統、防毒軟體、資料庫軟體、web服務環境等。而硬體方面的配置要求包括主機板型號、CPU型號、記憶體大小及型號、硬碟大小及介面型別、網絡卡的介面型別及支援的頻寬等。除了這些還可能需要模擬使用者的請求和網路狀態等。

針對負載測試另一方面就是關於載入的問題。通常有一次性載入、遞增載入、峰谷載入、隨機載入,對這幾個方面可能需要考慮的問題會相對應多一點,首先需要明白這幾個載入方式是怎樣的。

  • 一次性載入:即一次性為被測產品載入定量的負載,並且維持一個較長的時間段。該載入策略通常用於驗證被測產品在某一固定負載下是否能長時間的正常的工作。
  • 遞增載入:即逐步為被測產品增加負載,直到被測產品不能正常工作為止。該載入策略通常用於獲取被測產品正常工作的負載極限。
  • 峰谷試載入:即為被測產品載入一個較高的負載,並且維持一段時間,然後再為被測產品載入一個比較低的負載,並且維持一段時間,如此重複。這種載入方式通常用於發現被測產品在不斷的申請資源、釋放資源的輪迴中是否會產生資源或記憶體的洩露。
  • 隨機載入:積隨機為被測產品載入定量的負載,並且維持一個較長的時間段。這種載入通常用於模擬真實情況下被測產品的執行狀況,並可能發現一些不在測試用例設計範圍內的產品缺陷或效能缺陷。