《軟件工程基礎(chǔ)》全套PPT課件
《軟件工程基礎(chǔ)》全套PPT課件,軟件工程基礎(chǔ),軟件工程,基礎(chǔ),全套,PPT,課件
6.1 軟件測(cè)試的基本概念什么是軟件測(cè)試什么是軟件測(cè)試軟件測(cè)試是在軟件投入生產(chǎn)性運(yùn)行之前,對(duì)軟件軟件測(cè)試是在軟件投入生產(chǎn)性運(yùn)行之前,對(duì)軟件需求分析、設(shè)計(jì)規(guī)格說(shuō)明和編碼的最終復(fù)審,是需求分析、設(shè)計(jì)規(guī)格說(shuō)明和編碼的最終復(fù)審,是軟件質(zhì)量控制的關(guān)鍵步驟。軟件質(zhì)量控制的關(guān)鍵步驟。如果給軟件測(cè)試下定義的話,可以這樣講:如果給軟件測(cè)試下定義的話,可以這樣講:軟件軟件測(cè)試測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過(guò)程?;蛘哒f(shuō),是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過(guò)程?;蛘哒f(shuō),軟件測(cè)試軟件測(cè)試是根據(jù)軟件開(kāi)發(fā)各階段的規(guī)格說(shuō)明和程是根據(jù)軟件開(kāi)發(fā)各階段的規(guī)格說(shuō)明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計(jì)一批測(cè)試用例(即輸入序的內(nèi)部結(jié)構(gòu)而精心設(shè)計(jì)一批測(cè)試用例(即輸入數(shù)據(jù)及其預(yù)期的輸出結(jié)果),并利用這些測(cè)試用數(shù)據(jù)及其預(yù)期的輸出結(jié)果),并利用這些測(cè)試用例去運(yùn)行程序,以發(fā)現(xiàn)程序錯(cuò)誤的過(guò)程。例去運(yùn)行程序,以發(fā)現(xiàn)程序錯(cuò)誤的過(guò)程。6.1 軟件測(cè)試的基本概念軟件測(cè)試的目的和原則軟件測(cè)試的目的和原則基于不同的立場(chǎng),存在著兩種完全不同的測(cè)試目基于不同的立場(chǎng),存在著兩種完全不同的測(cè)試目的。的。從用戶的角度出發(fā),普遍希望通過(guò)軟件測(cè)試檢驗(yàn)從用戶的角度出發(fā),普遍希望通過(guò)軟件測(cè)試檢驗(yàn)軟件中隱藏的錯(cuò)誤和缺陷,以考慮是否可以接受軟件中隱藏的錯(cuò)誤和缺陷,以考慮是否可以接受該產(chǎn)品。該產(chǎn)品。從軟件開(kāi)發(fā)者的角度出發(fā),則希望測(cè)試成為表明從軟件開(kāi)發(fā)者的角度出發(fā),則希望測(cè)試成為表明軟件產(chǎn)品中不存在錯(cuò)誤的過(guò)程,驗(yàn)證該軟件已正軟件產(chǎn)品中不存在錯(cuò)誤的過(guò)程,驗(yàn)證該軟件已正確地實(shí)現(xiàn)了用戶的要求,確立人們對(duì)軟件質(zhì)量的確地實(shí)現(xiàn)了用戶的要求,確立人們對(duì)軟件質(zhì)量的信心。信心。6.1 軟件測(cè)試的基本概念GrenfordJ.Myers就就軟件測(cè)試目的軟件測(cè)試目的提出了提出了以下觀點(diǎn)。以下觀點(diǎn)。測(cè)試是程序的執(zhí)行過(guò)程,目的在于發(fā)現(xiàn)錯(cuò)誤。測(cè)試是程序的執(zhí)行過(guò)程,目的在于發(fā)現(xiàn)錯(cuò)誤。測(cè)試是程序的執(zhí)行過(guò)程,目的在于發(fā)現(xiàn)錯(cuò)誤。測(cè)試是程序的執(zhí)行過(guò)程,目的在于發(fā)現(xiàn)錯(cuò)誤。一個(gè)好的測(cè)試用例在于能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯(cuò)誤。一個(gè)好的測(cè)試用例在于能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯(cuò)誤。一個(gè)好的測(cè)試用例在于能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯(cuò)誤。一個(gè)好的測(cè)試用例在于能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯(cuò)誤。一個(gè)成功的測(cè)試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。一個(gè)成功的測(cè)試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。一個(gè)成功的測(cè)試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。一個(gè)成功的測(cè)試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。6.1 軟件測(cè)試的基本概念根據(jù)以上測(cè)試目的,根據(jù)以上測(cè)試目的,軟件測(cè)試的原則軟件測(cè)試的原則如下:如下:(1 1)應(yīng)當(dāng)把)應(yīng)當(dāng)把“盡早地和不斷地進(jìn)行軟件測(cè)試盡早地和不斷地進(jìn)行軟件測(cè)試”作作 為軟件開(kāi)發(fā)者的座右銘。為軟件開(kāi)發(fā)者的座右銘。(2 2)測(cè)試用例應(yīng)由測(cè)試輸入數(shù)據(jù)和與之對(duì)應(yīng)的預(yù))測(cè)試用例應(yīng)由測(cè)試輸入數(shù)據(jù)和與之對(duì)應(yīng)的預(yù) 期輸出結(jié)果這兩部分組成。期輸出結(jié)果這兩部分組成。(3 3)程序員應(yīng)避免檢查自己的程序。)程序員應(yīng)避免檢查自己的程序。(4 4)在設(shè)計(jì)測(cè)試用例時(shí),應(yīng)當(dāng)包括合理的輸入條)在設(shè)計(jì)測(cè)試用例時(shí),應(yīng)當(dāng)包括合理的輸入條 件和不合理的輸入條件。件和不合理的輸入條件。(5 5)充分注意測(cè)試中的群集現(xiàn)象。)充分注意測(cè)試中的群集現(xiàn)象。(6 6)嚴(yán)格執(zhí)行測(cè)試計(jì)劃,排除測(cè)試的隨意性。)嚴(yán)格執(zhí)行測(cè)試計(jì)劃,排除測(cè)試的隨意性。(7 7)應(yīng)當(dāng)對(duì)每一個(gè)測(cè)試結(jié)果作全面檢查。)應(yīng)當(dāng)對(duì)每一個(gè)測(cè)試結(jié)果作全面檢查。(8 8)妥善保存測(cè)試計(jì)劃、測(cè)試用例、出錯(cuò)統(tǒng)計(jì)和)妥善保存測(cè)試計(jì)劃、測(cè)試用例、出錯(cuò)統(tǒng)計(jì)和 最終分析報(bào)告,為維護(hù)提供方便。最終分析報(bào)告,為維護(hù)提供方便。6.1 軟件測(cè)試的基本概念軟件測(cè)試的對(duì)象軟件測(cè)試的對(duì)象軟件測(cè)試應(yīng)貫穿于軟件定義與開(kāi)發(fā)的整個(gè)期間。軟件測(cè)試應(yīng)貫穿于軟件定義與開(kāi)發(fā)的整個(gè)期間。軟件測(cè)試應(yīng)貫穿于軟件定義與開(kāi)發(fā)的整個(gè)期間。軟件測(cè)試應(yīng)貫穿于軟件定義與開(kāi)發(fā)的整個(gè)期間。需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、程序編碼等各需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、程序編碼等各需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、程序編碼等各需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、程序編碼等各階段所得到的文檔資料,包括需求規(guī)格說(shuō)明、概階段所得到的文檔資料,包括需求規(guī)格說(shuō)明、概階段所得到的文檔資料,包括需求規(guī)格說(shuō)明、概階段所得到的文檔資料,包括需求規(guī)格說(shuō)明、概要設(shè)計(jì)規(guī)格說(shuō)明、詳細(xì)設(shè)計(jì)規(guī)格說(shuō)明以及源程序,要設(shè)計(jì)規(guī)格說(shuō)明、詳細(xì)設(shè)計(jì)規(guī)格說(shuō)明以及源程序,要設(shè)計(jì)規(guī)格說(shuō)明、詳細(xì)設(shè)計(jì)規(guī)格說(shuō)明以及源程序,要設(shè)計(jì)規(guī)格說(shuō)明、詳細(xì)設(shè)計(jì)規(guī)格說(shuō)明以及源程序,都應(yīng)成為都應(yīng)成為都應(yīng)成為都應(yīng)成為軟件測(cè)試的對(duì)象軟件測(cè)試的對(duì)象軟件測(cè)試的對(duì)象軟件測(cè)試的對(duì)象。到程序的測(cè)試為止,軟件開(kāi)發(fā)工作已經(jīng)經(jīng)歷了到程序的測(cè)試為止,軟件開(kāi)發(fā)工作已經(jīng)經(jīng)歷了許多環(huán)節(jié),每個(gè)環(huán)節(jié)都可能發(fā)生問(wèn)題。為了把握許多環(huán)節(jié),每個(gè)環(huán)節(jié)都可能發(fā)生問(wèn)題。為了把握各個(gè)環(huán)節(jié)的正確性,人們需要進(jìn)行各種確認(rèn)和驗(yàn)各個(gè)環(huán)節(jié)的正確性,人們需要進(jìn)行各種確認(rèn)和驗(yàn)證工作。證工作。6.1 軟件測(cè)試的基本概念 確認(rèn)確認(rèn)確認(rèn)確認(rèn)(validationvalidationvalidationvalidation),是一系列的活動(dòng)和過(guò)程,),是一系列的活動(dòng)和過(guò)程,),是一系列的活動(dòng)和過(guò)程,),是一系列的活動(dòng)和過(guò)程,其目的是想證實(shí)在一個(gè)給定的外部環(huán)境中軟件的其目的是想證實(shí)在一個(gè)給定的外部環(huán)境中軟件的其目的是想證實(shí)在一個(gè)給定的外部環(huán)境中軟件的其目的是想證實(shí)在一個(gè)給定的外部環(huán)境中軟件的邏輯正確性。它包括需求規(guī)格說(shuō)明的確認(rèn)和程序邏輯正確性。它包括需求規(guī)格說(shuō)明的確認(rèn)和程序邏輯正確性。它包括需求規(guī)格說(shuō)明的確認(rèn)和程序邏輯正確性。它包括需求規(guī)格說(shuō)明的確認(rèn)和程序的確認(rèn),而程序的確認(rèn)又分為靜態(tài)確認(rèn)與動(dòng)態(tài)確的確認(rèn),而程序的確認(rèn)又分為靜態(tài)確認(rèn)與動(dòng)態(tài)確的確認(rèn),而程序的確認(rèn)又分為靜態(tài)確認(rèn)與動(dòng)態(tài)確的確認(rèn),而程序的確認(rèn)又分為靜態(tài)確認(rèn)與動(dòng)態(tài)確認(rèn)。認(rèn)。認(rèn)。認(rèn)。驗(yàn)證驗(yàn)證(verificationverification),則試圖證明在軟件生),則試圖證明在軟件生存期各個(gè)階段,以及階段間的邏輯協(xié)調(diào)性、完備存期各個(gè)階段,以及階段間的邏輯協(xié)調(diào)性、完備性和正確性。下圖為軟件生存期各個(gè)重要階段之性和正確性。下圖為軟件生存期各個(gè)重要階段之間所要保持的正確性。間所要保持的正確性。6.1 軟件測(cè)試的基本概念6.1 軟件測(cè)試的基本概念 測(cè)試信息流如下圖所示。測(cè)試信息流如下圖所示。6.1 軟件測(cè)試的基本概念測(cè)試信息流測(cè)試信息流 軟件開(kāi)發(fā)過(guò)程是一個(gè)自頂向下、逐步細(xì)化的過(guò)程,軟件開(kāi)發(fā)過(guò)程是一個(gè)自頂向下、逐步細(xì)化的過(guò)程,而測(cè)試過(guò)程則是依相反的順序安排的自底向上、而測(cè)試過(guò)程則是依相反的順序安排的自底向上、逐步集成的過(guò)程。低一級(jí)測(cè)試為上一級(jí)測(cè)試準(zhǔn)備逐步集成的過(guò)程。低一級(jí)測(cè)試為上一級(jí)測(cè)試準(zhǔn)備條件。當(dāng)然不排除兩者平行地進(jìn)行測(cè)試。條件。當(dāng)然不排除兩者平行地進(jìn)行測(cè)試。軟件測(cè)試與軟件開(kāi)發(fā)過(guò)程的關(guān)系如下圖所示。軟件測(cè)試與軟件開(kāi)發(fā)過(guò)程的關(guān)系如下圖所示。6.1 軟件測(cè)試的基本概念測(cè)試與軟件開(kāi)發(fā)各階段的關(guān)系測(cè)試與軟件開(kāi)發(fā)各階段的關(guān)系首首先先對(duì)對(duì)每每一一個(gè)個(gè)程程序序模模塊塊進(jìn)進(jìn)行行單單元元測(cè)測(cè)試試,消消除除程程序序模模塊塊內(nèi)內(nèi)部部在在邏邏輯輯上上和和功功能能上上的的錯(cuò)錯(cuò)誤誤和和缺缺陷陷。再再對(duì)對(duì)照照軟軟件件設(shè)設(shè)計(jì)計(jì)進(jìn)進(jìn)行行集集成成測(cè)測(cè)試試,檢檢測(cè)測(cè)和和排排除除子子系系統(tǒng)統(tǒng)(或或系系統(tǒng)統(tǒng))結(jié)結(jié)構(gòu)構(gòu)上上的的錯(cuò)錯(cuò)誤誤。隨隨后后再再對(duì)對(duì)照照需需求求,進(jìn)進(jìn)行行確確認(rèn)認(rèn)測(cè)測(cè)試試。最最后后從從系系統(tǒng)統(tǒng)全全體體出出發(fā)發(fā),運(yùn)運(yùn)行系統(tǒng),看是否滿足要求。行系統(tǒng),看是否滿足要求。6.1 軟件測(cè)試的基本概念1.1.黑盒測(cè)試黑盒測(cè)試 黑盒測(cè)試黑盒測(cè)試是把測(cè)試對(duì)象看做一個(gè)黑盒子,測(cè)試人員完是把測(cè)試對(duì)象看做一個(gè)黑盒子,測(cè)試人員完 全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特性,只依據(jù)程全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特性,只依據(jù)程 序的需求規(guī)格說(shuō)明書(shū),檢查程序的功能是否符合它的序的需求規(guī)格說(shuō)明書(shū),檢查程序的功能是否符合它的 功能說(shuō)明。功能說(shuō)明。黑盒測(cè)試方法主要是為了發(fā)現(xiàn):是否有不正確或遺漏黑盒測(cè)試方法主要是為了發(fā)現(xiàn):是否有不正確或遺漏了的功能?輸入能否正確地接收?能否輸出正確的結(jié)了的功能?輸入能否正確地接收?能否輸出正確的結(jié)果?是否有數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤或外部信息(例如數(shù)據(jù)文件)果?是否有數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤或外部信息(例如數(shù)據(jù)文件)訪問(wèn)錯(cuò)誤?性能上是否能夠滿足要求?是否有初始化訪問(wèn)錯(cuò)誤?性能上是否能夠滿足要求?是否有初始化或終止性錯(cuò)誤?所以,用黑盒測(cè)試發(fā)現(xiàn)程序中的錯(cuò)誤,或終止性錯(cuò)誤?所以,用黑盒測(cè)試發(fā)現(xiàn)程序中的錯(cuò)誤,必須在所有可能的輸入條件和輸出條件中確定測(cè)試數(shù)必須在所有可能的輸入條件和輸出條件中確定測(cè)試數(shù)據(jù),檢查程序是否都能產(chǎn)生正確的輸出。據(jù),檢查程序是否都能產(chǎn)生正確的輸出。6.1 軟件測(cè)試的基本概念白盒測(cè)試與黑盒測(cè)試白盒測(cè)試與黑盒測(cè)試現(xiàn)在假設(shè)一個(gè)程序現(xiàn)在假設(shè)一個(gè)程序P有輸入量有輸入量X和和Y及輸出及輸出量量Z,如右圖所示。在字長(zhǎng)為,如右圖所示。在字長(zhǎng)為32位的計(jì)算位的計(jì)算機(jī)上運(yùn)行,如果機(jī)上運(yùn)行,如果X,Y只取整數(shù),考慮把所只取整數(shù),考慮把所有的有的X,Y值都作為測(cè)試數(shù)據(jù),按黑盒方法值都作為測(cè)試數(shù)據(jù),按黑盒方法進(jìn)行窮舉測(cè)試,力圖全面、無(wú)遺漏地進(jìn)行窮舉測(cè)試,力圖全面、無(wú)遺漏地“挖掘挖掘”出程序中的出程序中的所所有錯(cuò)誤。這樣作可能采用的測(cè)試數(shù)據(jù)組(有錯(cuò)誤。這樣作可能采用的測(cè)試數(shù)據(jù)組(Xi,Yi),不同測(cè)),不同測(cè)試數(shù)據(jù)組合的最大可能數(shù)目為試數(shù)據(jù)組合的最大可能數(shù)目為232232=264。如果程序如果程序P測(cè)試一組測(cè)試一組X,Y數(shù)據(jù)需要數(shù)據(jù)需要1毫秒,而且假定一天工毫秒,而且假定一天工作作24小時(shí),一年工作小時(shí),一年工作365天,要完成天,要完成264組測(cè)試,需要組測(cè)試,需要5億億年。年。6.1 軟件測(cè)試的基本概念6.1 軟件測(cè)試的基本概念2.2.白盒測(cè)試白盒測(cè)試 白盒測(cè)試白盒測(cè)試是是對(duì)軟件的過(guò)程性細(xì)節(jié)做細(xì)致的檢查。這一對(duì)軟件的過(guò)程性細(xì)節(jié)做細(xì)致的檢查。這一方法是把測(cè)試對(duì)象看做一個(gè)打開(kāi)的盒子或透明的盒子,方法是把測(cè)試對(duì)象看做一個(gè)打開(kāi)的盒子或透明的盒子,它允許測(cè)試人員利用程序內(nèi)部的邏輯結(jié)構(gòu)及有關(guān)信息,它允許測(cè)試人員利用程序內(nèi)部的邏輯結(jié)構(gòu)及有關(guān)信息,設(shè)計(jì)或選擇測(cè)試用例,對(duì)程序所有邏輯路徑進(jìn)行測(cè)試。設(shè)計(jì)或選擇測(cè)試用例,對(duì)程序所有邏輯路徑進(jìn)行測(cè)試。通過(guò)在不同點(diǎn)檢查程序的狀態(tài),確定實(shí)際的狀態(tài)是否通過(guò)在不同點(diǎn)檢查程序的狀態(tài),確定實(shí)際的狀態(tài)是否與預(yù)期的狀態(tài)一致。因此,白盒測(cè)試又稱為結(jié)構(gòu)測(cè)試與預(yù)期的狀態(tài)一致。因此,白盒測(cè)試又稱為結(jié)構(gòu)測(cè)試或邏輯驅(qū)動(dòng)測(cè)試?;蜻壿嬺?qū)動(dòng)測(cè)試。白盒測(cè)試主要是對(duì)程序模塊進(jìn)行檢查:對(duì)程序模塊的白盒測(cè)試主要是對(duì)程序模塊進(jìn)行檢查:對(duì)程序模塊的所有獨(dú)立的執(zhí)行路徑至少測(cè)試一次;對(duì)所有的邏輯判所有獨(dú)立的執(zhí)行路徑至少測(cè)試一次;對(duì)所有的邏輯判定,取定,取“真真”與取與取“假假”的兩種情況都能至少測(cè)試一的兩種情況都能至少測(cè)試一次;在循環(huán)的邊界和運(yùn)行界限內(nèi)執(zhí)行循環(huán)體;測(cè)試內(nèi)次;在循環(huán)的邊界和運(yùn)行界限內(nèi)執(zhí)行循環(huán)體;測(cè)試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性等。部數(shù)據(jù)結(jié)構(gòu)的有效性等。然而,對(duì)一個(gè)具有多重選擇和循環(huán)嵌套的程序,獨(dú)立的路徑數(shù)目可能是然而,對(duì)一個(gè)具有多重選擇和循環(huán)嵌套的程序,獨(dú)立的路徑數(shù)目可能是天文數(shù)字。而且即使精確地實(shí)現(xiàn)了白盒測(cè)試,也不能斷言測(cè)試過(guò)的程序天文數(shù)字。而且即使精確地實(shí)現(xiàn)了白盒測(cè)試,也不能斷言測(cè)試過(guò)的程序完全正確。舉例來(lái)說(shuō),右圖所示完全正確。舉例來(lái)說(shuō),右圖所示的小程序流程圖,它對(duì)應(yīng)了一個(gè)的小程序流程圖,它對(duì)應(yīng)了一個(gè)有有100行源代碼的行源代碼的PASCAL語(yǔ)言語(yǔ)言程序,其中包括了一個(gè)執(zhí)行達(dá)程序,其中包括了一個(gè)執(zhí)行達(dá)20次的循環(huán)。它所包含的獨(dú)立執(zhí)行次的循環(huán)。它所包含的獨(dú)立執(zhí)行路徑數(shù)高達(dá)路徑數(shù)高達(dá)520(=1013)條,)條,若要對(duì)它進(jìn)行窮舉測(cè)試,即要設(shè)若要對(duì)它進(jìn)行窮舉測(cè)試,即要設(shè)計(jì)測(cè)試用例,覆蓋所有的路徑。計(jì)測(cè)試用例,覆蓋所有的路徑。假使有這么一個(gè)測(cè)試程序,對(duì)每一條路徑進(jìn)行測(cè)試需要假使有這么一個(gè)測(cè)試程序,對(duì)每一條路徑進(jìn)行測(cè)試需要1毫秒,同樣假定毫秒,同樣假定一天工作一天工作24小時(shí),一年工作小時(shí),一年工作365天,那么要想把如圖天,那么要想把如圖6-6所示的小程序的所示的小程序的所有路徑測(cè)試完,則需要所有路徑測(cè)試完,則需要3170年。年。6.1 軟件測(cè)試的基本概念通過(guò)以上兩個(gè)例子表明,實(shí)行窮舉測(cè)試,由于工作量過(guò)通過(guò)以上兩個(gè)例子表明,實(shí)行窮舉測(cè)試,由于工作量過(guò)大,需用的時(shí)間過(guò)長(zhǎng),實(shí)施起來(lái)是不現(xiàn)實(shí)的。既然窮舉測(cè)大,需用的時(shí)間過(guò)長(zhǎng),實(shí)施起來(lái)是不現(xiàn)實(shí)的。既然窮舉測(cè)試不可行,就必須精心設(shè)計(jì)測(cè)試用例,從數(shù)量極大的可用試不可行,就必須精心設(shè)計(jì)測(cè)試用例,從數(shù)量極大的可用測(cè)試用例中精心地挑選少量的測(cè)試數(shù)據(jù),使得采用這些測(cè)測(cè)試用例中精心地挑選少量的測(cè)試數(shù)據(jù),使得采用這些測(cè)試數(shù)據(jù)能夠達(dá)到最佳的測(cè)試效果,或者說(shuō)它們能夠高效率試數(shù)據(jù)能夠達(dá)到最佳的測(cè)試效果,或者說(shuō)它們能夠高效率地把隱藏的錯(cuò)誤盡可能多地揭露出來(lái)。地把隱藏的錯(cuò)誤盡可能多地揭露出來(lái)。以上事實(shí)說(shuō)明,軟件測(cè)試有一個(gè)致命的缺陷,即測(cè)試的以上事實(shí)說(shuō)明,軟件測(cè)試有一個(gè)致命的缺陷,即測(cè)試的不完全不完全、不徹底性不徹底性。由于任何程序只能進(jìn)行少量(相對(duì)于。由于任何程序只能進(jìn)行少量(相對(duì)于窮舉的巨大數(shù)量而言)的有限的測(cè)試,在發(fā)現(xiàn)錯(cuò)誤時(shí)能說(shuō)窮舉的巨大數(shù)量而言)的有限的測(cè)試,在發(fā)現(xiàn)錯(cuò)誤時(shí)能說(shuō)明程序有問(wèn)題;但在未發(fā)現(xiàn)錯(cuò)誤時(shí),不能說(shuō)明程序中沒(méi)有明程序有問(wèn)題;但在未發(fā)現(xiàn)錯(cuò)誤時(shí),不能說(shuō)明程序中沒(méi)有錯(cuò)誤,不能說(shuō)明程序中沒(méi)有問(wèn)題。錯(cuò)誤,不能說(shuō)明程序中沒(méi)有問(wèn)題。6.1 軟件測(cè)試的基本概念6.2 白盒測(cè)試的測(cè)試用例設(shè)計(jì)邏輯覆蓋邏輯覆蓋邏輯覆蓋邏輯覆蓋是以程序內(nèi)部的邏輯結(jié)構(gòu)為基礎(chǔ)的設(shè)計(jì)測(cè)試用例是以程序內(nèi)部的邏輯結(jié)構(gòu)為基礎(chǔ)的設(shè)計(jì)測(cè)試用例的技術(shù),它的技術(shù),它屬于白盒測(cè)試屬于白盒測(cè)試。這一方法要求測(cè)試人員對(duì)程序。這一方法要求測(cè)試人員對(duì)程序的邏輯結(jié)構(gòu)有清楚的了解,甚至要能掌握源程序的所有細(xì)的邏輯結(jié)構(gòu)有清楚的了解,甚至要能掌握源程序的所有細(xì)節(jié)。由于覆蓋測(cè)試的目標(biāo)不同,邏輯覆蓋又可分為語(yǔ)句覆節(jié)。由于覆蓋測(cè)試的目標(biāo)不同,邏輯覆蓋又可分為語(yǔ)句覆蓋、判定覆蓋、判定蓋、判定覆蓋、判定條件覆蓋、條件組合覆蓋及路徑覆條件覆蓋、條件組合覆蓋及路徑覆蓋。以下將分別做扼要的介紹。在所介紹的幾種邏輯覆蓋蓋。以下將分別做扼要的介紹。在所介紹的幾種邏輯覆蓋中,均以下圖所示的程序段為例。其中有兩個(gè)判斷,每中,均以下圖所示的程序段為例。其中有兩個(gè)判斷,每個(gè)判斷都包含復(fù)合條件的邏輯表達(dá)式,符號(hào)個(gè)判斷都包含復(fù)合條件的邏輯表達(dá)式,符號(hào)“”表示表示“and”運(yùn)算,運(yùn)算,“”表示表示“or”運(yùn)算。運(yùn)算。6.2 白盒測(cè)試的測(cè)試用例設(shè)計(jì)圖中所示的程序段有圖中所示的程序段有4 4條不同的路徑。條不同的路徑。為了清楚起見(jiàn),分別對(duì)第為了清楚起見(jiàn),分別對(duì)第1 1個(gè)判斷的個(gè)判斷的取假分支、取真分支及第取假分支、取真分支及第2 2個(gè)判斷的個(gè)判斷的取假分支、取真分支命名為取假分支、取真分支命名為b b、c c、d d、e e。這樣所有。這樣所有4 4條路徑可表示為:條路徑可表示為:L1L1(aceace),),L2L2(abdabd),),L3L3(abeabe)和)和L4L4(acdacd),),或簡(jiǎn)寫(xiě)為或簡(jiǎn)寫(xiě)為aceace、abdabd、abeabe和和acdacd。6.2 白盒測(cè)試的測(cè)試用例設(shè)計(jì)語(yǔ)句覆蓋語(yǔ)句覆蓋所所謂謂語(yǔ)語(yǔ)句句覆覆蓋蓋就就是是設(shè)設(shè)計(jì)計(jì)若若干干個(gè)個(gè)測(cè)測(cè)試試用用例例,運(yùn)運(yùn)行行被被測(cè)測(cè)程程序序,使使得得每每一一個(gè)個(gè)可可執(zhí)執(zhí)行行語(yǔ)語(yǔ)句句至至少少執(zhí)執(zhí)行行一一次次。例例如如,在在上上圖圖所所給給出出的的例例子子中中,正正好好所所有有的的可可執(zhí)執(zhí)行行語(yǔ)語(yǔ)句句都都在在路路徑徑L1L1上上,所所以以選選擇擇路路徑徑L1L1設(shè)設(shè)計(jì)計(jì)測(cè)測(cè)試試用用例例,就可以覆蓋所有的可執(zhí)行語(yǔ)句。就可以覆蓋所有的可執(zhí)行語(yǔ)句。測(cè)試用例的設(shè)計(jì)格式如下:測(cè)試用例的設(shè)計(jì)格式如下:【輸入的(【輸入的(A A,B B,x x),輸出的(),輸出的(A A,B B,x x)】為圖中所示例子設(shè)計(jì)滿足語(yǔ)句覆蓋的測(cè)試用例:為圖中所示例子設(shè)計(jì)滿足語(yǔ)句覆蓋的測(cè)試用例:【(【(2 2,0 0,4 4),(),(2 2,0 0,3 3)】覆蓋】覆蓋aceace【L1L1】從程序中每個(gè)可執(zhí)行語(yǔ)句都得到執(zhí)行這一點(diǎn)來(lái)看,語(yǔ)句覆蓋的方從程序中每個(gè)可執(zhí)行語(yǔ)句都得到執(zhí)行這一點(diǎn)來(lái)看,語(yǔ)句覆蓋的方 法似乎能夠比較全面地檢驗(yàn)每一個(gè)可執(zhí)行語(yǔ)句。但與后面介紹的法似乎能夠比較全面地檢驗(yàn)每一個(gè)可執(zhí)行語(yǔ)句。但與后面介紹的 其他覆蓋相比,語(yǔ)句覆蓋是最弱的邏輯覆蓋準(zhǔn)則。其他覆蓋相比,語(yǔ)句覆蓋是最弱的邏輯覆蓋準(zhǔn)則。所謂所謂判定覆蓋判定覆蓋就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序,使得程序中每個(gè)就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序,使得程序中每個(gè)判斷的取真分支和取假分支至少經(jīng)歷一次。判定覆蓋又稱為分支覆蓋,如判斷的取真分支和取假分支至少經(jīng)歷一次。判定覆蓋又稱為分支覆蓋,如對(duì)于圖中給出的例子,如果選擇路徑對(duì)于圖中給出的例子,如果選擇路徑L1L1和和L2L2,可得滿足要求的測(cè)試用例:,可得滿足要求的測(cè)試用例:【(【(2 2,0 0,4 4),(),(2 2,0 0,3 3)】覆蓋】覆蓋aceace【L1L1】【(【(1 1,1 1,1 1),(),(1 1,1 1,1 1)】覆蓋】覆蓋abdabd【L2L2】如果選擇路徑如果選擇路徑L3L3和和L4L4,還可得另一組可用的測(cè)試用例:,還可得另一組可用的測(cè)試用例:【(【(2 2,1 1,1 1),(),(2 2,1 1,2 2)】覆蓋】覆蓋abeabe【L3L3】【(【(3 3,0 0,3 3),(),(3 3,1 1,1 1)】覆蓋】覆蓋acdacd【L4L4】所以,測(cè)試用例的取法不唯一。注意有例外情形,例如,若把圖中第所以,測(cè)試用例的取法不唯一。注意有例外情形,例如,若把圖中第2 2個(gè)個(gè)判斷中的條件判斷中的條件x x1 1錯(cuò)寫(xiě)成錯(cuò)寫(xiě)成x x1 1,那么利用上面兩組測(cè)試用例,仍能得到同,那么利用上面兩組測(cè)試用例,仍能得到同樣結(jié)果。這表明,只是判定覆蓋,還不能保證一定能查出在判斷的條件中樣結(jié)果。這表明,只是判定覆蓋,還不能保證一定能查出在判斷的條件中存在的錯(cuò)誤,因此,還需要更強(qiáng)的邏輯覆蓋準(zhǔn)則檢驗(yàn)判斷內(nèi)部條件。存在的錯(cuò)誤,因此,還需要更強(qiáng)的邏輯覆蓋準(zhǔn)則檢驗(yàn)判斷內(nèi)部條件。6.2 白盒測(cè)試的測(cè)試用例設(shè)計(jì)判定覆蓋判定覆蓋所謂所謂條件覆蓋條件覆蓋就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序,使就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序,使得程序中每個(gè)判斷的每個(gè)條件的可能取值至少執(zhí)行一次。例得程序中每個(gè)判斷的每個(gè)條件的可能取值至少執(zhí)行一次。例如,在上圖所給出的例子中,我們事先可對(duì)所有條件的取值如,在上圖所給出的例子中,我們事先可對(duì)所有條件的取值加以標(biāo)記。例如,對(duì)于第加以標(biāo)記。例如,對(duì)于第1 1個(gè)判斷:個(gè)判斷:條件條件A A1 1取真值為取真值為T(mén)1T1,取假值為,取假值為 條件條件B B0 0取真值為取真值為T(mén)2T2,取假值為,取假值為對(duì)于第對(duì)于第2 2個(gè)判斷:個(gè)判斷:條件條件A A2 2取真值為取真值為T(mén)3T3,取假值為,取假值為 條件條件x x1 1取真值為取真值為T(mén)4T4,取假值為,取假值為則可選取測(cè)試用例如下:則可選取測(cè)試用例如下:6.2 白盒測(cè)試的測(cè)試用例設(shè)計(jì)條件覆蓋條件覆蓋6.2 白盒測(cè)試的測(cè)試用例設(shè)計(jì)注意,前一組測(cè)試用例不但覆蓋了所有判斷的取真分支和取注意,前一組測(cè)試用例不但覆蓋了所有判斷的取真分支和取假分支,而且覆蓋了判斷中所有條件的可能取值。后一組測(cè)假分支,而且覆蓋了判斷中所有條件的可能取值。后一組測(cè)試用例雖滿足了條件覆蓋,但只覆蓋了第試用例雖滿足了條件覆蓋,但只覆蓋了第1 1個(gè)判斷的取假分個(gè)判斷的取假分支和第支和第2 2個(gè)判斷的取真分支,不滿足判定覆蓋的要求。為解個(gè)判斷的取真分支,不滿足判定覆蓋的要求。為解決這一矛盾,需要對(duì)條件和分支兼顧,有必要考慮以下的判決這一矛盾,需要對(duì)條件和分支兼顧,有必要考慮以下的判定定條件覆蓋。條件覆蓋。6.2 白盒測(cè)試的測(cè)試用例設(shè)計(jì)所謂所謂判定判定-條件覆蓋條件覆蓋就是設(shè)計(jì)足夠的測(cè)試用例,使得判斷中就是設(shè)計(jì)足夠的測(cè)試用例,使得判斷中每個(gè)條件的所有可能取值至少執(zhí)行一次,同時(shí)每個(gè)判斷本身每個(gè)條件的所有可能取值至少執(zhí)行一次,同時(shí)每個(gè)判斷本身的所有可能判斷結(jié)果至少執(zhí)行一次。例如,對(duì)于圖中的各判的所有可能判斷結(jié)果至少執(zhí)行一次。例如,對(duì)于圖中的各判斷,若斷,若T1T1,T2T2,T3T3,T4T4及及 的含義如前所述,則的含義如前所述,則只需設(shè)計(jì)以下兩個(gè)測(cè)試用例便可覆蓋圖中的只需設(shè)計(jì)以下兩個(gè)測(cè)試用例便可覆蓋圖中的8 8個(gè)條件取值以個(gè)條件取值以及及4 4個(gè)判斷分支。個(gè)判斷分支。判定判定-條件覆蓋條件覆蓋6.2 白盒測(cè)試的測(cè)試用例設(shè)計(jì)判定判定-條件覆蓋也有缺陷。從表面上來(lái)看,它測(cè)試了所有條條件覆蓋也有缺陷。從表面上來(lái)看,它測(cè)試了所有條件的取值,但是事實(shí)并非如此,因?yàn)橥承l件掩蓋了另件的取值,但是事實(shí)并非如此,因?yàn)橥承l件掩蓋了另一些條件。對(duì)于條件表達(dá)式(一些條件。對(duì)于條件表達(dá)式(A1)and(B=0)來(lái)說(shuō),若)來(lái)說(shuō),若(A1)的測(cè)試結(jié)果為真,則還要測(cè)試()的測(cè)試結(jié)果為真,則還要測(cè)試(B=0),才能決定),才能決定表達(dá)式的值;而若(表達(dá)式的值;而若(A1)的測(cè)試結(jié)果為假,可以立刻確)的測(cè)試結(jié)果為假,可以立刻確定表達(dá)式的結(jié)果為假,這時(shí),往往就不再測(cè)試(定表達(dá)式的結(jié)果為假,這時(shí),往往就不再測(cè)試(B=0)的?。┑娜≈盗耍虼?,條件(值了,因此,條件(B=0)就沒(méi)有檢查。同樣,對(duì)于條件表)就沒(méi)有檢查。同樣,對(duì)于條件表達(dá)式(達(dá)式(A=2)or(X1)來(lái)說(shuō),若()來(lái)說(shuō),若(A=2)的測(cè)試結(jié)果為)的測(cè)試結(jié)果為真,就可以立即確定表達(dá)式的結(jié)果為真,這時(shí),條件(真,就可以立即確定表達(dá)式的結(jié)果為真,這時(shí),條件(X1)就沒(méi)有檢查,因此,采用判定)就沒(méi)有檢查,因此,采用判定-條件覆蓋,邏輯表達(dá)式條件覆蓋,邏輯表達(dá)式中的錯(cuò)誤不一定能夠查得出來(lái)。中的錯(cuò)誤不一定能夠查得出來(lái)。6.2 白盒測(cè)試的測(cè)試用例設(shè)計(jì)為徹底地檢查所有條件的取值,可以將上圖中給出的多重條為徹底地檢查所有條件的取值,可以將上圖中給出的多重條件判定分解,形成下圖所示的由多個(gè)基本判斷組成的流程件判定分解,形成下圖所示的由多個(gè)基本判斷組成的流程圖。這樣可以有效地檢查所有的條件是否正確。圖。這樣可以有效地檢查所有的條件是否正確。6.2 白盒測(cè)試的測(cè)試用例設(shè)計(jì) 所所所所謂謂謂謂條條條條件件件件組組組組合合合合覆覆覆覆蓋蓋蓋蓋就就就就是是是是設(shè)設(shè)設(shè)設(shè)計(jì)計(jì)計(jì)計(jì)足足足足夠夠夠夠的的的的測(cè)測(cè)測(cè)測(cè)試試試試用用用用例例例例,運(yùn)運(yùn)運(yùn)運(yùn)行行行行被被被被測(cè)測(cè)測(cè)測(cè) 程程程程序序序序,使使使使得得得得每每每每個(gè)個(gè)個(gè)個(gè)判判判判斷斷斷斷的的的的所所所所有有有有可可可可能能能能的的的的條條條條件件件件取取取取值值值值組組組組合合合合至至至至少少少少執(zhí)執(zhí)執(zhí)執(zhí) 行行行行一一一一次次次次。以以以以上上上上一一一一小小小小節(jié)節(jié)節(jié)節(jié)給給給給出出出出的的的的圖圖圖圖為為為為例例例例,先先先先對(duì)對(duì)對(duì)對(duì)各各各各個(gè)個(gè)個(gè)個(gè)判判判判斷斷斷斷的的的的條條條條 件取值組合加以標(biāo)記。例如,記件取值組合加以標(biāo)記。例如,記件取值組合加以標(biāo)記。例如,記件取值組合加以標(biāo)記。例如,記 A A1 1,B=0B=0作作作作T1T2T1T2,屬第,屬第,屬第,屬第1 1個(gè)判斷的取真分支。個(gè)判斷的取真分支。個(gè)判斷的取真分支。個(gè)判斷的取真分支。A A1 1,B0B0作作作作T1T1,屬第,屬第,屬第,屬第1 1個(gè)判斷的取假分支。個(gè)判斷的取假分支。個(gè)判斷的取假分支。個(gè)判斷的取假分支。A A 1 1,B=0B=0作作作作T2T2,屬第,屬第,屬第,屬第1 1個(gè)判斷的取假分支。個(gè)判斷的取假分支。個(gè)判斷的取假分支。個(gè)判斷的取假分支。A A 1 1,B0B0作作作作,屬第,屬第,屬第,屬第1 1個(gè)判斷的取假分支。個(gè)判斷的取假分支。個(gè)判斷的取假分支。個(gè)判斷的取假分支。A=2A=2,x x1 1作作作作T3T4T3T4,屬第,屬第,屬第,屬第2 2個(gè)判斷的取真分支。個(gè)判斷的取真分支。個(gè)判斷的取真分支。個(gè)判斷的取真分支。A=2A=2,x x 1 1作作作作T3T3,屬第,屬第,屬第,屬第2 2個(gè)判斷的取真分支。個(gè)判斷的取真分支。個(gè)判斷的取真分支。個(gè)判斷的取真分支。條件組合覆蓋條件組合覆蓋 A2A2,x x1 1作作作作T4T4,屬第,屬第,屬第,屬第2 2個(gè)判斷的取真分支。個(gè)判斷的取真分支。個(gè)判斷的取真分支。個(gè)判斷的取真分支。A2A2,x x 1 1作作作作,屬第,屬第,屬第,屬第2 2個(gè)判斷的取假分支。個(gè)判斷的取假分支。個(gè)判斷的取假分支。個(gè)判斷的取假分支。對(duì)于每個(gè)判斷,要求所有可能的條件取值的組合都必須對(duì)于每個(gè)判斷,要求所有可能的條件取值的組合都必須對(duì)于每個(gè)判斷,要求所有可能的條件取值的組合都必須對(duì)于每個(gè)判斷,要求所有可能的條件取值的組合都必須取取取取 到。圖中每個(gè)判斷各有兩個(gè)條件,所以,各有到。圖中每個(gè)判斷各有兩個(gè)條件,所以,各有到。圖中每個(gè)判斷各有兩個(gè)條件,所以,各有到。圖中每個(gè)判斷各有兩個(gè)條件,所以,各有4 4個(gè)條件個(gè)條件個(gè)條件個(gè)條件取取取取 值的組合。取值的組合。取值的組合。取值的組合。取4 4個(gè)測(cè)試用例,可用以覆蓋上面?zhèn)€測(cè)試用例,可用以覆蓋上面?zhèn)€測(cè)試用例,可用以覆蓋上面?zhèn)€測(cè)試用例,可用以覆蓋上面8 8種條件種條件種條件種條件取取取取 值的組合。必須明確,這里并未要求第值的組合。必須明確,這里并未要求第值的組合。必須明確,這里并未要求第值的組合。必須明確,這里并未要求第1 1個(gè)判斷的個(gè)判斷的個(gè)判斷的個(gè)判斷的4 4個(gè)個(gè)個(gè)個(gè)組組組組 合與第合與第合與第合與第2 2個(gè)判斷的個(gè)判斷的個(gè)判斷的個(gè)判斷的4 4個(gè)組合再進(jìn)行組合。要是那樣的話,個(gè)組合再進(jìn)行組合。要是那樣的話,個(gè)組合再進(jìn)行組合。要是那樣的話,個(gè)組合再進(jìn)行組合。要是那樣的話,就需要就需要就需要就需要4 42 2=16=16個(gè)測(cè)試用例了。個(gè)測(cè)試用例了。個(gè)測(cè)試用例了。個(gè)測(cè)試用例了。6.2 白盒測(cè)試的測(cè)試用例設(shè)計(jì)路徑測(cè)試路徑測(cè)試路徑測(cè)試路徑測(cè)試是設(shè)計(jì)足夠的測(cè)試用例,覆蓋程序中所有可能的是設(shè)計(jì)足夠的測(cè)試用例,覆蓋程序中所有可能的是設(shè)計(jì)足夠的測(cè)試用例,覆蓋程序中所有可能的是設(shè)計(jì)足夠的測(cè)試用例,覆蓋程序中所有可能的路徑。若仍以最初的圖為例,則可以選擇如下的一組測(cè)試路徑。若仍以最初的圖為例,則可以選擇如下的一組測(cè)試路徑。若仍以最初的圖為例,則可以選擇如下的一組測(cè)試路徑。若仍以最初的圖為例,則可以選擇如下的一組測(cè)試用例,覆蓋該程序段的全部路徑。用例,覆蓋該程序段的全部路徑。用例,覆蓋該程序段的全部路徑。用例,覆蓋該程序段的全部路徑。6.2 白盒測(cè)試的測(cè)試用例設(shè)計(jì)路徑測(cè)試路徑測(cè)試 上節(jié)的例子是個(gè)非常簡(jiǎn)單的程序段,只有上節(jié)的例子是個(gè)非常簡(jiǎn)單的程序段,只有上節(jié)的例子是個(gè)非常簡(jiǎn)單的程序段,只有上節(jié)的例子是個(gè)非常簡(jiǎn)單的程序段,只有4 4條路徑。條路徑。條路徑。條路徑。但但但但 在實(shí)際問(wèn)題中,一個(gè)不太復(fù)雜的程序,其路徑都是一個(gè)在實(shí)際問(wèn)題中,一個(gè)不太復(fù)雜的程序,其路徑都是一個(gè)在實(shí)際問(wèn)題中,一個(gè)不太復(fù)雜的程序,其路徑都是一個(gè)在實(shí)際問(wèn)題中,一個(gè)不太復(fù)雜的程序,其路徑都是一個(gè)龐龐龐龐 大的數(shù)字。要在測(cè)試中覆蓋這么多的路徑是不現(xiàn)實(shí)的。大的數(shù)字。要在測(cè)試中覆蓋這么多的路徑是不現(xiàn)實(shí)的。大的數(shù)字。要在測(cè)試中覆蓋這么多的路徑是不現(xiàn)實(shí)的。大的數(shù)字。要在測(cè)試中覆蓋這么多的路徑是不現(xiàn)實(shí)的。為為為為 解決這一難題,只得把覆蓋的路徑數(shù)壓縮到一定限度內(nèi),解決這一難題,只得把覆蓋的路徑數(shù)壓縮到一定限度內(nèi),解決這一難題,只得把覆蓋的路徑數(shù)壓縮到一定限度內(nèi),解決這一難題,只得把覆蓋的路徑數(shù)壓縮到一定限度內(nèi),如程序中的循環(huán)體只執(zhí)行一次。本節(jié)所介紹的如程序中的循環(huán)體只執(zhí)行一次。本節(jié)所介紹的如程序中的循環(huán)體只執(zhí)行一次。本節(jié)所介紹的如程序中的循環(huán)體只執(zhí)行一次。本節(jié)所介紹的基本路徑基本路徑基本路徑基本路徑測(cè)測(cè)測(cè)測(cè) 試試試試就是這樣一種測(cè)試方法,它就是這樣一種測(cè)試方法,它就是這樣一種測(cè)試方法,它就是這樣一種測(cè)試方法,它是在程序控制流圖的基礎(chǔ)是在程序控制流圖的基礎(chǔ)是在程序控制流圖的基礎(chǔ)是在程序控制流圖的基礎(chǔ) 上,通過(guò)分析控制構(gòu)造的環(huán)路復(fù)雜性,導(dǎo)出基本可執(zhí)行上,通過(guò)分析控制構(gòu)造的環(huán)路復(fù)雜性,導(dǎo)出基本可執(zhí)行上,通過(guò)分析控制構(gòu)造的環(huán)路復(fù)雜性,導(dǎo)出基本可執(zhí)行上,通過(guò)分析控制構(gòu)造的環(huán)路復(fù)雜性,導(dǎo)出基本可執(zhí)行路路路路 徑集合,從而設(shè)計(jì)測(cè)試用例的方法徑集合,從而設(shè)計(jì)測(cè)試用例的方法徑集合,從而設(shè)計(jì)測(cè)試用例的方法徑集合,從而設(shè)計(jì)測(cè)試用例的方法。設(shè)計(jì)出的測(cè)試用例。設(shè)計(jì)出的測(cè)試用例。設(shè)計(jì)出的測(cè)試用例。設(shè)計(jì)出的測(cè)試用例要要要要 保證在測(cè)試中程序的每一個(gè)可執(zhí)行語(yǔ)句至少執(zhí)行一次。保證在測(cè)試中程序的每一個(gè)可執(zhí)行語(yǔ)句至少執(zhí)行一次。保證在測(cè)試中程序的每一個(gè)可執(zhí)行語(yǔ)句至少執(zhí)行一次。保證在測(cè)試中程序的每一個(gè)可執(zhí)行語(yǔ)句至少執(zhí)行一次。6.3 基本路徑測(cè)試實(shí)施基本路徑測(cè)試需要利用程序環(huán)路復(fù)雜性計(jì)算的實(shí)施基本路徑測(cè)試需要利用程序環(huán)路復(fù)雜性計(jì)算的實(shí)施基本路徑測(cè)試需要利用程序環(huán)路復(fù)雜性計(jì)算的實(shí)施基本路徑測(cè)試需要利用程序環(huán)路復(fù)雜性計(jì)算的McCabeMcCabe方法?;韭窂綔y(cè)試法適用于模塊的詳細(xì)設(shè)計(jì)及源方法?;韭窂綔y(cè)試法適用于模塊的詳細(xì)設(shè)計(jì)及源方法?;韭窂綔y(cè)試法適用于模塊的詳細(xì)設(shè)計(jì)及源方法。基本路徑測(cè)試法適用于模塊的詳細(xì)設(shè)計(jì)及源程序,其主要步驟如下:程序,其主要步驟如下:程序,其主要步驟如下:程序,其主要步驟如下:(1 1)以詳細(xì)設(shè)計(jì)或源代碼作為基礎(chǔ),導(dǎo)出程序的控制流圖;)以詳細(xì)設(shè)計(jì)或源代碼作為基礎(chǔ),導(dǎo)出程序的控制流圖;)以詳細(xì)設(shè)計(jì)或源代碼作為基礎(chǔ),導(dǎo)出程序的控制流圖;)以詳細(xì)設(shè)計(jì)或源代碼作為基礎(chǔ),導(dǎo)出程序的控制流圖;(2 2)計(jì)算得到的控制流圖)計(jì)算得到的控制流圖)計(jì)算得到的控制流圖)計(jì)算得到的控制流圖GG的環(huán)路復(fù)雜性的環(huán)路復(fù)雜性的環(huán)路復(fù)雜性的環(huán)路復(fù)雜性V V(GG););););(3 3)確定線性無(wú)關(guān)的基本路徑集;)確定線性無(wú)關(guān)的基本路徑集;)確定線性無(wú)關(guān)的基本路徑集;)確定線性無(wú)關(guān)的基本路徑集;(4 4)生成測(cè)試用例,確?;韭窂郊忻織l路徑的執(zhí)行。)生成測(cè)試用例,確?;韭窂郊忻織l路徑的執(zhí)行。)生成測(cè)試用例,確?;韭窂郊忻織l路徑的執(zhí)行。)生成測(cè)試用例,確?;韭窂郊忻織l路徑的執(zhí)行。下面以一個(gè)求平均值的過(guò)程下面以一個(gè)求平均值的過(guò)程下面以一個(gè)求平均值的過(guò)程下面以一個(gè)求平均值的過(guò)程averagyaveragy為例,說(shuō)明測(cè)試用為例,說(shuō)明測(cè)試用為例,說(shuō)明測(cè)試用為例,說(shuō)明測(cè)試用例的設(shè)計(jì)過(guò)程。用例的設(shè)計(jì)過(guò)程。用例的設(shè)計(jì)過(guò)程。用例的設(shè)計(jì)過(guò)程。用PDLPDL描述的描述的描述的描述的averagyaveragy過(guò)程如下所示。過(guò)程如下所示。過(guò)程如下所示。過(guò)程如下所示。6.3 基本路徑測(cè)試6.3 基本路徑測(cè)試1.1.由過(guò)程描述導(dǎo)出控制流圖由過(guò)程描述導(dǎo)出控制流圖由過(guò)程描述導(dǎo)出控制流圖由過(guò)程描述導(dǎo)出控制流圖利用第五章介紹的符號(hào)和構(gòu)造規(guī)則生成控制流圖。對(duì)于利用第五章介紹的符號(hào)和構(gòu)造規(guī)則生成控制流圖。對(duì)于以上用以上用PDL描述的描述的averagy過(guò)程過(guò)程,對(duì)將要映射為對(duì)應(yīng)控制,對(duì)將要映射為對(duì)應(yīng)控制流圖中一個(gè)結(jié)點(diǎn)的流圖中一個(gè)結(jié)點(diǎn)的PDL語(yǔ)句或語(yǔ)句組,加上用數(shù)字表示的語(yǔ)句或語(yǔ)句組,加上用數(shù)字表示的標(biāo)號(hào)。加了標(biāo)號(hào)的標(biāo)號(hào)。加了標(biāo)號(hào)的PDL程序及對(duì)應(yīng)的控制流圖如下所示。程序及對(duì)應(yīng)的控制流圖如下所示。6.3 基本路徑測(cè)試6.3 基本路徑測(cè)試averagyaveragy過(guò)程的控制流圖過(guò)程的控制流圖 對(duì)對(duì)averagyaveragy過(guò)程定義結(jié)點(diǎn)過(guò)程定義結(jié)點(diǎn) 6.3 基本路徑測(cè)試2.由過(guò)程描述導(dǎo)出控制流圖由過(guò)程描述導(dǎo)出控制流圖利用在前面給出的計(jì)算控制流圖環(huán)路復(fù)雜性的方法,算利用在前面給出的計(jì)算控制流圖環(huán)路復(fù)雜性的方法,算出控制流圖出控制流圖G的環(huán)路復(fù)雜性。如果一開(kāi)始就知道判斷結(jié)點(diǎn)的環(huán)路復(fù)雜性。如果一開(kāi)始就知道判斷結(jié)點(diǎn)的個(gè)數(shù),甚至不必畫(huà)出整個(gè)控制流圖,就可以計(jì)算出該圖的個(gè)數(shù),甚至不必畫(huà)出整個(gè)控制流圖,就可以計(jì)算出該圖的環(huán)路復(fù)雜性的值。對(duì)于以上控制流圖,可以算出:的環(huán)路復(fù)雜性的值。對(duì)于以上控制流圖,可以算出:V(G)=6(區(qū)域數(shù))(區(qū)域數(shù))=5(判定結(jié)點(diǎn)數(shù))(判定結(jié)點(diǎn)數(shù))+1=63.確定線性無(wú)關(guān)的基本路徑集確定線性無(wú)關(guān)的基本路徑集計(jì)算出的環(huán)路復(fù)雜性的值,就是該圖已有的線性無(wú)關(guān)基計(jì)算出的環(huán)路復(fù)雜性的值,就是該圖已有的線性無(wú)關(guān)基本路徑集中路徑的數(shù)目。該圖所有的本路徑集中路徑的數(shù)目。該圖所有的6條路徑是:條路徑是:path1:1-2-10-11-13path2:1-2-10-12-13path3:1-2-3-10-11-13path4:1-2-3-4-5-8-9-2path5:1-2-3-4-5-6-8-9-2path6:1-2-3-4-5-6-7-8-9-2路徑路徑4、5、6后面的省略號(hào)(后面的省略號(hào)()表示在控制結(jié)構(gòu)中以后)表示在控制結(jié)構(gòu)中以后剩下的路徑是可選擇的。在很多情況下,標(biāo)識(shí)判斷結(jié)點(diǎn),常剩下的路徑是可選擇的。在很多情況下,標(biāo)識(shí)判斷結(jié)點(diǎn),常常能夠有效地幫助導(dǎo)出測(cè)試用例。在上例中,結(jié)點(diǎn)常能夠有效地幫助導(dǎo)出測(cè)試用例。在上例中,結(jié)點(diǎn)2、3、5、6和和10都是判斷結(jié)點(diǎn)。都是判斷結(jié)點(diǎn)。6.3 基本路徑測(cè)試6.3 基本路徑測(cè)試4.準(zhǔn)備測(cè)試用例,確?;韭窂郊械拿恳粭l路徑的執(zhí)行準(zhǔn)備測(cè)試用例,確?;韭窂郊械拿恳粭l路徑的執(zhí)行根據(jù)判斷結(jié)點(diǎn)給出的條件,選擇適當(dāng)?shù)臄?shù)據(jù)以保證某一條根據(jù)判斷結(jié)點(diǎn)給出的條件,選擇適當(dāng)?shù)臄?shù)據(jù)以保證某一條路徑可以被測(cè)試到。滿足上例基本路徑集的測(cè)試用例如下。路徑可以被測(cè)試到。滿足上例基本路徑集的測(cè)試用例如下。path1:輸入數(shù)據(jù):輸入數(shù)據(jù):valuek=有效輸入,限于有效輸入,限于ki(i定義如下)定義如下)valuei=999,當(dāng)當(dāng)2i100預(yù)期結(jié)果:預(yù)期結(jié)果:n個(gè)值的正確的平均值、正確的總計(jì)數(shù)。個(gè)值的正確的平均值、正確的總計(jì)數(shù)。注意:不能孤立地進(jìn)行測(cè)試,應(yīng)當(dāng)作為路徑注意:不能孤立地進(jìn)行測(cè)試,應(yīng)當(dāng)作為路徑4、5、6測(cè)試的一測(cè)試的一部分來(lái)測(cè)試。部分來(lái)測(cè)試。path2:輸入數(shù)據(jù):輸入數(shù)據(jù):value1=999預(yù)期結(jié)果:平均值預(yù)期結(jié)果:平均值=999,總計(jì)數(shù)取初始值。,總計(jì)數(shù)取初始值。path3:輸入數(shù)據(jù):試圖處理:輸入數(shù)據(jù):試圖處理101個(gè)或更多的值,而前個(gè)或更多的值,而前100個(gè)應(yīng)當(dāng)是有個(gè)應(yīng)當(dāng)是有效的值。效的值。預(yù)期結(jié)果:與測(cè)試用例預(yù)期結(jié)果:與測(cè)試用例1相同。相同。6.3 基本路徑測(cè)試path4:輸入數(shù)據(jù):輸入數(shù)據(jù):valuei=有效輸入,且有效輸入,且i100valuek最小值,當(dāng)最小值,當(dāng)ki時(shí)時(shí)預(yù)期結(jié)果:預(yù)期結(jié)果:n個(gè)值的正確的平均值,正確的總計(jì)數(shù)個(gè)值的正確的平均值,正確的總計(jì)數(shù)path5:輸入數(shù)據(jù):輸入數(shù)據(jù):valuei=有效輸入,且有效輸入,且i最大值,當(dāng)最大值,當(dāng)ki時(shí)時(shí)預(yù)期結(jié)果:預(yù)期結(jié)果:n個(gè)值的正確的平均值,正確的總計(jì)數(shù)個(gè)值的正確的平均值,正確的總計(jì)數(shù)path6:輸入數(shù)據(jù):輸入數(shù)據(jù):valuei=有效輸入,且有效輸入,且i100預(yù)期結(jié)果:預(yù)期結(jié)果:n個(gè)值的正確的平均值,正確的總計(jì)數(shù)個(gè)值的正確的平均值,正確的總計(jì)數(shù)每個(gè)測(cè)試用例執(zhí)行之后,與預(yù)期結(jié)果進(jìn)行比較。如果所有每個(gè)測(cè)試用例執(zhí)行之后,與預(yù)期結(jié)果進(jìn)行比較。如果所有測(cè)試用例都執(zhí)行完畢,則可以確信程序中所有的可執(zhí)行語(yǔ)句測(cè)試用例都執(zhí)行完畢,則可以確信程序中所有的可執(zhí)行語(yǔ)句至少被執(zhí)行了一次。但是必須注意的是,一些獨(dú)立的路徑至少被執(zhí)行了一次。但是必須注意的是,一些獨(dú)立的路徑(如此例中的路徑(如此例中的路徑1),往往不是完全孤立的,有時(shí)它是程序),往往不是完全孤立的,有時(shí)它是程序正常的控制流的一部分,這時(shí),這些路徑的測(cè)試可以是另一正常的控制流的一部分,這時(shí),這些路徑的測(cè)試可以是另一條路徑測(cè)試的一部分。條路徑測(cè)試的一部分。5.圖形矩陣圖形矩陣圖形矩陣圖形矩陣是在基本路徑測(cè)試中起輔助作用的軟件工具,是在基本路徑測(cè)試中起輔助作用的軟件工具,利用它可以實(shí)現(xiàn)自動(dòng)地確定一個(gè)基本路徑集。一個(gè)圖形矩利用它可以實(shí)現(xiàn)自動(dòng)地確定一個(gè)基本路徑集。一個(gè)圖形矩陣是一個(gè)方陣,其行陣是一個(gè)方陣,其行/列數(shù)等于控制流圖中的結(jié)點(diǎn)數(shù)。每行列數(shù)等于控制流圖中的結(jié)點(diǎn)數(shù)。每行和每列依次對(duì)應(yīng)到一個(gè)被標(biāo)識(shí)的結(jié)點(diǎn),矩陣元素對(duì)應(yīng)到結(jié)和每列依次對(duì)應(yīng)到一個(gè)被標(biāo)識(shí)的結(jié)點(diǎn),矩陣元素對(duì)應(yīng)到結(jié)點(diǎn)間的連接(即邊)。下圖所示為一個(gè)簡(jiǎn)單的控制流圖點(diǎn)間的連接(即邊)。下圖所示為一個(gè)簡(jiǎn)單的控制流圖和它所對(duì)應(yīng)的圖形矩陣。在此圖中,控制流圖的每一個(gè)結(jié)和它所對(duì)應(yīng)的圖形矩陣。在此圖中,控制流圖的每一個(gè)結(jié)點(diǎn)都用數(shù)字加以標(biāo)識(shí),每一條邊都用字母加以標(biāo)識(shí)。如果點(diǎn)都用數(shù)字加以標(biāo)識(shí),每一條邊都用字母加以標(biāo)識(shí)。如果在控制流圖中第在控制流圖中第i個(gè)結(jié)點(diǎn)到第個(gè)結(jié)點(diǎn)到第j個(gè)結(jié)點(diǎn)有一條名為個(gè)結(jié)點(diǎn)有一條名為x的邊相連的邊相連接,則在對(duì)應(yīng)的圖形矩陣中第接,則在對(duì)應(yīng)的圖形矩陣中第i行行/第第j列有一個(gè)非空的元素列有一個(gè)非空的元素x。6.3 基本路徑測(cè)試在控制流圖中對(duì)每一條邊加上一個(gè)連接權(quán),圖形矩陣就成為測(cè)試過(guò)程在控制流圖中對(duì)每一條邊加上一個(gè)連接權(quán),圖形矩陣就成為測(cè)試過(guò)程中評(píng)價(jià)程序控制結(jié)構(gòu)的工具。連接權(quán)提供了關(guān)于控制流的附加信息。中評(píng)價(jià)程序控制結(jié)構(gòu)的工具。連接權(quán)提供了關(guān)于控制流的附加信息。最簡(jiǎn)單的情形,連接權(quán)為最簡(jiǎn)單的情形,連接權(quán)為“1”,表示存在一個(gè)連接,或者為,表示存在一個(gè)連接,或者為“0”,表,表示示不存在一個(gè)連接。但在其他情況,連接權(quán)可以表示如下特性:連接不存在一個(gè)連接。但在其他情況,連接權(quán)可以表示如下特性:連接(邊)執(zhí)行的可能性(概率)、通過(guò)一個(gè)連接需花費(fèi)的時(shí)間、在通過(guò)(邊)執(zhí)行的可能性(概率)、通過(guò)一個(gè)連接需花費(fèi)的時(shí)間、在通過(guò)一個(gè)連接時(shí)所需的存儲(chǔ)、在通過(guò)一個(gè)連接時(shí)所需的資源一個(gè)連接時(shí)所需的存儲(chǔ)、在通過(guò)一個(gè)連接時(shí)所需的資源。6.3 基本路徑測(cè)試為了舉例說(shuō)明,用最簡(jiǎn)單的權(quán)限(為了舉例說(shuō)明,用最簡(jiǎn)單的權(quán)限(0或者或者1)來(lái)表明連接。下圖為上)來(lái)表明連接。下圖為上圖圖形矩陣改畫(huà)后的結(jié)果。每個(gè)字母用圖圖形矩陣改畫(huà)后的結(jié)果。每個(gè)字母用“1”取代,表明存在一個(gè)連接。取代,表明存在一個(gè)連接。在圖中,在圖中,“0”未畫(huà)出。采用這種表示時(shí),圖形矩陣稱為連接矩陣。未畫(huà)出。采用這種表示時(shí),圖形矩陣稱為連接矩陣。圖中,若一行有圖中,若一行有2個(gè)或更多的元素,則這行所代表的結(jié)點(diǎn)一定是判定個(gè)或更多的元素,則這行所代表的結(jié)點(diǎn)一定是判定結(jié)點(diǎn)。因而通過(guò)計(jì)算排列在連接矩陣右邊的算式,可以得到確定該圖環(huán)結(jié)點(diǎn)。因而通過(guò)計(jì)算排列在連接矩陣右邊的算式,可以得到確定該圖環(huán)路復(fù)雜性的另一種方法。路復(fù)雜性的另一種方法。6.3 基本路徑測(cè)試等價(jià)類劃分是一種典型的黑盒測(cè)試方法,也是一種非常實(shí)等價(jià)類劃分是一種典型的黑盒測(cè)試方法,也是一種非常實(shí)用的重要測(cè)試方法用的重要測(cè)試方法,它是用來(lái)解決如何選擇適當(dāng)?shù)淖蛹?,使它是用?lái)解決如何選擇適當(dāng)?shù)淖蛹?,使其盡可能多地發(fā)現(xiàn)錯(cuò)誤。使用這一方法設(shè)計(jì)測(cè)試用例要經(jīng)其盡可能多地發(fā)現(xiàn)錯(cuò)誤。使用這一方法設(shè)計(jì)測(cè)試用例要經(jīng)歷劃分等價(jià)類(列出等價(jià)類表)和選取測(cè)試用例兩步。歷劃分等價(jià)類(列出等價(jià)類表)和選取測(cè)試用例兩步。1.劃分等價(jià)類劃分等價(jià)類所謂所謂等價(jià)類等價(jià)類是指某個(gè)輸入域的子集合。在該子集合中,是指某個(gè)輸入域的子集合。在該子集合中,各個(gè)輸入數(shù)據(jù)對(duì)于揭露程序中的錯(cuò)誤都是等效的,并合理各個(gè)輸入數(shù)據(jù)對(duì)于揭露程序中的錯(cuò)誤都是等效的,并合理地假定:測(cè)試某等價(jià)類的代表值等價(jià)于對(duì)這一類其他值的地假定:測(cè)試某等價(jià)類的代表值等價(jià)于對(duì)這一類其他值的測(cè)試。或者說(shuō),如果某個(gè)等價(jià)類中的一個(gè)數(shù)據(jù)作為測(cè)試數(shù)測(cè)試?;蛘哒f(shuō),如果某個(gè)等價(jià)類中的一個(gè)數(shù)據(jù)作為測(cè)試數(shù)據(jù)進(jìn)行測(cè)試查出了錯(cuò)誤,那么使用這一等價(jià)類中的其他數(shù)據(jù)進(jìn)行測(cè)試查出了錯(cuò)誤,那么使用這一等價(jià)類中的其他數(shù)6.4 黑盒測(cè)試的測(cè)試用例設(shè)計(jì)等價(jià)類劃分等價(jià)類劃分據(jù)進(jìn)行測(cè)試也會(huì)查出同樣的錯(cuò)誤;反之,若使用某個(gè)等價(jià)類據(jù)進(jìn)行測(cè)試也會(huì)查出同樣的錯(cuò)誤;反之,若使用某個(gè)等價(jià)類中的一個(gè)數(shù)據(jù)作為測(cè)試數(shù)據(jù)進(jìn)行測(cè)試沒(méi)有查出錯(cuò)誤,則使中的一個(gè)數(shù)據(jù)作為測(cè)試數(shù)據(jù)進(jìn)行測(cè)試沒(méi)有查出錯(cuò)誤,則使用這個(gè)等價(jià)類中的其他數(shù)據(jù)也同樣查不出錯(cuò)誤。用這個(gè)等價(jià)類中的其他數(shù)據(jù)也同樣查不出錯(cuò)誤。等價(jià)類的劃分有兩種不同的情況。等價(jià)類的劃分有兩種不同的情況。(1)有效等價(jià)類:是指對(duì)于程序的規(guī)格說(shuō)明來(lái)說(shuō),是合理)有效等價(jià)類:是指對(duì)于程序的規(guī)格說(shuō)明來(lái)說(shuō),是合理的、有意義的輸入數(shù)據(jù)構(gòu)成的集合。利用它,可以檢的、有意義的輸入數(shù)據(jù)構(gòu)成的集合。利用它,可以檢驗(yàn)程序是否實(shí)現(xiàn)了規(guī)格說(shuō)明預(yù)先規(guī)定的功能和性能。驗(yàn)程序是否實(shí)現(xiàn)了規(guī)格說(shuō)明預(yù)先規(guī)定的功能和性能。(2)無(wú)效等價(jià)類:是指對(duì)于程序的規(guī)格說(shuō)明來(lái)說(shuō),是不合)無(wú)效等價(jià)類:是指對(duì)于程序的規(guī)格說(shuō)明來(lái)說(shuō),是不合理的、無(wú)意義的輸入數(shù)據(jù)構(gòu)成的集合。程序員主要利理的、無(wú)意義的輸入數(shù)據(jù)構(gòu)成的集合。程序員主要利用這一類測(cè)試用例檢查程序中功能和性能的實(shí)現(xiàn)是否用這一類測(cè)試用例檢查程序中功能和性能的實(shí)現(xiàn)是否有不符合規(guī)格說(shuō)明要求的地方。有不符合規(guī)格說(shuō)明要求的地方。6.4 黑盒測(cè)試的測(cè)試用例設(shè)計(jì)在設(shè)計(jì)測(cè)試用例時(shí),要同時(shí)考慮有效等價(jià)類和無(wú)效等價(jià)類的在設(shè)計(jì)測(cè)試用例時(shí),要同時(shí)考慮有效等價(jià)類和無(wú)效等價(jià)類的設(shè)計(jì)。軟件不能都只接受合理的數(shù)據(jù),還要經(jīng)受意外的考設(shè)計(jì)。軟件不能都只接受合理的數(shù)據(jù),還要經(jīng)受意外的考驗(yàn),檢驗(yàn)出無(wú)效的或不合理的數(shù)據(jù),這樣的軟件測(cè)試才是全驗(yàn),檢驗(yàn)出無(wú)效的或不合理的數(shù)據(jù),這樣的軟件測(cè)試才是全面的。面的。以下結(jié)合具體實(shí)例給出幾條劃分等價(jià)類的原則。以下結(jié)合具體實(shí)例給出幾條劃分等價(jià)類的原則。(1)如果輸入數(shù)據(jù)規(guī)定了取值范圍或值的個(gè)數(shù),則可以確)如果輸入數(shù)據(jù)規(guī)定了取值范圍或值的個(gè)數(shù),則可以確定一個(gè)有效等價(jià)類和兩個(gè)無(wú)效等價(jià)類。例如,在程序定一個(gè)有效等價(jià)類和兩個(gè)無(wú)效等價(jià)類。例如,在程序的規(guī)格說(shuō)明中,對(duì)輸入數(shù)據(jù)有一句話:的規(guī)格說(shuō)明中,對(duì)輸入數(shù)據(jù)有一句話:“項(xiàng)數(shù)可以從項(xiàng)數(shù)可以從1到到999”則有效等價(jià)類是則有效等價(jià)類是“1項(xiàng)數(shù)項(xiàng)數(shù)999”,兩個(gè)無(wú)效等價(jià)類是,兩個(gè)無(wú)效等價(jià)類是“項(xiàng)數(shù)項(xiàng)數(shù)999”。在數(shù)軸上表示為。在數(shù)軸上表示為6.4 黑盒測(cè)試的測(cè)試用例設(shè)計(jì)(2)如果規(guī)格說(shuō)明規(guī)定了數(shù)據(jù)值的集合,或者是規(guī)定了)如果規(guī)格說(shuō)明規(guī)定了數(shù)據(jù)值的集合,或者是規(guī)定了“必須如何必須如何”的條件,這時(shí)可確定一個(gè)有效等價(jià)類和一的條件,這時(shí)可確定一個(gè)有效等價(jià)類和一個(gè)無(wú)效等價(jià)類。例如,在個(gè)無(wú)效等價(jià)類。例如,在PASCAL語(yǔ)言中對(duì)變量標(biāo)識(shí)語(yǔ)言中對(duì)變量標(biāo)識(shí)符規(guī)定為符規(guī)定為“以字母打頭的以字母打頭的串串”,那么所有以字母,那么所有以字母打打頭的串構(gòu)成有效等價(jià)類,而不在此集合內(nèi)(不以字母頭的串構(gòu)成有效等價(jià)類,而不在此集合內(nèi)(不以字母打打頭)的串歸于無(wú)效等價(jià)類。頭)的串歸于無(wú)效等價(jià)類。(3)如果規(guī)格說(shuō)明中規(guī)定的是一個(gè)條件數(shù)據(jù),則可確定一)如果規(guī)格說(shuō)明中規(guī)定的是一個(gè)條件數(shù)據(jù),則可確定一個(gè)有效等價(jià)類和一個(gè)無(wú)效等價(jià)類。例如:個(gè)有效等價(jià)類和一個(gè)無(wú)效等價(jià)類。例如:“成人成人(年滿(年滿18歲)須歲)須”,則考慮成人為一有效等價(jià)類;,則考慮成人為一有效等價(jià)類;未滿未滿18歲者為無(wú)效等價(jià)類。歲者為無(wú)效等價(jià)類。(4)如果我們確知,已劃分的等價(jià)類中各元素在程序中的)如果我們確知,已劃分的等價(jià)類中各元素在程序中的處理方式不同,則應(yīng)將此等價(jià)類進(jìn)一步劃分成更小的處理方式不同,則應(yīng)將此等價(jià)類進(jìn)一步劃分成更小的等價(jià)類。等價(jià)類。6.4 黑盒測(cè)試的測(cè)試用例設(shè)計(jì)2.確定測(cè)試用例確定測(cè)試用例在確定了等價(jià)類之后,建立等價(jià)類表,列出所有劃分出的在確定了等價(jià)類之后,建立等價(jià)類表,列出所有劃分出的等價(jià)類如下:等價(jià)類如下:6.4 黑盒測(cè)試的測(cè)試用例設(shè)計(jì)再?gòu)膭澐殖龅牡葍r(jià)類中按以下原則選擇測(cè)試用例。再?gòu)膭澐殖龅牡葍r(jià)類中按以下原則選擇測(cè)試用例。(1)為每一個(gè)等價(jià)類規(guī)定一個(gè)唯一的編號(hào)。)為每一個(gè)等價(jià)類規(guī)定一個(gè)唯一的編號(hào)。(2)設(shè)計(jì)一個(gè)新的測(cè)試用例,使其盡可能多地覆蓋尚未被)設(shè)計(jì)一個(gè)新的測(cè)試用例,使其盡可能多地覆蓋尚未被覆蓋的有效等價(jià)類,重復(fù)這一步,直到所有的有效等覆蓋的有效等價(jià)類,重復(fù)這一步,直到所有的有效等價(jià)類都被覆蓋為止。價(jià)類都被覆蓋為止。(3)設(shè)計(jì)一個(gè)新的測(cè)試用例,使其僅覆蓋一個(gè)尚未被覆蓋)設(shè)計(jì)一個(gè)新的測(cè)試用例,使其僅覆蓋一個(gè)尚未被覆蓋的無(wú)效等價(jià)類,重復(fù)這一步,直到所有的無(wú)效等價(jià)類的無(wú)效等價(jià)類,重復(fù)這一步,直到所有的無(wú)效等價(jià)類都被覆蓋為止。都被覆蓋為止。上述原則中,(上述原則中,(2)完全是為了把測(cè)試工作量減到最小,)完全是為了把測(cè)試工作量減到最小,(3)則可把多個(gè)錯(cuò)誤分開(kāi)。例如,學(xué)校領(lǐng)導(dǎo)分為校長(zhǎng)、副)則可把多個(gè)錯(cuò)誤分開(kāi)。例如,學(xué)校領(lǐng)導(dǎo)分為校長(zhǎng)、副校長(zhǎng)、書(shū)記、副書(shū)記,年齡(校長(zhǎng)、書(shū)記、副書(shū)記,年齡(AGE)在)在25AGE75。若。若給出一個(gè)無(wú)效等價(jià)類的測(cè)試用例為(婦聯(lián)主任,給出一個(gè)無(wú)效等價(jià)類的測(cè)試用例為(婦聯(lián)主任,5歲),它歲),它覆蓋了兩個(gè)錯(cuò)誤的輸入條件(職務(wù),年齡),但當(dāng)程序檢覆蓋了兩個(gè)錯(cuò)誤的輸入條件(職務(wù),年齡),但當(dāng)程序檢查到職務(wù)時(shí)發(fā)現(xiàn)了錯(cuò)誤,就可能不再去檢查年齡錯(cuò)誤,因查到職務(wù)時(shí)發(fā)現(xiàn)了錯(cuò)誤,就可能不再去檢查年齡錯(cuò)誤,因此必須針對(duì)每一個(gè)無(wú)效等價(jià)類,分別設(shè)計(jì)測(cè)試用例。此必須針對(duì)每一個(gè)無(wú)效等價(jià)類,分別設(shè)計(jì)測(cè)試用例。6.4 黑盒測(cè)試的測(cè)試用例設(shè)計(jì)6.4 黑盒測(cè)試的測(cè)試用例設(shè)計(jì)3.用等價(jià)類劃分法設(shè)計(jì)測(cè)試用例的實(shí)例用等價(jià)類劃分法設(shè)計(jì)測(cè)試用例的實(shí)例 在某一在某一PASCAL語(yǔ)言版本中規(guī)定:語(yǔ)言版本中規(guī)定:“標(biāo)識(shí)符是由字母開(kāi)頭、后跟字母標(biāo)識(shí)符是由字母開(kāi)頭、后跟字母或數(shù)字的任意組合構(gòu)成。有效字符數(shù)為或數(shù)字的任意組合構(gòu)成。有效字符數(shù)為8個(gè),最大字符數(shù)為個(gè),最大字符數(shù)為80個(gè)。個(gè)?!辈⒉⑶乙?guī)定:且規(guī)定:“標(biāo)識(shí)符必須先說(shuō)明,再使用。標(biāo)識(shí)符必須先說(shuō)明,再使用?!薄霸谕徽f(shuō)明語(yǔ)句中,標(biāo)識(shí)在同一說(shuō)明語(yǔ)句中,標(biāo)識(shí)符至少必須有一個(gè)。符至少必須有一個(gè)?!睘橛玫葍r(jià)類劃分的方法得到上述規(guī)格說(shuō)明所規(guī)定的要求,本著前述的為用等價(jià)類劃分的方法得到上述規(guī)格說(shuō)明所規(guī)定的要求,本著前述的劃分原則,建立輸入等價(jià)類表,如下表所示(表中括號(hào)中的數(shù)字為等價(jià)劃分原則,建立輸入等價(jià)類表,如下表所示(表中括號(hào)中的數(shù)字為等價(jià)類編號(hào))。類編號(hào))。下面選取了下面選取了8個(gè)測(cè)試用例,它們覆蓋了所有的等價(jià)類。個(gè)測(cè)試用例,它們覆蓋了所有的等價(jià)類。VARx,T1234567:REAL;(1)()(2)()(4)()(7)()(8)()(11)(13)BEGINx:=3.414;T1234567:=2.732;VAR:REAL;(3)VARx,:,:REAL;(5)VART12345:REAL;(6)多于)多于80個(gè)字符個(gè)字符VART$:CHAR;(9)VARGOTO:INTEGER;(10)VAR2T:REAL;(12)VARPAR:REAL;(14)BEGINPAP:=SIN(3.14*0.8)/6;6.4 黑盒測(cè)試的測(cè)試用例設(shè)計(jì)6.4 黑盒測(cè)試的測(cè)試用例設(shè)計(jì)邊界值分析邊界值分析1.邊界值分析方法的考慮邊界值分析方法的考慮 邊界值分析邊界值分析也是一種黑盒測(cè)試方法,是對(duì)等價(jià)類劃分方法也是一種黑盒測(cè)試方法,是對(duì)等價(jià)類劃分方法的補(bǔ)充。人們從長(zhǎng)期的測(cè)試工作經(jīng)驗(yàn)中得知,大量的錯(cuò)誤是的補(bǔ)充。人們從長(zhǎng)期的測(cè)試工作經(jīng)驗(yàn)中得知,大量的錯(cuò)誤是發(fā)生在輸入或輸出范圍的邊界上,而不是在輸入范圍的內(nèi)部,發(fā)生在輸入或輸出范圍的邊界上,而不是在輸入范圍的內(nèi)部,因此,針對(duì)各種邊界情況設(shè)計(jì)測(cè)試用例,可以查出許多容易因此,針對(duì)各種邊界情況設(shè)計(jì)測(cè)試用例,可以查出許多容易發(fā)生的錯(cuò)誤。這里所說(shuō)的邊界是指,相當(dāng)于輸入等價(jià)類和輸發(fā)生的錯(cuò)誤。這里所說(shuō)的邊界是指,相當(dāng)于輸入等價(jià)類和輸出等價(jià)類而言,稍高于其邊界值及稍低于其邊界值的一些特出等價(jià)類而言,稍高于其邊界值及稍低于其邊界值的一些特定情況。定情況。使用邊界值分析方法設(shè)計(jì)測(cè)試用例,首先應(yīng)分析邊界情況。使用邊界值分析方法設(shè)計(jì)測(cè)試用例,首先應(yīng)分析邊界情況。通常輸入等價(jià)類與輸出等價(jià)類的邊界是需要認(rèn)真考慮的。應(yīng)通常輸入等價(jià)類與輸出等價(jià)類的邊界是需要認(rèn)真考慮的。應(yīng)當(dāng)選取正好等于、剛剛大于或剛剛小于邊界的值作為測(cè)試數(shù)當(dāng)選取正好等于、剛剛大于或剛剛小于邊界的值作為測(cè)試數(shù)據(jù),而不是選取等價(jià)類中的典型值或任意值作為測(cè)試數(shù)據(jù)。據(jù),而不是選取等價(jià)類中的典型值或任意值作為測(cè)試數(shù)據(jù)。6.4 黑盒測(cè)試的測(cè)試用例設(shè)計(jì)2.選擇測(cè)試用例的原則選擇測(cè)試用例的原則(1)如果輸入數(shù)據(jù)規(guī)定了值的范圍,則應(yīng)取剛達(dá)到這個(gè)范圍的邊界)如果輸入數(shù)據(jù)規(guī)定了值的范圍,則應(yīng)取剛達(dá)到這個(gè)范圍的邊界的值,以及剛剛超越這個(gè)范圍邊界的值作為測(cè)試輸入數(shù)據(jù)。例如,的值,以及剛剛超越這個(gè)范圍邊界的值作為測(cè)試輸入數(shù)據(jù)
收藏
編號(hào):65494723
類型:共享資源
大?。?span id="mzebxcnn0" class="font-tahoma">6.60MB
格式:ZIP
上傳時(shí)間:2022-03-24
40
積分
- 關(guān) 鍵 詞:
-
軟件工程基礎(chǔ)
軟件工程
基礎(chǔ)
全套
PPT
課件
- 資源描述:
-
《軟件工程基礎(chǔ)》全套PPT課件,軟件工程基礎(chǔ),軟件工程,基礎(chǔ),全套,PPT,課件
展開(kāi)閱讀全文
- 溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學(xué)習(xí)交流,未經(jīng)上傳用戶書(shū)面授權(quán),請(qǐng)勿作他用。