第7次大課 單元測試_第1頁
第7次大課 單元測試_第2頁
第7次大課 單元測試_第3頁
第7次大課 單元測試_第4頁
第7次大課 單元測試_第5頁
已閱讀5頁,還剩44頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第4章 軟件測試過程單元測試單元測試肖新鳳肖新鳳 4.1 軟件測試過程概述軟件測試過程概述v 軟件測試過程與軟件工程的開發(fā)過程是相對的。第2章圖2-1采用V形圖表示軟件開發(fā)與軟件測試的對應(yīng)關(guān)系,也可以采用圖4-1所示的螺旋形圖來表示這種關(guān)系。RDSCUIS TV系統(tǒng)規(guī)格說明設(shè)計編碼單元測試集成測試系統(tǒng)測試驗(yàn)收測試系統(tǒng)需求分析圖4-1 測試過程 v 單元測試的目的是保證每個模塊單獨(dú)運(yùn)行正確,多采用白盒技術(shù),檢查模塊控制結(jié)構(gòu)的某些特殊路徑,期望覆蓋盡可能多的出錯點(diǎn)。經(jīng)單元測試后的模塊,組裝為軟件包,對軟件包進(jìn)行集成測試,主要測試軟件結(jié)構(gòu)問題,因測試建立在模塊間的接口上,所以多為黑盒測試,適當(dāng)輔以白

2、盒測試技術(shù),以便能對主要控制路徑進(jìn)行測試。v 系統(tǒng)測試主要是檢驗(yàn)軟件是否滿足功能、行為和性能方面的要求,這一步完全采用黑盒測試技術(shù)。驗(yàn)收測試是檢驗(yàn)軟件產(chǎn)品的最后一道工序,與前面各種測試過程的不同之處主要在于它突出了客戶的作用,同時軟件開發(fā)人員也要參與。本次課內(nèi)容本次課內(nèi)容v 什么是單元測試什么是單元測試v單元測試的方法單元測試的方法v白盒測試方法的用例設(shè)計白盒測試方法的用例設(shè)計v代碼審查代碼審查v單元測試工具單元測試工具單單 元元 測測 試試單元測試的定義v 單元測試是對軟件設(shè)計的最小單元模塊進(jìn)行正確性檢驗(yàn)的測試工作,主要測試模塊在語法、格式和邏輯上的錯誤。 1單元測試的重要性 v 從如下幾個

3、方面就可以看出單元測試的重要性:v (1) 時間方面v (2) 測試效果方面v (3) 測試成本方面v (4) 產(chǎn)品質(zhì)量方面單元測試的重要性與原則單元測試的重要性與原則 2單元測試原則v(1) 單元測試越早進(jìn)行越好v(2) 單元測試應(yīng)該依據(jù)軟件詳細(xì)設(shè)計規(guī)格說明進(jìn)行v(3) 對于修改過的代碼應(yīng)該重做單元測試,以保證對已發(fā)現(xiàn)錯誤的修改沒有引入新的錯誤v(4) 當(dāng)測試用例的測試結(jié)果與設(shè)計規(guī)格說明上的預(yù)期結(jié)果不一致時,測試人員應(yīng)如實(shí)記錄實(shí)際的測試結(jié)果v(5) 單元測試應(yīng)注意選擇好被測軟件單元的大小v(6) 一個完整的單元測試說明應(yīng)該包含正面測試和負(fù)面的測試v(7) 注意使用單元測試工具單元測試的目標(biāo)單

4、元測試的目標(biāo)v單元實(shí)現(xiàn)了其特定的功能,如果需要,返回正確的值v單元的運(yùn)行能夠覆蓋預(yù)先設(shè)定的各種邏輯v在單元工作過程中,其內(nèi)部數(shù)據(jù)能夠保持完整性,包括全局變量的處理、內(nèi)部數(shù)據(jù)的形式、內(nèi)容及相互關(guān)系等不發(fā)生錯誤v可以接受正確數(shù)據(jù),也能處理非法數(shù)據(jù),在數(shù)據(jù)邊界條件上,單元也能夠正確工作v該單元的算法合理,性能良好v該單元代碼經(jīng)過掃描,沒有發(fā)現(xiàn)任何安全性問題單元測試的方法單元測試的方法v單元測試主要采用白盒測試方法,輔以黑盒測試方法。白盒測試方法應(yīng)用于代碼評審、單元程序檢驗(yàn)之中,而黑盒測試方法則應(yīng)用于模塊、組件等大單元的功能測試之中 v單元測試是針對每個程序模塊進(jìn)行測試,單元測試的主要任務(wù)是解決以下5

