C C 單元測試理論精要(二)

2021-08-25 03:55:18 字數 1020 閱讀 3858

1.2 單元測試的目標和方法

單元測試的目標是什麼呢?就是完整檢測**單元的功能邏輯。找出**單元本身的所有功能邏輯錯誤,具體來說,就是檢測對資料的各種分類是否考慮全面,處理是否正確。單元測試並不是用來代替系統測試、效能測試的,它的目標相當明確,就是檢測**單元本身的功能邏輯錯誤。

如果時間緊張,應該優先測試哪些**呢?**的功能邏輯越複雜,也就是演算法密集度越高,可能的錯誤越多,越需要全面的測試,測試效益越大。所以,如果時間不夠,應該優先測試演算法密集的**。80-20規則在軟體開發中同樣存在,也就是80%的**錯誤可能存在於20%的**中,20%的**可能占用了80%的開發除錯時間。這20%就是演算法密集的**,即使只對這些**進行單元測試,也可以產生巨大的效益。**複雜度和測試價值可以用工具來統計。

測試方法主要有兩種:靜態和動態。靜態方法主要由工具掃瞄和分析**。動態方法則需要執行**。

靜態方法能發現哪些錯誤呢?從靜態測試的角度來看,**錯誤可分為**缺失,語義錯誤,一般錯誤。**缺失是分類遺漏造成的,也就是程式設計師沒有考慮到某些輸入,沒有編寫相應**。語義錯誤就是通過分析**的語法含義,有可能判斷的錯誤,例如,條件語句中將等於操作符寫成了賦值操作符、陣列越界、除零錯。其他錯誤就是一般錯誤。對於語義錯誤,靜態測試可能能夠發現。對於**缺失,靜態測試無法發現,因為**不存在,也就無從分析。其他錯誤,靜態測試不能發現,因為工具不了解**的設計功能。很顯然,靜態測試並沒有真正檢測**的功能邏輯,根本不知道這個**是幹什麼的,實現什麼功能才對,只是通過分析**的自然特性來檢測錯誤,所以作用是很有限的。

動態方法是這麼做的:首先,依資料的分類列出輸入,這個分類是跟程式功能緊密相關的,乙個分類,相當於是乙個功能點。然後,執行被測試**,然後,判斷輸出是不是符合預期,如果不符合,就報告錯誤。只要測試資料是完整的,就可以完整覆蓋**的功能邏輯,

發現所有功能邏輯錯誤。靜態測試所能發現的錯誤,如條件語句中將等於操作符寫成了賦值操作符,陣列越界,除零錯,都會表現為功能不正確,動態測試當然也能發現。因此,要想達到基本的測試效果,要依靠動態方法。我們說的單元測試,主要是指動態方法,也就是動態測試。

C C 單元測試理論精要(四)

題外篇 單元測試難於長期堅持的原因與解決 我以前主要關注如何做得了 做得快 做得好,幾乎沒有單獨考慮長期堅持的問題,原因大概是 對我自己來說,這不是問題,我已經做了十年的單元測試,這十年,我寫 時基本上都是一邊寫一邊測試。那麼,是什麼原因讓我長期進行單元測試呢?這十年分為兩個階段,後六年專門研究單元...

C C 單元測試理論精要(六)

2.1 可測性問題詳解 2 接下來我們討論重點問題 覆蓋輸入。乙個函式,輸入會有哪些呢?輸入包括兩方面 外部輸入,內部輸入。外部輸入容易理解,就是函式外部可以設定的輸入,包括引數,全域性變數,成員變數。關鍵是內部輸入。因為很少有文獻討論內部輸入,對很多人來說,內部輸入可能是乙個陌生的詞,我們首先來看...

單元測試 理論篇

測試是軟體開發的重要環節之一。按照軟體開發的過程測試可分為 單元測試 整合測試 系統測試 域測試 field test 等。我們這裡將討論面向程式設計師的單元測試。本文首先介紹單元測試的定義,為什麼要使用單元測試?單元測試能給我們帶來的好處。之後我們將介紹單 元測試的範疇,最後將討論很多朋友不寫單元...