為什么要進行煩人的單元測試? 軟件測試
摘要
這篇文章主要闡述這樣一個問題:為什么要進行煩人的單元測試?那些剛剛接觸完全測試概念的開發人員常常遇到這個問題。我們這里將采用"反調論證"的方法來回答這個問題, 先提出一些反對單元測試的普遍論點, 然后我們會證明這些論點是站不住腳的。那些公開發表的文章和數據充分證實了單元測試的有效性。
IPL是一個獨立的軟件開發機構,成立于1979年,基地設在Bath。IPL在1988年通過了ISO9001認證,并在1991年通過TickIT認證。IPL開發并提供AdaTEST和Cantata等軟件驗證產品。AdaTEST和Cantata的開發遵循了這些標準的要求。
簡介
在使新的產品和業務的開發過程工業化的嘗試中,軟件的質量和可靠性常常被看作是薄弱環節。
在最近的十年里,隨著越來越多的人在開發過程中采用了設計方法論和使用CASE工具,軟件質量和可靠性的問題越來越受到重視。大多數軟件設計人員都接受了這方面的培訓,并且在這些正規的軟件設計方法的使用中取得了很多經驗。
但不幸的是,軟件測試并沒有得到同樣的重視。很多使用這些軟件設計方法的開發活動并沒有使軟件質量和可靠性得到控制。修改最初的軟件開發活動遺留的Bug一般要在軟件維護費用中占到50%的比例,這是不正常的,這些Bug應該在有效的軟件測試過程中被排除掉。
這篇文章主要闡述這樣一個問題:為什么要進行煩人的單元測試?那些剛剛接觸完全測試概念的開發人員常常遇到這個問題。我們這里將采用"反調論證"的方法來回答這個問題,先列出一些反對單元測試的普遍論點,然后我們會證明這些論點是站不住腳的。那些公開發表的文章和數據充分證實了單元測試的有效性。
什么是單元測試
單元測試是在軟件開發過程中要進行的最低級別的測試活動,在單元測試活動中,軟件的獨立單元將在與程序的其他部分相隔離的情況下進行測試。
在一種傳統的結構化編程語言中,比如C,要進行測試的單元一般是函數或子過程。在象C++這樣的面向對象的語言中, 要進行測試的基本單元是類。對Ada語言來說,開發人員可以選擇是在獨立的過程和函數,還是在Ada包的級別上進行單元測試。單元測試的原則同樣被擴展到第四代語言(4GL)的開發中,在這里基本單元被典型地劃分為一個菜單或顯示界面。
單元測試不僅僅是作為無錯編碼一種輔助手段在一次性的開發過程中使用,單元測試必須是可重復的,無論是在軟件修改,或是移植到新的運行環境的過程中。因此,所有的測試都必須在整個軟件系統的生命周期中進行維護。
經常與單元測試聯系起來的另外一些開發活動包括代碼走讀(Code review),靜態分析(Static analysis)和動態分析(Dynamic analysis)。靜態分析就是對軟件的源代碼進行研讀,查找錯誤或收集一些度量數據,并不需要對代碼進行編譯和執行。動態分析就是通過觀察軟件運行時的動作,來提供執行跟蹤,時間分析,以及測試覆蓋度方面的信息。
一些流行的誤解
在明確了什么是單元測試以后,我們可以進行"反調論證"了。在下面的章節里,我們列出了一些反對單元測試的普遍的論點。然后用充分的理由來證明這些論點是不足取的。
文章來源于領測軟件測試網 http://www.kjueaiud.com/