5、個方面的測試問題。 1模塊接口測試v針對模塊接口測試應(yīng)進(jìn)行的檢查,主要涉及以下幾方面的內(nèi)容。單元測試的主要任務(wù)單元測試的主要任務(wù)v 模塊接受輸入的實(shí)際參數(shù)個數(shù)與模塊的形式參數(shù)個數(shù)是否一致。v 輸入的實(shí)際參數(shù)與模塊的形式參數(shù)的類型是否匹配。v 輸入的實(shí)際參數(shù)與模塊的形式參數(shù)所使用單位是否一致。v 調(diào)用其他模塊時,所傳送的實(shí)際參數(shù)個數(shù)與被調(diào)用模塊的形式參數(shù)的個數(shù)是否相同。v 調(diào)用其他模塊時,所傳送的實(shí)際參數(shù)與被調(diào)用模塊的形式參數(shù)的類型是否匹配。v 調(diào)用其他模塊時,所傳送的實(shí)際參數(shù)與被調(diào)用模塊的形式參數(shù)的單位一致。v 調(diào)用內(nèi)部函數(shù)時,參數(shù)的個數(shù)、屬性和次序是否正確。v 在模塊有多個入口的情況下,是否

6、有引用與當(dāng)前入口無關(guān)的參數(shù)。v 是否會修改了只讀型參數(shù)。v 出現(xiàn)全局變量時,這些變量是否在所有引用它們的模塊中都有相同的定義。v11. 有沒有把某些約束當(dāng)做參數(shù)來傳送。 2模塊局部數(shù)據(jù)結(jié)構(gòu)測試 3模塊中所有獨(dú)立執(zhí)行路徑測試 4各種錯誤處理測試 5模塊邊界條件測試v 一般情況下,在完成了程序編寫、復(fù)查和語法正確性驗(yàn)證后,就應(yīng)進(jìn)行單元測試。測試用例設(shè)計應(yīng)與復(fù)審工作相結(jié)合,根據(jù)設(shè)計信息選取數(shù)據(jù),將增大發(fā)現(xiàn)上述各類錯誤的可能性。單元測試環(huán)境的建立單元測試環(huán)境的建立v 在進(jìn)行單元測試時,需設(shè)置若干輔助測試模塊。輔助模塊有兩種,一種是驅(qū)動模塊(Driver),用以模擬被測試模塊的上級模塊。 另一種是被調(diào)用

7、模擬子模塊(Sub),用以模擬被測模塊工作過程中所調(diào)用的模塊。圖4-3顯示了一般的單元測試環(huán)境。 驅(qū) 動 模 塊 被 測 模 塊 模 擬 被 調(diào) 用 子 模 塊 結(jié) 果 界 面 局 部 數(shù) 據(jù) 結(jié) 構(gòu) 邊 界 條 件 獨(dú) 立 路 徑 錯 誤 處 理 路 徑 測 試 用 例 圖4-3 一般單元測試環(huán)境 黑盒方法和白盒方法黑盒方法和白盒方法 v黑盒測試方法黑盒測試方法(Blake-box Testing),是把程序看作一個不能打開的黑盒子,不考慮程序內(nèi)部結(jié)構(gòu)和內(nèi)部特性,而是考察數(shù)據(jù)的輸入、條件限制和數(shù)據(jù)輸出,完成測試 v白盒測試方法白盒測試方法(White-box Testing),也稱結(jié)構(gòu)測試或

