CppUnit實(shí)踐市公開課一等獎(jiǎng)省賽課微課金獎(jiǎng)?wù)n件_第1頁
CppUnit實(shí)踐市公開課一等獎(jiǎng)省賽課微課金獎(jiǎng)?wù)n件_第2頁
CppUnit實(shí)踐市公開課一等獎(jiǎng)省賽課微課金獎(jiǎng)?wù)n件_第3頁
CppUnit實(shí)踐市公開課一等獎(jiǎng)省賽課微課金獎(jiǎng)?wù)n件_第4頁
CppUnit實(shí)踐市公開課一等獎(jiǎng)省賽課微課金獎(jiǎng)?wù)n件_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

CPPUnit實(shí)踐邱永慶-5-28中興通訊-ZTE11/27單元測試在程序設(shè)計(jì)過程中會(huì)有許各種測試,單元只是其中一個(gè),單元測試并不能確保程序是完美無缺,不過在全部測試中,單元測試是第一個(gè)步驟,也是最主要一個(gè)步驟。1按照極限編程(XP)理論,寫測試就是對(duì)軟件進(jìn)行設(shè)計(jì)過程,它主要性甚至超出了實(shí)際完成功效代碼。先將測試寫完,然后再完成代碼,這么,全部測試經(jīng)過之日也就是程序完成之時(shí)2單元測試技術(shù)從整體上分為白盒測試與黑盒測試,其中前者使用程序設(shè)計(jì)控制結(jié)構(gòu)導(dǎo)出測試用例,針對(duì)程序內(nèi)在結(jié)構(gòu)(邏輯、數(shù)據(jù)流),后者目標(biāo)是驗(yàn)證單元實(shí)現(xiàn)功效,而不需要知道程序是怎樣實(shí)現(xiàn)它們。黑盒測試關(guān)注是單元輸入與輸出,不是白盒測試替換品,而是輔助白盒測試發(fā)覺其它類型錯(cuò)誤。3語句覆蓋是一個(gè)最弱覆蓋測試,但卻是一個(gè)必須做最低程度白盒測試。獨(dú)立路徑測試能夠確保全部語句被執(zhí)行最少一次422/27單元測試——要求功效測試1主要執(zhí)行路徑測試2局部數(shù)據(jù)結(jié)構(gòu)3錯(cuò)誤處理測試4影響上述各條邊界條件5語句覆蓋測試,分支覆蓋測試633/27單元測試過程(術(shù)語域測試(Fieldtest)意思是在軟件投入使用以后,針對(duì)某個(gè)領(lǐng)域所作全部測試活普通認(rèn)為單元測試應(yīng)緊接在編碼之后,當(dāng)源程序編制完成并經(jīng)過復(fù)審和編譯檢驗(yàn),便可開始單元測試。測試用例設(shè)計(jì)應(yīng)與復(fù)審工作相結(jié)合,依據(jù)設(shè)計(jì)信息選取測試數(shù)據(jù),將增大發(fā)覺上述各類錯(cuò)誤可能性。在確定測試用例同時(shí),應(yīng)給出期望結(jié)果。1應(yīng)為測試模塊開發(fā)一個(gè)驅(qū)動(dòng)模塊(driver)和(或)若干個(gè)樁模塊(stub)2驅(qū)動(dòng)模塊在大多數(shù)場所稱為“主程序”,它接收測試數(shù)據(jù)并將這些數(shù)據(jù)傳遞到被測試模塊,被測試模塊被調(diào)用后,“主程序”打印“進(jìn)入-退出”消息。單元測試驅(qū)動(dòng)程序被測模塊測試用例Stub1Stub2Stub3測試結(jié)果44/27單元測試——黑盒測試黑盒測試重視于測試軟件功效性需求,通常黑盒測試試圖發(fā)覺以下類型錯(cuò)誤:功效不正確或遺漏,接口錯(cuò)誤,性能錯(cuò)誤等等黑盒測試技術(shù)通常分為等價(jià)劃分、邊界值分析、因果圖等1等價(jià)類劃分指一套被選擇值,這些值分別代表了許多眾多可能輸入值,程序?qū)ζ涮幚矸绞蕉际且粯印5葍r(jià)類劃分基于功效項(xiàng)輸入和輸出,將其劃分成等價(jià)類,通常包含以下幾個(gè)組合2邊界值分析是等價(jià)劃分?jǐn)U展,包含等價(jià)類+劃分邊界值,邊界值通常是等價(jià)類界限,以恰好小于、等于和大于界限指作為邊界值。3正當(dāng)/非法輸入和輸出、對(duì)數(shù)值型值分為正數(shù)、負(fù)數(shù)和0、對(duì)于字符串型分為空串和非空串對(duì)16-bit整數(shù)而言32767和-32768是邊界、

