版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
軟件質(zhì)量保證與測(cè)試5.1.1單元測(cè)試簡(jiǎn)介第5章軟件測(cè)試過(guò)程SoftwareQualityAssuranceandTesting5.1單元測(cè)試單元測(cè)試的成本效率
在軟件開(kāi)發(fā)過(guò)程中,越早發(fā)現(xiàn)問(wèn)題、解決問(wèn)題,花費(fèi)的成本就越小,經(jīng)驗(yàn)表明一個(gè)盡責(zé)的單元測(cè)試將會(huì)在軟件開(kāi)發(fā)的早期發(fā)現(xiàn)很多的問(wèn)題和缺陷,并且修改它們的成本也較低,而如果拖到后期階段,缺陷的發(fā)現(xiàn)和修改將會(huì)變得更加困難,并要消耗更多的時(shí)間和費(fèi)用。對(duì)于程序代碼而言,開(kāi)發(fā)出來(lái)之后,應(yīng)首先對(duì)其進(jìn)行單元測(cè)試,力爭(zhēng)盡早發(fā)現(xiàn)程序中缺陷和問(wèn)題。
有統(tǒng)計(jì)數(shù)據(jù)表明,以軟件的一個(gè)功能點(diǎn)為基準(zhǔn),單元測(cè)試的成本效率大約是集成測(cè)試的兩倍,系統(tǒng)測(cè)試的三倍。單元測(cè)試的成本效率單元測(cè)試的概念
單元測(cè)試是針對(duì)軟件設(shè)計(jì)的最小單位——程序模塊,進(jìn)行檢查和驗(yàn)證,其目的在于發(fā)現(xiàn)每個(gè)程序模塊內(nèi)部可能存在的問(wèn)題和差錯(cuò)。單元測(cè)試通常應(yīng)用于實(shí)施模型中的構(gòu)件,核實(shí)是否已覆蓋控制流和數(shù)據(jù)流,以及構(gòu)件是否可以按照預(yù)期工作。執(zhí)行單元測(cè)試,就是為了驗(yàn)證單元模塊代碼的行為和我們期望的一致。單元的粒度
單元測(cè)試是對(duì)軟件基本組成單元的測(cè)試。單元的粒度具體劃分可以不同,在傳統(tǒng)的結(jié)構(gòu)化編程語(yǔ)言如C語(yǔ)言中,單元一般是模塊,也就是函數(shù)或子過(guò)程;在C++中,單元是類(lèi)或類(lèi)的方法;在Ada語(yǔ)言中,單元可為獨(dú)立的過(guò)程、函數(shù)或Ada包;在第四代語(yǔ)言(4GL)中,單元對(duì)應(yīng)為一個(gè)菜單或顯示界面。***打印模塊
......publicintfindMin(){......單元的粒度
單元測(cè)試中的一個(gè)可測(cè)“單元”應(yīng)符合以下要求:(1)是可測(cè)試的、最小的、不可再分的程序模塊。(2)有明確的功能、規(guī)格定義。(3)有明確的接口定義,清晰地與同一程序的其他單元?jiǎng)澐珠_(kāi)來(lái)。單元測(cè)試的完成人
單元測(cè)試通常是由程序員自己來(lái)完成,有時(shí)測(cè)試人員也加入進(jìn)來(lái),但編程人員仍會(huì)起到主要作用。單元測(cè)試是程序員的一項(xiàng)基本職責(zé),程序員有責(zé)任對(duì)自己編寫(xiě)的代碼進(jìn)行單元測(cè)試。程序員必須對(duì)自己所編寫(xiě)的代碼保持認(rèn)真負(fù)責(zé)的態(tài)度,這是程序員的基本職業(yè)素質(zhì)之一。同時(shí)單元測(cè)試能力也是程序員的一項(xiàng)基本能力,這種能力的高低直接影響到程序員的工作效率與軟件的質(zhì)量。
在編碼的過(guò)程中進(jìn)行單元測(cè)試的話,由于程序員對(duì)設(shè)計(jì)和代碼都很熟悉,不需要額外花時(shí)間去閱讀、理解、分析程序的設(shè)計(jì)書(shū)和源代碼,所以測(cè)試成本是最小的,測(cè)試效率也是最高的。在編碼的過(guò)程中考慮測(cè)試問(wèn)題,得到的將是更優(yōu)質(zhì)的代碼,因?yàn)榇藭r(shí)程序員對(duì)代碼應(yīng)該做些什么了解得最清楚。如果不這樣做,而是先匆匆忙忙完成模塊開(kāi)發(fā),等過(guò)了很久,甚至是一直等到模塊報(bào)錯(cuò)崩潰了,再來(lái)做單元測(cè)試,到那時(shí)程序員可能已經(jīng)忘記了這個(gè)模塊的代碼是怎樣工作的,需要花較多的時(shí)間來(lái)重新閱讀、理解、分析程序的設(shè)計(jì)書(shū)和源代碼。編程與單元測(cè)試
由于單元測(cè)試是在編碼過(guò)程中進(jìn)行的,若發(fā)現(xiàn)了一個(gè)錯(cuò)誤,修復(fù)錯(cuò)誤的成本會(huì)遠(yuǎn)小于集成測(cè)試階段,更是小于系統(tǒng)測(cè)試階段。在編碼的過(guò)程中考慮單元測(cè)試問(wèn)題,有助于編程人員養(yǎng)成良好的編程習(xí)慣,提高源代碼質(zhì)量。編程與單元測(cè)試單元測(cè)試的目標(biāo)
單元測(cè)試是軟件測(cè)試的基礎(chǔ)。通過(guò)單元測(cè)試,應(yīng)分別完成對(duì)每個(gè)單元的測(cè)試任務(wù),確保每個(gè)單元模塊能正常工作,程序代碼符合各種要求和規(guī)范。通常合格的代碼應(yīng)該具備以下性質(zhì):正確性、清晰性、規(guī)范性、一致性、高效性等,要具備的這些性質(zhì)中,優(yōu)先級(jí)最高的的正確性,只有先滿足正確性,其它特性才具有實(shí)際意義,其次是清晰性、規(guī)范性和一致性,而對(duì)有些會(huì)反復(fù)執(zhí)行的代碼,還需要具有高效性,否則會(huì)影響整個(gè)系統(tǒng)的效率和性能。單元測(cè)試的目標(biāo)1.正確性是指代碼邏輯必須正確,能夠?qū)崿F(xiàn)預(yù)期的功能。2.清晰性是指代碼必須簡(jiǎn)明、易懂,注釋準(zhǔn)確沒(méi)有歧義。3.規(guī)范性是指代碼必須符合企業(yè)或部門(mén)所定義的共同規(guī)范包括命名規(guī)則,代碼風(fēng)格等4.一致性指代碼必須在名稱(chēng)、風(fēng)格等方面保持統(tǒng)一5.高效性是指代碼不但要滿足以上性質(zhì),而且需要盡可能降低代碼的執(zhí)行時(shí)間。單元測(cè)試的輔助模塊
一個(gè)單元模塊或一個(gè)方法(Method)等并不是一個(gè)獨(dú)立的程序,在測(cè)試它時(shí)要同時(shí)考慮它和外界的聯(lián)系,用一些輔助模塊去模擬與被測(cè)模塊相聯(lián)系的其他模塊。這些輔助模塊分為驅(qū)動(dòng)模塊和樁模塊兩種。例如有如圖所示的程序模塊圖,如果要對(duì)中間的單元做測(cè)試,則需要輔助的一個(gè)驅(qū)動(dòng)模塊和兩個(gè)樁模塊。單元測(cè)試的輔助模塊驅(qū)動(dòng)模塊
驅(qū)動(dòng)模塊用來(lái)模擬被測(cè)單元的上層模塊的程序模塊,它能夠接收或者設(shè)置測(cè)試數(shù)據(jù)、參數(shù)、環(huán)境變量等,調(diào)用被測(cè)單元,將數(shù)據(jù)傳遞給被測(cè)單元,如果需要還可以顯示或者打印測(cè)試的執(zhí)行結(jié)果??蓪Ⅱ?qū)動(dòng)模塊理解為被測(cè)單元的主程序。樁模塊
樁模塊又稱(chēng)為存根模塊,它用來(lái)模擬被測(cè)單元的子模塊。設(shè)計(jì)樁模塊的目的是模擬被測(cè)單元所調(diào)用的子模塊,接受被測(cè)單元的調(diào)用,并返回調(diào)用結(jié)果給被測(cè)單元。樁模塊不一定需要包括子模塊的全部功能,但至少應(yīng)能模擬滿足被測(cè)單元的調(diào)用需求,而不至于讓被測(cè)單元在調(diào)用它時(shí)出現(xiàn)錯(cuò)誤。單元測(cè)試的測(cè)試環(huán)境
被測(cè)試的單元模塊與它的驅(qū)動(dòng)模塊及樁模塊一起,共同構(gòu)成了一個(gè)“測(cè)試環(huán)境”。建立單元測(cè)試的環(huán)境,需完成以下一些工作:①構(gòu)造最小運(yùn)行調(diào)度系統(tǒng),即構(gòu)造被測(cè)單元的驅(qū)動(dòng)模塊。②模擬被測(cè)單元的下級(jí)調(diào)用接口,即構(gòu)造用于提供給被測(cè)單元調(diào)用的樁模塊。③模擬生成測(cè)試數(shù)據(jù)及狀態(tài),為被測(cè)單元運(yùn)行準(zhǔn)備動(dòng)態(tài)環(huán)境。單元測(cè)試模型算法和邏輯模塊接口數(shù)據(jù)結(jié)構(gòu)邊界條件獨(dú)立路徑錯(cuò)誤處理......
驅(qū)動(dòng)模塊
被測(cè)模塊樁模塊樁模塊樁模塊測(cè)試結(jié)果測(cè)試用例單元測(cè)試的測(cè)試環(huán)境
驅(qū)動(dòng)模塊和樁模塊的編寫(xiě)會(huì)產(chǎn)生一定的工作量,帶來(lái)額外的開(kāi)銷(xiāo)。因?yàn)樗鼈冊(cè)谲浖桓稌r(shí)并不作為產(chǎn)品的一部分一同交付。特別是樁模塊,為了能夠正確、充分的測(cè)試軟件,樁模塊可能需要模擬實(shí)際子模塊的功能,這樣樁模塊的建立就并不是一件很輕松的事情了。
單元測(cè)試的測(cè)試環(huán)境
有時(shí)編寫(xiě)樁模塊是非常困難和費(fèi)時(shí)的,但也可以采取一定的策略,來(lái)避免編寫(xiě)樁模塊,只需在項(xiàng)目進(jìn)度管理時(shí)將實(shí)際樁模塊的代碼編寫(xiě)工作安排在被測(cè)模塊前編寫(xiě)即可。而且這樣可以提高測(cè)試工作的效果,因?yàn)椴粩嗾{(diào)用實(shí)際的樁模塊可以更好的對(duì)其進(jìn)行測(cè)試,保證產(chǎn)品的質(zhì)量。
單元測(cè)試的測(cè)試環(huán)境
對(duì)于每一個(gè)包或子系統(tǒng)我們可以根據(jù)所編寫(xiě)的測(cè)試用例來(lái)編寫(xiě)一個(gè)測(cè)試模塊類(lèi)來(lái)做驅(qū)動(dòng)模塊,用于測(cè)試包中所有的待測(cè)試模塊。而最好不要在每個(gè)類(lèi)中用一個(gè)測(cè)試函數(shù)的方法,來(lái)測(cè)試類(lèi)中所有的方法。下面給出一個(gè)源代碼和測(cè)試代碼的結(jié)構(gòu)示例。importjava.util.Comparator;importjava.util.Random;publicfinalclassSorting{publicvoidinsertionSort(int[]a){
...... }publicbooleanisSorted(int[]a){
...... }
......
}程
序
源
代
碼importstaticorg.junit.Assert.*;importorg.junit.Test;publicclassTestSorting{ @Test publicvoidtestInsertionSort(){
...... } @Test publicvoidtestIsSorted(){
...... }......
}一個(gè)測(cè)試類(lèi)和多個(gè)測(cè)試函數(shù)單元測(cè)試的測(cè)試環(huán)境這樣的好處在于:
能夠同時(shí)測(cè)試包中所有的方法或模塊,也可以方便的測(cè)試指定的模塊或方法。
能夠聯(lián)合使用所有測(cè)試用例對(duì)同一段代碼執(zhí)行測(cè)試,發(fā)現(xiàn)問(wèn)題。便于回歸測(cè)試,當(dāng)某個(gè)模塊作了修改之后,只要執(zhí)行測(cè)試類(lèi)就可以執(zhí)行所有被測(cè)的模塊或方法。單元測(cè)試的測(cè)試環(huán)境
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026湖北省定向西南政法大學(xué)選調(diào)生招錄參考題庫(kù)附答案
- 2026湖南邵陽(yáng)邵東市市直事業(yè)單位人才引進(jìn)62人參考題庫(kù)附答案
- 2026福建兆佳貿(mào)易有限公司招聘9人考試備考題庫(kù)附答案
- 2026福建泉州市面向北京航空航天大學(xué)選優(yōu)生選拔引進(jìn)參考題庫(kù)附答案
- 2026福建省面向南京航空航天大學(xué)選調(diào)生選拔工作備考題庫(kù)附答案
- 2026福建莆田市城廂區(qū)國(guó)信產(chǎn)業(yè)投資有限公司招聘5人備考題庫(kù)附答案
- 2026西藏林芝市察隅縣招聘第二批社區(qū)工作者4人參考題庫(kù)附答案
- 2026遼寧省中國(guó)醫(yī)科大學(xué)及附屬第一醫(yī)院招聘高層次和急需緊缺人才2人(第二批)參考題庫(kù)附答案
- 產(chǎn)品研發(fā)與創(chuàng)新管理制度
- 2026陜西省面向中山大學(xué)招錄選調(diào)生考試備考題庫(kù)附答案
- 培養(yǎng)小學(xué)生的實(shí)驗(yàn)操作能力
- 河南省洛陽(yáng)市2023-2024學(xué)年九年級(jí)第一學(xué)期期末質(zhì)量檢測(cè)數(shù)學(xué)試卷(人教版 含答案)
- Unit-3-Reading-and-thinking課文詳解課件-高中英語(yǔ)人教版必修第二冊(cè)
- 氣動(dòng)回路圖與氣動(dòng)元件課件
- 《念奴嬌 赤壁懷古》《永遇樂(lè) 京口北固亭懷古》《聲聲慢》默寫(xiě)練習(xí) 統(tǒng)編版高中語(yǔ)文必修上冊(cè)
- 婦產(chǎn)科病史采集臨床思維
- 眾辰變頻器z2400t-15gy-1說(shuō)明書(shū)
- DB63T 393-2002草地鼠蟲(chóng)害、毒草調(diào)查技術(shù)規(guī)程
- 船體振動(dòng)的衡準(zhǔn)及減振方法
- 復(fù)議訴訟證據(jù)清單通用版
- 水泥混凝土路面滑模攤鋪機(jī)施工工法
評(píng)論
0/150
提交評(píng)論