系統測試

一、 功能測試

功能測試在單元測試、集成測試、系統測試中都有進行。

單元測試階段,功能測試目的是保證所測試的每個獨立模塊的功能是正確的。

系統集成過程中系統集成之後進行的功能測試,不僅要考慮模塊之間的相互作用,而且要考慮系統的應用環境。

功能測試是指在規定的一段時間內運行系統的所有功能,以驗證軟件系統的功能是否正確。正確性是軟件最重要的因素。

  • 功能測試的方法採用黑盒測試
  • 功能測試的方法:等價類劃分法、邊界值分析法、 錯誤推測法、 因果圖法、 組合分析法

目的和內容:

程序安裝、啓動正常,有相應的提示框、錯誤提示等

 每項功能符合實際要求

 系統的界面清晰、美觀  

菜單、按鈕操作正常、靈活,能處理一些異常操作  

能接受正確的數據輸入,對異常數據的輸入有提示、容錯處理等  

數據的輸出結果準確,格式清晰,可以保存和讀取  

功能邏輯清楚,符合使用者習慣  

系統的各種狀態按照業務流程而變化,並保持穩定  

支持各種應用的環境  

能配合多種硬件周邊設備  

軟件升級後,能繼續支持舊版本的數據  

與外部應用系統的接口有效

二、 迴歸測試

1.迴歸測試的目的  :

所做的修改達到了預定的目的,如錯誤得到了改正,新功能得到了實現,能夠適應新的運行環境等;

不影響軟件原有功能的正確性。

2.迴歸測試的方法  :

再測試全部用例  

基於風險選擇測試  

基於操作剖面選擇測試  

再測試修改的部分

3.迴歸測試的組織和實施:迴歸測試可遵循下述基本過程進行

1,識別出軟件中被修改的部分

2,從原有基線測試用例庫T中,排除所有不再適用的測試用例,確定那些對新的軟件版本依然有效的測試用例,其結果是建立一個新的基線測試用例庫T0

3,依據一定的策略從T0中選擇測試用例測試被修改的軟件

4,如果迴歸測試包不能達到所需要的覆蓋要求,必須補充新的測試用例使覆蓋率達到規定的要求,生成新的測試用例T1,用於測試T0無法充分測試的軟件部分。

5,用T1執行修改後的軟件        

第2,3步測試驗證修改點是否破壞了現有的功能,第4,5步測試驗證修改工作本身。

三、 性能測試

通過測試以確定性能相關指標而進行的測試。一般在真實環境、特定負載條件下,通過工具模擬實際軟件系統的運行及其操作,同時監控性能各項指標,最系統運行時的性能表現,如得到運行速度、響應時間、佔有系統資源等方面的系統數據。

性能測試就是爲了發現系統性能問題或獲取系統性後對測試結果進行分析來確定系統的性能狀況。

一些常見的性能問題:

  • 啓動系統、打開頁面越來越慢  
  • 查詢數據,很長時間才顯示列表  
  • 網絡下載速度很低,如5k/s
  • 資源耗盡,如CPU使用率達到100%
  • 資源泄漏,如內存泄漏 ,最終會導致資源耗盡
  • 資源瓶頸,如線程、GDI、DB連接等資源變得稀缺 

(1)用戶對軟件性能的關注:

軟件對用戶操作的響應時間,如用戶提交一個查詢操作,打開一個web頁面的鏈接等等

業務可用度,或者系統的服務水平如何

(2)系統管理員對軟件性能的關注

管理員關心的問題

軟件性能描述

服務器的資源使用狀況合理嗎

資源利用率

應用服務器和數據庫的資源使用狀況合理嗎

資源利用率

系統是否能夠實現擴展

系統可擴展性

系統最多能支持多少用戶的訪問?系統最大的業務處理量是多少

系統容量

系統性能可能的瓶頸在哪裏

系統可擴展性

更換哪些設備能夠提高系統性能

系統可擴展性

系統能否支持7×24小時的業務訪問

系統穩定性

(3)開發人員對軟件性能的關注

開發人員關心的問題

問題所屬層次

架構設計是否合理

系統架構

數據庫設計是否存在問題

數據庫設計

代碼是否存在性能方面的問題

代碼

系統中是否有不合理的內存使用方式

代碼

系統中是否存在不合理的線程同步方式

設計與代碼

系統中是否存在不合理的資源競爭

設計與代碼

 性能測試目的和需求:

目的: 爲了驗證系統是否達到用戶提出的性能指標,同時發現系統中存在的性能瓶頸,起到優化系統的目的。

性能測試需求: 用戶對各項指標提出的明確需求;如果用戶沒有提出性能指標,則根據用戶需求、測試設計人員的經驗來設計各項測試指標。(需求+經驗)

主要的性能指標: 服務器的各項指標(CPU、內存佔用率等)、後臺數據庫的各項指標、網絡流量、響應時間

