軟件工程第12章課件_第1頁
軟件工程第12章課件_第2頁
軟件工程第12章課件_第3頁
軟件工程第12章課件_第4頁
軟件工程第12章課件_第5頁
已閱讀5頁,還剩245頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第12章 軟件測(cè)試軟件測(cè)試是對(duì)軟件規(guī)格說明、軟件設(shè)計(jì)和編碼的最全面也是最后的審查。通過軟件測(cè)試,可以發(fā)現(xiàn)軟件中絕大部分潛伏的錯(cuò)誤,從而可以大大提高軟件產(chǎn)品的正確性、可靠性,進(jìn)而可顯著提高產(chǎn)品質(zhì)量。統(tǒng)計(jì)表明,軟件測(cè)試工作往往占軟件開發(fā)總工作量的40%以上。甚至3~5倍以上。第12章 軟件測(cè)試軟件測(cè)試是對(duì)軟件規(guī)格說明、軟件設(shè)計(jì)和編碼的1第12章 軟件測(cè)試本章將介紹:軟件測(cè)試的基本知識(shí);軟件測(cè)試的常用方法和技術(shù);軟件測(cè)試的過程;軟件的調(diào)試與排錯(cuò)技術(shù);軟件測(cè)試的工具。第12章 軟件測(cè)試本章將介紹:2第12章 軟件測(cè)試12.1軟件測(cè)試的基本知識(shí)12.2軟件測(cè)試技術(shù)12.3軟件測(cè)試過程12.4調(diào)試12.5測(cè)試工具第12章 軟件測(cè)試12.1軟件測(cè)試的基本知識(shí)312.1軟件測(cè)試的基本知識(shí)軟件測(cè)試是執(zhí)行程序發(fā)現(xiàn)并排除程序中潛伏的錯(cuò)誤的過程。軟件測(cè)試是軟件投入運(yùn)行前,對(duì)軟件需求分析、設(shè)計(jì)、實(shí)現(xiàn)的強(qiáng)有力的最終審查。12.1軟件測(cè)試的基本知識(shí)軟件測(cè)試是執(zhí)行程序發(fā)現(xiàn)并排除程412.1.1軟件測(cè)試的目標(biāo)與原則測(cè)試用例——為了進(jìn)行有效的測(cè)試而設(shè)計(jì)的輸入數(shù)據(jù)和預(yù)期的輸出結(jié)果數(shù)據(jù)。Myers在其軟件測(cè)試著作中對(duì)軟件測(cè)試的目標(biāo)提出以下觀點(diǎn):①軟件測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而運(yùn)行程序的過程;②一個(gè)好的測(cè)試用例能夠發(fā)現(xiàn)至今尚未發(fā)現(xiàn)的錯(cuò)誤;③一個(gè)成功的測(cè)試是發(fā)現(xiàn)了至今尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。12.1.1軟件測(cè)試的目標(biāo)與原則測(cè)試用例——為了進(jìn)行有效5測(cè)試原則①應(yīng)盡早和不斷地進(jìn)行軟件“測(cè)試”,即將這種“測(cè)試”貫穿于軟件開發(fā)的各個(gè)階段,堅(jiān)持各個(gè)階段的技術(shù)評(píng)審,以便盡早地發(fā)現(xiàn)和預(yù)防錯(cuò)誤。②測(cè)試用例中,不僅要選擇合理的輸入數(shù)據(jù),還要選擇不合理的輸入數(shù)據(jù)。③在開發(fā)各階段應(yīng)事先分別制定出相應(yīng)的測(cè)試計(jì)劃,在測(cè)試開始后應(yīng)嚴(yán)格執(zhí)行,防止隨意性。④對(duì)發(fā)現(xiàn)錯(cuò)誤較多的程序模塊,應(yīng)進(jìn)行重點(diǎn)測(cè)試。Pareto指出,測(cè)試發(fā)現(xiàn)錯(cuò)誤的80%集中在20%的模塊中。發(fā)現(xiàn)錯(cuò)誤較多的模塊質(zhì)量較差,需重點(diǎn)測(cè)試,并要測(cè)試是否引入了新的錯(cuò)誤。測(cè)試原則①應(yīng)盡早和不斷地進(jìn)行軟件“測(cè)試”,即將這種“測(cè)試”貫6測(cè)試原則⑤避免程序員測(cè)試自己的程序。測(cè)試用例的設(shè)計(jì)應(yīng)有第三方參與。對(duì)于大型軟件的測(cè)試,一般的做法是:設(shè)計(jì)者與測(cè)試者共同完成單元測(cè)試任務(wù),而綜合測(cè)試由專門的測(cè)試機(jī)構(gòu)負(fù)責(zé),有時(shí)其中也可以有設(shè)計(jì)者參加⑥用窮舉測(cè)試是不現(xiàn)實(shí)的,一般通過設(shè)計(jì)測(cè)試用例,充分覆蓋所有條件或所有語句即可。⑦長期妥善保存測(cè)試計(jì)劃、測(cè)試用例、出錯(cuò)統(tǒng)計(jì)和有關(guān)的分析報(bào)告。測(cè)試原則⑤避免程序員測(cè)試自己的程序。712.1.2軟件測(cè)試的步驟圖14-1-1測(cè)試步驟部件代碼部件代碼單元測(cè)試單元測(cè)試單元測(cè)試…部件代碼集成測(cè)試功能測(cè)試性能測(cè)試驗(yàn)收測(cè)試安裝測(cè)試設(shè)計(jì)規(guī)格說明系統(tǒng)功能需求其他軟件需求用戶需求規(guī)格說明用戶環(huán)境集成后的模塊功能系統(tǒng)驗(yàn)證,生效的軟件被接受的系統(tǒng)在使用中的系統(tǒng)測(cè)試后的模塊12.1.2軟件測(cè)試的步驟圖14-1-1測(cè)試步驟部件812.1.2軟件測(cè)試的步驟在本書中,從軟件工程的角度:將單元測(cè)試與詳細(xì)設(shè)計(jì)對(duì)應(yīng)起來,即在詳細(xì)設(shè)計(jì)階段就應(yīng)制定出單元測(cè)試計(jì)劃;而集成測(cè)試又稱為綜合測(cè)試,可以把概要設(shè)計(jì)和集成測(cè)試對(duì)應(yīng)起來,在概要設(shè)計(jì)階段就可以制定集成測(cè)試計(jì)劃;將功能測(cè)試、性能(行為)測(cè)試、驗(yàn)收測(cè)試統(tǒng)稱為驗(yàn)收測(cè)試(也稱確認(rèn)測(cè)試),與軟件系統(tǒng)需求分析階段對(duì)應(yīng)起來,在需求分析階段就應(yīng)制定出驗(yàn)收準(zhǔn)則和驗(yàn)收測(cè)試計(jì)劃,驗(yàn)收測(cè)試應(yīng)提交經(jīng)用戶確認(rèn)的軟件產(chǎn)品;最后,將軟件、硬件等要素構(gòu)成一個(gè)完整的基于計(jì)算機(jī)的系統(tǒng),再進(jìn)行系統(tǒng)測(cè)試,使系統(tǒng)測(cè)試與系統(tǒng)定義相對(duì)應(yīng),即在系統(tǒng)定義階段就應(yīng)制定系統(tǒng)測(cè)試計(jì)劃。12.1.2軟件測(cè)試的步驟在本書中,從軟件工程的角度:912.1.2軟件測(cè)試的步驟圖14-1-2軟件工程的開發(fā)與測(cè)試的關(guān)系系統(tǒng)工程需求分析概要設(shè)計(jì)設(shè)計(jì)、編碼單元測(cè)試集成測(cè)試驗(yàn)收測(cè)試系統(tǒng)測(cè)試12.1.2軟件測(cè)試的步驟圖14-1-2軟件工程的開1012.1.3測(cè)試階段的信息流圖14-1-3測(cè)試階段的信息流測(cè)試評(píng)價(jià)排錯(cuò)可靠性模型軟件配置測(cè)試配置測(cè)試結(jié)果錯(cuò)誤錯(cuò)誤統(tǒng)計(jì)預(yù)期結(jié)果正確的程序可靠性預(yù)測(cè)12.1.3測(cè)試階段的信息流圖14-1-3測(cè)試階段的1112.1.3測(cè)試階段的信息流測(cè)試的輸入流有軟件配置和測(cè)試配置。軟件配置由需求規(guī)格說明、設(shè)計(jì)說明、源代碼等組成;測(cè)試配置包括測(cè)試計(jì)劃、測(cè)試用例(其中包括預(yù)期的結(jié)果)、測(cè)試工具等組成。12.1.3測(cè)試階段的信息流測(cè)試的輸入流有軟件配置和測(cè)試12測(cè)試結(jié)果評(píng)價(jià)經(jīng)常發(fā)現(xiàn)嚴(yán)重的錯(cuò)誤并需要修改軟件,則軟件的質(zhì)量和可靠性一定不高,需要進(jìn)一步測(cè)試;如果測(cè)試所發(fā)現(xiàn)的錯(cuò)誤不多且易于改正,軟件功能看起來也較完善,則需考慮兩種可能:1)軟件質(zhì)量和可靠性確實(shí)令人滿意;2)測(cè)試不全面,很可能還潛伏著嚴(yán)重錯(cuò)誤;如果測(cè)試過程沒有發(fā)現(xiàn)任何錯(cuò)誤,則很有可能是測(cè)試配置不合理。測(cè)試結(jié)果評(píng)價(jià)經(jīng)常發(fā)現(xiàn)嚴(yán)重的錯(cuò)誤并需要修改軟件,則軟件的質(zhì)量和1312.1.4軟件測(cè)試的常用方法1.靜態(tài)測(cè)試靜態(tài)測(cè)試是采用人工檢測(cè)和計(jì)算機(jī)輔助靜態(tài)分析的方法對(duì)程序進(jìn)行檢測(cè)。人工檢測(cè)是指靠人工走查程序或評(píng)審軟件。這種走查與評(píng)審主要針對(duì)編碼的質(zhì)量和軟件開發(fā)各個(gè)階段的文檔,特別是總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)階段的錯(cuò)誤。能發(fā)現(xiàn)30%~70%的邏輯設(shè)計(jì)和編碼錯(cuò)誤。計(jì)算機(jī)輔助靜態(tài)分析是指利用靜態(tài)分析軟件工具對(duì)程序進(jìn)行靜態(tài)分析,主要檢測(cè)變量是否用錯(cuò)、參數(shù)是否匹配、循環(huán)嵌套是否有錯(cuò)、是否有死循環(huán)和永遠(yuǎn)執(zhí)行不到的死代碼等等。同時(shí),它還可對(duì)程序的特性進(jìn)行分析。12.1.4軟件測(cè)試的常用方法1.靜態(tài)測(cè)試1412.1.4軟件測(cè)試的常用方法2.動(dòng)態(tài)測(cè)試動(dòng)態(tài)測(cè)試是指事先設(shè)計(jì)好一組測(cè)試用例,然后通過運(yùn)行程序來發(fā)現(xiàn)錯(cuò)誤。動(dòng)態(tài)測(cè)試有兩種測(cè)試方法:黑盒測(cè)試;白盒測(cè)試。12.1.4軟件測(cè)試的常用方法2.動(dòng)態(tài)測(cè)試1512.1.4軟件測(cè)試的常用方法黑盒測(cè)試,又稱為功能測(cè)試——把被測(cè)的程序模塊看成一個(gè)黑匣子,即完全不考慮程序的內(nèi)部結(jié)構(gòu)和處理過程,測(cè)試僅在程序的接口上進(jìn)行。白盒測(cè)試——把被測(cè)的程序看成一個(gè)透明的白匣子,即完全了解程序的內(nèi)部結(jié)構(gòu)和詳細(xì)的處理過程,測(cè)試是在程序的內(nèi)部結(jié)構(gòu)上進(jìn)行。即要求針對(duì)每一條邏輯路徑都要設(shè)計(jì)測(cè)試用例,檢查每一個(gè)分支和每一次循環(huán)的情況。12.1.4軟件測(cè)試的常用方法黑盒測(cè)試,又稱為功能測(cè)試—16窮舉測(cè)試是不現(xiàn)實(shí)的。如上圖,設(shè)循環(huán)體應(yīng)執(zhí)行30次,循環(huán)體中有4個(gè)獨(dú)立的分支,則最多有430≈1018個(gè)邏輯路徑,假設(shè)每運(yùn)行一個(gè)測(cè)試用例平均花費(fèi)1毫秒,則需花費(fèi)3千多萬年。一般選用少量最有效的測(cè)試用例,以便覆蓋每一個(gè)條件、每一個(gè)路徑和每一個(gè)語句,從而以最少的代價(jià)發(fā)現(xiàn)盡可能多的錯(cuò)誤。開始結(jié)束窮舉測(cè)試是不現(xiàn)實(shí)的。如上圖,設(shè)循環(huán)體應(yīng)執(zhí)行30次,循環(huán)體中有1712.1.5軟件測(cè)試中常見的錯(cuò)誤類型按照錯(cuò)誤的影響和造成的后果進(jìn)行分類,可分為:較小錯(cuò)誤,中等錯(cuò)誤,較嚴(yán)重錯(cuò)誤,嚴(yán)重錯(cuò)誤,非常嚴(yán)重的錯(cuò)誤,最嚴(yán)重的錯(cuò)誤。按照軟件生存周期各個(gè)階段分類,可分為:問題定義錯(cuò)誤、需求分析規(guī)格說明錯(cuò)誤、設(shè)計(jì)錯(cuò)誤、編碼錯(cuò)誤等等。這里重點(diǎn)介紹一種按照錯(cuò)誤的性質(zhì)和范圍進(jìn)行分類的方法,可以將錯(cuò)誤分為如下幾類:12.1.5軟件測(cè)試中常見的錯(cuò)誤類型按照錯(cuò)誤的影響和造成18按照錯(cuò)誤的性質(zhì)和范圍進(jìn)行分類1.功能錯(cuò)誤①需求規(guī)格說明錯(cuò)誤。主要是指其中有錯(cuò)誤、多余或遺漏的功能,有二義性或自相矛盾。②設(shè)計(jì)實(shí)現(xiàn)錯(cuò)誤。設(shè)計(jì)或?qū)崿F(xiàn)的功能不是規(guī)格說明或用戶所要求的功能。按照錯(cuò)誤的性質(zhì)和范圍進(jìn)行分類1.功能錯(cuò)誤19按照錯(cuò)誤的性質(zhì)和范圍進(jìn)行分類2.系統(tǒng)錯(cuò)誤①外部接口錯(cuò)誤。如與打印機(jī)的接口錯(cuò)誤。②內(nèi)部接口錯(cuò)誤。指各程序模塊間的聯(lián)系存在錯(cuò)誤。如輸入/輸出、數(shù)據(jù)保護(hù)、子程序訪問等。③硬件結(jié)構(gòu)錯(cuò)誤。如錯(cuò)誤地理解I/O指令、中斷處理、設(shè)備啟動(dòng)和初始化等而引起的錯(cuò)誤。④軟件結(jié)構(gòu)錯(cuò)誤。由于軟件結(jié)構(gòu)不合理或不清晰所引起的錯(cuò)誤。往往在系統(tǒng)滿載時(shí)才能發(fā)現(xiàn)。⑤操作系統(tǒng)錯(cuò)誤。該類錯(cuò)誤是由于不了解操作系統(tǒng)而引起的,操作系統(tǒng)本身也有錯(cuò)誤。⑥控制與順序錯(cuò)誤。包括事件的時(shí)間順序不正確、等待一個(gè)不可能發(fā)生的事件等等。⑦資源管理錯(cuò)誤。既資源使用不當(dāng)。資源死鎖等。按照錯(cuò)誤的性質(zhì)和范圍進(jìn)行分類2.系統(tǒng)錯(cuò)誤20按照錯(cuò)誤的性質(zhì)和范圍進(jìn)行分類3.加工錯(cuò)誤(算法錯(cuò)誤)①計(jì)算與操作錯(cuò)誤。指計(jì)算、函數(shù)求值和一般操作過程中的錯(cuò)誤。②初始化錯(cuò)誤。如忘記了初始化工作區(qū)、數(shù)據(jù)區(qū),錯(cuò)誤地對(duì)循環(huán)變量賦初值,不正確的初始化等等。③局部控制和次序錯(cuò)誤。如遺漏路徑、不可達(dá)到的代碼段、循環(huán)嵌套或終止條件不正確、死循環(huán)等等。④邏輯錯(cuò)誤。如多分支、判斷條件不正確等。按照錯(cuò)誤的性質(zhì)和范圍進(jìn)行分類3.加工錯(cuò)誤(算法錯(cuò)誤)21按照錯(cuò)誤的性質(zhì)和范圍進(jìn)行分類4.?dāng)?shù)據(jù)錯(cuò)誤①動(dòng)態(tài)數(shù)據(jù)錯(cuò)誤。②靜態(tài)數(shù)據(jù)錯(cuò)誤。靜態(tài)數(shù)據(jù)指直接或間接地出現(xiàn)在程序或數(shù)據(jù)庫中的數(shù)據(jù),其內(nèi)容和格式都是固定的。因此在內(nèi)容或格式上都可能存在錯(cuò)誤。③數(shù)據(jù)內(nèi)容錯(cuò)誤。是指由于內(nèi)容被破壞或被錯(cuò)誤地解釋而造成的錯(cuò)誤。④數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤。包括數(shù)據(jù)結(jié)構(gòu)說明錯(cuò)誤和數(shù)據(jù)結(jié)構(gòu)使用錯(cuò)誤。⑤數(shù)據(jù)屬性錯(cuò)誤。數(shù)據(jù)屬性是指數(shù)據(jù)內(nèi)容的含義或語義,如整數(shù)、字符等。數(shù)據(jù)屬性錯(cuò)誤是指對(duì)數(shù)據(jù)屬性的錯(cuò)誤解釋和錯(cuò)誤使用而導(dǎo)致的錯(cuò)誤。按照錯(cuò)誤的性質(zhì)和范圍進(jìn)行分類4.?dāng)?shù)據(jù)錯(cuò)誤22按照錯(cuò)誤的性質(zhì)和范圍進(jìn)行分類5.代碼錯(cuò)誤代碼錯(cuò)誤主要包括語法錯(cuò)誤、鍵入錯(cuò)誤、對(duì)語句的理解錯(cuò)誤等。例如,Myers(1976)指出,美國第一個(gè)去金星的太空任務(wù)的失敗是由于在一個(gè)Fortrando循環(huán)中缺少一個(gè)逗號(hào)。按照錯(cuò)誤的性質(zhì)和范圍進(jìn)行分類5.代碼錯(cuò)誤2312.2軟件測(cè)試技術(shù)

