單元測試的一些疑問 單元測試
對于現在國內的軟件開發,相信每一個單位都知道軟件測試的重要性,并且都或多或少的在做測試,可是對于單元測試這個部分又有多少的軟件公司在做呢?10%?還是更少?反正我了解的軟件公司里面在有意識的做單元測試絕無僅有啊,可能一些大的公司里面在做吧。單元測試是代碼編寫質量的第一步,可以說是軟件質量的基石,照例來說應該得到更多公司的重視才對,可是現實中不盡如人意一定有其問題所在,這些問題可能也是我的疑問。
我們先來看看單元測試的定義:單元測試是程序員編寫的一段代碼,用于執行另一段代碼并確定那段代碼的行為是否和程序員的期望一致。這個定義我是從書上面抄的(單元測試之道C#版),希望不會錯的太離譜了。
一、由程序員編寫單元測試代碼適合嗎?
從這個定義上面來看,單元測試是程序員編寫的,而不是測試人員編寫的。雖然我同意這個觀點,對于單元測試來說,最了解程序的人就是編寫代碼的人,他來編寫單元測試自然最合適不過了;但是問題也在這里了,一個程序員是要對自己的代碼負責的,因此他編寫代碼的質量在測試代碼編寫之前可能就已經經過自己確認的,而且程序員的工作是很繁忙的,完成功能代碼的時間都不夠用,是否有時間去編寫測試代碼,考慮各種方面的測試用例確認代碼就很值得懷疑了。我想這大概也是大多數軟件公司不能夠實行單元測試的原因吧。
二、單元測試代碼的管理成本有多高?
每一個公司都是追求利潤的,那單元測試的好處和它的實行成本成比例嗎?我們使用昂貴的程序員資源來編寫單元測試的代碼,本身就是很高的一個成本。畢竟現在大多數的測試人員都是一些不會編寫代碼的“軟件使用人員”,通過點擊鼠標來完成的,雙方的成本差距是比較高的。比如拿我所在城市的水平來說,一個合格的程序員的工資在4k-8k之間,一個測試人員的工資在1.5k-4k之間,成本要高一倍以上。其次就是測試人員的鼠標點擊測試的效率可能比單元測試的代碼編寫效率要高不少,那可能成本差距更多了(當然精細程度和準確程度差距還是有的)。而且我們現在還沒有考慮測試代碼也會出現錯誤的,系統的規模會因為添加上了測試的一塊兒增大,自然管理成本也增加了,軟件的修改是不可避免的,要管理測試版本和軟件版本的同步將是管理上的一個難點阿,無形當中管理成本成倍的增長了。如果你作為一個軟件公司的老總,你會認為單元測試的成本增長能夠得到多少軟件質量的提高呢?
三、單元測試的使用范圍有那些?
現在大多數軟件公司開發的是基于數據庫開發的項目型軟件。里面包含兩個層面,一個是數據庫驅動的軟件、一個是項目型軟件;很顯然從項目管理來說,項目是每一個都不相同的,尤其自身特點的,因此從這個層面來說,使用單元測試還存在其價值嗎?數據庫驅動的軟件項目如何來做測試呢?特別是數據集的正確與否很難測試吧。因此單元測試一定有其使用的范圍,如何正確的判定其使用將顯得很重要了。那些函數是需要進行單元測試的?那些是無法進行單元測試的,需要有一定明確的界定。
四、單元測試的作用有多大?
對于現在的系統,特別是web網站其業務邏輯相對于一些商業軟件而言,更注重的是吸引眼球的外觀和方便。而這些內容是不能使用單元測試來檢測的,因此這種類型的程序單元測試的內容比重將會降低到一個很少的限度。
最近在查看一些單元測試的書籍,對于里面的說明不以為然,因此有了上面疑問,當然我對于單元測試的大部分內容還是認可的,希望有熟悉單元測試的人員給我一些解答。
文章來源于領測軟件測試網 http://www.kjueaiud.com/