響應時間:應用系統從請求發出開始到客戶端接收到最後一個字節數據所消耗的時間,是作爲用戶視角的軟件性能的主要體現。

併發用戶數:系統用戶數、同時在線用戶人數。

吞吐量:單位時間內系統處理的客戶請求的數量,直接體現軟件系統的性能承載能力。 表示方法:請求數/秒、頁面數/秒、人數/天、處理的業務數/小時。

資源佔用率:體現軟件的面向用戶特性。

性能測試方法

負載模擬  :併發用戶+思考時間+每次請求的數據量+負載模式

性能測試步驟 :

1.根據測試需求,選擇測試工具和開發相應的測試腳本

2.建立性能測試負載模型,就是確定併發虛擬用戶的數量、每次請求的數據量、思考時間、加載方式和持續加載的時間等

3.執行性能測試

4.結果分析,並提交性能測試報告

舉例:

網絡性能測試主要是爲了準確展示帶寬、延遲、負載和端口的變化是如何影響用戶的響應時間的。在實際的軟件項目中,主要是測試用戶數目與網絡帶寬的關係。

編寫用例的格式如表3(表格中的數據爲示例數據):

四、其它非功能性測試

1.壓力測試

壓力測試(Stress test),也稱爲強度測試、負載測試。壓力測試是模擬實際應用的軟硬件環境及用戶使用過程的系統負荷,長時間或超大負荷地運行測試軟件,來測試被測系統的性能、可靠性、穩定性等。

例如對一個網站進行測試,模擬10到50個用戶同時在線並觀測系統表現,就是在進行常規性能測試;當用戶增加到系統出項瓶頸時,如1000乃至上萬個用戶時,就變成了壓力測試。

 在一種需要反常(如長時間的峯值)數量、頻率或資源的方式下,執行可重複的負載測試,以檢查程序對異常情況的抵抗能力,找出性能瓶頸。從本質上來說,測試者是想要破壞程序。

併發性能測試、 疲勞強度測試 、大數據量測試

1)考併發性能測試、客戶端應用的性能,測試的入口是客戶端

 併發性能測試的過程,是一個負載測試和壓力測試的過程。即逐漸增加併發虛擬用戶數負載,直到系統的瓶頸或者不能接收的性能點,通過綜合分析交易執行指標、資源監控指標等來確定系統併發性能的過程。併發性能測試是負載壓力測試中的重要內容。

2)疲勞強度測試

疲勞強度測試是在系統穩定運行下模擬最大用戶數量、並長時間運行系統,通過綜合分析執行指標和資源監控來確定系統處理最大業務量時的性能。    

疲勞強度測試的目的就是檢驗系統長時間運行後的性能,因此設計用例時,需要編寫不同參數或者負載條件下的多個測試用例,對服務器、軟件、網絡進行不同條件下的綜合測試分析,測試時要記錄系統發生故障的信息作爲測試結果。疲勞強度測試也是採用測試工具進行的。

3)大數據量測試

大數據量測試分爲兩種:一個是針對某些系統存儲、傳輸、統計查詢等業務進行大數據量的測試;另一個是與前面併發測試相結合的綜合數據測試。編寫用例時主要編寫前一部分,後一部分儘量放在併發測試中。

大數據量測試一般是針對那些對數據庫有特殊要求的系統進行測試,

例如電信業務系統的手機短信息表,由於有的用戶關機或者不在服務區,每秒鐘需要有大量的短信息保存,同時在用戶聯機後還要及時發送,因此對數據庫性能有極高的要求,需要專門測試。

2.容量測試

容量測試目的是通過測試預先分析出反映軟件系統應用特徵的某項指標的極限值(如最大併發用戶數、數據庫記錄數等),系統在其極限值狀態下還能保持主要功能正常運行。

容量測試還將確定測試對象在給定時間內能夠持續處理的最大負載或工作量

容量可以看作系統性能指標中一個特定環境下的一個特定性能指標,即設定的界限或極限值

如某個電子商務網站所能承受的、同時進行交易或結算的在線用戶數。知道了系統的實際容量,如果不能滿足設計要求,就應該尋求新的技術解決方案,以提高系統的容量。

3. 安全性測試

安全性測試是檢查系統對非法侵入的防範能力。安全測試期間,測試人員假扮非法入侵者,採用各種辦法試圖突破防線。

例如:  想方設法截取或破譯口令;  專門開發軟件來破壞系統的保護機制;  故意導致系統失敗,企圖趁恢復之機非法進入;  試圖通過瀏覽非保密數據,推導所需信息等等。

理論上講,只要有足夠的時間和資源,沒有不可進入的系統。因此係統安全設計的準則是,使非法侵入的代價超過被保護信息的價值,此時非法侵入者已無利可圖。

功能性測試  vs.安全性測試:

功能性測試:軟件做它應該做的事,驗證正確的輸出    不正確的輸出 /行爲 / 缺陷(Bug)