12.2.1白盒測(cè)試

白盒測(cè)試的原則是:①保證程序中每一獨(dú)立的路徑至少執(zhí)行一次;②保證所有判定的每一個(gè)分支至少執(zhí)行一次;③保證每個(gè)判定表達(dá)式中每個(gè)條件的所有可能結(jié)果至少出現(xiàn)一次;④保證每一循環(huán)都在邊界條件和一般條件至少各執(zhí)行一次;⑤驗(yàn)證所有內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性。12.2軟件測(cè)試技術(shù)

12.2.1白盒測(cè)試白盒測(cè)24幾種典型的白盒測(cè)試技術(shù)1.邏輯覆蓋邏輯覆蓋是指設(shè)計(jì)測(cè)試用例對(duì)程序的內(nèi)部分支邏輯結(jié)構(gòu)進(jìn)行部分或全部覆蓋的技術(shù)。1)語句覆蓋2)判定覆蓋3)條件覆蓋4)判定/條件覆蓋5)條件組合覆蓋6)路徑覆蓋邏輯覆蓋幾種典型的白盒測(cè)試技術(shù)1.邏輯覆蓋邏輯覆蓋251)語句覆蓋—使程序中的每個(gè)語句至少執(zhí)行一次。令x=2,y=0,z=4作為測(cè)試數(shù)據(jù),程序執(zhí)行路徑為abcde,使語句段1和2各執(zhí)行一次,實(shí)現(xiàn)了語句覆蓋。它不能檢測(cè)所有判定條件的錯(cuò)誤。比如,錯(cuò)把z>1寫成了z<1,則上述測(cè)試用例就無法檢測(cè)出來了。(x>1)AND(y=0)(x=2)OR(z>1)語句段1語句段2開始結(jié)束TTFFabcde1)語句覆蓋—使程序中的每個(gè)語句至少執(zhí)行一次。令x=2,y262)判定覆蓋——分支覆蓋判定覆蓋是指設(shè)計(jì)足夠多的測(cè)試用例,使每個(gè)判定的每種可能結(jié)果都至少出現(xiàn)一次,也就是使每個(gè)判定的每個(gè)分支都至少執(zhí)行一次。2)判定覆蓋——分支覆蓋判定覆蓋是指設(shè)計(jì)足夠多的測(cè)試用例,使27可以設(shè)計(jì)如下兩組數(shù)據(jù)以滿足判定覆蓋:x=3,y=0,z=1(通過路徑abce);x=2,y=1,z=2(通過路徑acde)。判定覆蓋必然滿足語句覆蓋。覆蓋程度仍然不高。比如,錯(cuò)把z>1寫成了z<1,則上述測(cè)試用例仍無法檢測(cè)出來。因?yàn)樗桓采w了全部路徑的一半。判定覆蓋可以推廣到多分支情況。(x>1)AND(y=0)(x=2)OR(z>1)語句段1語句段2開始結(jié)束TTFFabcde可以設(shè)計(jì)如下兩組數(shù)據(jù)以滿足判定覆蓋:(x>1)AND(y283)條件覆蓋條件覆蓋是指設(shè)計(jì)足夠的測(cè)試用例,使每個(gè)判定表達(dá)式中的每個(gè)條件的每種可能值都至少出現(xiàn)一次。如圖,共有4個(gè)條件:x>1,y=0,x=2,z>1。條件覆蓋要求設(shè)計(jì)測(cè)試用例,覆蓋第一個(gè)判定表達(dá)式的x>1,y=0,x≤1,y≠0等各種結(jié)果,并覆蓋第二個(gè)判定表達(dá)式的x=2,z>1,x≠2,z≤1等各種結(jié)果。(x>1)AND(y=0)(x=2)OR(z>1)語句段1語句段2開始結(jié)束TTFFabcde3)條件覆蓋條件覆蓋是指設(shè)計(jì)足夠的測(cè)試用例,使每個(gè)判定表達(dá)式293)條件覆蓋設(shè)計(jì)如下兩組測(cè)試用例,可以滿足條件覆蓋的標(biāo)準(zhǔn):x=2,y=0,z=3(覆蓋x>1,y=0,x=2,z>1,通過路徑abcde);x=1,y=1,z=1(覆蓋x≤1,y≠0,x≠2,z≤1,通過路徑ace)。(x>1)AND(y=0)(x=2)OR(z>1)語句段1語句段2開始結(jié)束TTFFabcde3)條件覆蓋設(shè)計(jì)如下兩組測(cè)試用例,可以滿足條件覆蓋的標(biāo)準(zhǔn):303)條件覆蓋但是,如果設(shè)計(jì)如下一組測(cè)試用例:x=1,y=0,z=3(覆蓋x≤1,y=0,x≠2,z>1,通過路徑acde);x=2,y=1,z=1(覆蓋x>1,y≠0,x=2,z≤1,通過路徑ace)。雖滿足條件覆蓋,但不滿足語句覆蓋和判定覆蓋。(x>1)AND(y=0)(x=2)OR(z>1)語句段1語句段2開始結(jié)束TTFFabcde3)條件覆蓋但是,如果設(shè)計(jì)如下一組測(cè)試用例:(x>1)A314)判定/條件覆蓋它是指設(shè)計(jì)足夠的測(cè)試用例,使得判定表達(dá)式中的每個(gè)條件都取到所有可能的值(即滿足條件覆蓋),并使每個(gè)判定表達(dá)式也都取到所有可能的判定結(jié)果(即滿足判定覆蓋)。4)判定/條件覆蓋它是指設(shè)計(jì)足夠的測(cè)試用例,使得判定表達(dá)式中324)判定/條件覆蓋x=2,y=0,z=3(覆蓋x>1,y=0,x=2,z>1,通過路徑abcde);x=1,y=1,z=1(覆蓋x≤1,y≠0,x≠2,z≤1,通過路徑ace)。(x>1)AND(y=0)(x=2)OR(z>1)語句段1語句段2開始結(jié)束TTFFabcde4)判定/條件覆蓋x=2,y=0,z=3(x>1)AND335)條件組合覆蓋條件組合覆蓋是指設(shè)計(jì)足夠的測(cè)試用例,使得每個(gè)判定表達(dá)式中條件的各種可能值的組合都至少出現(xiàn)一次。這是一種較強(qiáng)的邏輯覆蓋。5)條件組合覆蓋條件組合覆蓋是指設(shè)計(jì)足夠的測(cè)試用例,使得每個(gè)34如圖,兩個(gè)判定表達(dá)式中含有4個(gè)條件,共有8種組合:①x>1,y=0;②x>1,y≠0;③x≤1,y=0;④x≤1,y≠0;⑤x=2,z>1;⑥x=2,z≤1;⑦x≠2,z>1;⑧x≠2,z≤1。(x>1)AND(y=0)(x=2)OR(z>1)語句段1語句段2開始結(jié)束TTFFabcde如圖,兩個(gè)判定表達(dá)式中含有4個(gè)條件,共有8種組合:(x>135x=2,y=0,z=3;覆蓋條件組合①和⑤,通過路徑abcde;x=2,y=1,z=1;覆蓋條件組合②和⑥,通過路徑acde;x=0,y=0,z=3;覆蓋條件組合③和⑦,通過路徑acde;x=1,y=1,z=1;覆蓋條件組合④和⑧,通過路徑ace。但未通過路徑abce。(x>1)AND(y=0)(x=2)OR(z>1)語句段1語句段2開始結(jié)束TTFFabcdex=2,y=0,z=3;(x>1)AND(y=0)(x=366)路徑覆蓋路徑覆蓋是指設(shè)計(jì)足夠的測(cè)試用例,以覆蓋被測(cè)程序中所有可能的路徑。如圖,共有4條路徑,設(shè)計(jì)以下4組測(cè)試用例,就可以覆蓋這4條路徑:x=2,y=0,z=3;覆蓋路徑abcdex=2,y=1,z=1;覆蓋路徑acdex=1,y=1,z=1;覆蓋路徑acex=3,y=0,z=1;覆蓋路徑abce(x>1)AND(y=0)(x=2)OR(z>1)語句段1語句段2開始結(jié)束TTFFabcde沒有覆蓋條件組合③和⑦③x≤1,y=0⑦x≠2,z>16)路徑覆蓋路徑覆蓋是指設(shè)計(jì)足夠的測(cè)試用例,以覆蓋被測(cè)程序中37實(shí)際測(cè)試在實(shí)際測(cè)試時(shí),為了達(dá)到充分測(cè)試的目的,一般以條件組合覆蓋為主設(shè)計(jì)測(cè)試用例,然后再補(bǔ)充部分測(cè)試用例,以便實(shí)現(xiàn)路徑覆蓋。實(shí)際測(cè)試在實(shí)際測(cè)試時(shí),為了達(dá)到充分測(cè)試的目的,一般以條件組合38課程名稱:軟件工程第23講班級(jí):日期:教室:教學(xué)題目:12.2軟件測(cè)試技術(shù)12.2.1白盒測(cè)試12.2.2黑盒測(cè)試教學(xué)目的:掌握白盒、黑盒測(cè)試的概念和測(cè)試方法步驟。教學(xué)重點(diǎn):基本路徑測(cè)試、黑盒測(cè)試技術(shù)教學(xué)難點(diǎn):基本路徑測(cè)試。教具:多媒體教室、電子教案作業(yè):課程名稱:軟件工程第23講3912.2.1白盒測(cè)試

