如何做好單元測試 軟件測試
【摘要】單元測試是軟件開發過程中重要的質量保證活動,單元測試的質量將很大程度上影響軟件產品的最終質量。本文從組織、流程和技術三個方面來闡述了做好單元測試的一些關鍵因素,可以作為軟件企業開展單元測試活動的參考。
【關鍵字】單元測試,組織,流程,技術
前言
單元測試是對軟件基本組成單元進行的測試,是屬于白盒測試的范疇,它主要通過對代碼的邏輯結構進行分析來設計測試用例。在動態測試手段中,單元測試是一種非常高效的測試方法,并且是軟件測試周期中第一個進行的測試。從成本角度考慮,缺陷發現越早越好,加強單元測試力度有利于降低缺陷定位和修復難度,從而降低缺陷解決成本,同時加強單元測試也減輕了后續集成測試和系統測試的負擔。根據業界的統計,一個 BUG 在單元測試階段發現花費是 1 的話,到集成測試就變為 10 ,到系統測試就高達 100 ,到實際推向市場量產后就高達 1000 。但單元測試在目前國內軟件企業中開展得并不好,一方面是由于對單元測試重視程度不夠,測試投入不足,另一方面是由于在單元測試實踐方面積累得也不夠,單元測試處于一種摸索狀態。
軟件的質量由組織、流程和技術三個維度來決定,任何一個維度都不能單獨決定軟件的質量。好的組織結構可以保證流程的順利實施,好的流程能提高軟件開發的規范性和可控性,從而提高軟件開發的效率和質量,而采用了好的技術和有好的技術的載體 —— 人,則從根本上保證了軟件的質量。
總而言之,組織、流程和技術是軟件質量三角,本文將從這三個方面對如何做好單元測試進行論述。
• 組織結構應該保證測試組參與單元測試
目前無論是工業界還是學術界都認為單元測試應該由開發人員開展,這是因為從單元測試的過程看,單元測試普遍采用白盒測試的方法,離不開深入被測對象的代碼,同時還需要構造驅動模塊、樁函數,因此開展單元測試需要較好的開發知識。從人員的知識結構、對代碼的熟悉程度考慮,開發人員具有一定的優勢。
單元測試由開發人員進行能帶來一些特別的收益。我們知道,在實踐中開發人員進行單元測試一般推薦采用交叉測試的方法,例如由被測單元的調用方進行該單元的測試,即盡量避免對自己的代碼進行單元測試。這種交叉的測試安排可以避免測試受開發思路影響太大,局限于原來的思路不容易發現開發過程中制造的問題;二來也達到一個技術備份或充分交流的目的,這對組織非常有利。即使不采用交叉測試的方法,而安排單元的生產者自行開展單元測試,也是有很大的優越性的,其最大的優點是快速,且能更好的實現 “ 預防錯誤 ” 。在人員緊張的情況下這種自行測試的安排也是不錯的選擇。
從經驗值來看,單元測試投入和編碼投入相比基本上是一比一,如果由專職測試隊伍來進行單元測試,維持這樣龐大的單一任務隊伍顯然是不合適的。
以上談的是由開發人員進行單元測試的優點,其中主要是從單元測試的效率角度來考慮。但是從單元測試效果的角度考慮,必須從組織結構上保證測試組參與單元測試,這是因為:
首先,從目前國內企業普遍現狀來看,測試人員質量意識要高于開發人員,測試人員參與單元測試能夠提高測試質量。
其次,對被測系統越了解,測試才有可能越深入,測試人員參與單元測試,將使得測試人員能夠從代碼級熟悉被測系統,這對測試組后期集成測試和系統測試活動非常有幫助,會很大的提升集成測試和系統測試質量。
測試組以何種方式參與單元測試,應該結合軟件組織的實際情況來定。如果軟件組織測試資源充分,測試人員對開發人員的比例較高,那么可以由測試人員獨立承擔部分重要模塊的單元測試工作;如果測試資源不足,測試人員對開發人員的比例較低,那么可以采取由測試人員進行單元測試計劃、單元測試設計的工作,而單元測試的實現和執行由開發人員來完成;而如果測試資源非常缺乏,連單元測試計劃、單元測試設計都無法承擔,那么測試組至少應該參與開發組的各相關單元測試文檔、單元測試報告的評審,保證單元測試的質量。
文章來源于領測軟件測試網 http://www.kjueaiud.com/