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