2.基本路徑測(cè)試其主要思想是根據(jù)軟件詳細(xì)設(shè)計(jì)的過程性描述或源代碼中的控制流程求出程序的環(huán)形復(fù)雜性度量,然后用此度量確定程序的基本路徑集合,并由此導(dǎo)出一組測(cè)試用例來覆蓋該集合中的每一個(gè)獨(dú)立的路徑,從而可以保證每個(gè)語句至少執(zhí)行一次。12.2.1白盒測(cè)試

2.基本路徑測(cè)試其主要思想是根402.基本路徑測(cè)試【例12.1】試用基本路徑測(cè)試法對(duì)如下的PDL描述或如圖14-2-2所示的程序流程圖設(shè)計(jì)測(cè)試用例。該例子描述了最多輸入50個(gè)值(以–1作為輸入結(jié)束標(biāo)志),計(jì)算其中有效的學(xué)生分?jǐn)?shù)的個(gè)數(shù)、總分?jǐn)?shù)和平均值。2.基本路徑測(cè)試【例12.1】試用基本路徑測(cè)試法對(duì)如下的PD41PROCEDUREaverageINTERFACERETURNSaverage,sum,n1;*n1為有效成績的個(gè)數(shù)。*INTERFACEACCEPTSscore;TYPEscore[1,50]ISSCALARARRAY;TYPEaverage,n1,n2,sumISSCALAR;*n2為輸入值的個(gè)數(shù)。*TYPEiISINTEGER;i=1;n1=n2=0;sum=0;DOWHILE(score[i]<>–1)AND(n2<50)n2加1;IF(score[i]>=0)AND(score[i]<=100)THENn1加1;sum=sum+score[i];ENDIF;i加1;ENDDO;IFn1>0THENaverage=sum/n1;ELSEaverage=–1;ENDIF;ENDaveragePROCEDUREaverage42圖14-2-2過程average的程序流程圖開始i=1,n1=n2=0,sum=0Score[i]<>-1ANDn2<50n2=n2+1n1=n1+1,sum=sum+score[i]Score[i]>0ANDscore[i]<100i=i+1n1>0average=sum/n1average=–1返回FFFTTT12和345和6789101112圖14-2-2過程average的程序流程圖開始i=43【例12.1】解:可按如下步驟設(shè)計(jì)測(cè)試用例:步驟1:根據(jù)詳細(xì)設(shè)計(jì)或代碼導(dǎo)出過程average的流圖。123456789111012R1R2R3R4R5R6【例12.1】解:可按如下步驟設(shè)計(jì)測(cè)試用例:1234567844【例12.1】步驟2:據(jù)流圖確定環(huán)形復(fù)雜性度量V(G):1)V(G)=E–N+2=16–12+2=6;其中E為流圖中的邊數(shù),N為結(jié)點(diǎn)數(shù);2)V(G)=6(個(gè)區(qū)域);3)V(G)=P+1=5+1=6;其中P為謂詞結(jié)點(diǎn)的個(gè)數(shù)。在流圖中,結(jié)點(diǎn)2、3、5、6、9是謂詞結(jié)點(diǎn)?!纠?2.1】步驟2:據(jù)流圖確定環(huán)形復(fù)雜性度量V(G):45【例12.1】步驟3:確定基本路徑集合(即獨(dú)立路徑集合)。一條獨(dú)立路徑是指,和其他的獨(dú)立路徑相比,至少引入一個(gè)新處理語句或一個(gè)新判斷的程序通路。V(G)值正好等于該程序的獨(dú)立路徑的條數(shù)。于是可確定6條獨(dú)立的路徑:路徑1:1—2—…—2—9—10—12路徑2:1—2—9—11—12路徑3:1—2—3—9—10—12路徑4:1—2—3—4—5—8—2…路徑5:1—2—3—4—5—6—8—2…路徑6:1—2—3—4—5—6—7—8—2…【例12.1】步驟3:確定基本路徑集合(即獨(dú)立路徑集合)。一46【例12.1】步驟4:為每一條獨(dú)立路徑各設(shè)計(jì)一組測(cè)試用例,以便強(qiáng)迫程序沿著該路徑至少執(zhí)行一次。1)路徑1的測(cè)試用例:score[k]=有效分?jǐn)?shù)值,當(dāng)k<i;score[i]=–1,2≤i≤50;期望結(jié)果:根據(jù)輸入的有效分?jǐn)?shù)算出正確的分?jǐn)?shù)個(gè)數(shù)n1、總分sum和平均分average。2)路徑2的測(cè)試用例:score[1]=–1;期望的結(jié)果:average=–1,其他量保持初值。【例12.1】步驟4:為每一條獨(dú)立路徑各設(shè)計(jì)一組測(cè)試用例,以47【例12.1】3)路徑3的測(cè)試用例:輸入多于50個(gè)有效分?jǐn)?shù),即試圖處理51個(gè)分?jǐn)?shù),要求前51個(gè)為有效分?jǐn)?shù);期望結(jié)果:n1=50、且算出正確的總分和平均分。4)路徑4的測(cè)試用例:score[i]=有效分?jǐn)?shù),當(dāng)i<50;score[k]<0,k<i;期望結(jié)果:根據(jù)輸入的有效分?jǐn)?shù)算出正確的分?jǐn)?shù)個(gè)數(shù)n1、總分sum和平均分average?!纠?2.1】3)路徑3的測(cè)試用例:48【例12.1】5)路徑5的測(cè)試用例:score[i]=有效分?jǐn)?shù),當(dāng)i<50;score[k]>100,k<i;期望結(jié)果:根據(jù)輸入的有效分?jǐn)?shù)算出正確的分?jǐn)?shù)個(gè)數(shù)n1、總分sum和平均分average。6)路徑6的測(cè)試用例:score[i]=有效分?jǐn)?shù),當(dāng)i<50;期望結(jié)果:根據(jù)輸入的有效分?jǐn)?shù)算出正確的分?jǐn)?shù)個(gè)數(shù)n1、總分sum和平均分average。【例12.1】5)路徑5的測(cè)試用例:493.循環(huán)測(cè)試1)對(duì)于最多為n次的單循環(huán),可設(shè)計(jì)測(cè)試用例實(shí)現(xiàn)下列測(cè)試:①跳過循環(huán),即一次也不執(zhí)行;②僅循環(huán)1次;③循環(huán)2次;④循環(huán)m次,m<n;⑤分別循環(huán)n–1次,n次,n+1次。2)對(duì)于嵌套循環(huán)的測(cè)試:①從最內(nèi)層循環(huán)開始測(cè)試,此時(shí)外層循環(huán)都取最小值,對(duì)內(nèi)層進(jìn)行單循環(huán)的測(cè)試;②向外退一層進(jìn)行測(cè)試,此時(shí)其內(nèi)層循環(huán)取一些典型值,其外層循環(huán)仍取最小值;③繼續(xù)向外層擴(kuò)展,直至測(cè)試完成。3.循環(huán)測(cè)試1)對(duì)于最多為n次的單循環(huán),可設(shè)計(jì)測(cè)試用例實(shí)現(xiàn)下5012.2.2黑盒測(cè)試主要是測(cè)試軟件是否滿足功能需求。黑盒測(cè)試主要測(cè)試的錯(cuò)誤類型有:①不正確或遺漏的功能;②接口錯(cuò)誤;③性能錯(cuò)誤;④數(shù)據(jù)結(jié)構(gòu)或外部數(shù)據(jù)訪問錯(cuò)誤;⑤初始化或終止條件錯(cuò)誤等等。黑盒測(cè)試設(shè)計(jì)測(cè)試用例的方法:等價(jià)類的劃分、邊界值分析、錯(cuò)誤推測(cè)、組合數(shù)據(jù)測(cè)試等。12.2.2黑盒測(cè)試主要是測(cè)試軟件是否滿足功能需求。511.等價(jià)類劃分等價(jià)類劃分的思想是將輸入數(shù)據(jù)按有效的(合理的)和無效的(不合理的)劃分成若干個(gè)等價(jià)類,認(rèn)為測(cè)試等價(jià)類中的一個(gè)代表值的結(jié)果就等于對(duì)該類其他值的測(cè)試。利用等價(jià)類劃分的測(cè)試步驟如下:1)劃分等價(jià)類從程序的功能說明中找出每個(gè)輸入條件,然后將其劃分成若干個(gè)有效和無效的等價(jià)類。下面給出等價(jià)類劃分的幾條經(jīng)驗(yàn)性原則供參考:1.等價(jià)類劃分等價(jià)類劃分的思想是將輸入數(shù)據(jù)按有效的(合理的)52等價(jià)類劃分的幾條經(jīng)驗(yàn)性原則①如果規(guī)定了輸入值的范圍,則可劃分出一個(gè)有效的等價(jià)類(輸入值在此范圍內(nèi))和兩個(gè)無效的等價(jià)類(輸入值小于最小值或大于最大值)。②如果規(guī)定了數(shù)據(jù)輸入的個(gè)數(shù),則可劃分出一個(gè)有效的等價(jià)類(輸入值的個(gè)數(shù)符合規(guī)定)和兩個(gè)無效的等價(jià)類(輸入值的個(gè)數(shù)少于或多于規(guī)定個(gè)數(shù))。③如果規(guī)定了輸入數(shù)據(jù)的一組值,而且程序?qū)Σ煌妮斎胫颠M(jìn)行不同的處理,則每個(gè)允許的輸入值是一個(gè)有效的等價(jià)類,此外還有一個(gè)無效的等價(jià)類(規(guī)定的這一組值以外的值)。等價(jià)類劃分的幾條經(jīng)驗(yàn)性原則①如果規(guī)定了輸入值的范圍,則可劃分53等價(jià)類劃分的幾條經(jīng)驗(yàn)性原則④如果規(guī)定了輸入數(shù)據(jù)必須遵循的規(guī)則,則可劃分出一個(gè)有效的等價(jià)類(符合規(guī)則)和若干個(gè)無效的等價(jià)類(從不同的角度違反規(guī)則)。⑤如果輸入條件規(guī)定了一個(gè)集合,則可劃分出一個(gè)有效的等價(jià)類(此集合)和一個(gè)無效的等價(jià)類(此集合的補(bǔ)集)。等價(jià)類劃分的幾條經(jīng)驗(yàn)性原則④如果規(guī)定了輸入數(shù)據(jù)必須遵循的規(guī)則541.等價(jià)類劃分2)設(shè)計(jì)測(cè)試用例①等價(jià)類劃分應(yīng)列表,并為每一個(gè)等價(jià)類編號(hào)。②設(shè)計(jì)一個(gè)有效等價(jià)類的測(cè)試用例,使其盡可能多地覆蓋尚未被覆蓋過的有效等價(jià)類。如此重復(fù),直到所有有效等價(jià)類都被覆蓋為止。③設(shè)計(jì)一個(gè)測(cè)試用例,僅覆蓋一個(gè)無效等價(jià)類,如此重復(fù),直到所有無效等價(jià)類都被覆蓋為止。1.等價(jià)類劃分2)設(shè)計(jì)測(cè)試用例552)設(shè)計(jì)測(cè)試用例【例12.1】設(shè)有一個(gè)檔案管理系統(tǒng),要求用戶輸入以年月表示的日期。假設(shè)日期限定在1990年1月~2003年12月,并規(guī)定日期由6位數(shù)字字符組成,前4位表示年,后2位表示月。現(xiàn)用等價(jià)類劃分法設(shè)計(jì)測(cè)試用例,來測(cè)試程序的“日期檢查功能”。2)設(shè)計(jì)測(cè)試用例【例12.1】設(shè)有一個(gè)檔案管理系統(tǒng),要求用戶56【例12.1】1)劃分等價(jià)類并編號(hào)表14-1等價(jià)類劃分的結(jié)果輸入等價(jià)類有效等價(jià)類無效等價(jià)類日期的類型及長度①6位數(shù)字字符②有非數(shù)字字符③少于6位數(shù)字字符④多于6位數(shù)字字符年份范圍⑤在1990~2003之間⑥小于1990⑦大于2003月份范圍⑧在01~12之間⑨等于00⑩大于12【例12.1】1)劃分等價(jià)類并編號(hào)輸入等價(jià)類有效等價(jià)類無效等57【例12.1】2)設(shè)計(jì)測(cè)試用例,以便覆蓋所有的有效等價(jià)類在表14-1中列出了3個(gè)有效等價(jià)類,編號(hào)分別為①、⑤、⑧,設(shè)計(jì)的測(cè)試用例如下:測(cè)試數(shù)據(jù)期望結(jié)果覆蓋的有效等價(jià)類200211輸入有效①、⑤、⑧【例12.1】2)設(shè)計(jì)測(cè)試用例,以便覆蓋所有的有效等58【例12.1】3)為每一個(gè)無效等價(jià)類設(shè)計(jì)一個(gè)測(cè)試用例,設(shè)計(jì)結(jié)果如下:測(cè)試數(shù)據(jù)期望結(jié)果覆蓋的無效等價(jià)類95June無效輸入②20036無效輸入③2001006無效輸入④198912無效輸入⑥200401無效輸入⑦200100無效輸入⑨200113無效輸入⑩【例12.1】3)為每一個(gè)無效等價(jià)類設(shè)計(jì)一個(gè)測(cè)試用例,592.邊界值分析邊界值分析(boundaryvalueanalysis,BVA)是指設(shè)計(jì)測(cè)試用例,使程序在輸入或輸出的邊界值或者邊界值左右的值執(zhí)行。邊界值分析方法可以單獨(dú)設(shè)計(jì)測(cè)試用例,也可以作為等價(jià)類劃分方法的補(bǔ)充,即在各個(gè)等價(jià)類中主要是選擇邊界上及其左右的值。例如例12.1中對(duì)月份范圍的測(cè)試就可以選擇00、01、02、11、12、13等數(shù)據(jù)作為測(cè)試用例。2.邊界值分析邊界值分析(boundaryvaluean60邊界值分析方法設(shè)計(jì)測(cè)試用例的經(jīng)驗(yàn)性原則1)如果輸入條件指定了范圍[a,b],則a、b以及緊挨a、b左右的各一個(gè)值都應(yīng)作為測(cè)試用例。比如,學(xué)生成績?yōu)閇0,100],應(yīng)取-1、0、1、99、100、101共6個(gè)值作為測(cè)試用例。2)如果輸入條件指定了輸入數(shù)據(jù)的個(gè)數(shù)范圍,則按最大、最小個(gè)數(shù)及其左右的個(gè)數(shù)各設(shè)計(jì)一個(gè)測(cè)試用例。比如,一個(gè)輸入文件應(yīng)包括1~255個(gè)記錄,則應(yīng)分別設(shè)計(jì)輸入0個(gè)、1個(gè)、2個(gè)、254個(gè)、255個(gè)、256個(gè)記錄的測(cè)試用例。3)將規(guī)則1)和2)應(yīng)用于輸出條件,即設(shè)計(jì)測(cè)試用例使輸出值達(dá)到邊界值及其左右的值。邊界值分析方法設(shè)計(jì)測(cè)試用例的經(jīng)驗(yàn)性原則1)如果輸入條件指定了613.錯(cuò)誤推測(cè)錯(cuò)誤推測(cè)法的基本思想是:程序測(cè)試員通過已經(jīng)掌握的測(cè)試?yán)碚摵蛯?shí)際測(cè)試中積累的經(jīng)驗(yàn),推測(cè)程序在哪些情況下可能發(fā)生錯(cuò)誤,并將可能發(fā)生錯(cuò)誤的情況列出,然后為每一可能發(fā)生錯(cuò)誤的情況各設(shè)計(jì)一個(gè)測(cè)試用例。3.錯(cuò)誤推測(cè)錯(cuò)誤推測(cè)法的基本思想是:程序測(cè)試員通過已經(jīng)掌握的623.錯(cuò)誤推測(cè)例如,測(cè)試一個(gè)對(duì)線性表(比如數(shù)組)進(jìn)行排序的程序,可推測(cè)列出以下幾項(xiàng)需要特別測(cè)試的情況:1)輸入的線性表為空表;2)表中只含有一個(gè)元素;3)輸入表中所有元素已排好序;4)輸入表已按逆序排好;5)輸入表中部分或全部元素相同。于是,可以針對(duì)以上列出的每一種情況各設(shè)計(jì)一個(gè)測(cè)試用例。3.錯(cuò)誤推測(cè)例如,測(cè)試一個(gè)對(duì)線性表(比如數(shù)組)進(jìn)行排序的程序634.組合數(shù)據(jù)測(cè)試實(shí)踐表明,在單個(gè)測(cè)試用例沒有測(cè)試出錯(cuò)誤的情況下,采用測(cè)試數(shù)據(jù)的某種組合卻可能檢測(cè)出程序中隱藏很深的錯(cuò)誤。組合數(shù)據(jù)測(cè)試法可以采用的有效工具有判定表、判定樹等。以判定表為例,即列出輸入數(shù)據(jù)的各種組合情況和程序相應(yīng)的動(dòng)作、可能的輸出結(jié)果之間的對(duì)應(yīng)關(guān)系,然后為判定表的每一列至少設(shè)計(jì)一個(gè)測(cè)試用例。4.組合數(shù)據(jù)測(cè)試實(shí)踐表明,在單個(gè)測(cè)試用例沒有測(cè)試出錯(cuò)誤的情況64課程名稱:軟件工程第24講班級(jí):日期:教室:教學(xué)題目:12.3軟件測(cè)試過程12.4調(diào)試12.5測(cè)試工具教學(xué)目的:掌握軟件的測(cè)試過程、調(diào)試的概念和策略,了解自動(dòng)測(cè)試工具和調(diào)試工具。教學(xué)重點(diǎn):基本路徑測(cè)試、黑盒測(cè)試技術(shù)教學(xué)難點(diǎn):基本路徑測(cè)試。教具:多媒體教室、電子教案作業(yè):課程名稱:軟件工程第24講6512.3軟件測(cè)試過程從宏觀的角度講,軟件測(cè)試過程一般可劃分為單元測(cè)試、集成測(cè)試、驗(yàn)收測(cè)試和系統(tǒng)測(cè)試等幾個(gè)主要測(cè)試階段。對(duì)于每一個(gè)測(cè)試階段,都應(yīng)包含制定測(cè)試計(jì)劃、設(shè)計(jì)測(cè)試用例、測(cè)試實(shí)施和測(cè)試結(jié)果的收集評(píng)估等。其中,測(cè)試計(jì)劃應(yīng)包括具體的測(cè)試步驟、工作量、進(jìn)度和資源等。在測(cè)試的各個(gè)階段,應(yīng)適宜地選擇黑盒測(cè)試和白盒測(cè)試方法,由開發(fā)人員和一個(gè)獨(dú)立的測(cè)試小組單獨(dú)、分別或共同完成測(cè)試任務(wù),必要時(shí)還應(yīng)有用戶參加。12.3軟件測(cè)試過程從宏觀的角度講,軟件測(cè)試過程一般可劃6612.3.1單元測(cè)試單元測(cè)試的測(cè)試對(duì)象——程序模塊。單元測(cè)試的依據(jù)——根據(jù)詳細(xì)設(shè)計(jì)的描述制定的單元測(cè)試計(jì)劃。單元測(cè)試——多采用白盒測(cè)試技術(shù)。單元測(cè)試——可以并行進(jìn)行。12.3.1單元測(cè)試單元測(cè)試的測(cè)試對(duì)象——程序模塊。6712.3.1單元測(cè)試1.單元測(cè)試的任務(wù)1)模塊接口測(cè)試2)模塊局部數(shù)據(jù)結(jié)構(gòu)的測(cè)試3)模塊中所有獨(dú)立路徑的測(cè)試4)模塊中各條錯(cuò)誤處理路徑的測(cè)試5)模塊邊界條件的測(cè)試12.3.1單元測(cè)試1.單元測(cè)試的任務(wù)681)模塊接口測(cè)試①輸入的實(shí)參與本模塊的形參在個(gè)數(shù)、類型、順序、量綱上是否一致;②調(diào)用其他模塊時(shí)所給實(shí)際參數(shù)與被調(diào)模塊的形式參數(shù)在個(gè)數(shù)、類型、順序、量綱上是否一致;③調(diào)用預(yù)定義函數(shù)時(shí)所用參數(shù)的個(gè)數(shù)、類型、順序、返回值的類型等是否正確;④是否存在與當(dāng)前入口點(diǎn)無關(guān)的參數(shù)引用;⑤是否修改了只讀型參數(shù);1)模塊接口測(cè)試①輸入的實(shí)參與本模塊的形參在個(gè)數(shù)、類型、順序691)模塊接口測(cè)試⑥各個(gè)模塊對(duì)全局變量的定義和引用是否保持一致;⑦是否把某些約束作為參數(shù)傳遞。⑧如果模塊內(nèi)包括外部輸入輸出,還應(yīng)測(cè)試文件屬性、文件打開/關(guān)閉語句、格式說明、輸入輸出語句、緩沖區(qū)大小與記錄長度是否匹配、是否處理了文件尾、輸出信息中是否存在文字錯(cuò)誤等方面的內(nèi)容。1)模塊接口測(cè)試⑥各個(gè)模塊對(duì)全局變量的定義和引用是否保持一致702)模塊局部數(shù)據(jù)結(jié)構(gòu)的測(cè)試主要的測(cè)試內(nèi)容有:①不適合或不相容的類型說明;②變量名不正確(拼寫或截?cái)噱e(cuò)誤等);③變量無初值或初始化、缺省值有錯(cuò);④出現(xiàn)上溢出、下溢出、地址異常等。2)模塊局部數(shù)據(jù)結(jié)構(gòu)的測(cè)試主要的測(cè)試內(nèi)容有:713)模塊中所有獨(dú)立路徑的測(cè)試單元測(cè)試旨在找出如下錯(cuò)誤:①計(jì)算中常見的錯(cuò)誤,有:運(yùn)算符優(yōu)先級(jí)錯(cuò)誤、混合運(yùn)算類型匹配錯(cuò)誤、變量初值錯(cuò)、達(dá)不到精度、表達(dá)式不正確等。②不正確的比較判斷和不恰當(dāng)?shù)目刂屏鞒R姷腻e(cuò)誤,有:被比較的對(duì)象的類型不匹配、錯(cuò)誤地使用邏輯運(yùn)算符及其優(yōu)先級(jí)、計(jì)算誤差引起的判斷錯(cuò)誤、循環(huán)終止條件不合適、錯(cuò)誤地修改了循環(huán)變量、迭代發(fā)散時(shí)不能退出循環(huán)等。3)模塊中所有獨(dú)立路徑的測(cè)試單元測(cè)試旨在找出如下錯(cuò)誤:724)模塊中各條錯(cuò)誤處理路徑的測(cè)試我們希望程序模塊具有較強(qiáng)的容錯(cuò)能力,這就需要在設(shè)計(jì)時(shí)能預(yù)見各種出錯(cuò)條件,并預(yù)先設(shè)計(jì)好各種出錯(cuò)處理通路,以便在用戶出現(xiàn)錯(cuò)誤時(shí)系統(tǒng)能給出恰當(dāng)?shù)奶崾径皇瓜到y(tǒng)失效。出錯(cuò)處理路徑測(cè)試主要測(cè)試的錯(cuò)誤有:①異常處理不當(dāng);②在程序自定義的出錯(cuò)處理程序段運(yùn)行之前系統(tǒng)已介入;③顯示的出錯(cuò)信息難以理解或未能提供足夠的錯(cuò)誤定位信息;④顯示的錯(cuò)誤與實(shí)際發(fā)生的錯(cuò)誤不符等。4)模塊中各條錯(cuò)誤處理路徑的測(cè)試我們希望程序模塊具有較強(qiáng)的容735)模塊邊界條件的測(cè)試模塊邊界條件的測(cè)試是單元測(cè)試中最后、也是最重要的一項(xiàng)測(cè)試任務(wù),因?yàn)槌绦蜃钊菀自谶吔缟铣鲥e(cuò)??梢圆捎眠吔缰捣治黾夹g(shù)針對(duì)邊界值及其左、右值設(shè)計(jì)測(cè)試用例,很有可能檢測(cè)出新的錯(cuò)誤。5)模塊邊界條件的測(cè)試模塊邊界條件的測(cè)試是單元測(cè)試中最后、也742.單元測(cè)試的步驟通常,單元測(cè)試在編碼階段進(jìn)行。在源程序代碼編制完成并經(jīng)過編譯檢查和評(píng)審后,就可以開始進(jìn)行單元測(cè)試。測(cè)試用例的設(shè)計(jì)應(yīng)與評(píng)審工作相結(jié)合,根據(jù)測(cè)試計(jì)劃和詳細(xì)設(shè)計(jì)信息設(shè)計(jì)測(cè)試數(shù)據(jù),并應(yīng)給出對(duì)應(yīng)的期望結(jié)果。測(cè)試時(shí)需要為被測(cè)模塊編制:一個(gè)驅(qū)動(dòng)模塊(drivermodule)——用來模擬被測(cè)模塊的上級(jí)調(diào)用模塊,用它接收測(cè)試數(shù)據(jù),并傳送給被測(cè)模塊,接收測(cè)試結(jié)果并輸出。若干個(gè)樁模塊(stubmodule)——也稱為存根模塊,用來代替被測(cè)模塊所調(diào)用的子模塊。其作用是為被測(cè)模塊提供所需要的信息,因此,越簡單越好。2.單元測(cè)試的步驟通常,單元測(cè)試在編碼階段進(jìn)行。在源程序代碼75圖14-3-1軟件層次結(jié)構(gòu)圖圖14-3-2模塊A的單元測(cè)試環(huán)境測(cè)試軟件(指驅(qū)動(dòng)模塊和樁模塊)并不作為軟件產(chǎn)品的一部分提交給用戶。有些模塊用單元測(cè)試的方法不能進(jìn)行充分的測(cè)試,可在集成測(cè)試的過程中完成詳盡的測(cè)試。提高模塊內(nèi)聚度可簡化單元測(cè)試過程。MABCDEF驅(qū)動(dòng)模塊A樁模塊1樁模塊2樁模塊3測(cè)試用例測(cè)試結(jié)果圖14-3-1軟件層次結(jié)構(gòu)圖圖14-3-7612.3.2集成測(cè)試集成測(cè)試—將軟件組裝成系統(tǒng)的一種測(cè)試技術(shù)。因此,又稱為組裝測(cè)試或綜合測(cè)試。集成測(cè)試旨在發(fā)現(xiàn)與接口有關(guān)的錯(cuò)誤。這些錯(cuò)誤包括:①數(shù)據(jù)通過接口時(shí)會(huì)丟失;②一個(gè)模塊的功能對(duì)另一個(gè)模塊產(chǎn)生了不利影響;③幾個(gè)子功能組合起來沒有實(shí)現(xiàn)主功能;④全局?jǐn)?shù)據(jù)結(jié)構(gòu)出現(xiàn)錯(cuò)誤;⑤誤差的不斷積累達(dá)到不能接受的程度。集成測(cè)試有兩種集成方式:非增量集成方式;增量集成方式。12.3.2集成測(cè)試集成測(cè)試—將軟件組裝成系統(tǒng)的一種771.非增量集成方式非增量集成方式是將經(jīng)過單元測(cè)試的所有模塊一次性全部組裝起來,然后進(jìn)行整體測(cè)試,最后得到所要求的軟件系統(tǒng)。這種集成方式容易出現(xiàn)混亂,開始可能遇到一大堆錯(cuò)誤,錯(cuò)誤定位非常困難,新舊錯(cuò)誤交織在一起,會(huì)使測(cè)試變得更加困難。因此,一般不應(yīng)采用這種集成方式。1.非增量集成方式非增量集成方式是將經(jīng)過單元測(cè)試的所有模塊一782.增量集成方式可分為自頂向下集成和自底向上集成兩種方法。1)自頂向下集成自頂向下集成方式是從主控模塊開始,按照軟件的控制層次結(jié)構(gòu),以深度優(yōu)先或廣度優(yōu)先的策略,逐步把各個(gè)模塊組裝在一起。2.增量集成方式可分為自頂向下集成和自底向上集成兩種方法。79自頂向下集成測(cè)試的具體步驟①以主控模塊作為驅(qū)動(dòng)模塊,其直接調(diào)用的下屬模塊都用“樁模塊”代替;②依據(jù)所選用的集成策略(深度優(yōu)先或廣度優(yōu)先)所規(guī)定的次序,每次只用一個(gè)實(shí)際模塊替代一個(gè)對(duì)應(yīng)的樁模塊;③每結(jié)合進(jìn)一個(gè)模塊立即測(cè)試一遍;④為了檢測(cè)加入新模塊是否引入了新的錯(cuò)誤,每次都需要進(jìn)行回歸測(cè)試(即部分或全部地重復(fù)以前做過的測(cè)試)。重復(fù)執(zhí)行步驟②、③、④,每重復(fù)一次,增加一個(gè)模塊,直至構(gòu)造起整個(gè)軟件結(jié)構(gòu)為止。自頂向下集成測(cè)試的具體步驟①以主控模塊作為驅(qū)動(dòng)模塊,其直接調(diào)80圖14-3-3被測(cè)軟件