表第一和最終一行、

數(shù)組元素第一個(gè)和最終一個(gè)、

循環(huán)第0次、第1次和倒數(shù)第2次、最終一次55/27單元測試——黑盒測試考慮輸入條件之間聯(lián)絡(luò)。假如在測試時(shí)必須考慮輸入條件各種組合,可能又會(huì)產(chǎn)生一些新情況,此時(shí)我們能夠經(jīng)過因果圖來描述條件之間組合情況,從而推導(dǎo)出測試用例設(shè)計(jì)。1因果圖方法最終生成就是判定表。它適合于檢驗(yàn)程序輸入條件各種組合情況。在任何情況下都必須使用邊界值分析方法。經(jīng)驗(yàn)表明用這種方法設(shè)計(jì)出測試用例發(fā)覺程序錯(cuò)誤能力最強(qiáng)。必要時(shí)用等價(jià)類劃分方法補(bǔ)充一些測試用例。用錯(cuò)誤推測法再追加一些測試用例。對(duì)照程序邏輯,檢驗(yàn)已設(shè)計(jì)出測試用例邏輯覆蓋程度。假如沒有到達(dá)要求覆蓋標(biāo)準(zhǔn),應(yīng)該再補(bǔ)充分夠測試用例。假如程序功效說明中含有輸入條件組合情況,則一開始就可選取因果圖法。266/27單元測試——黑盒測試技術(shù)總結(jié)邊界值測試1特殊值測試2隨機(jī)測試3正面和負(fù)面測試4域測試5等價(jià)類測試6基于判定(決議)表測試777/27單元測試——黑盒測試(例1字符串)voidupperString(string&aline)//將全部小寫字母轉(zhuǎn)換為大寫字母{stringcaps("abcdefghijklmnopqrstuvwxyz");string::size_typepos=0;while((pos=aline.find_first_of(caps,pos))!=string::npos){aline[pos]=toupper(aline[pos]);}};邊界值:空串a(chǎn)line=“”,一個(gè)字符aline=“1”,大字符串等價(jià)類:空串a(chǎn)line=“”,數(shù)字,字母,特殊字符錯(cuò)誤推測法:異國字母,雙字節(jié)符號(hào)88/27單元測試——黑盒測試(例2數(shù)字)學(xué)生成績(A—D):[85,100](A);[70,85)(B);[60,70)(C);[0,60)(D)邊界值:-1,0,1;59,60,61;69,70,71;……;99,100,101等價(jià)類:劃分每個(gè)區(qū)間內(nèi)值錯(cuò)誤推測法:99/27單元測試——黑盒測試(例3因果圖)1010/27單元測試——黑盒測試(例3因果圖)1.年薪制員工:嚴(yán)重過失,扣年底風(fēng)險(xiǎn)金4%;過失,扣年底風(fēng)險(xiǎn)金2%2.非年薪制員工:嚴(yán)重過失,扣當(dāng)月薪資8%;過失,扣當(dāng)月薪資4%1111/27單元測試——黑盒測試(例3因果圖)1212/27單元測試——黑盒測試(例3因果圖)1313/27單元測試——白盒測試經(jīng)過在不一樣點(diǎn)檢驗(yàn)程序狀態(tài),確定實(shí)際狀態(tài)是否與預(yù)期狀態(tài)一致。所以白盒測試又稱為結(jié)構(gòu)測試或邏輯驅(qū)動(dòng)測試1全部獨(dú)立路徑最少執(zhí)行一次全部邏輯判定取“真”和取“假”兩種情況最少執(zhí)行一次在循環(huán)邊界和邊界內(nèi)執(zhí)行循環(huán)體全部內(nèi)部數(shù)據(jù)結(jié)構(gòu)被測試以確保其有效性2語句覆蓋:程序中每一可執(zhí)行語句最少執(zhí)行一次分支覆蓋:程序中每個(gè)判斷取真分支和取假分支最少經(jīng)歷一次。

條件覆蓋:程序中每個(gè)判斷每個(gè)條件可能取值最少執(zhí)行一次

條件組合覆蓋:每個(gè)判斷全部可能條件取值組合最少執(zhí)行一次。

1414/27單元測試——白盒測試

次序if語句while語句until語句case語句(箭頭)稱為“邊”(edge),代表控制流;(圓圈)稱為“節(jié)點(diǎn)”(node),代表一個(gè)或多個(gè)語句動(dòng)作。

由節(jié)點(diǎn)和邊圍成范圍稱為“域”(region)。在計(jì)算域時(shí),圖形外區(qū)域也應(yīng)算做一個(gè)“域”判定節(jié)點(diǎn),指包含條件節(jié)點(diǎn)

