版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、北京郵電大學(xué)軟件學(xué)院本章內(nèi)容1.單元測試定義2.單元測試的目標(biāo)和任務(wù)3.單元測試方法靜態(tài)測試動態(tài)測試4.單元測試的管理5.單元測試工具1.單元測試定義軟件系統(tǒng)是由許多單元構(gòu)成,這些單元可能是一個對象、一個類、一個函數(shù)或者是組件或模塊。單元往往具有特定的功能,并與其他單元有明確的接口。組成軟件系統(tǒng)的單元的質(zhì)量會對系統(tǒng)的質(zhì)量產(chǎn)生直接的影響。單元測試是對軟件基本組成單元進(jìn)行的測試。為避免其他單元對該單元的影響,單元測試往往將被測單元與其他單元隔離開,進(jìn)行獨(dú)立的單元測試。1.單元測試定義單元測試關(guān)注內(nèi)容:目標(biāo):單元被正確的編碼;依據(jù):詳細(xì)設(shè)計描述;過程:測試用例設(shè)計、腳本開發(fā)、執(zhí)行測試、調(diào)試、結(jié)果分析
2、;執(zhí)行者:程序開發(fā)人員和測試人員共同完成;測試方法:白盒測試為主,黑盒測試為輔;評估方法:通過所有單元測試用例,代碼沒有嚴(yán)重缺陷;1.單元測試定義單元測試基本步驟:1、在詳細(xì)設(shè)計階段完成單元測試計劃;2、建立單元測試環(huán)境,完成測試設(shè)計和開發(fā);3、執(zhí)行單元測試用例,詳細(xì)記錄測試結(jié)果;4、判定測試用例是否通過;5、提交單元測試報告。1.單元測試定義單元測試內(nèi)容:在進(jìn)行單元測試時,要對五方面進(jìn)行測試:模塊接口測試出錯處理測試獨(dú)立路徑測試邊界條件測試局部數(shù)據(jù)測試6模塊模塊接口局部數(shù)據(jù)出錯處理邊界條件獨(dú)立路徑2.單元測試的目標(biāo)和任務(wù)目標(biāo):確保單元代碼的規(guī)范性、正確性、安全性和代碼性能;具體內(nèi)容包括:代碼
3、是否嚴(yán)格遵循編碼規(guī)范;數(shù)據(jù)和信息能否正確的流入和流出單元;在數(shù)據(jù)處理的邊界能否正確工作;單元運(yùn)行能否滿足特定的邏輯覆蓋;單元中是否進(jìn)行了有效的出錯處理;是否存在安全隱患。2.單元測試的目標(biāo)和任務(wù)任務(wù):包括對單元邏輯、功能、數(shù)據(jù)和安全性等方面的測試,具體包括:單元中所有獨(dú)立執(zhí)行路徑必須得到測試;單元局部的數(shù)據(jù)結(jié)構(gòu)必須得到測試;單元接口必須得到測試;單元的邊界條件測試;單元出錯處理通路測試;內(nèi)存分析;3.單元測試方法3.1靜態(tài)測試3.2動態(tài)測試3.1靜態(tài)測試靜態(tài)測試不執(zhí)行程序代碼而尋找程序代碼中可能存在的錯誤或評估程序代碼的過程??梢杂扇斯みM(jìn)行,充分發(fā)揮人的邏輯思維優(yōu)勢??梢越柚浖ぞ咦詣舆M(jìn)行,
4、降低勞動強(qiáng)度,提高測試效率??梢耘啃园l(fā)現(xiàn)問題,在發(fā)現(xiàn)問題的同時也定位了問題。3.1靜態(tài)測試編碼的標(biāo)準(zhǔn)和規(guī)范代碼評審代碼缺陷檢查表編碼的標(biāo)準(zhǔn)和規(guī)范當(dāng)某個單元的功能和接口設(shè)計好之后,就需要采用某種程序設(shè)計語言將其編程實(shí)現(xiàn)。在編寫程序的時候,必須遵循相應(yīng)的標(biāo)準(zhǔn)和規(guī)范。標(biāo)準(zhǔn)是建立起來必須遵守的規(guī)則;包括國際標(biāo)準(zhǔn)、國家標(biāo)準(zhǔn)、行業(yè)標(biāo)準(zhǔn)等。規(guī)范是指符合標(biāo)準(zhǔn)的某種推薦的做法,例如企業(yè)可以根據(jù)相關(guān)國家和行業(yè)標(biāo)準(zhǔn),制定企業(yè)規(guī)范;標(biāo)準(zhǔn)是嚴(yán)謹(jǐn)?shù)?、必須遵守的;?guī)范是相對寬松的、建議遵守的;編碼的標(biāo)準(zhǔn)和規(guī)范源程序文檔化是軟件工程對程序編寫環(huán)節(jié)提出的明確要求,在編寫代碼的時候遵循相應(yīng)的標(biāo)準(zhǔn)和規(guī)范有以下好處:提高代碼的可靠
5、性;提高代碼的可讀性;提高代碼的可維護(hù)性;提高代碼的可移植性;單元測試一項重要的工作就是檢查程序代碼是否按要標(biāo)準(zhǔn)和規(guī)范撰寫。C+編程規(guī)范舉例變量命名規(guī)則:變量由一個或多個單詞組成,構(gòu)成“主謂”、“動賓”等形式,單詞的第一個字母大寫,其他字母小寫,如Count、RatedCharge。函數(shù)命名規(guī)則:函數(shù)名稱由動詞小寫后加“_”分隔符,“_”后所跟的第一個詞小寫其他字頭大寫,只允許一個分隔符,如:get_inputString()。常數(shù)命名規(guī)則:全部大寫,詞與詞之間以“_”為分隔符,如:MAX_DAY_COUNT。C+編程規(guī)范舉例文件注釋規(guī)則:每個源代碼文件(包括.c, .cpp, .h, .hp
6、p, .x, .xpp)必須在文件的頭部描述文件名、內(nèi)容、修改記錄。修改記錄包括日期(YYYY/MM/DD)、創(chuàng)建者/修改者、修改內(nèi)容,新增的修改記錄排在最前。代碼評審目的:排除違背程序編寫標(biāo)準(zhǔn)的問題排除違背程序編程風(fēng)格的問題找出程序中不可移植部分發(fā)現(xiàn)程序中不安全、不明確和模糊的部分確保代碼和設(shè)計的一致性確保代碼的邏輯表達(dá)的正確性確保代碼結(jié)構(gòu)的合理性16代碼評審作用確保代碼編程標(biāo)準(zhǔn)有效的被執(zhí)行提高代碼質(zhì)量,減輕動態(tài)測試負(fù)擔(dān)代碼可重復(fù)使用,降低項目風(fēng)險與經(jīng)費(fèi)增加程序的可理解性,降低維護(hù)成本測試效率高:實(shí)踐表明,人工走查平均能查出被測程序的30%70 %的邏輯設(shè)計和編碼缺陷,IBM代碼審查會的查錯
7、效率高達(dá)80%17代碼評審方式桌面檢查由程序員檢查自己編寫的程序人工走查用人模擬計算機(jī),讓測試用例沿程序的邏輯運(yùn)行,隨時記錄程序的執(zhí)行結(jié)果,以發(fā)現(xiàn)程序的問題代碼審查由程序員和測試人員組成審查小組,通過閱讀、討論和爭議,對程序進(jìn)行靜態(tài)分析的過程18代碼評審重點(diǎn)變量命名和類型審查變量初始值檢查變量作用范圍檢查程序邏輯審查程序語法檢查程序結(jié)構(gòu)檢查19代碼評審前提需求描述文檔程序設(shè)計文檔程序的源代碼清單代碼編碼標(biāo)準(zhǔn)和規(guī)范代碼缺陷檢查表20代碼評審項目編程風(fēng)格檢查函數(shù)接口檢查程序語言檢查類檢查內(nèi)存檢查測試和轉(zhuǎn)移檢查性能檢查可維護(hù)性檢查邏輯檢查軟件多余物檢查21代碼缺陷檢查表文件結(jié)構(gòu)程序的版式命名規(guī)則表達(dá)
8、式與基本語句常量函數(shù)設(shè)計內(nèi)存管理其它常見問題22文件結(jié)構(gòu)頭文件和定義文件的名稱是否合理?頭文件和定義文件的目錄結(jié)構(gòu)是否合理?版權(quán)和版本聲明是否完整?頭文件是否使用了 ifndef/define/endif 預(yù)處理塊?頭文件中是否只存放“聲明”而不存放“定義”?23程序的版式空行是否得體?代碼行內(nèi)的空格是否得體?長行拆分是否得體?“” 和 “” 是否各占一行并且對齊于同一列?一行代碼是否只做一件事?if、for、while、do等語句自占一行,不論執(zhí)行語句多少都要加“”。在定義變量(或參數(shù))時,是否將修飾符 *和 緊靠變量名?注釋是否清晰并且必要?注釋是否有錯誤或者可能導(dǎo)致誤解?類結(jié)構(gòu)的publ
9、ic, protected, private順序是否在所有的程序中保持一致?24命名規(guī)則命名規(guī)則是否與所采用的操作系統(tǒng)或開發(fā)工具的風(fēng)格保持一致?標(biāo)識符是否直觀且可以拼讀?標(biāo)識符的長度應(yīng)當(dāng)符合“min-length & max-information”原則?程序中是否出現(xiàn)相同的局部變量和全局變量?類名、函數(shù)名、變量和參數(shù)、常量的書寫格式是否遵循一定的規(guī)則?靜態(tài)變量、全局變量、類的成員變量是否加前綴?25表達(dá)式與基本語句如果代碼行中的運(yùn)算符比較多,是否已經(jīng)用括號清楚地確定表達(dá)式的操作順序?是否編寫太復(fù)雜或者多用途的復(fù)合表達(dá)式?是否將復(fù)合表達(dá)式與“真正的數(shù)學(xué)表達(dá)式”混淆?是否用隱含錯誤的方式
10、寫if語句?循環(huán)語句的效率如何?Case語句的結(jié)尾是否忘了加break?是否忘記寫switch的default分支?使用goto 語句時是否留下隱患? 例如跳過了某些對象的構(gòu)造、變量的初始化、重要的計算等。26常量是否使用含義直觀的常量來表示那些將在程序中多次出現(xiàn)的數(shù)字或字符串?在C+ 程序中,是否用const常量取代宏常量?如果某一常量與其它常量密切相關(guān),是否在定義中包含了這種關(guān)系?是否誤解了類中的const數(shù)據(jù)成員?27函數(shù)設(shè)計參數(shù)的書寫是否完整?參數(shù)命名、順序是否合理?參數(shù)的個數(shù)是否太多?是否使用類型和數(shù)目不確定的參數(shù)?是否省略了函數(shù)返回值的類型?函數(shù)名字與返回值類型在語義上是否沖突?是
11、否將正常值和錯誤標(biāo)志混在一起返回?在函數(shù)體的“入口處”,是否用assert對參數(shù)的有效性進(jìn)行檢查?使用濫用了assert?return語句是否返回指向“棧內(nèi)存”的“指針”或者“引用”?是否使用const提高函數(shù)的健壯性?const可以強(qiáng)制保護(hù)函數(shù)的參數(shù)、返回值,甚至函數(shù)的定義體。28內(nèi)存管理用malloc或new申請內(nèi)存之后,是否立即檢查指針值是否為NULL?是否忘記為數(shù)組和動態(tài)內(nèi)存賦初值?數(shù)組或指針的下標(biāo)是否越界?動態(tài)內(nèi)存的申請與釋放是否配對?處理“內(nèi)存耗盡”問題是否出現(xiàn)野指針是否將malloc/free 和 new/delete 混淆使用?malloc語句是否正確無誤?在創(chuàng)建與釋放動態(tài)對象
12、數(shù)組時,new/delete的語句是否正確無誤?29其他常見問題數(shù)據(jù)類型問題:(1)變量的數(shù)據(jù)類型有錯誤嗎?(2)存在不同數(shù)據(jù)類型的賦值嗎?(3)存在不同數(shù)據(jù)類型的比較嗎?變量值問題:(1)變量的初始化或缺省值有錯誤嗎?(2)變量發(fā)生上溢或下溢嗎?(3)變量的精度夠嗎?30其他常見問題邏輯判斷問題:(1)由于精度原因?qū)е卤容^無效嗎?(2)表達(dá)式中的優(yōu)先級有誤嗎?(3)邏輯判斷結(jié)果顛倒嗎?循環(huán)問題:(1)循環(huán)終止條件不正確嗎?(2)無法正常終止(死循環(huán))嗎?(3)錯誤地修改循環(huán)變量嗎?(4)存在誤差累積嗎?31其他常見問題錯誤處理問題:(1)忘記進(jìn)行錯誤處理嗎?(2)錯誤處理程序塊一直沒有機(jī)會被
13、運(yùn)行?(3)錯誤處理程序塊本身就有毛病嗎?如報告的錯誤與實(shí)際錯誤不一致,處理方式不正確等等。(4)錯誤處理程序塊是“馬后炮”嗎?如在它被調(diào)用之前軟件已經(jīng)出錯。32其他常見問題文件I/O問題:(1)對不存在的或者錯誤的文件進(jìn)行操作嗎?(2)文件以不正確的方式打開嗎?(3)文件結(jié)束判斷不正確嗎?(4)沒有正確地關(guān)閉文件嗎?333.2動態(tài)測試動態(tài)測試必須生成測試數(shù)據(jù)來運(yùn)行被測試程序,取得程序運(yùn)行的真實(shí)情況、動態(tài)情況,進(jìn)而進(jìn)行分析測試質(zhì)量依賴于測試數(shù)據(jù)生成測試數(shù)據(jù)、分析測試結(jié)果的工作量大,使開展測試工作費(fèi)時、費(fèi)力、費(fèi)人動態(tài)測試中涉及多方面工作,人員多、設(shè)備多、數(shù)據(jù)多,要求有較好的管理和工作規(guī)程3.2動
14、態(tài)測試被測的單元模塊往往不是一個能夠獨(dú)立運(yùn)行的程序,所以在進(jìn)行單元測試時,需要編寫一些輔助測試的功能模塊,分為兩種:樁模塊:用以代替測試模塊所調(diào)用的子模塊,也叫做存樁模塊:用以代替測試模塊所調(diào)用的子模塊,也叫做存根模塊。根模塊。驅(qū)動模塊:代替被測模塊的主程序,接收測試數(shù)據(jù),把驅(qū)動模塊:代替被測模塊的主程序,接收測試數(shù)據(jù),把數(shù)據(jù)傳遞給所測模塊,再輸出測試結(jié)果。數(shù)據(jù)傳遞給所測模塊,再輸出測試結(jié)果。驅(qū)動模塊與樁模塊36被測模塊驅(qū)動模塊測試結(jié)果測試用例樁模塊1樁模塊2樁模塊34.單元測試的管理在進(jìn)行單元測試時,必須按照測試的要求對測試進(jìn)行正規(guī)的管理,具體包括:測試計劃測試用例設(shè)計測試執(zhí)行結(jié)果評估測試總
15、結(jié)單元測試計劃單元測試計劃應(yīng)該在進(jìn)行軟件詳細(xì)設(shè)計階段完成需要參考軟件需求規(guī)格說明書、軟件詳細(xì)設(shè)計說明書、整體測試計劃和集成方案輸出單元測試計劃,包括:測試時間表、資源分配表、測試基本策略和方法,包括是否需要靜態(tài)測試、是否需要測試工具、是否需要編制驅(qū)動模塊和樁模塊等。單元測試設(shè)計主要完成單元測試用例的設(shè)計和編寫、驅(qū)動程序和樁程序的設(shè)計和代碼編寫;設(shè)計單元測試用例的依據(jù)是單元測試計劃和軟件詳細(xì)設(shè)計說明書輸出單元測試用例文檔單元測試的執(zhí)行對于靜態(tài)測試,按照代碼審查檢查表進(jìn)行代碼審查,并記錄審查結(jié)果對于動態(tài)測試,根據(jù)單元測試用例進(jìn)行單元測試對測試的結(jié)果進(jìn)行記錄,對于錯誤或缺陷,反饋給開發(fā)人員,及時進(jìn)行
16、修改輸出缺陷跟蹤報告文檔單元測試結(jié)果評估根據(jù)代碼審查檢查表和缺陷跟蹤報告對單元測試的結(jié)果進(jìn)行評估目的是幫助判定單元測試是否足夠,對該單元的質(zhì)量給予評價單元測試評估包括完備性評估和代碼單元測試覆蓋率評估單元測試總結(jié)對單元測試的全過程進(jìn)行總結(jié)生成單元測試報告5.單元測試工具xUnit工具家族:Junit:針對Java的單元測試工具CppUnit:C+單元測試工具Nunit:C#單元測試工具HtmlUnit:HTML單元測試工具JsUnit:JavaScript單元測試工具PhpUnit:PHP單元測試工具PerlUnit:Perl單元測試工具5.單元測試工具C/C+單元測試工具:C Unit TestCppTestSplintCuteeGunitUnit Test +5.單元測試工具Java語言單元測試工具JUnitTestNGPMD:java代碼檢查工具
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 5《七律 長征》 說課稿-2024-2025學(xué)年語文六年級上冊統(tǒng)編版001
- 2024年四年級英語下冊 Unit 7 What's the matter第4課時說課稿 譯林牛津版001
- 18《慈母情深》說課稿-2024-2025學(xué)年統(tǒng)編版語文五年級上冊001
- 2025門窗工程承包合同
- 2025市場咨詢服務(wù)合同范本
- 2025嫁接種苗技術(shù)服務(wù)合同書
- 2024-2025學(xué)年高中歷史 第2單元 西方人文精神的起源及其發(fā)展 第7課 啟蒙運(yùn)動說課稿 新人教版必修3
- 信息平臺建設(shè)合同范本
- 7 《我在這里長大》第一課時(說課稿)2023-2024學(xué)年統(tǒng)編版道德與法治三年級下冊
- 書推廣合同范例
- 超聲科醫(yī)德醫(yī)風(fēng)制度內(nèi)容
- QC成果清水混凝土樓梯卡槽式木模板體系創(chuàng)新
- 高三開學(xué)收心班會課件
- 蒸汽換算計算表
- 四年級計算題大全(列豎式計算,可打印)
- 科技計劃項目申報培訓(xùn)
- 591食堂不合格食品處置制度
- 國際金融課件(完整版)
- 導(dǎo)向標(biāo)識系統(tǒng)設(shè)計(一)課件
- 220t鍋爐課程設(shè)計 李學(xué)玉
- 全英文劇本 《劇院魅影》
評論
0/150
提交評論