系統(tǒng)結(jié)構(gòu)圖深度優(yōu)先策略:①以M1作為驅(qū)動(dòng)模塊,首先將模塊M2加入其中,此時(shí)模塊M3、M4、M5、M6分別以樁模塊S3、S4、S5、S6代替,于是對(duì)由M1、M2、S3、S4、S5、S6組成的子系統(tǒng)測(cè)試一遍;M1M2M4M5M6M7M8M3M1M2S4S3S5S6圖14-3-3被測(cè)軟件

81深度優(yōu)先策略:②用M5代替S5,并將M8用樁模塊S8代替,對(duì)由M1、M2、M5、S3、S4、S8、S6組成的子系統(tǒng)再測(cè)試一遍;M1M2M4M5M6M7M8M3M1M2S4S3M5S6S8深度優(yōu)先策略:②用M5代替S5,并將M8用樁模塊S8代替,82深度優(yōu)先策略:③用M8代替S8,對(duì)由M1、M2、M5、M8、S3、S4、、S6組成的子系統(tǒng)再測(cè)試一遍;M1M2M4M5M6M7M8M3M1M2S4S3M5S6M8深度優(yōu)先策略:③用M8代替S8,對(duì)由M1、M2、M5、M83深度優(yōu)先策略:④用M6代替S6,對(duì)由M1、M2、M5、M8、M6、S3、S4組成的子系統(tǒng)再測(cè)試一遍;M1M2M4M5M6M7M8M3M1M2S4S3M5M6M8深度優(yōu)先策略:④用M6代替S6,對(duì)由M1、M2、M5、M84深度優(yōu)先策略:⑤用M3代替S3,并以S7代替M7,對(duì)由M1、M2、M5、M8、M6、M3、S7、S4組成的子系統(tǒng)再測(cè)試一遍;M1M2M4M5M6M7M8M3M1M2S4M3M5M6M8S7深度優(yōu)先策略:⑤用M3代替S3,并以S7代替M7,對(duì)由M185深度優(yōu)先策略:⑥用M7代替S7,對(duì)由M1、M2、M5、M8、M6、M3、M7、S4組成的子系統(tǒng)再測(cè)試一遍;M1M2M4M5M6M7M8M3M1M2S4M3M5M6M8M7深度優(yōu)先策略:⑥用M7代替S7,對(duì)由M1、M2、M5、M86深度優(yōu)先策略:⑦用M4代替S4,對(duì)由M1、M2、M5、M8、M6、M3、M7、M4組成的子系統(tǒng)再測(cè)試一遍;至此,整個(gè)系統(tǒng)測(cè)試完。M1M2M4M5M6M7M8M3M1M2M4M3M5M6M8M7深度優(yōu)先策略:⑦用M4代替S4,對(duì)由M1、M2、M5、M87廣度優(yōu)先策略廣度優(yōu)先策略——沿控制層次結(jié)構(gòu)水平地向下移動(dòng),按一層一層的順序?qū)⒛K一個(gè)個(gè)地集成起來。如圖的集成的順序?yàn)镸1、M2、M3、M4、M5、M6、M7、M8,在集成的過程中也需樁模塊的配合。M1M2M4M5M6M7M8M3廣度優(yōu)先策略廣度優(yōu)先策略——沿控制層次結(jié)構(gòu)水平地向下移動(dòng),按88自頂向下集成的優(yōu)缺點(diǎn)自頂向下集成的特點(diǎn)是不需要驅(qū)動(dòng)模塊,但需要大量的樁模塊。優(yōu)點(diǎn)是能夠盡早地驗(yàn)證程序的主要控制和判斷機(jī)制,可以較早發(fā)現(xiàn)此類錯(cuò)誤,從而減少以后的返工。缺點(diǎn)是在測(cè)試較高層模塊時(shí),低層模塊采用較簡單的樁模塊來代替,不能反映實(shí)際情況,測(cè)試可能不充分。自頂向下集成的優(yōu)缺點(diǎn)自頂向下集成的特點(diǎn)是不需要驅(qū)動(dòng)模塊,但需892)自底向上集成即從程序結(jié)構(gòu)的最底層模塊開始組裝和測(cè)試。這種測(cè)試需要一定數(shù)量的驅(qū)動(dòng)模塊,而不需要樁模塊。自底向上集成測(cè)試的具體步驟:①把低層模塊組織成實(shí)現(xiàn)某個(gè)特定的軟件子功能的模塊群(modulecluster);②為每一個(gè)模塊群開發(fā)一個(gè)驅(qū)動(dòng)模塊,控制測(cè)試數(shù)據(jù)的輸入和測(cè)試結(jié)果的輸出;③對(duì)每個(gè)模塊群進(jìn)行測(cè)試;④去掉測(cè)試用的驅(qū)動(dòng)模塊,用較高層模塊將幾個(gè)模塊群組成新的更大的模塊群。上述的②、③、④步重復(fù)執(zhí)行,直至整個(gè)程序構(gòu)造完畢。2)自底向上集成即從程序結(jié)構(gòu)的最底層模塊開始組裝和測(cè)試。這種90自底向上集成舉例圖14-3-4自底向上集成M1M2M3模塊群1模塊群2模塊群3自底向上集成舉例圖14-3-4自底向上集成M1M2M3模91自底向上集成舉例圖14-3-4自底向上集成M1M2M3D2D1D3模塊群1模塊群2模塊群3自底向上集成舉例圖14-3-4自底向上集成M1M2M3D92自底向上集成優(yōu)缺點(diǎn)優(yōu)點(diǎn):①只需設(shè)計(jì)驅(qū)動(dòng)模塊,不需要設(shè)計(jì)樁模塊,測(cè)試用例的設(shè)計(jì)也相對(duì)簡單。②由于涉及到復(fù)雜算法和直接輸入輸出的模塊最先得到組裝和測(cè)試,可以在早期解決這些最容易出問題的部分;③自底向上集成可以實(shí)施多個(gè)模塊并行測(cè)試。缺點(diǎn):對(duì)高層控制與判斷進(jìn)行測(cè)試的時(shí)間較晚,如果到測(cè)試的后期才發(fā)現(xiàn)整體存在較嚴(yán)重問題,就不得不進(jìn)行較大的返工,此時(shí)代價(jià)將是巨大的。自底向上集成優(yōu)缺點(diǎn)優(yōu)點(diǎn):933)混合式測(cè)試及重點(diǎn)測(cè)試自頂向下和自底向上兩種集成測(cè)試方法的優(yōu)缺點(diǎn)剛好相反,可結(jié)合起來使用,即對(duì)于上層模塊采用自頂向下的方法,而對(duì)于下層模塊采用自底向上的方法,這樣不但可以大大減少了開發(fā)驅(qū)動(dòng)模塊和樁模塊的數(shù)量,還可以充分發(fā)揮各自的優(yōu)點(diǎn)。在集成測(cè)試過程中應(yīng)對(duì)關(guān)鍵模塊進(jìn)行重點(diǎn)測(cè)試。關(guān)鍵模塊是指具有如下一個(gè)或多個(gè)特征的模塊:①對(duì)應(yīng)多條需求;②具有高層控制功能;③復(fù)雜、易出錯(cuò);④有特殊性能要求。對(duì)關(guān)鍵模塊應(yīng)盡早測(cè)試,并應(yīng)進(jìn)行反復(fù)的回歸測(cè)試。3)混合式測(cè)試及重點(diǎn)測(cè)試自頂向下和自底向上兩種集成測(cè)試方法的943.集成測(cè)試文檔集成測(cè)試文檔即測(cè)試說明書(testspecifications)應(yīng)給出集成的總體規(guī)劃和某些特殊測(cè)試的描述。它將作為軟件配置的一部分提交給用戶。測(cè)試說明書的主要內(nèi)容提綱如下:3.集成測(cè)試文檔集成測(cè)試文檔即測(cè)試說明書(testspec95測(cè)試說明書的主要內(nèi)容提綱1)測(cè)試范圍2)測(cè)試計(jì)劃A.測(cè)試的各個(gè)階段和劃分模塊群情況B.進(jìn)度安排C.開銷軟件(驅(qū)動(dòng)和樁模塊)D.環(huán)境和資源測(cè)試說明書的主要內(nèi)容提綱1)測(cè)試范圍96測(cè)試說明書的主要內(nèi)容提綱3)各個(gè)模塊群測(cè)試過程的描述,包括:A.集成的順序①用途②被測(cè)模式B.模塊群中各模塊單元測(cè)試的情況①模塊的測(cè)試描述②開銷軟件描述③期望的結(jié)果測(cè)試說明書的主要內(nèi)容提綱3)各個(gè)模塊群測(cè)試過程的描述,包括:97測(cè)試說明書的主要內(nèi)容提綱C.測(cè)試環(huán)境①特殊工具和技術(shù)②開銷軟件的描述D.測(cè)試用例E.模塊群的期望結(jié)果等4)實(shí)際測(cè)試結(jié)果5)參考文獻(xiàn)6)附錄。測(cè)試說明書的主要內(nèi)容提綱C.測(cè)試環(huán)境9812.3.3驗(yàn)收測(cè)試又稱為確認(rèn)測(cè)試。確認(rèn)測(cè)試是一種驗(yàn)收形式的測(cè)試,主要是檢查軟件是否滿足軟件需求規(guī)格說明書中的確認(rèn)標(biāo)準(zhǔn),即測(cè)試軟件能否按照合同的要求運(yùn)行。12.3.3驗(yàn)收測(cè)試又稱為確認(rèn)測(cè)試。確認(rèn)測(cè)試是一種驗(yàn)收形991.驗(yàn)收測(cè)試的實(shí)施驗(yàn)收測(cè)試需要采用一系列的黑盒測(cè)試來完成。參加人員有:專門的測(cè)試人員,必須有用戶或客戶參加。文檔:需求規(guī)格說明書、用戶手冊(cè)等,應(yīng)事先制定測(cè)試計(jì)劃,確定測(cè)試的種類、測(cè)試進(jìn)度、設(shè)計(jì)具體的測(cè)試用例。軟件驗(yàn)收測(cè)試的中心任務(wù)是測(cè)試軟件是否滿足合同規(guī)定的所有功能和性能,文檔資料是否齊全,人機(jī)界面以及可移植性、兼容性、可維護(hù)性、容錯(cuò)能力等方面是否達(dá)到了用戶的期望。1.驗(yàn)收測(cè)試的實(shí)施驗(yàn)收測(cè)試需要采用一系列的黑盒測(cè)試來完成。1001.驗(yàn)收測(cè)試的實(shí)施經(jīng)過驗(yàn)收測(cè)試后,其結(jié)果可能是以下兩種情況之一:1)功能、性能等各項(xiàng)指標(biāo)滿足需求規(guī)格說明的要求,用戶可以接受;2)功能、性能等各項(xiàng)指標(biāo)不滿足需求規(guī)格說明的全部要求,用戶不能接受。對(duì)于第二種結(jié)果,應(yīng)提交一份問題分析報(bào)告。1.驗(yàn)收測(cè)試的實(shí)施經(jīng)過驗(yàn)收測(cè)試后,其結(jié)果可能是以下兩種情況之1012.軟件配置復(fù)審軟件配置復(fù)審是驗(yàn)收測(cè)試的重要環(huán)節(jié)之一。軟件配置復(fù)審的任務(wù)是審查軟件配置(組成程序、所有文檔資料、數(shù)據(jù)結(jié)構(gòu)的所有項(xiàng)目)的正確性、完整性和一致性,以便確保軟件配置齊全、分類有序,并包括軟件維護(hù)所必需的細(xì)節(jié),從而為以后的軟件維護(hù)工作奠定了基礎(chǔ)。2.軟件配置復(fù)審軟件配置復(fù)審是驗(yàn)收測(cè)試的重要環(huán)節(jié)之一。軟件配1023.α、β測(cè)試要驗(yàn)證所開發(fā)的軟件是否真正滿足最終用戶的要求,就應(yīng)由用戶在其實(shí)際工作的環(huán)境中進(jìn)行一系列的“驗(yàn)收測(cè)試”。但一方面用戶進(jìn)行“驗(yàn)收測(cè)試”可能導(dǎo)致開發(fā)延期,另一方面是一個(gè)軟件產(chǎn)品不可能由每個(gè)用戶驗(yàn)收。因此,通常的做法是采用“α、β測(cè)試”的方法。3.α、β測(cè)試要驗(yàn)證所開發(fā)的軟件是否真正滿足最終用戶的要求,1031)α測(cè)試所謂α測(cè)試,可以是由用戶在開發(fā)環(huán)境下進(jìn)行的一種測(cè)試,也可以是軟件公司內(nèi)部的“用戶”在模擬實(shí)際操作環(huán)境下進(jìn)行的一種測(cè)試。被測(cè)試的是即將面市的軟件產(chǎn)品的α版本。α測(cè)試是在受控制的環(huán)境下進(jìn)行的測(cè)試,其目的是檢測(cè)軟件產(chǎn)品的功能(Function)、可使用性(Usability)、可靠性(Reliability)、性能(Performance)和支持(Support),即FURPS,特別是產(chǎn)品的界面和特色。參加α測(cè)試的人員是除了開發(fā)人員之外最先“使用”產(chǎn)品的人員,他們提出的修改意見是很有價(jià)值的。經(jīng)過α測(cè)試并對(duì)軟件進(jìn)行修改后,所生成的軟件產(chǎn)品稱為β版本。1)α測(cè)試所謂α測(cè)試,可以是由用戶在開發(fā)環(huán)境下進(jìn)行的一種測(cè)試1042)β測(cè)試β測(cè)試是由軟件的多個(gè)用戶在用戶的實(shí)際使用環(huán)境下對(duì)軟件產(chǎn)品的β版本進(jìn)行的測(cè)試。β測(cè)試,開發(fā)者不在現(xiàn)場(chǎng),要求用戶記錄所遇到的問題,并定期向開發(fā)者報(bào)告異常情況、提出意見和建議,供開發(fā)者修改、完善。β測(cè)試將進(jìn)一步檢測(cè)軟件的FURPS,并著重于產(chǎn)品的支持性(包括文檔、用戶培訓(xùn)等)。在β測(cè)試階段,軟件產(chǎn)品的所有手冊(cè)應(yīng)完全定稿,可以向用戶提交最終的軟件產(chǎn)品了。2)β測(cè)試β測(cè)試是由軟件的多個(gè)用戶在用戶的實(shí)際使用環(huán)境下對(duì)軟10512.3.4系統(tǒng)測(cè)試軟件開發(fā)完畢,就應(yīng)和系統(tǒng)硬件、數(shù)據(jù)庫等其他系統(tǒng)要素集成為一個(gè)完整的系統(tǒng)。在集成的過程中,要進(jìn)行一系列的系統(tǒng)調(diào)試和測(cè)試,以便驗(yàn)證各個(gè)系統(tǒng)要素能否在軟件的控制下有條不紊地工作,實(shí)現(xiàn)系統(tǒng)規(guī)格說明中所規(guī)定的系統(tǒng)功能、性能等系統(tǒng)需求。系統(tǒng)測(cè)試需要有硬件工程師、軟件工程師、數(shù)據(jù)庫工程師、專業(yè)領(lǐng)域的專家等各類技術(shù)人員參加,協(xié)同完成調(diào)試和測(cè)試任務(wù)。12.3.4系統(tǒng)測(cè)試軟件開發(fā)完畢,就應(yīng)和系統(tǒng)硬件、數(shù)據(jù)庫10612.3.4系統(tǒng)測(cè)試在進(jìn)行系統(tǒng)測(cè)試之前,軟件工程師應(yīng)該完成以下幾項(xiàng)工作:1)參與系統(tǒng)測(cè)試的規(guī)劃和設(shè)計(jì),從軟件的角度保證系統(tǒng)測(cè)試的合理性;2)設(shè)計(jì)測(cè)試用例,模擬錯(cuò)誤數(shù)據(jù)和軟件界面可能發(fā)生的錯(cuò)誤,記錄測(cè)試結(jié)果,為系統(tǒng)測(cè)試提供支持和幫助;3)為測(cè)試軟件系統(tǒng)的輸入信息設(shè)計(jì)出錯(cuò)處理通路。系統(tǒng)測(cè)試應(yīng)根據(jù)系統(tǒng)規(guī)格說明書的驗(yàn)收準(zhǔn)則進(jìn)行各種不同的測(cè)試,目的是使系統(tǒng)充分運(yùn)行,驗(yàn)證其是否實(shí)現(xiàn)了系統(tǒng)需求。12.3.4系統(tǒng)測(cè)試在進(jìn)行系統(tǒng)測(cè)試之前,軟件工程師應(yīng)該完107幾類系統(tǒng)測(cè)試簡介①功能測(cè)試:許多系統(tǒng)功能只有在系統(tǒng)環(huán)境下進(jìn)行測(cè)試,才能驗(yàn)證是否滿足系統(tǒng)功能需求。②性能測(cè)試:在整個(gè)系統(tǒng)的真實(shí)環(huán)境下,必需進(jìn)行系統(tǒng)性能測(cè)試,以便全面、可靠地測(cè)試系統(tǒng)的運(yùn)行性能。③恢復(fù)測(cè)試:主要是驗(yàn)證系統(tǒng)的容錯(cuò)能力以及在發(fā)生錯(cuò)誤導(dǎo)致系統(tǒng)失敗后系統(tǒng)的恢復(fù)能力。測(cè)試的方法是采取各種方法使系統(tǒng)失敗,再驗(yàn)證系統(tǒng)能否按照預(yù)定的要求盡快恢復(fù)。幾類系統(tǒng)測(cè)試簡介①功能測(cè)試:許多系統(tǒng)功能只有在系統(tǒng)環(huán)境下進(jìn)行108幾類系統(tǒng)測(cè)試簡介④安全測(cè)試:檢查系統(tǒng)對(duì)非法入侵者的防范能力??捎蓽y(cè)試人員扮演入侵者的角色。⑤容量測(cè)試:例如使操作系統(tǒng)作業(yè)隊(duì)列“滿員”,考核是否能處理規(guī)定數(shù)量的任務(wù)。⑥壓力測(cè)試:對(duì)負(fù)荷可變的系統(tǒng)驗(yàn)證其在超負(fù)荷的情況下的承受能力。⑦可用性測(cè)試:對(duì)接口結(jié)構(gòu)、輸出量定義、出錯(cuò)信息、精度、響應(yīng)方式的可用性的考核。⑧存儲(chǔ)器測(cè)試:考核有關(guān)存儲(chǔ)器的指標(biāo),如緩沖區(qū)的大小等。⑨兼容性/轉(zhuǎn)換性能測(cè)試:用于測(cè)試程序的兼容性和變換規(guī)程。幾類系統(tǒng)測(cè)試簡介④安全測(cè)試:檢查系統(tǒng)對(duì)非法入侵者的防范能力。109幾類系統(tǒng)測(cè)試簡介⑩構(gòu)成測(cè)試:對(duì)程序本身每種可能的構(gòu)成進(jìn)行測(cè)試,至少對(duì)每種硬設(shè)備,程序的最小和最大構(gòu)成進(jìn)行測(cè)試。⑾可靠性測(cè)試:按照規(guī)格說明的規(guī)定,考核程序的可靠性。⑿可服務(wù)性測(cè)試:對(duì)系統(tǒng)的服務(wù)性手段如診斷程序、維護(hù)規(guī)程等的測(cè)試。⒀資料測(cè)試:測(cè)試用戶資料的準(zhǔn)確性。⒁規(guī)程測(cè)試:測(cè)試各類人員應(yīng)執(zhí)行的規(guī)程。⒂安裝測(cè)試:對(duì)安裝規(guī)程的考核測(cè)試。幾類系統(tǒng)測(cè)試簡介⑩構(gòu)成測(cè)試:對(duì)程序本身每種可能的構(gòu)成進(jìn)行測(cè)試11012.4調(diào)試