8、邏輯驅(qū)動測試。白盒測試方法是根據(jù)模塊內(nèi)部結(jié)構(gòu)了解,基于內(nèi)部邏輯結(jié)構(gòu),針對程序語句、路徑、變量狀態(tài)等來進(jìn)行測試,檢驗(yàn)程序中的各個分支條件是否得到滿足、每條執(zhí)行路徑是否按預(yù)定要求正確的工作。 驅(qū)動程序和樁程序驅(qū)動程序和樁程序 v驅(qū)動程序驅(qū)動程序(driver),對底層或子層模塊進(jìn)行(單元或集成)測試時所編制的調(diào)用被測模塊的程序,用以模擬被測模塊的上級模塊 v樁程序樁程序(stub),也有人稱為存根程序,對頂層或上層模塊進(jìn)行測試時,所編制的替代下層模塊的程序,用以模擬被測模塊工作過程中所調(diào)用的模塊。 示例示例http:/ ABCDEFGTest驅(qū)動程序調(diào)用運(yùn)行樁程序樁程序測試結(jié)果被測模塊B白盒方法的

9、目標(biāo)白盒方法的目標(biāo)v語句覆蓋,使得程序中每一條可執(zhí)行語句至少被執(zhí)行一次v分支覆蓋,使得程序中每一個分支都至少被執(zhí)行一次v條件覆蓋,程序中每一個條件至少有一次被滿足v路徑覆蓋,對程序模塊的所有獨(dú)立的基本路徑至少要測試一次 分支測試分支測試分支覆蓋分支覆蓋(Branch Coverage )的基本思想是設(shè)計若干個的基本思想是設(shè)計若干個測試用例,運(yùn)行被測程序,使程序中的每個分支至少被測試用例,運(yùn)行被測程序,使程序中的每個分支至少被執(zhí)行一次執(zhí)行一次 條件條件代碼塊1代碼塊2分支覆蓋分支覆蓋 vs. 語句覆蓋語句覆蓋i:=i+1;result:=result+i;(iN) and(result=maxi

10、nt)result=maxintN 0N := -N;output(result);output(too large);exitstartyesnonoyesyesnoN =0)result=0 i=0條件覆蓋條件覆蓋 vs. 分支覆蓋分支覆蓋分支一.T. a0, b0 : a= 1, b= 1分支二.F. a0, b=0 : a= 1, b= -1a0 : a= -1, b= 1 a=0, b0 and b0 只有兩個分支(.T. 和 .F.),但條件有 a0, a0, b=0, 構(gòu)成四種組合條件覆蓋條件覆蓋 vs. 分支覆蓋分支覆蓋p條件覆蓋不能保證分支覆蓋,例如設(shè)計兩個測試用例N= 1、

11、Max = -1和N= 0、Max = 1 (KN) and (R=Max).T. 的分支沒有被覆蓋p設(shè)計兩個測試用例N= 3、Max = 10和N= -1、Max = 0,即覆蓋了所有條件,也覆蓋了所有分支 基本路徑覆蓋基本路徑覆蓋v路徑覆蓋就是設(shè)計所有的測試用例,來覆蓋程序中的所有可能的執(zhí)行路徑?;韭窂綔y試法是在程序控制流圖的基礎(chǔ)上,通過分析控制構(gòu)造的環(huán)路復(fù)雜性,導(dǎo)出基本可執(zhí)行路徑集合,從而設(shè)計測試用例的方法。設(shè)計出的測試用例要保證被測試程序的每個可執(zhí)行語句至少被執(zhí)行一次。 程序流程圖程序流程圖 代碼審查代碼審查v5.4.1 代碼審查的范圍和方法代碼審查的范圍和方法v5.4.2 代碼規(guī)范

