• 軟件測試技術
  • 軟件測試博客
  • 軟件測試視頻
  • 開源軟件測試技術
  • 軟件測試論壇
  • 軟件測試沙龍
  • 軟件測試資料下載
  • 軟件測試雜志
  • 軟件測試人才招聘
    暫時沒有公告

字號: | 推薦給好友 上一篇 | 下一篇

淺談對單元測試對象的認識

發布: 2009-4-07 09:02 | 作者: 不詳 | 來源: 測試時代采編 | 查看: 92次 | 進入軟件測試論壇討論

領測軟件測試網  最近有人對我提到的單元測試的概念產生了疑問,原因是他看到了《軟件測試方法和技術》(朱少民 清華大學出版社 2005年7月第一版)中的一段對單元測試的定義,對比我在單元測試中提到的主要是針對類的單元測試,覺得兩者不太一致,于是對單元測試的對象和范圍產生了一些疑問。

        必須說明的是,對這本《軟件測試方法和技術》,我個人的評價應該是不錯的,在體系結構和組織上都比較清晰,包含的內容也比較完整。缺點可能是過于中規中舉了(個人看法:)),和國內的其他教科書一樣,沒有多少引申和深入的描述。因此,本文僅用來闡述個人對單元測試的觀點,不涉及任何對該書或是作者的評價。
        《軟件測試方法和技術》中對單元測試的描述原文如下(P86):


        “單元測試是對軟件基本組成單元的測試。單元測試的對象是軟件設計的最小單位——模塊。很多參考書中將單元測試的概念誤導為一個具體函數或一個類的方法。一個最小的單元應該有明確的功能、性能定義、接口定義而且可以清晰地與其他單元區分開來。一個菜單、一個顯示界面或者能夠獨立完成的具體功能都可以是一個單元。某種意義上單元的概念已經擴展為組件(component)!
        其實這里的觀點我大部分都同意,就是對“很多參考書中將單元測試的概念誤導為一個具體函數或一個類的方法”的說法有些存疑。毫無疑問,作者的觀點是,單元測試不應該是針對具體函數和類的方法的測試,接下來作者說明了他對單元的理解:“一個最小的單元應該有明確的功能、性能定義、接口定義而且可以清晰地與其他單元區分開來”,對這個單元的理解我完全同意,但困擾我的就是,我并沒有從這個定義中看出來一個具體函數不能作為單元測試中“單元”的理由。這段文字中提到單元是“具有明確的功能定義、性能定義、接口定義”,那我們來看看一個具體的函數,例如,C語言中的printf函數,一樣可以套用這樣的定義:

printf函數
功能定義:將輸入參數按照制定的格式打印輸出
性能定義:(略,不同平臺上應該有不同的性能標準)
接口定義:可用函數的參數作為函數對外的接口

 

        另外,這段文字中提到的“一個菜單、一個顯示界面或者能夠獨立完成的具體功能都可以是一個單元”,在我看來仍然有些含糊——具體什么才是“能夠獨立完成的具體功能”,我想這里的“功能”不可能對應到具體的用戶需求中的功能,而是指設計中體現的功能,如果是這個概念,那么一個函數毫無疑問是具有功能的。

        為了慎重,我特地查閱了一些經典的軟件測試書和定義中的單元測試內容,以下是引用和我的理解。

        swebok 2004應該算得上是軟件工程領域的權威性文檔了,其中對unit testing的定義如下:
       

       “Unit testing verifies the functioning in isolation of software pieces which are separately testable. Depending on the context, these could be the individual subprograms or a larger component made of tightly related units.”
       
        從這里可以看到,swebok 2004對unit的定義具有這些特性:一個單元是一個“software pieces”,具有“separately testable”的特性,從這個角度來說,并沒有任何理由支持一個函數不能是單元測試對象的論據。而且,swebok 2004還明確說明了,在不同的上下文中,unit可以是子程序,也可以是緊密聯系的一些單元組成的component。


        《統一軟件開發過程》中也對單元測試進行了描述(P223):


        “執行單元測試的目的是為了把已實現的構件作為個體單元進行測試,主要有以下幾類單元測試:
                  規格說明測試(specification testing)或“黑盒測試”,驗證單元外觀上的可觀察的行為;
                  結構測試(structure testing)或“白盒測試”,驗證單元的內部實現”


        這里的關鍵問題在于上文中“構件”的概念,構件是RUP實現過程中的產物,在該書的P207中給出了構件的定義:“構件是模型元素(如設計模型中的設計類)的物理包”,可見,根據這樣的描述,將一個類或是一段代碼片斷作為單元測試的目標絕對是RUP所認可的。

       

延伸閱讀

文章來源于領測軟件測試網 http://www.anti-gravitydesign.com/

TAG: 單元 對象 認識

21/212>

關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97