12.4.1調(diào)試的概念

調(diào)試則是在進(jìn)行了一次成功的測(cè)試之后立即開始的。調(diào)試的目的是確定錯(cuò)誤的位置和引起錯(cuò)誤的原因,并加以改正。因此,又稱為排錯(cuò)或糾錯(cuò)。實(shí)踐表明,錯(cuò)誤定位是軟件工程中最困難的工作,確定發(fā)生錯(cuò)誤的位置和內(nèi)在原因所需的工作量幾乎占整個(gè)調(diào)試工作量的90%。12.4調(diào)試

12.4.1調(diào)試的概念調(diào)試則是在進(jìn)11112.4.1調(diào)試的概念隱藏在程序中的錯(cuò)誤的特殊的性質(zhì)包括:①錯(cuò)誤的表現(xiàn)遠(yuǎn)離引起錯(cuò)誤的位置和內(nèi)在原因,尤其對(duì)高度耦合的程序結(jié)構(gòu)更是如此;②某些錯(cuò)誤現(xiàn)象可能是假象;③糾正一個(gè)錯(cuò)誤可能引起多個(gè)錯(cuò)誤,也可能掩蓋其他錯(cuò)誤;④由于操作員的疏忽致使錯(cuò)誤現(xiàn)象無法重現(xiàn),很難追蹤;⑤錯(cuò)誤可能不是直接由程序引起的;⑥某些輸入條件難于精確地再構(gòu)造(如某些實(shí)時(shí)系統(tǒng)的輸入次序不確定);⑦錯(cuò)誤現(xiàn)象時(shí)有時(shí)無。12.4.1調(diào)試的概念隱藏在程序中的錯(cuò)誤的特殊的性質(zhì)包括11212.4.2調(diào)試策略分為三類:原始類;歸納法排除類;回溯類。演繹法1.原始類(bruteforce)其主要思想是“通過程序運(yùn)行現(xiàn)場(chǎng)找錯(cuò)”。例如輸出存儲(chǔ)器、寄存器的內(nèi)容,在程序中插入打印語句等等。這種方法的效率低,還需要修改程序,更依賴測(cè)試人員的能力和經(jīng)驗(yàn)。12.4.2調(diào)試策略分為三類:原始類;11312.4.2調(diào)試策略2.歸納法調(diào)試歸納法調(diào)試是從測(cè)試結(jié)果發(fā)現(xiàn)的錯(cuò)誤入手,收集正常執(zhí)行或出錯(cuò)的數(shù)據(jù),分析他們之間的關(guān)系,提出出錯(cuò)原因的假設(shè),然后再驗(yàn)證或否定這個(gè)假設(shè)。其具體步驟如下:1)收集數(shù)據(jù):收集程序做對(duì)了什么和做錯(cuò)了什么的有關(guān)全部數(shù)據(jù);2)整理、分析數(shù)據(jù):對(duì)收集的數(shù)據(jù)進(jìn)行分析、比較和整理,注意觀察數(shù)據(jù)間的關(guān)系,從錯(cuò)誤的癥狀中發(fā)現(xiàn)線索;12.4.2調(diào)試策略2.歸納法調(diào)試1142.歸納法調(diào)試3)提出假設(shè):對(duì)這些線索進(jìn)行研究和推測(cè),提出有關(guān)錯(cuò)誤產(chǎn)生的原因和部位的一個(gè)或多個(gè)假設(shè)。如果有多個(gè)假設(shè),首先選擇可能性最大的一個(gè)。4)證明假設(shè):由數(shù)據(jù)驗(yàn)證或反正假設(shè),如果假設(shè)得到證實(shí),據(jù)此閱讀程序找出出錯(cuò)原因和位置并進(jìn)行改正;如果無法驗(yàn)證,則可能假設(shè)錯(cuò)誤或有多重錯(cuò)誤,需要提出新的假設(shè),進(jìn)行新的驗(yàn)證。2.歸納法調(diào)試3)提出假設(shè):對(duì)這些線索進(jìn)行研究和推測(cè),提出有11512.4.2調(diào)試策略3.演繹法調(diào)試演繹法是枚舉所有可能引起出錯(cuò)的原因作為假設(shè),然后從中排除不可能發(fā)生的原因和假設(shè),對(duì)余下的假設(shè)進(jìn)行不斷地驗(yàn)證和改進(jìn),最后從中推演出出錯(cuò)的原因和部位。4.回溯法調(diào)試對(duì)小型程序進(jìn)行調(diào)試,回溯法是一種有效的方法。該方法是從發(fā)現(xiàn)錯(cuò)誤現(xiàn)象的地方出發(fā),人工沿程序的控制流程向回追蹤,直至找到產(chǎn)生錯(cuò)誤的原因?yàn)橹?。但是,?dāng)程序的規(guī)模較大時(shí),由于需回溯的路線顯著增加,因此無法做到完全回溯,只好采用其他的調(diào)試方法。12.4.2調(diào)試策略3.演繹法調(diào)試11612.5測(cè)試工具