12、性的審查代碼規(guī)范性的審查v5.4.3 代碼缺陷檢查表代碼缺陷檢查表代碼審查的范圍和方法代碼審查的范圍和方法v代碼審查的目的就是為了產(chǎn)生合格的代碼,檢查源程序編碼是否符合詳細(xì)設(shè)計的編碼規(guī)定,確保編碼與設(shè)計的一致性和可追蹤性 v審查的內(nèi)容v最佳實(shí)踐p業(yè)務(wù)邏輯的審查 p算法的效率 p代碼風(fēng)格 p編程規(guī)則 代碼規(guī)范性的審查代碼規(guī)范性的審查v代碼規(guī)范性的審查將助于更早地發(fā)現(xiàn)缺陷,代碼質(zhì)量的提高,而且可以幫助程序員遵守規(guī)則、養(yǎng)成好的習(xí)慣,以達(dá)到預(yù)防缺陷的目的 v代碼風(fēng)格和編程規(guī)則兩者不可缺一,都應(yīng)列入代碼評審的范圍里v命名規(guī)則 、縮進(jìn)與對齊 、注釋 和函數(shù)處理 等 代碼缺陷檢查表代碼缺陷檢查表v把程序設(shè)計

13、中可能發(fā)生的各種缺陷進(jìn)行分類,以每一類列舉盡可能多的典型缺陷,形成代碼缺陷檢查表。代碼評審常常會使用這類檢查表,以表的內(nèi)容為檢查依據(jù)、要點(diǎn),防止人為的疏漏,并提高評審效率。在每次評審之后,對新發(fā)現(xiàn)的缺陷也要進(jìn)行分析、歸類,不斷充實(shí)缺陷檢查表 單元測試工具種類單元測試工具種類http:/ p 代碼規(guī)則/風(fēng)格檢查工具p 內(nèi)存資源泄漏檢查工具p 代碼覆蓋率檢查工具p 代碼性能檢查工具靜態(tài)測試工具和動態(tài)測試工具靜態(tài)測試工具和動態(tài)測試工具p 靜態(tài)測試工具不需要運(yùn)行代碼,而是直接對代碼進(jìn)行語法掃描和所定義的規(guī)則進(jìn)行分析,找出不符合編碼規(guī)范的地方,給出錯誤報告和警告信息。p 動態(tài)測試工具則需要通過運(yùn)行程序來

14、檢測程序,需要寫測試腳本或測試代碼來完成分支覆蓋、條件覆蓋或基本路徑覆蓋的測試。單元測試工具列表http:/ JUnit介紹http:/ vJUnit()是開源測試框架體系xUnit的一個實(shí)例,可以方便地組織和運(yùn)行Java程序的單元測試 JUnit結(jié)構(gòu)結(jié)構(gòu)http:/ JUnit安裝安裝http:/ JUnit設(shè)置http:/ JUnit腳本示例一腳本示例一http:/ JUnit腳本示例二腳本示例二http:/ 微軟微軟VSTS的單元測試的單元測試 http:/ v Visual Studio Team System(VSTS)是一套工具集,全面整合了軟

15、件設(shè)計、開發(fā)、測試、部署和人員協(xié)作工具,其開發(fā)版(Development Edition)提供了靜態(tài)分析、代碼剖析、代碼涵蓋以及其它單元測試所需的功能特性。 p 創(chuàng)建單元測試項(xiàng)目。 p 設(shè)置項(xiàng)目引用。 p 添加適當(dāng)?shù)臏y試類(一個或多個)。 p 生成主干的單元測試框架(Unit Test Framework)類和屬性。 p 創(chuàng)建單個測試方法。 p 創(chuàng)建適合特定接口的邏輯 VSTS單元測試屬性單元測試屬性http:/ VSTS斷言斷言http:/ 開源單元測試工具開源單元測試工具h(yuǎn)ttp:/ vC/C+ 語言單元測試工具:語言單元測試工具:CppTest、CppUnit、 vJava語言單元測試工

16、具語言單元測試工具:TestNG、PMD、Checkstyle、Findbugs、JalopyvMock Object類工具類工具: MockObjects、Xdoclet、EasyMock、MockCreator、MockEJB、ObjcUnit、jMock等 v其它其它 商業(yè)單元測試工具商業(yè)單元測試工具h(yuǎn)ttp:/ v C/C+語言的單元測試工具以商業(yè)工具為主,例如Parasoft C+、PR QAC/C+、CompuWare DevPartner for Visual C+ BoundsChecker Suite、Panorama C+等 v 內(nèi)存資源泄漏檢查工具,如CompuWare BounceChecker, IBM Rational PurifyPlus等v

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論