安全性測試:軟件不做它不應該做的事, 應用輸入驗證, 沒有不安全的事情發生 在測試軟件系統中對危險防止和危險處理設施進行的測試,以驗證其是否有效  

  安全性缺陷(漏洞,脆弱性,Vulnerability)

不同的安全性風險:

跨站點腳本(cross-site scripting,XSS)攻擊;

SQL注入式漏洞;

URL和API的身份驗證 緩衝區溢出;

不安全的數據存儲或傳遞;

不安全的配置管理;

有問題的訪問控制,權限分配有問題;

口令設置不嚴,包括長度、構成和更新頻率 暴露的端口或入口;

4.可靠性測試

可靠性(Reliability)是產品在規定的條件下和規定的時間內完成規定功能的能力,它的概率度量稱爲可靠度。軟件可靠性是軟件系統的固有特性之一,它表明了一個軟件系統按照用戶的要求和設計的目標,執行其功能的可靠程度。軟件可靠性與軟件缺陷有關,也與系統輸入和系統使用有關。理論上說,可靠的軟件系統應該是正確、完整、一致和健壯的。

規定的時間  規定的環境條件  規定的功能

成熟性度量可以通過錯誤發現率DDP(Defect Detection Percentage)來表現。在測試中查找出來的錯誤越多,實際應用中出錯的機會就越小,軟件也就越成熟。            

  DDP=測試發現的錯誤數量/已知的全部錯誤數量 已知的全部錯誤數量是測試已發現的錯誤數量加上可能會發現的錯誤數量之和。

5.容錯性測試

容錯性測試是檢查軟件在異常條件下自身是否具有防護性的措施或者某種災難性恢復的手段。如當系統出錯時,能否在指定時間間隔內修正錯誤並重新啓動系統。

容錯性測試包括兩個方面:

輸入異常數據或進行異常操作,以檢驗系統的保護性。如果系統的容錯性好的話,系統只給出提示或內部消化掉,而不會導致系統出錯甚至崩潰。

災難恢復性測試。通過各種手段,讓軟件強制性地發生故障,然後驗證系統已保存的用戶數據是否丟失、系統和數據是否能儘快恢復。

五、系統測試工具及其應用  LoadRunner

Mercury LoadRunner是一種預測系統行爲和性能的負載測試工具。

通過使用LoadRunner,企業能最大限度地縮短測試時間,優化性能和加速應用系統的發佈週期 測試原理:用多線程或多進程的方式向服務器端發送大量的數據包,同時接收服務器的返回結果。

六、從質量三個緯度看系統測試

質量維度

測試類型 

可靠性

完整性測試:側重於評估測試對象的強壯性(防止失敗的能力),語言、語法的技術兼容性以及資源利用率的測試。該測試針對不同的測試對象實施和執行,包括單元和已集成單元。 

結構測試:側重於評估測試目標是否符合其設計和構造的測試。通常對基於 Web 的應用程序執行該測試,以確保所有鏈接都已連接、顯示正確的內容以及沒有孤立的內容。

功能

配置測試:側重於確保測試對象在不同的硬件和/或軟件配置上按預期運行的測試。該測試還可以作爲系統性能測試來實施。 

功能測試:側重於覈實測試對象按計劃運行,提供需求的服務、方法或用例的測試。該測試針對不同的測試對象實施和執行,包括單元、已集成單元、應用程序和系統。 

安裝測試:側重於確保測試對象在不同的硬件和/或軟件配置上,以及在不同的條件下(磁盤空間不足或電源中斷)按預期安裝的測試。該測試針對不同的應用程序和系統實施和執行。 

安全測試:側重於確保只有預期的主角纔可以訪問測試對象、數據(或系統)的測試。該測試針對多種測試對象實施和執行。 

質量維度

測試類型 

功能

容量測試:側重於覈實測試對象對於大量數據(輸入和輸出或駐留在數據庫內)的處理能力的測試。容量測試包括多種測試策略,如創建返回整個數據庫內容的查詢;或者對查詢設置很多限制,以至不返回數據;或者返回每個字段中最大數據量的數據條目。

性能 

基準測試:一種性能測試,該測試將比較(新的或未知的)測試對象與已知的參照負載和系統的性能。 

競爭測試:側重於覈實測試對象對於多個主角對相同資源(數據記錄、內存等)的請求的處理是否可以接受的測試。 

負載測試:一種性能測試,用於在測試的系統保持不變的情況下,覈實和評估系統在不同負載下操作極限的可接受性。 評測包括負載和響應時間的特徵。如果系統結合了分佈式構架或負載平衡方法,將執行特殊的測試以確保分佈和負載平衡方法能夠正常工作。 

性能曲線:在該測試中,將監測測試對象的計時配置文件,包括執行流、數據訪問、函數和系統調用,以確定並解決性能瓶頸和低效流程。 

強度測試:一種性能測試,側重於確保系統可在遇到異常條件時按預期運行。系統面對的工作強度可以包括過大的工作量、不充足的內存、不可用的服務/硬件或過低的共享資源。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章