單元測試規(guī)范_第1頁
單元測試規(guī)范_第2頁
單元測試規(guī)范_第3頁
單元測試規(guī)范_第4頁
單元測試規(guī)范_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

單元測試規(guī)范概述單元測試是對軟件基本組成單元進(jìn)行的測試,所謂“單元”是指:具有明確的功能具有明確的規(guī)格定義(詳細(xì)設(shè)計(jì)規(guī)格說明書)有與其他部分明確的接口定義能夠與程序的其他部分清晰的進(jìn)行區(qū)分單元測試的側(cè)重點(diǎn)在于發(fā)現(xiàn)程序設(shè)計(jì)或者實(shí)現(xiàn)中的邏輯錯誤。它分為計(jì)劃、設(shè)計(jì)、實(shí)現(xiàn)、執(zhí)行和評估五個步驟。各步驟的定義如下:計(jì)劃單元測試:確定測試需求,制訂測試策略,確定測試所用資源,創(chuàng)建測試任務(wù)的時間表。設(shè)計(jì)單元測試:設(shè)計(jì)單元測試模型,制訂測試方案,確認(rèn)測試過程實(shí)現(xiàn)單元測試:根據(jù)單元測試計(jì)劃和方案,制訂具體的測試用例,創(chuàng)建可重用的測試腳本。執(zhí)行單元測試:根據(jù)單元測試的方案、用例對軟件單元進(jìn)行測試,驗(yàn)證測試結(jié)果并記錄測試過程中出現(xiàn)的缺陷。評估單元測試:對單元測試的結(jié)果進(jìn)行評估,主要從需求覆蓋和代碼覆蓋的角度進(jìn)行測試完備性的評估。單元測試步驟設(shè)計(jì)單元測試方案輸入、輸出輸入工作產(chǎn)品待測程序單元輸出工作產(chǎn)品《XXX單元測試方案》任務(wù)設(shè)計(jì)單元測試的模型,一般如下圖所示驅(qū)動模塊驅(qū)動模塊被測單元測試用例樁模塊樁模塊樁模塊測試結(jié)果構(gòu)造單元測試模型需要:定義(設(shè)計(jì))驅(qū)動模塊,用以調(diào)用被測程序單元定義(設(shè)計(jì))測試樁模塊,用以模擬被測程序單元調(diào)用的函數(shù)接口設(shè)計(jì)測試數(shù)據(jù)和狀態(tài),準(zhǔn)備單元測試的動態(tài)結(jié)構(gòu)確定測試的流程另外,測試模型也可能是由所采用的測試工具所決定的。指定測試項(xiàng)目:指定對不同特性(或者特性組合)進(jìn)行足夠測試的途徑,包括測試工具、方法和技術(shù)的描述以及對測試結(jié)果進(jìn)行提取和分析的方法。定義測試完備性標(biāo)準(zhǔn)(例如代碼覆蓋、路徑覆蓋或者條件覆蓋),并設(shè)計(jì)判定測試完備性的手段,例如利用工具或者設(shè)計(jì)測試代碼等。編寫單元測試CASE輸入、輸出輸入工作產(chǎn)品《XXX單元測試方案》輸出工作產(chǎn)品單元測試案例測試環(huán)境任務(wù)根據(jù)《XXX單元測試方案》構(gòu)造測試環(huán)境(將待測程序單元納入測試工具;實(shí)現(xiàn)驅(qū)動模塊和樁模塊),編寫測試代碼(自己開發(fā)或使用測試工具)。需要的時候生成或者導(dǎo)入測試所需要的數(shù)據(jù)。設(shè)計(jì)單元測試案例設(shè)計(jì)測試案例的時候要根據(jù)《XXX單元測試方案》中所規(guī)定的測試方法、測試項(xiàng)目和完備性標(biāo)準(zhǔn)進(jìn)行。單元測試案例的設(shè)計(jì),主要有以下五個步驟:為系統(tǒng)運(yùn)行起來設(shè)計(jì)測試用例首先需要設(shè)計(jì)這樣的測試用例,該用例的執(zhí)行可以證明測試環(huán)境和被測單元是可用的。如果這樣的測試案例失敗了,其他的測試案例都失去了執(zhí)行的基礎(chǔ)為正向測試而設(shè)計(jì)測試用例其次需要設(shè)計(jì)正向測試案例。這些案例也是基本的單元測試案例,它們是用來證明設(shè)計(jì)規(guī)格說明書中對應(yīng)的功能和性能指標(biāo)是否能夠?qū)崿F(xiàn)的。這些測試案例是按照設(shè)計(jì)說明書中的描述來開發(fā)的。為逆向測試而設(shè)計(jì)測試用例逆向測試的測試用例是用來證明軟件沒有做不應(yīng)該做的事情。這個步驟可以基于錯誤猜測的基礎(chǔ)進(jìn)行測試用例的構(gòu)造。為特殊要求設(shè)計(jì)測試用例從系統(tǒng)的性能、安全性、保密性的角度為具有這些要求的系統(tǒng)制訂的測試用例。為覆蓋率設(shè)計(jì)測試用例測試案例的設(shè)計(jì)要保證一定的覆蓋率要求,所以在最后一步還需要補(bǔ)充一些測試案例,以保證測試案例對代碼、路徑、或者條件的覆蓋率。在單元測試的設(shè)計(jì)當(dāng)中,針對測試項(xiàng)目和測試覆蓋率的要求經(jīng)常采用如下的一些方法:規(guī)格導(dǎo)出法等價類劃分法邊界值分析法狀態(tài)轉(zhuǎn)移測試法分支測試法條件測試法數(shù)據(jù)定義-使用測試法內(nèi)部邊界值測試法錯誤猜測法這些方法的具體描述,請參見附錄一。將設(shè)計(jì)好的測試案例用工具或者文檔記錄下來。在需要的時候,標(biāo)注某個測試案例是為了哪個測試項(xiàng)目而設(shè)計(jì)的。一般來說,測試案例都需要注明:測試條件、測試輸入、測試操作和預(yù)期輸出這四大要素。將設(shè)計(jì)好的測試案例編寫成為測試腳本(testscript),如果設(shè)計(jì)自動化測試,驅(qū)動模塊從測試腳本中逐條讀取測試案例并且通過程序或者測試人員的目測判斷程序單元的行為或者輸出是否符合預(yù)期。一般來說,測試工具或者驅(qū)動模塊也需要將每一條測試案例執(zhí)行的結(jié)果進(jìn)行記錄,以供分析之用。執(zhí)行單元測試輸入、輸出輸入工作產(chǎn)品單元測試案例輸出工作產(chǎn)品單元測試結(jié)果記錄任務(wù)執(zhí)行單元測試案例對單元測試案例的執(zhí)行一般意味著由驅(qū)動模塊讀取測試腳本,然后通過程序判斷或者測試人員目測判斷的方式確認(rèn)測試案例是否執(zhí)行通過。首先應(yīng)該確保測試環(huán)境和測試程序能正常執(zhí)行,如果不能正常執(zhí)行則需要進(jìn)行相應(yīng)修改直至正常。在遇到測試案例執(zhí)行失敗而無法執(zhí)行之后的單元測試案例時,需要調(diào)整被測程序單元直到該案例能夠正常執(zhí)行。修改之后需要重新執(zhí)行之前的測試案例(回歸測試)。使用測試工具或者編寫自動化的測試驅(qū)動模塊可以使這項(xiàng)工作相對容易些。對測試案例的執(zhí)行結(jié)果進(jìn)行記錄,如果使用工具或者編寫了自動化的測試驅(qū)動模塊,這一步工作可以自動化。根據(jù)測試結(jié)果修改源代碼,重新構(gòu)造測試環(huán)境;需要的時候修改測試案例。分析單元測試結(jié)果輸入、輸出輸入工作產(chǎn)品單元測試結(jié)果輸出工作產(chǎn)品單元測試總結(jié)報告任務(wù)分析測試的完備性,判斷是否執(zhí)行了事先設(shè)計(jì)的所有測試案例以及在測試過程中新增加的測試案例。使用工具或者其他自定義的方法判斷單元測試的覆蓋率是否符合事先定義的覆蓋率。如果未能達(dá)成覆蓋率,則補(bǔ)充測試案例,重新執(zhí)行測試。附錄1單元測試案例設(shè)計(jì)指南單元測試目的單元測試案例的設(shè)計(jì)要驗(yàn)證被測程序單元的如下這些方面:1)是否正確實(shí)現(xiàn)了規(guī)定的功能模塊內(nèi)部是否存在錯誤常見模塊單元的錯誤模塊內(nèi)部錯誤往往存在于下列方面:模塊接口:測試模塊的數(shù)據(jù)流調(diào)用所測模塊時輸入?yún)?shù)與模塊的形式參數(shù)在個數(shù)、屬性、順序上是否匹配所測模塊在調(diào)用其他模塊時,它輸入給其他模塊的參數(shù)在個數(shù)、屬性、順序上是否匹配是否修改了只做輸入用的形式參數(shù)輸出給標(biāo)準(zhǔn)函數(shù)的參數(shù)在在個數(shù)、屬性、順序上是否匹配全局變量的定義在各模塊中是否一致限制是否通過形式參數(shù)來傳遞局部數(shù)據(jù)結(jié)構(gòu):不正確的或者不一致的數(shù)據(jù)類型說明使用未賦值或者未初始化的變量錯誤的初始值或者錯誤的默認(rèn)值變量名拼寫錯誤不一致的數(shù)據(jù)類型路徑錯誤:不正確的計(jì)算、比較和控制流錯誤處理出錯的描述難以理解出錯的描述不足以對錯誤定位和確定出錯原因顯示的錯誤與實(shí)際錯誤不符對錯誤條件的處理不正確在對錯誤進(jìn)行處理之前,錯誤條件已經(jīng)引起了系統(tǒng)的干預(yù)邊界在循環(huán)的第0次,第一次和最后一次是否有錯誤運(yùn)算或者判斷中最大最小值是否有錯誤數(shù)據(jù)流、控制流中剛好大于、小于或等于最大或最小值時是否有錯誤單元測試案例常見設(shè)計(jì)方法以下是一些單元測試案例的常見設(shè)計(jì)方法,通過對這些方法的綜合運(yùn)用,可以幫助我們發(fā)現(xiàn)上述這些錯誤。規(guī)格導(dǎo)出法規(guī)格導(dǎo)出法是根據(jù)相關(guān)的規(guī)格說明來設(shè)計(jì)測試用例,每一個測試用例用來檢驗(yàn)一個或多個規(guī)格陳述的語句。一個比較實(shí)際的辦法是按照規(guī)格陳述的語句順序來為被測單元設(shè)計(jì)測試用例。這種測試用例的設(shè)計(jì)可以保證在規(guī)格說明中所有的要求在測試案例中都能得到體現(xiàn),但是它只是一種正向測試的思路,需要其他的測試用例的補(bǔ)充才能達(dá)成測試的完整性。等價類劃分法等價類劃分是一種正式的測試用例設(shè)計(jì)方法,它基于被測單元的輸入、輸出所做的劃分,對每一個劃分中的所有輸入、被測單元都有相同(等價)的反應(yīng)。例如對一個范圍是0-100的整數(shù)輸入來說,2,38,66應(yīng)該都具有相同的效力,而-1,120也有相同的效力。等價類劃分法就是針對每一個等價類設(shè)計(jì)至少一個測試案例來確保被測程序單元的處理是完整的。等價類劃分的設(shè)計(jì)方法也屬于正向測試的技術(shù)。邊界值分析法邊界值分析法使用與等價類劃分法相同的劃分,只是邊界值分析假定錯誤更多地存在于兩個劃分的邊界上,相應(yīng)地為邊界上及兩側(cè)的情況設(shè)計(jì)測試用例。狀態(tài)轉(zhuǎn)移測試對于那些以狀態(tài)機(jī)作為模型或者設(shè)計(jì)為狀態(tài)機(jī)的軟件,狀態(tài)轉(zhuǎn)移測試是合適的。狀態(tài)轉(zhuǎn)移測試法的測試案例涵蓋能導(dǎo)致狀態(tài)遷移的事件來測試狀態(tài)之間的轉(zhuǎn)換是否正確。用這種方法可以測試逆向的測試用例,如狀態(tài)和事件的非法組合。分支測試法在分支測試中,根據(jù)單元中控制流分支或者判斷點(diǎn)來設(shè)計(jì)測試用例。這通常用于達(dá)到一定的測試覆蓋率。在單元測試中,如果使用黑盒測試技術(shù),那么需要去猜測存在哪些邏輯分支并相應(yīng)為這些分支的執(zhí)行準(zhǔn)備測試用例,如果使用白盒測試技術(shù),那么則需要根據(jù)該程序單元中的控制流設(shè)計(jì)測試案例,完成分支覆蓋的要求。條件測試法條件測試法中包涵了很多測試案例設(shè)計(jì)技術(shù),它們都致力于彌補(bǔ)在遇到復(fù)雜邏輯條件的時候分支測試的弱點(diǎn)。條件測試的目標(biāo)是測試在每個邏輯條件的單個成份及它們組合的情況下程序都是正確的。在考慮各個邏輯條件的組合的時候,決策表是一種有用的工具。在條件測試法中,需要設(shè)計(jì)足夠的測試案例,確保每種邏輯條件的組合都被測試到。數(shù)據(jù)定義-使用測試法數(shù)據(jù)定義是指數(shù)據(jù)被賦值的地方,數(shù)據(jù)使用是指數(shù)據(jù)項(xiàng)被讀取或者使用的地方。使用這種方法設(shè)計(jì)測試案例時,主要考慮用案例來驅(qū)動數(shù)據(jù)被定義到被使用的路徑。這種方法主要用于檢查數(shù)據(jù)的初始化和處理的正確性,也可以在靜態(tài)檢查中使用。內(nèi)部邊界值測試法這種方法與邊界值分析法類似,但是它偏重的是白盒測試技術(shù),也就是說從程序單元的規(guī)格說明中導(dǎo)出等價類和邊界值。除了外部可見的數(shù)據(jù)之外,程序的內(nèi)部的數(shù)據(jù)也存在等價類和邊界值,它們只能通過對程序單元的設(shè)計(jì)規(guī)格說明進(jìn)行分析而得到。內(nèi)部邊界值測試法一般只作為測試案例設(shè)計(jì)的補(bǔ)充方法,與其他方法結(jié)合使用。錯誤猜測法錯誤猜測是基于經(jīng)驗(yàn)和其他一些測試技術(shù)的。在經(jīng)驗(yàn)的基礎(chǔ)上,測試設(shè)計(jì)者猜測錯誤的類型及在特定的軟件中錯誤發(fā)生的位置,并設(shè)計(jì)測試用例去發(fā)現(xiàn)它們。例如,如果所有的資源需要動態(tài)申請,那

溫馨提示

  • 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

提交評論