12.5.1自動(dòng)測(cè)試工具1)模塊驅(qū)動(dòng)工具(moduleanimatetool)2)靜態(tài)分析器(staticanalyzers);3)測(cè)試覆蓋監(jiān)視器;4)程序正確性證明器;5)測(cè)試數(shù)據(jù)生成器(testdatagenerators);6)環(huán)境模擬器;此外,還有:代碼審查器、測(cè)試文件產(chǎn)生器、測(cè)試驗(yàn)證器、符號(hào)處理系統(tǒng)、輸出比較器、測(cè)試套具,等等。12.5測(cè)試工具

12.5.1自動(dòng)測(cè)試工具1)模11712.5.2調(diào)試工具在早期,調(diào)試工具用符號(hào)調(diào)試器。目前的大多數(shù)程序設(shè)計(jì)環(huán)境,如VB、VC++、BorlandC++Builder、PB、C#等都是帶有CASE工具的集成開發(fā)環(huán)境,即將編輯、編譯、連接、運(yùn)行、調(diào)試、打包、項(xiàng)目管理、文件管理、部件管理、數(shù)據(jù)庫等多個(gè)工具集成在一起。其中的調(diào)試工具常見的功能有設(shè)置斷點(diǎn),單步執(zhí)行,跟蹤,查看、修改變量或表達(dá)式的值等等。12.5.2調(diào)試工具在早期,調(diào)試工具用符號(hào)調(diào)試器。118習(xí)題12.6假設(shè)某程序讀入三個(gè)整數(shù),分別解釋為三角形的各邊,并據(jù)此打印信息,說明三角形是普通的、等腰的或等邊的。為此程序設(shè)計(jì)一組有效的測(cè)試用例。12.7設(shè)計(jì)并實(shí)現(xiàn)上題說明的程序(必要的地方增加出錯(cuò)處理),用基本路徑測(cè)試法設(shè)計(jì)測(cè)試用例,實(shí)際測(cè)試和調(diào)試后總結(jié)所得到的結(jié)果。習(xí)題12.6假設(shè)某程序讀入三個(gè)整數(shù),分別解釋為三角形的各119解:1)程序流程圖如下:輸入a,b,ca+b<=c|||a-b|>=ca==ba<=0||b<=0||c<=0輸入a,b,c輸出不是a==c輸出等邊輸出等腰a==c輸出等腰b==c輸出等腰輸出普通FTTTTTTFFFFF開始結(jié)束12、3和456和789101112131415161718解:1)程序流程圖如下:輸入a,b,ca+b<=c|||1202)C語言程序如下:#include"math.h"main(){inta,b,c;printf("pleaseinputa,b,c:

