軟件單元測試的基本理論 軟件測試
基本概念
單元測試:單元測試又稱模塊測試,屬于白盒測試,是最小單位的測試。模塊分為程序模塊和功能模塊。功能模塊指實現了一個完整功能的模塊(單元),一個完整的程序單元具備輸入、加工和輸出三個環節。而且每個程序單元都應該有正規的規格說明,使之對其輸入、加工和輸出的關系做出名明確的描述。
測試驅動:驅動被測試模塊正常運行起來的實體
測試樁:代替被測模塊調用的子模塊的實體,該實體一般為樁函數。
測試覆蓋:評測測試過程中已經執行的代碼的多少。
覆蓋率:代碼的覆蓋程度,一種度量方式。針對代碼的測試覆蓋率有許多種度量方式,定義如下:
語句覆蓋(StatementCoverage):也稱為行覆蓋(linEC),段覆蓋(segmentcoverage)和基本塊覆蓋(bAS)。它度量每一個可執行語句是否被執行到了。icblockcoverageoverage
判定覆蓋(DecisionCoverage):也被稱為分支覆蓋(branchcoverage),所有邊界覆蓋(all-edgescoverage),基本路徑覆蓋(basispathcoverage),判定路徑覆蓋(decision-decision-path或DDPtesting)。它度量是否每個BOO型的表達式取值true和false在控制結構中都被測試到了。
條件覆蓋(ConDI):它獨立的度量每一個子表達式,報告每一個子表達式的結果的true或false。這個度量和判定覆蓋(decisioncoverage)相似,但是對控制流更敏感。不過,完全的條件覆蓋并不能保證完全的判定覆蓋。tionCoverage
路徑覆蓋(PathCoverage):也稱為斷言覆蓋(prEDI),它度量了是否函數的每一個可能的分支都被執行了。路徑覆蓋的一個好處是:需要徹底的測試。但有兩個缺點:一是,路徑是以分支的指數級別增加的,例如:一個函數包含10個IF語句,就有1024個路徑要測試。如果加入一個IF語句,路徑數就達到2048;二是,許多路徑不可能與執行的數據無關。catecoverage
循環覆蓋(LOOP):這個度量報告你是否執行了每個循環體零次、只有一次還是多余一次(連續地)。對于do-while循環,循環覆蓋報告你是否執行了每個循環體只有一次還是多余一次(連續地)。這個度量的有價值的方面是確定是否對于while循環和for循環執行了多于一次,這個信息在其它的覆蓋率報告中是沒有的。
測試的內容
單元測試的對象是軟件設計的最小單位——模塊或函數,單元測試的依據是詳細設描述。測試者要根據詳細設計說明書和源程序清單,了解模塊的I/O條件和模塊的邏輯結構。主要采用白盒測試的測試用例,輔之以黑盒測試的測試用例,使之對任何合理和不合理的輸入都能鑒別和響應。要求對所有的局部和全局的數據結構、外部接口和程序代碼的關鍵部分進行桌面檢查和代碼審查。在單元測試中,需要對下面5個方面的內容進行測試,也是構造測試用例的基礎。

模塊接口:測試模塊的數據流。如果數據不能正確地輸入和輸出,就談不上進行其他測試。因此,對于模塊接口需要如下的測試項目:
·調用所測模塊時的輸入參數與模塊的形式參數在個數、屬性、順序上是否匹配;
·所測模塊調用子模塊時,它輸入個子模塊的參數與子模塊的形式參數在個數、屬性、順序上是否匹配;
·是否修改了只做輸入用的形式參數;
·輸出給標準函數的參數在個數、屬性、順序上是否匹配;
·全局變量的定義在各模塊中是否一致;
·限制是否通過形式參數來傳送。
局部數據結構測試:模塊的局部數據結構是最常見的錯誤來源,應設計測試用例以檢查以下各種錯誤:
·檢查不正確或不一致的數據類型說明;
·使用尚未賦值或尚未初始化的變量;
·錯誤的初始值或錯誤的默認值;
·變量名拼寫錯誤或書寫錯誤;
·不一致的數據類型。
文章來源于領測軟件測試網 http://www.kjueaiud.com/