軟件測試中測試用例之性能測試用例

性能測試壓力測試負載測試、強度測試、穩定性測試、健壯性測試、功能測試、接口測試……,這麼多眼花繚亂的測試類型名稱,估計很少有人能準確的區分並說出定義來,至於對應的測試用例如何編寫和執行,就更不用說了。
如果問測試工程師測試用例如何編寫,就象是問程序員如何編寫代碼得到的答案一樣,每個人都會給出不同的編寫方法,但實用的測試用例卻象優秀的程序一樣難以編寫。
目前國內,測試工程師卻時常要面對“已經延期幾倍計劃時間的項目”,測試用例如何發揮更大的作用,是一個迫切需要解決問題。事實上,完全可以把測試用例看成是測試工程師編寫的程序:這個“程序”是爲了輔助測試工作的進行而開發的,目的是爲了發現軟件問題,同時“順便”證明軟件功能是否符合要求。
本文針對上面的問題,以設計性能測試用例爲示範,講解在企業實際工作中,如何有效劃分測試種類和編寫對應的測試用例,使測試工作更加合理、高效率的開展。
1測試種類和階段
1.1 測試種類
對於測試種類的說法多種多樣,最多的能達到30多種測試類型。而實際工作中很多測試是互相包含的。按照企業中實際工作需要,通常主要進行下面幾種類型的測試:功能測試、健壯性測試、接口測試、強度測試、壓力測試、性能測試、用戶界面測試、可靠性測試、安裝/反安裝測試、文檔測試。
下面介紹幾種重要的測試種類及其測試的內容:
功能測試:功能測試主要針對產品需求說明書的測試,是驗證功能是否否合需求,包括原定功能的檢驗、是否有冗餘功能、遺漏功能。這類測試應由測試員做,這並不意味着程序員在發佈前不必檢查他們的代碼能否工作,他們也需要進行基本功能的測試。
接口測試:程序員對各個模塊進行系統聯調的測試,包含程序內接口和程序外接口測試。這個測試,在單元測試階段進行了一部分工作,而大部分都是在集成測試階段完成的。由開發人員進行。
性能測試:在交替進行負荷和強迫測試時常用的術語。性能測試關注的是系統的整體。它和通常所說的強度、壓力/負載測試測試有密切關係。所以壓力和強度測試應該與性能測試一同進行。
用戶界面測試:對系統的界面進行測試,測試用戶界面是否友好、是否方便易用、設計是否合理、位置是否正確等一系列界面問題
安裝/反安裝測試:安裝測試主要檢驗軟件是否可以正確安裝,安裝文件的各項設置是否有效,安裝後能否影響原系統;反安裝是逆過程,測試是否刪除乾淨,是否給影響原系統等。
文檔測試:主要測試開發過程中針對用戶的文檔,以需求、用戶手冊、安裝手冊等爲主,檢驗文檔是否和實際應用存在差別。文檔測試不需要編寫測試用例
測試種類的劃分不要拘泥於上面的形式,總體來說應該服從於測試策略,可以根據具體工作的特點進行安排,爲了工作更容易開展,完全可以把一些測試合在一起進行。在後面的性能測試用例的編寫上,充分體現了這一思想
1.2 測試階段
和開發過程相對應,測試過程會依次經歷單元測試、集成測試、系統測試、驗收測試四個主要階段。對應關係如圖1所示:
需求開發
高層設計
詳細設計
編程
單元測試
集成測試
系統測試
驗收測試
圖1 開發與測試的“V”型關係
單元測試:單元測試是針對軟件設計的最小單位––程序模塊甚至代碼段進行正確性檢驗的測試工作,通常由開發人員進行。
集成測試:集成測試是將模塊按照設計要求組裝起來進行測試,主要目的是發現與接口有關的問題。由於在產品提交到測試部門前,產品開發小組都要進行聯合調試,因此在大部分企業中集成測試是由開發人員來完成的。。
系統測試:系統測試是在集成測試通過後進行的,目的是充分運行系統,驗證各子系統是否都能正常工作並完成設計的要求。它主要由測試部門進行,是測試部門最大最重要的一個測試,對產品的質量有重大的影響。
驗收測試:驗收測試以需求階段的《需求規格說明書》爲驗收標準,測試時要求模擬實際用戶的運行環境。對於實際項目可以和客戶共同進行,對於產品來說就是最後一次的系統測試。測試內容爲對功能模塊的全面測試,尤其要進行文檔測試。
儘管測試階段的劃分十分明確,但是在具體的項目和產品的測試中,尤其在執行測試時,會根據實際需要來開展。
1.3 測試種類、階段和用例的關係
爲了便於在實際工作中提高效率,同時方便測試用例的編寫和執行,可以把上面提到的各個測試類型與對應的測試用例合併。合併後的測試用例主要有以下幾種:
1. 功能測試用例:包含功能測試、健壯性測試、可靠性測試
2. 性能測試用例:包含性能測試、壓力測試、強度測試
3. 集成測試用例:包含接口測試、健壯性測試、可靠性測試
4. 安全測試用例:安全測試用例
5. 用戶界面測試用例:包含用戶界面測試用例、少量功能測試用例
6. 安裝/反安裝測試用例:安裝/反安裝測試用例
綜合上面的分析,測試種類、測試階段以及執行人員具體的關係如表1所示。