");scanf("%d%d%d

",&a,&b,&c);while(a<=0||b<=0||c<=0){printf("a,b,cmustbe>0!\npleaseinputa,b,c:

");scanf("%d%d%d

",&a,&b,&c);}if(a+b<=c||abs(a-b)>=c)printf(“Itisnotatriangle!\n

");elseif(a==b)if(a==c)printf("Itisaequilateraltriangle!\n

");elseprintf("Itisaisoscelestriangle!\n

");elseif(a==c)printf("Itisaisoscelestriangle!\n

");elseif(b==c)printf("Itisaisoscelestriangle!\n

");elseprintf("Itisageneraltriangle!\n

");}2)C語言程序如下:1213)程序圖(流圖)如下:4)求出巡回秩數(shù):①V(G)=E-N+2=26-18+2=10②V(G)=P+1=9+1=10其中結(jié)點(diǎn)2、3、4、6、7、9、10、13、15是謂詞結(jié)點(diǎn)③V(G)=10(個(gè)區(qū)域)181716151413121110987654321R3R1R2R4R5R6R7R8R9R103)程序圖(流圖)如下:1817161514131211101225)確定基本路徑集合(10條)路徑1:1–2–5–2路徑2:1–2–3–5–2路徑3:1–2–3–4–5–2路徑4:1–2–3–4–6–8–18路徑5:1–2–3–4–6–7–8–18路徑6:1–2–3–4–6–7–9–10–11–18路徑7:1–2–3–4–6–7–9–10–12–18路徑8:1–2–3–4–6–7–9–13–14–18路徑9:1–2–3–4–6–7–9–13–15–16–18路徑10:1–2–3–4–6–7–9–13–15–17–185)確定基本路徑集合(10條)1236)為每一條獨(dú)立路徑設(shè)計(jì)設(shè)計(jì)用例:①路徑1的測(cè)試用例:a=–3,b=4,c=5;期望結(jié)果:輸出出錯(cuò):a,b,cmustbe>0!

