軟體測試是一項批判性的工作,目的就是找出軟體中的缺陷。這裡暫時不去深究為什麼要進行軟體測試,以及軟體測試帶來的好處。只介紹軟體測試中一些基本的測試方法。根據是否檢視**程式分為黑盒測試和白盒測試;根據是否執行軟體又可分為靜態測試和動態測試。
黑盒測試:又叫功能測試或行為測試,只需考慮各個功能,不需要考慮整個軟體的內部結構及**。
白盒測試:訪問**,通過檢查**的線索來協助測試。
靜態測試:測試軟體不執行的部分,只是檢查和審核。
動態測試:使用和執行軟體進行測試。
1、靜態黑盒測試:檢查產品說明書,並在軟體編寫之前找出問題
(1)站在乙個設計者的角度進行審查,找出根本性問題或遺漏之處
(2)站在客戶(使用者)的角度來審查,因為軟體質量的定義是滿足客戶的需求
(3)研究現有的標準和規範,可以是公司習慣用語和約定、行業要求、gui、安全標準;檢查所用標準是否正確、遺漏,是否與標準和規範相牴觸
(4)審查和測試類似軟體,檢查它的規模、複雜性、測試性、質量和可靠性、安全性
乙份優秀的產品說明書或者需求報告:必須是完整、準確、精確(不含糊、清晰)、一致、貼切、合理、**無關、可測試性
2、動態黑盒測試:在不了解軟體如何工作的前提下進行測試
兩種基本方法:通過性測試和失效性測試
選擇測試用例:等價類劃分:把軟體具有相似輸入,相似輸出,相似操作的分在一組。乙個等價類或等價類劃分是指測試相同目標或者暴露相同軟體缺陷的一組測試用例。
等價類劃分的目標:把可能的測試用例集縮減到可控制且仍然足以測試軟體的小範圍內。
(1)測試資料
通過性測試:
a) 邊界條件:軟體執行在計畫操作界限的邊界情況。測試邊界包括測試臨近邊界的有效資料、測試最後乙個可能有效的資料、測試剛超過邊界的無效資料。
b)次邊界條件:典型的次邊界條件:2的冪、ascii表
c)測試預設、空白、空值、零值和無這些資料
失效性測試:
d)測試非法、錯誤、不正確和垃圾資料
(2)測試狀態
軟體狀態:軟體當前所處的條件或者模式。
狀態測試:測試程式的狀態及其轉換。
步驟:1)建立狀態轉換圖
2)減少要測試的狀態及其轉換的數量
a. 每一種狀態至少訪問一次
b. 測試狀態之間最不常用的分支
c. 測試所有錯誤狀態及其返回值
d. 測試隨機狀態轉換
e. 測試看起來是最常見和普遍的狀態轉換
通過性狀態測試:審查軟體,描繪狀態,嘗試各種合法可能性,確認狀態及其轉換正常。
失效性狀態測試:競爭條件、重複(檢查記憶體洩漏)、壓迫(在不夠理想條件下執行:記憶體小,磁碟空間少...盡量限制軟體的必要條件)、重負(提供條件任其發揮)。
3、靜態白盒測試:在不執行軟體的條件下有條理地仔細審查軟體設計、體系結構和**,從而找出軟體缺陷的過程
(1) 編碼標準和規範:可靠性、可讀性/可維護性、可移植性
(2)通用**審查清單:
a. 資料引用錯誤 -> 快取區溢位
b. 資料宣告錯誤 <- 不正確地宣告和使用變數和常量
c. 計算錯誤
d. 比較錯誤 <- 邊界條件問題
e. 控制流程錯誤 <- 迴圈等控制結構未按預期方式工作,由計算或比較錯誤間接引起
f. 子程式引數錯誤 <- 子程式不正確地傳遞資料
g. 輸入/輸出錯誤
h. 其他檢查 -> 編碼、可移植、相容
4、動態白盒測試:結構化測試,檢查**並觀察執行狀況,利用查詢**功能和實現方式得到的資訊來確定哪些需要測試,哪些不需要,如何開展測試,包括如下內容:
(1) 直接測試底層函式過程,子程式和庫(api)
(2) 以完整程式的方式從頂層測試軟體,根據對軟體執行的了解調整測試用例
(3)從軟體獲得讀取變數和狀態資訊的訪問權,確定測試與預期結果是否相符,強制軟體以正常測試難以實現的方式執行
(4) 估算執行測試時命中的**量和具體**,調整測試,去掉多餘的測試用例,補充遺漏的用例
動態白盒測試與除錯的區別:都包括處理軟體缺陷和檢視**的過程,但是它們的目標不同:測試的目標是尋找軟體缺陷;除錯的目標是修復缺陷
測試方法:分段測試(單元測試和整合測試)、資料覆蓋、**覆蓋
資料覆蓋:
資料流覆蓋,在軟體中完全跟蹤一批資料。
次邊界:與動態黑盒測試類似。
公式和等式:類似除法運算中,考慮除數為0的情況。
錯誤強制:迫使軟體中的所有錯誤提示資訊顯示出來。
**覆蓋:測試程式的狀態以及程式的流程,設法進入和退出每乙個模組,執行每一行**,進入軟體每一條邏輯和決策分支
**覆蓋包括:程式語句和**行覆蓋、分支覆蓋(比如判斷語句中if分支和else分支)、條件覆蓋(乙個條件中可能包含幾個子條件,要覆蓋每乙個子條件及它們的組合)。
軟體測試其實就是在使用者之前使用和執行軟體,盡早找出軟體中存在缺陷。我們不可能對軟體進行完全測試,只可能在測試有限的用例後使得軟體仍然存在bug的概率盡可能小。以上所述僅僅只是一點皮毛,軟體測試覆蓋的知識面很廣,需要學習的還有很多!!
軟 件 測 試 基 礎 知 識
軟體效能指標主要有響應時間,系統響應時間和應用延遲時間,吞吐量,併發使用者數,資源利用率五種。軟體實現的演算法與系統響應時間和應用延遲時間是直接相關的,所以軟體的效能也必定與實現演算法是有關係的吞度量是指系統在單位時間內處理請求的數量,對於無鬢髮的應用系統而言,吞度量是與響應時間嚴格的反比關係,因為...
軟體測試基礎知識
1 發現軟體錯誤 2 有效定義和實現軟體部件由底層到高層的組裝過程 3 驗證軟體是否滿足任務書和系統定義文件所規定的技術要求 4 為軟體質量模型的建立提供依據。概念 軟體測試是軟體質量保證的關鍵組成部分,對軟體測試的認識可分為以下幾個階段 測試就是除錯階段 測試是證明軟體正確階段 測試是發現軟體中錯...
軟體測試基礎知識
本人部落格文章 1.確認軟體的質量 a.是確認軟體做了你所期望做的事情 do the right thing b.是確認軟體以正確的方式來做了這個事情 do it right 2.是提供資訊 比如提供給開發人員或程式經理的回饋資訊,為風險評估所準備的資訊 3.是在測試軟體軟體產品本身,而且還包括軟體...