1515/27單元測試——白盒測試1616/27單元測試——白盒測試獨(dú)立路徑是指程序中最少引進(jìn)一個(gè)新處理語句集合,采取流圖術(shù)語,即獨(dú)立路徑必須最少包含一條在定義路徑之前不曾用到邊。比如圖(b)中所表示流圖一個(gè)獨(dú)立路徑集合為:路徑1:1-11路徑2:1-2-3-4-5-10-1-11路徑3:1-2-3-6-8-9-10-1-11路徑4:1-2-3-6-7-9-10-1-11假如能將測試設(shè)計(jì)為強(qiáng)迫運(yùn)行這些路徑,那么程序中每一條語句將最少被執(zhí)行一次,每一個(gè)條件執(zhí)行時(shí)都將分別取true和false(分支覆蓋)。應(yīng)該注意到基本集并不唯一1717/27單元測試——白盒測試怎樣才能知道需要尋找多少條路徑呢?能夠經(jīng)過以下三種方法之一來計(jì)算獨(dú)立路徑上界:1.V=E-N+2,E是流圖中邊數(shù)量,N是流圖節(jié)點(diǎn)數(shù)量。2.V=P+1,P是流圖G中判定節(jié)點(diǎn)數(shù)量3.V=R,R是流圖中區(qū)域數(shù)量比如,(b)流圖能夠采取上述任意一個(gè)算法來計(jì)算獨(dú)立路徑數(shù)量1.流圖有4個(gè)區(qū)域,所以V=42.V=11條邊-9個(gè)節(jié)點(diǎn)+2=43.V=3個(gè)判定節(jié)點(diǎn)+1=4由此為了覆蓋全部程序語句,必須設(shè)計(jì)最少4個(gè)測試用例使程序運(yùn)行于這4條路徑1818/27單元測試——白盒測試(例1)If(a||b){X…}else{Y…}Z...aXYbNYYNZ多少個(gè)用例?路徑1:a-b-Y-Z路徑2:a-X-Z路徑3:a-b-X-Z1919/27單元測試——白盒測試(覆蓋率測試設(shè)計(jì))普通要求語句覆蓋率和判斷覆蓋率1一些主要執(zhí)行路徑?jīng)]有被覆蓋可能原因有2普通技術(shù):分支測試、條件測試、數(shù)據(jù)定義-使用測試、狀態(tài)轉(zhuǎn)換測試不可行路徑或條件――應(yīng)該標(biāo)注測試說明證實(shí)該路徑或條件沒有測試原因。不可抵達(dá)或冗余代碼――正確處理方法是刪除這種代碼。這種分析輕易犯錯(cuò),尤其是使用防衛(wèi)式程序設(shè)計(jì)技術(shù)(DefensiveProgrammingTechniques)時(shí),如有疑義,這些防衛(wèi)性程序代碼就不要?jiǎng)h除。測試用例不足――應(yīng)該重新提煉測試用例,設(shè)計(jì)更多測試用例添加到測試說明中以覆蓋沒有執(zhí)行過路徑2020/27單元測試——CPPUnit手工編寫,自動(dòng)執(zhí)行并匯報(bào),變更影響檢測,促進(jìn)重構(gòu)以改進(jìn)設(shè)計(jì),測試用例需要編寫,工作量大,能夠和coverage、purify等工具集合使用2121/27單元測試——CppUnit總體組成

core:CppUnit關(guān)鍵部分output:掌管結(jié)果輸出helper:一些輔助類extension:作為單元測試延伸,對(duì)CppUnitcore部分?jǐn)U展(比如:常規(guī)測試,重復(fù)測試)listener:監(jiān)視測試進(jìn)程和測試結(jié)果textui:一個(gè)運(yùn)行單元測試文本環(huán)境portability:提供針對(duì)不一樣平臺(tái)移植設(shè)置

2222/27單元測試——CppUnit總體組成

把同時(shí)運(yùn)行測試案例集合稱為TestSuiteTestRunner則運(yùn)行測試用例或者運(yùn)行TestSuite當(dāng)前提供3類TestRunner:

CppUnit::TextUi::TestRunner文本方式TestRunnerCppUnit::QtUi::TestRunnerQT方式TestRunnerCppUnit::MfcUi::TestRunnerMFC方式TestRunner2323/27單元測試——CppUnit總體組成

std::ofstreamout("xUnit.txt");CppUnit::TextUi::TestRunnerrunner;CppUnit::TextOutputter*MyOutputter=newCppUnit::TextOutputter(&runner.result(),out);runner.setOutputter(MyOutputter);輸出能夠進(jìn)行重定向2424/27DB單元測試實(shí)踐_測試模式

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論