《軟件測試第二章單元測試》由會員分享,可在線閱讀,更多相關(guān)《軟件測試第二章單元測試(26頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,*,*,第,2,章:單元測試,主講,:,林躍進,2024/11/26,1,3.1,單元測試概述,定義:單元測試又稱程序模塊測試,是檢驗程序的最小的單位測試。,單元測試的主要任務(wù),:,單元測試針對每個程序的模塊,主要測試,5,個方面的問題:,模塊接口、局部數(shù)據(jù)結(jié)構(gòu)、邊界條件、獨立的路徑、錯誤處理,2024/11/26,2,3.1,單元測試概述,模塊接口,這是對模塊
2、接口進行的測試,檢查進出程序單元的數(shù)據(jù)流是否正確。模塊接口測試必須在任何其它測試之前進行。,2024/11/26,3,3.1,單元測試概述,模塊接口測試至少需要如下的測試項目:,(1),調(diào)用所測模塊時的輸入?yún)?shù)與模塊的形式參數(shù)在個數(shù)、類型、順序上是否一致;,(2),所測模塊調(diào)用子模塊時,它輸入給子模塊的參數(shù)與子模塊中的形式參數(shù)在個數(shù)、類型、順序上是否一致;,(3),是否會修改只是作為輸入值的形式參數(shù),(4),調(diào)用標準函數(shù)的參數(shù)在個數(shù)、類型、順序上是否正確;,(5),全局變量的定義在各模塊中是否一致。,2024/11/26,4,3.1,單元測試概述,局部數(shù)據(jù)結(jié)構(gòu),在模塊工作過程中,必須測試模塊內(nèi)
3、部的數(shù)據(jù)能否保持完整性,包括內(nèi)部數(shù)據(jù)的內(nèi)容、形式及相互關(guān)系不發(fā)生錯誤。,2024/11/26,5,對于局部數(shù)據(jù)結(jié)構(gòu),應(yīng)該在單元測試中注意發(fā)現(xiàn)以下幾類錯誤:,(1),變量從來沒有被使用,包括可能別的地方使用了外部變量或函數(shù)。,(2),變量沒有初始化。,(3),錯誤的類型轉(zhuǎn)換。,(4),數(shù)組越界。,(5),變量或函數(shù)名稱拼寫錯誤,包括使用了外部變量或者函數(shù)。,2024/11/26,6,3.1,單元測試概述,邊界條件測試:,主要檢查臨界數(shù)據(jù)是否正確處理。,(,1,)普通合法數(shù)據(jù)是否正確處理;,(,2,)普通非法數(shù)據(jù)是否正確處理;,(,3,)邊界內(nèi)最接近邊界的(合法,/,非法)數(shù)據(jù)是否正確處理。,20
4、24/11/26,7,3.1,單元測試概述,獨立路徑測試,在單元測試中,最主要的測試是針對路徑的測試。測試用例必須能夠發(fā)現(xiàn)由于計算錯誤、不正確的判定或不正常的控制流而產(chǎn)生的錯誤。,2024/11/26,8,3.1,單元測試概述,常見的錯誤有:,死代碼,錯誤的計算優(yōu)先級;,精度錯誤,包括比較運算錯誤、賦值錯誤;,表達式的不正確符號,包括,=,=,=,!=,;,循環(huán)變量的使用錯誤,包括錯誤賦值。,2024/11/26,9,3.1,單元測試概述,出錯處理,測試出錯處理的重點是模塊在工作中發(fā)生了錯誤,其中的出錯處理設(shè)施是否有效。,檢驗程序中的出錯處理可能面對的情況有:,2024/11/26,10,3.
5、1,單元測試概述,(1),是否檢查錯誤出現(xiàn),包括資源使用前后、其它模塊使用前后;,(2),出現(xiàn)錯誤是否進行處理,包括拋出錯誤、通知用戶、進行記錄。,(3),錯誤處理是否有效,包括在系統(tǒng)干預(yù)前處理、報告和記錄的錯誤都應(yīng)真實詳細。,2024/11/26,11,3.2,單元測試的執(zhí)行過程,單元測試的執(zhí)行過程,單元測試常常是和代碼編寫工作同時進行的,在完成了程序編寫、復(fù)查和語法正確性驗證后,就應(yīng)進行單元測試用例設(shè)計。,在單元測試時,如果模塊不是獨立的程序,需要設(shè)置一些,輔助測試模塊,。輔助測試模塊有兩種:,2024/11/26,12,3.2,單元測試的執(zhí)行過程,(,1,),驅(qū)動模塊,(Drive),用
6、來模擬被測試模塊的上一級模塊,相當于被測模塊的主程序。它接收數(shù)據(jù),將相關(guān)數(shù)據(jù)傳送給被測模塊,啟動被測模塊,并打印出相應(yīng)的結(jié)果。,(,2,),樁模塊,(Stub),用來模擬被測模塊工作過程中所調(diào)用的模塊。它們一般只進行很少的數(shù)據(jù)處理。,2024/11/26,13,1.,單元測試,2024/11/26,14,3.2,單元測試的執(zhí)行過程,驅(qū)動模塊和樁模塊都是額外的開銷,雖然在單元測試中必須編寫,,但并不需要作為最終的產(chǎn)品提供給用戶。,2024/11/26,15,單元測試,#include,void,iszero(int,m),if(m,!=0),printf(“%d”,m,);,else print
7、f(“%d”,1);,void main(void),int,a5;,int,i=0;,printf,(“,輸入,5,個整數(shù),:n,”);,for(i,=0;i=4;i+),scanf(“%d”,&ai,);,iszero(ai,);,2024/11/26,16,3.3,單元測試的執(zhí)行過程,在代碼編寫完成后的單元測試工作主要分為兩個步驟:人工靜態(tài)檢查(靜態(tài)測試)和動態(tài)執(zhí)行跟蹤(動態(tài)測試)。,2024/11/26,17,3.3,單元測試的執(zhí)行過程,靜態(tài)測試是指測試不運行的部分,只是檢查和審閱。,動態(tài)測試是指通常意義上的測試,運行和使用軟件。,單元測試的依據(jù)是詳細設(shè)計和概要設(shè)計!,2024/11/
8、26,18,3.3,單元測試的執(zhí)行過程,靜態(tài)測試,不運行程序,通過程序員本人或其它人員執(zhí)行人工檢查,主要檢查:,代碼風(fēng)格和規(guī)則檢查,程序設(shè)計和結(jié)構(gòu)的檢查,業(yè)務(wù)邏輯檢查,同行評審:走讀、小組評審、審查。(,p.23,),2024/11/26,19,靜態(tài)測試,(,1,)走讀,一般檢查代碼,也可以是檢查設(shè)計文檔。,一般是項目內(nèi)部的其它開發(fā)人員,不涉及公司高層或外部專家。,2024/11/26,20,靜態(tài)測試,(,2,)小組評審,由一個正式的組織對產(chǎn)品進行評價。確認任何與需求規(guī)格、設(shè)計規(guī)格或標準不一致的地方或者在檢查后給出可替換的建議。,參與者主要是公司技術(shù)領(lǐng)導(dǎo)或權(quán)威公司及外部專家,主要適用于需求規(guī)格
9、和概要設(shè)計的評審。,2024/11/26,21,靜態(tài)測試,(,3,)審查,遵循嚴格的過程,人員經(jīng)過培訓(xùn),檢查過程有標準,檢查針對實際的產(chǎn)品或半成品,目的是發(fā)現(xiàn)存在的錯誤。,參加人員:公司內(nèi)部設(shè)計、開發(fā)、測試、質(zhì)量等部門中的工作性相關(guān)的員工組成。,2024/11/26,22,靜態(tài)測試,詳細設(shè)計靜態(tài)測試(,p.25,),代碼靜態(tài)測試(,p.26,),2024/11/26,23,動態(tài)測試,動態(tài)測試,黑盒測試,白盒測試,2024/11/26,24,3.4,基于,JUnit,的單元測試,詳細見實驗指導(dǎo)書,2024/11/26,25,作業(yè),1,。簡述單元測試的步驟,2,。什么是驅(qū)動模塊和樁模塊?為下面的函數(shù)構(gòu)造一個驅(qū)動模塊,并至少設(shè)計,5,條測試用例。,/*,計算兩個整數(shù)的除法運算,將結(jié)果轉(zhuǎn)換為單一精度輸出*,/,float,divide(int,a,int,b),float c;,if(b,=0),printf,(“,除數(shù)不能為,0,!”,);,return 0;,c=(float)a/b;,return c;,2024/11/26,26,