總之,測試的種類應該儘量的少,這樣每次都可以執行更多的測試內容。例如在進行功能測試的同時,完全可以進行健壯性的測試。(當然如果產品健壯性方面要求較高,就可以把健壯性測試作爲獨立的測試。)
2性能用例編寫方案
性能測試在軟件測試中佔有重要的地位,而性能測試又關聯很多內容。例如壓力和強度測試就與性能測試密切相關:針對一個網站進行測試,模擬10到50個用戶就是在進行常規性能測試,用戶增加到1000乃至上萬就變成了壓力/負載測試,如果同時對系統進行大量的數據查詢操作,就包含了強度測試。
爲了便於性能測試工作的實施,這裏的性能測試綜合了性能、強度、壓力、負載等多方面的測試內容,主要包含的內容有:預期性能指標測試、用戶併發性能測試、疲勞強度測試、大數據量測試和速度測試、網絡服務器等方面的內容。
性能測試不同的系統有不同的要求,編寫方法要根據實際要求進行編寫,本文提出一個常見的參考方案,在實際工作中,可以根據需要加入其它例如內存泄露等和性能相關的測試用例。
下面介紹各個部分性能測試用例包含的內容:
2.1預期性能指標測試用例
通常系統在設計前都會提出一些性能指標,這些指標是性能測試要完成的首要工作之一。針對每個指標都要編寫多個測試用例來驗證是否達到要求,並根據測試結果來改進系統的性能。
這類通常以單用戶爲主,如果遇到併發用戶的情況,可以歸到併發用戶測試用例中。這類用例通常都是可以通過手工來執行的用例,例如示例中的上傳一份文件,期望的性能爲2M/S,完全可以手動上傳文件,同時用秒錶計時。這些內容通常在需求說明書中可以顯而易見的查到。不過當看到如支持併發用戶300人,就應該放到後面進行。測試結果也是直接記錄是否達到要求,如果系統沒有達到要求則進行改善。
2.2用戶併發性能測試用例
用戶併發測試是性能測試的最主要部分,包含了負載測試和壓力測試的過程。主要是逐漸增加用戶數量來加重系統負擔,直到出現不能接收的性能點或者瓶頸。一般要測試正常數量的用戶併發和極限數量下用戶併發的情況。
併發用戶測試主要是對系統的核心功能和重要業務進行測試,要以真實的業務數據作爲輸入,選擇有代表性和關鍵的業務操作來設計測試用例。主要編寫以下兩個方面的用例:
核心模塊的測試(可以理解爲“單元性能測試”):對核心功能模塊進行併發用戶測試,測試系統是否能夠穩定運行。例如對於互聯網的公用郵件系統,每天早上9點左右可能是收發郵件的高峯,這時候上千的用戶都要在上班後進入郵件系統,系統這個時候需要接收和發送大量的郵件。所以郵件系統這一功能模塊要進行併發測試。通過測試可以知道數據庫服務器、操作系統、網絡設備等是否能夠承受住考驗,同時可以對瓶頸進行分析。
表2列出來一些常見的參數(表格中的數據爲示例的測試用例和測試結果),可以根據實際需要進行增加和刪除,其中磁盤I/O、數據庫相關測試參數要根據實際情況進行選擇,因此沒有列出。

在編寫這類用例時,要進行綜合分析,選出系統中的各個核心模塊,分別設計每個模塊的測試用例:把模塊劃分成小的“事務”進行測試,這樣在測試分析中便於定位問題究竟出現在哪裏。例如郵件系統可以劃分成:接收郵件、發送郵件、打開郵件等小的事務進行測試用例的編寫,每個操作做爲一個用例來執行。
業務組合性能測試(可以理解爲“集成性能測試”):所有的用戶不會只使用核心模塊,通常每個功能都可能被使用到,所有既要模擬多用戶的“相同”操作,又要模擬多用戶的不同操作,對多個業務進行組合性能測試。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章