軟體測試,作為軟體工程的一部分,隨著軟體生產的產業化運作應運而生,是軟體生產的一個動態監控過程,對軟體開發全過程進行檢測,可以隨時發現問題、報告問題,並重新評估新的風險,設定新的監控基準,並持續下去。軟體測試是軟體品質控制的過程,是對軟體系統中潛在的各種風險進行評估的活動,其目的是監測和排除缺陷,以確保軟體產品在可用性、功能性、可操作性等多方面滿足品質需求。
目前,軟體測試已經由被動的以監測和發現錯誤為目的發展到從軟體品質控制(SQC,Software Quality Control)開始轉移到軟體品質保證(SQA,Software Quality Assurance),使軟體測試從單純的缺陷檢測和發現覆蓋到整個軟體開發過程,避免了軟體開發過程中由於軟體需求和設計等方面的缺陷所帶來的巨大風險。一個典型的軟體過程可以分為測試需求分析、測試設計、測試執行、缺陷和組態管理過程等許多個不同的階段。在軟體測試技術方面也已經被細化為單元測試、整合測試、系統測試、使用者驗收測試等不同的測試技術。而在對軟體產品品質呼聲日高的今天,軟體效能測試技術尤為重要。
軟體效能測試“整體觀”
軟體的效能測試是為了檢驗系統或系統組件是否達到需求規格說明中規定的各類效能指標,並滿足一些效能相關的約束和限制條件,它必須對系統或系統組件具有的效能(例如,速度、精度、頻率)做出規定的要求。
效能測試通常在系統測試階段執行,常常與強度測試結合起來,一般需要使用測試載入器。評估測試對象的效能行為時,可以使用多種評測,這些評測側重於擷取與行為相關的資料,如回應時間、計時設定檔、執行流、操作可靠性和限制。這些評測主要在評估測試活動中進行,也可以在執行測試活動中使用效能評測評估測試進度和狀態。
效能需要在各種條件下測試,這些條件包括:
● 不同的工作量和/或系統條件。
● 不同的用例/功能。
● 不同的配置。
● 效能需求在補充規格或需求規格說明書中的效能描述部分中說明。
在上述條件下執行測試時,要特別注意以下資訊,並為反映這些資訊的每條語句產生至少一個測試需求:
● 時間語句,如回應時間或定時情況。
● 指出在規定時間內必須出現的事件數目或用例數的語句。
● 將某一項效能的行為與另一項效能的行為進行比較的語句。
● 將某一配置下的應用程式行為與另一配置下的應用程式行為進行比較的語句。
● 一段時間內的操作可靠性(平均故障時間或MTTF)。
● 配置或約束
軟體效能測試工作主要包括如下幾個方面:
● 動態監測:在測試執行過程中,即時擷取並顯示正在執行的各測試指令碼的狀態。
● 回應時間/輸送量:測試對象針對特定主角和/或用例的回應時間或輸送量的評測。
● 百分位報告:資料已收集值的百分位評測/計算。
● 比較報告:代表不同測試執行情況的兩個(或多個)資料集之間的差異或趨勢。
● 追蹤報告:主角(測試指令碼)和測試對象之間的訊息/會話詳細資料。
軟體效能測試“方法觀”
軟體效能測試的方法可以根據測試目的的不同,選擇不同的方法,具體如下表:
根據測試內容的不同,效能測試主要包括以下方面:
1、回應時間測試
● 回應時間測試,通常指正常單使用者操作時用戶端的回應時間,以及將強度測試、負載測試、壓力測試結合時用戶端的回應時間。
● 函數、方法、對象、子常式執行時間。
● 函數、方法調用頻度及嵌套。
● 運行特定模組、按特定路徑執行或處理特定資料所花費的時間。
● 處理精度。
● 如果兩次已耗用時間相差三倍以上,則可能存在問題。
2、強度測試(壓力/負載測試)
強度測試需要在反常數量、頻率或資源的方式下運行系統,以檢驗系統能力的最高實際限度,它要求軟體必須被強制在它的設計能力的極限狀態下運行。
3、軟體可靠性測試
這種測試經常發現的錯誤包括越界指標,記憶體泄露、棧溢出、超過兩個特性之間的錯誤互動等,也稱長序列測試(long sequence testing)、持久測試(duration testing)、耐力測試(endurance testing)。測試期間較長,目標是發現程式測試遺漏的錯誤。
可靠性差的軟體,如執行時總是頻繁地、重複地失敗,軟體不能穩定地工作。
軟體可靠性測試的目的是給出可靠性的定量估計值。軟體效能評測“指標觀”
一般來說衡量軟體效能測試的標準可以採用以下曾用的方法:
1、軟體可靠度(R)指標
一種定量描述軟體可靠性的方法,是指在規定的條件下和規定的時間內,軟體在其運行剖面的某時刻正確地實現規定功能的機率。
2、軟體平均故障前工作時間(MTTF)
一種定量描述軟體可靠性的方法,是指一定配置狀態下的軟體產品在其規定的運行剖面中故障工作時間的期望值,以及軟體故障強度。
3、軟體平均無故障工作時間(MTBF)
電腦系統或子系統實現其功能的能力。一般以對電腦系統或子系統執行其功能的能力的度量。例如,回應時間、吞吐能力、交易處理數、佔用率。
軟體效能測試“執行個體觀”
為了讓讀者對效能測試有更深刻的認識,下面以手機中啟動並執行軟體為例,說明在實際的軟體開發過程中效能測試方法的運用:
手機效能測試的方法可分為手工測試和自動化的測試。
手工測試主要是通過測試人員手動操作,並藉助某些監測儀器和工具來驗證手機效能。但由於手機功能眾多,很多效能測試需要重複性地進行,工作量很大,這需要耗費大量測試時間同時也容易造成測試的遺漏,不能保證效能測試的準確性和高效率。
藉助PC平台,目前已經有很多功能強大且通用的自動化的測試工具,如比較典型的有Winrunner,Robot,Loadrunner等等,但這些工具必須進行二次開發,才能將自動化的測試工具相容到手機這種嵌入式系統中來。
手機的自動化效能測試一般分為以下幾個步驟進行:
1、系統分析
將系統的效能指標轉化為效能測試的具體目標。通常在這一步驟裡,要分析被測系統結構,結合效能指標,制定具體的效能測試實施方案。要求測試人員對被測系統結構和實施業務全面掌握。
2、建立虛擬使用者指令碼
將商務程序轉化為測試指令碼,通常指的是虛擬使用者指令碼或虛擬使用者。虛擬使用者通過驅動一個真正的客戶程式來類比真實使用者,要將各類被測商務程序從頭至尾進行確認和記錄,分析每步操作的細節和時間,將其精確地轉化為指令碼。類似製造一個能夠模仿人的行為和動作的機器人過程。
3、根據使用者效能指標建立測試情境
根據真實業務情境,對產生的測試指令碼進行複製和控制,對指令碼的執行制定規則和約束關係,轉化為滿足效能測試指標的測試案例集。這個步驟需要結合使用者效能指標進行細緻地分析。
4、運行測試情境,同步監測應用效能
在效能測試運行中,即時監測能使測試人員在測試過程中的任何時刻都可以瞭解應用程式的效能優劣。系統的每一組件都需要監測:協議棧,MMI應用程式,記憶體佔用情況,驅動程式運行狀態等。即時監測可以在測試執行中及早發現效能瓶頸。
5、效能測試的結果分析和效能評價
結合測試結果資料,分析出系統效能行為表現的規律,並準確定位系統的效能瓶頸所在。可以利用數學手段對大批量資料進行計算和統計,使結果更加具有客觀性。在效能測試中,需要注意的是,能夠執行的效能測試方案並不一定是成功的,成敗的關鍵在於其是否精確地對真實世界進行了類比。
在整個效能測試過程中,自動化測試載入器的選擇只能影響效能測試執行的複雜程度,但人的分析和思考卻會直接導致效能測試的成敗。
總之,軟體效能測試的方法很多,不同方法的評測指標也是不同的。針對使用者的需求、開發模式以及開發過程的不同,靈活。