提示輸入:pleaseinputa,b,c:②路徑2的測(cè)試用例:a=3,b=–4,c=5;期望結(jié)果:輸出出錯(cuò):a,b,cmustbe>0!

提示輸入:pleaseinputa,b,c:③路徑3的測(cè)試用例:a=3,b=4,c=–5;期望結(jié)果:輸出出錯(cuò):a,b,cmustbe>0!

提示輸入:pleaseinputa,b,c:④路徑4的測(cè)試用例:a=3,b=1,c=5;期望結(jié)果:輸出:Itisnotatriangle!⑤路徑5的測(cè)試用例:a=3,b=7,c=2;期望結(jié)果:輸出:Itisnotatriangle!6)為每一條獨(dú)立路徑設(shè)計(jì)設(shè)計(jì)用例:124⑥路徑6的測(cè)試用例:a=3,b=3,c=3;期望結(jié)果:輸出:Itisaequilateraltriangle!⑦路徑7的測(cè)試用例:a=3,b=3,c=5;期望結(jié)果:輸出:Itisaisoscelestriangle!⑧路徑8的測(cè)試用例:a=3,b=4,c=3;期望結(jié)果:輸出:Itisaisoscelestriangle!⑨路徑9的測(cè)試用例:a=3,b=4,c=4;期望結(jié)果:輸出:Itisaisoscelestriangle!⑩路徑10的測(cè)試用例:a=3,b=4,c=5;期望結(jié)果:輸出:Itisageneraltriangle!⑥路徑6的測(cè)試用例:a=3,b=3,c=125第12章 軟件測(cè)試軟件測(cè)試是對(duì)軟件規(guī)格說明、軟件設(shè)計(jì)和編碼的最全面也是最后的審查。通過軟件測(cè)試,可以發(fā)現(xiàn)軟件中絕大部分潛伏的錯(cuò)誤,從而可以大大提高軟件產(chǎn)品的正確性、可靠性,進(jìn)而可顯著提高產(chǎn)品質(zhì)量。統(tǒng)計(jì)表明,軟件測(cè)試工作往往占軟件開發(fā)總工作量的40%以上。甚至3~5倍以上。第12章 軟件測(cè)試軟件測(cè)試是對(duì)軟件規(guī)格說明、軟件設(shè)計(jì)和編碼的126第12章 軟件測(cè)試本章將介紹:軟件測(cè)試的基本知識(shí);軟件測(cè)試的常用方法和技術(shù);軟件測(cè)試的過程;軟件的調(diào)試與排錯(cuò)技術(shù);軟件測(cè)試的工具。第12章 軟件測(cè)試本章將介紹:127第12章 軟件測(cè)試12.1軟件測(cè)試的基本知識(shí)12.2軟件測(cè)試技術(shù)12.3軟件測(cè)試過程12.4調(diào)試12.5測(cè)試工具第12章 軟件測(cè)試12.1軟件測(cè)試的基本知識(shí)12812.1軟件測(cè)試的基本知識(shí)軟件測(cè)試是執(zhí)行程序發(fā)現(xiàn)并排除程序中潛伏的錯(cuò)誤的過程。軟件測(cè)試是軟件投入運(yùn)行前,對(duì)軟件需求分析、設(shè)計(jì)、實(shí)現(xiàn)的強(qiáng)有力的最終審查。12.1軟件測(cè)試的基本知

溫馨提示

  • 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)論