版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、軟件制造工程第5章 測(cè)試2 5.1 軟件測(cè)試基礎(chǔ)軟件測(cè)試基礎(chǔ)5.2 單元測(cè)試單元測(cè)試5.3 集成測(cè)試集成測(cè)試5.4 白盒測(cè)試技術(shù)白盒測(cè)試技術(shù)5.5 黑盒測(cè)試技術(shù)黑盒測(cè)試技術(shù)5.6 測(cè)試用例書測(cè)試用例書3 5 . 1 軟件測(cè)試的基礎(chǔ)什么是軟件測(cè)試?什么是軟件測(cè)試?是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過(guò)程。是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過(guò)程。發(fā)現(xiàn)錯(cuò)誤是為了更正錯(cuò)誤,最終得到一發(fā)現(xiàn)錯(cuò)誤是為了更正錯(cuò)誤,最終得到一個(gè)高質(zhì)量的軟件系統(tǒng)。個(gè)高質(zhì)量的軟件系統(tǒng)。軟件測(cè)試的對(duì)象軟件測(cè)試的對(duì)象:整個(gè)軟件定義、開(kāi)發(fā):整個(gè)軟件定義、開(kāi)發(fā)周期的產(chǎn)品周期的產(chǎn)品. 軟件測(cè)試不等于程序測(cè)試;它包軟件測(cè)試不等于程序測(cè)試;它包括程序測(cè)試和文檔測(cè)
2、試。括程序測(cè)試和文檔測(cè)試。測(cè)試用例測(cè)試用例:通常指測(cè)試數(shù)據(jù)和預(yù)期的輸:通常指測(cè)試數(shù)據(jù)和預(yù)期的輸出結(jié)果出結(jié)果測(cè)試用例書測(cè)試用例書4 5.1.1 軟件測(cè)試的目標(biāo)軟件測(cè)試存在的矛盾軟件測(cè)試存在的矛盾用戶希望通過(guò)軟件測(cè)試暴露軟件中隱藏用戶希望通過(guò)軟件測(cè)試暴露軟件中隱藏的錯(cuò)誤和缺陷,以考慮是否可接受該產(chǎn)品。的錯(cuò)誤和缺陷,以考慮是否可接受該產(chǎn)品。軟件開(kāi)發(fā)者希望通過(guò)軟件測(cè)試表明軟件軟件開(kāi)發(fā)者希望通過(guò)軟件測(cè)試表明軟件產(chǎn)品中不存在錯(cuò)誤,已正確地實(shí)現(xiàn)了用戶的產(chǎn)品中不存在錯(cuò)誤,已正確地實(shí)現(xiàn)了用戶的要求。要求。5 G.Myers給出的軟件測(cè)試目的l測(cè)試是為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過(guò)程測(cè)試是為了發(fā)現(xiàn)程序中的錯(cuò)誤而
3、執(zhí)行程序的過(guò)程l好的測(cè)試用例是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的好的測(cè)試用例是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試方案;錯(cuò)誤的測(cè)試方案;l成功的測(cè)試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試成功的測(cè)試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試總之,測(cè)試的目的是以最少的時(shí)間和人力,系統(tǒng)總之,測(cè)試的目的是以最少的時(shí)間和人力,系統(tǒng)地找出軟件中潛在的各種錯(cuò)誤和缺陷;測(cè)試附帶的收地找出軟件中潛在的各種錯(cuò)誤和缺陷;測(cè)試附帶的收獲是它能證明軟件的功能和性能與需求說(shuō)明相符合。獲是它能證明軟件的功能和性能與需求說(shuō)明相符合。注意:測(cè)試不能表明軟件中不存在錯(cuò)誤,它只能注意:測(cè)試不能表明軟件中不存在錯(cuò)誤,它只能說(shuō)明軟件中存在錯(cuò)誤。說(shuō)明軟件中存在
4、錯(cuò)誤。6 5. 2. 2 軟件測(cè)試的準(zhǔn)則(1)1 )所有測(cè)試都能追溯到用戶需求)所有測(cè)試都能追溯到用戶需求 2 )應(yīng)該遠(yuǎn)在測(cè)試開(kāi)始之前就制定出測(cè)試計(jì)劃)應(yīng)該遠(yuǎn)在測(cè)試開(kāi)始之前就制定出測(cè)試計(jì)劃 3 )應(yīng)該把)應(yīng)該把 Pareto原理應(yīng)用到軟件測(cè)試中原理應(yīng)用到軟件測(cè)試中群集現(xiàn)象:群集現(xiàn)象: 80 的錯(cuò)誤可能是由的錯(cuò)誤可能是由 20 的模塊造成的模塊造成的的 4 )從)從“小規(guī)模小規(guī)?!睖y(cè)試開(kāi)始,逐步過(guò)渡到測(cè)試開(kāi)始,逐步過(guò)渡到“大大規(guī)模規(guī)?!睖y(cè)試測(cè)試 5 )窮舉測(cè)試是不可能的)窮舉測(cè)試是不可能的測(cè)試只能證明程序有錯(cuò),不能證明程序沒(méi)有錯(cuò)誤測(cè)試只能證明程序有錯(cuò),不能證明程序沒(méi)有錯(cuò)誤 6 )應(yīng)由獨(dú)立的第三方
5、從事測(cè)試工作)應(yīng)由獨(dú)立的第三方從事測(cè)試工作7 5.2.3 測(cè)試方法軟件測(cè)試方法一般分為:靜態(tài)測(cè)試和動(dòng)軟件測(cè)試方法一般分為:靜態(tài)測(cè)試和動(dòng)態(tài)測(cè)試。態(tài)測(cè)試。靜態(tài)測(cè)試靜態(tài)測(cè)試是指被測(cè)程序不在機(jī)器上運(yùn)行,是指被測(cè)程序不在機(jī)器上運(yùn)行,采用人工檢測(cè)和計(jì)算機(jī)輔助靜態(tài)分析的手段采用人工檢測(cè)和計(jì)算機(jī)輔助靜態(tài)分析的手段對(duì)程序進(jìn)行檢測(cè)。對(duì)程序進(jìn)行檢測(cè)。動(dòng)態(tài)測(cè)試動(dòng)態(tài)測(cè)試是指通過(guò)運(yùn)行程序發(fā)現(xiàn)錯(cuò)誤,是指通過(guò)運(yùn)行程序發(fā)現(xiàn)錯(cuò)誤,又分又分黑盒法黑盒法和和白盒法白盒法兩種。兩種。8 兩種動(dòng)態(tài)測(cè)試方法黑盒測(cè)試黑盒測(cè)試(功能測(cè)試功能測(cè)試): 把程序看作一個(gè)黑盒子;把程序看作一個(gè)黑盒子; 完全不考慮程序的內(nèi)部結(jié)構(gòu)和處理過(guò)程;完全不考慮程
6、序的內(nèi)部結(jié)構(gòu)和處理過(guò)程; 是在程序接口進(jìn)行的測(cè)試。是在程序接口進(jìn)行的測(cè)試。白盒測(cè)試白盒測(cè)試(結(jié)構(gòu)測(cè)試結(jié)構(gòu)測(cè)試): 把程序看成裝在一個(gè)透明的盒子里;把程序看成裝在一個(gè)透明的盒子里; 測(cè)試者完全知道程序的結(jié)構(gòu)和處理算法;測(cè)試者完全知道程序的結(jié)構(gòu)和處理算法; 按照程序內(nèi)部的邏輯測(cè)試程序,檢測(cè)程序中的主按照程序內(nèi)部的邏輯測(cè)試程序,檢測(cè)程序中的主要執(zhí)行通路是否都能按預(yù)定要求正確工作。要執(zhí)行通路是否都能按預(yù)定要求正確工作。黑盒測(cè)試不可能實(shí)現(xiàn)窮盡測(cè)試:黑盒測(cè)試不可能實(shí)現(xiàn)窮盡測(cè)試:假設(shè)有程序假設(shè)有程序P,輸入量為,輸入量為A和和B,輸出量為,輸出量為C。如果計(jì)算機(jī)的字長(zhǎng)為如果計(jì)算機(jī)的字長(zhǎng)為32位,位,A和和B
7、的數(shù)據(jù)類的數(shù)據(jù)類型都是整數(shù)類型。將型都是整數(shù)類型。將A和和B的可能取值進(jìn)行排的可能取值進(jìn)行排列組合,輸入數(shù)據(jù)的可能性有:列組合,輸入數(shù)據(jù)的可能性有:232232264種。種。假設(shè)這個(gè)程序執(zhí)行一次需要假設(shè)這個(gè)程序執(zhí)行一次需要1毫秒,要完成毫秒,要完成所有的測(cè)試,計(jì)算機(jī)需要連續(xù)工作所有的測(cè)試,計(jì)算機(jī)需要連續(xù)工作5億年。億年。白盒測(cè)試也不能實(shí)現(xiàn)窮盡測(cè)白盒測(cè)試也不能實(shí)現(xiàn)窮盡測(cè)試:試:圖中所示的一個(gè)小程序的控圖中所示的一個(gè)小程序的控制流程。曲線代表執(zhí)行次數(shù)不制流程。曲線代表執(zhí)行次數(shù)不超過(guò)超過(guò)20的循環(huán),循環(huán)體中共有的循環(huán),循環(huán)體中共有5條通路。條通路。可能執(zhí)行的路徑有可能執(zhí)行的路徑有520條,近條,近似
8、為似為1014條可能的路徑。條可能的路徑。如果完成一個(gè)路徑的測(cè)試需如果完成一個(gè)路徑的測(cè)試需要要1毫秒,那么整個(gè)測(cè)試過(guò)程需毫秒,那么整個(gè)測(cè)試過(guò)程需要要3170年。年。黑盒測(cè)試與白盒測(cè)試優(yōu)缺點(diǎn)比較:黑盒測(cè)試與白盒測(cè)試優(yōu)缺點(diǎn)比較: 黑盒測(cè)試黑盒測(cè)試白盒測(cè)試白盒測(cè)試優(yōu)優(yōu)點(diǎn)點(diǎn)適用于各階段測(cè)試適用于各階段測(cè)試從產(chǎn)品功能角度測(cè)試從產(chǎn)品功能角度測(cè)試容易入手生成測(cè)試數(shù)據(jù)容易入手生成測(cè)試數(shù)據(jù)可構(gòu)成測(cè)試數(shù)據(jù)使特定程可構(gòu)成測(cè)試數(shù)據(jù)使特定程 序部分得到測(cè)試序部分得到測(cè)試有一定的充分性度量手段有一定的充分性度量手段可獲較多工具支持可獲較多工具支持缺缺點(diǎn)點(diǎn)某些代碼得不到測(cè)試某些代碼得不到測(cè)試如果規(guī)格說(shuō)明有誤,則無(wú)如果規(guī)格說(shuō)
9、明有誤,則無(wú)法發(fā)現(xiàn)法發(fā)現(xiàn)不易進(jìn)行充分性測(cè)試不易進(jìn)行充分性測(cè)試通常不易生成測(cè)試數(shù)據(jù)通常不易生成測(cè)試數(shù)據(jù)無(wú)法對(duì)未實(shí)現(xiàn)規(guī)格說(shuō)明的部無(wú)法對(duì)未實(shí)現(xiàn)規(guī)格說(shuō)明的部分進(jìn)行測(cè)試分進(jìn)行測(cè)試工作量大,通常只用于單元工作量大,通常只用于單元測(cè)試,有應(yīng)用局限測(cè)試,有應(yīng)用局限性性質(zhì)質(zhì)一種確認(rèn)技術(shù),回答一種確認(rèn)技術(shù),回答“我們我們?cè)跇?gòu)造一個(gè)正確的系統(tǒng)嗎?在構(gòu)造一個(gè)正確的系統(tǒng)嗎?”一種驗(yàn)證技術(shù),回答一種驗(yàn)證技術(shù),回答“我們?cè)谖覀冊(cè)谡_地構(gòu)造一個(gè)系統(tǒng)嗎?正確地構(gòu)造一個(gè)系統(tǒng)嗎?”12 5.1 .4 測(cè)試步驟測(cè)試的測(cè)試的 4 個(gè)步驟:個(gè)步驟:l單元(模塊)測(cè)試單元(模塊)測(cè)試l集成測(cè)試(子系統(tǒng)和系統(tǒng)測(cè)試)集成測(cè)試(子系統(tǒng)和系統(tǒng)測(cè)試
10、)l確認(rèn)(驗(yàn)收)測(cè)試確認(rèn)(驗(yàn)收)測(cè)試l平行運(yùn)行平行運(yùn)行13 測(cè)試與軟件開(kāi)發(fā)各階段的關(guān)系測(cè)試與軟件開(kāi)發(fā)各階段的關(guān)系軟件開(kāi)發(fā)過(guò)程是一個(gè)自頂向下,逐步細(xì)軟件開(kāi)發(fā)過(guò)程是一個(gè)自頂向下,逐步細(xì)化的過(guò)程化的過(guò)程軟件測(cè)試則是依相反順序自底向上,逐軟件測(cè)試則是依相反順序自底向上,逐步集成的過(guò)程。步集成的過(guò)程。14 5.2.5 測(cè)試階段的信息流測(cè)試過(guò)程需要二類輸入軟件配置:軟件需求規(guī)格說(shuō)明、軟件軟件配置:軟件需求規(guī)格說(shuō)明、軟件設(shè)計(jì)規(guī)格說(shuō)明、源代碼等;設(shè)計(jì)規(guī)格說(shuō)明、源代碼等;測(cè)試配置:測(cè)試計(jì)劃、測(cè)試用例、測(cè)試配置:測(cè)試計(jì)劃、測(cè)試用例、測(cè)試程序等;測(cè)試程序等;15 5. 3 單元測(cè)試( Unit Testing )又
11、稱模塊測(cè)試,需要從程序的內(nèi)部結(jié)構(gòu)又稱模塊測(cè)試,需要從程序的內(nèi)部結(jié)構(gòu)出發(fā)設(shè)計(jì)測(cè)試用例。出發(fā)設(shè)計(jì)測(cè)試用例。測(cè)試目的:發(fā)現(xiàn)模塊內(nèi)部可能存在的差測(cè)試目的:發(fā)現(xiàn)模塊內(nèi)部可能存在的差錯(cuò)錯(cuò)測(cè)試依據(jù):詳細(xì)設(shè)計(jì)說(shuō)明書和源程序清測(cè)試依據(jù):詳細(xì)設(shè)計(jì)說(shuō)明書和源程序清單單測(cè)試方法:白盒測(cè)試為主,黑盒測(cè)試為測(cè)試方法:白盒測(cè)試為主,黑盒測(cè)試為輔,多個(gè)模塊并行進(jìn)行。輔,多個(gè)模塊并行進(jìn)行。16 5 .3 .1 測(cè)試重點(diǎn)17 模塊接口測(cè)試在單元測(cè)試的開(kāi)始,應(yīng)對(duì)通過(guò)被測(cè)模塊在單元測(cè)試的開(kāi)始,應(yīng)對(duì)通過(guò)被測(cè)模塊的數(shù)據(jù)流進(jìn)行測(cè)試。的數(shù)據(jù)流進(jìn)行測(cè)試。測(cè)試項(xiàng)目:測(cè)試項(xiàng)目:調(diào)用本模塊的輸入?yún)?shù)是否正確;調(diào)用本模塊的輸入?yún)?shù)是否正確;本模塊調(diào)用
12、子模塊時(shí),輸入給子模塊的參數(shù)本模塊調(diào)用子模塊時(shí),輸入給子模塊的參數(shù)是否正確;是否正確;輸出給標(biāo)準(zhǔn)函數(shù)的參數(shù)是否正確;輸出給標(biāo)準(zhǔn)函數(shù)的參數(shù)是否正確;全局量的定義和用法在各摸塊中是否一致;全局量的定義和用法在各摸塊中是否一致;與外部設(shè)備的輸入輸出是否正確。與外部設(shè)備的輸入輸出是否正確。18 局部數(shù)據(jù)結(jié)構(gòu)測(cè)試測(cè)試項(xiàng)目:測(cè)試項(xiàng)目:不正確或不一致的數(shù)據(jù)類型說(shuō)明不正確或不一致的數(shù)據(jù)類型說(shuō)明使用尚未賦值或尚未初始化的變量使用尚未賦值或尚未初始化的變量錯(cuò)誤的初始值或錯(cuò)誤的缺省值錯(cuò)誤的初始值或錯(cuò)誤的缺省值變量名拼寫錯(cuò)或書寫錯(cuò)變量名拼寫錯(cuò)或書寫錯(cuò)不一致的數(shù)據(jù)類型不一致的數(shù)據(jù)類型全局?jǐn)?shù)據(jù)對(duì)模塊的影響全局?jǐn)?shù)據(jù)對(duì)模塊的
13、影響19 重要的執(zhí)行通路測(cè)試測(cè)試用例要適當(dāng)測(cè)試用例要適當(dāng) : 關(guān)鍵關(guān)鍵20 錯(cuò)誤處理測(cè)試著重測(cè)試以下可能發(fā)生的錯(cuò)誤:著重測(cè)試以下可能發(fā)生的錯(cuò)誤:出錯(cuò)的措述是否難以理解出錯(cuò)的措述是否難以理解出錯(cuò)的描述是否能夠?qū)﹀e(cuò)誤定位出錯(cuò)的描述是否能夠?qū)﹀e(cuò)誤定位顯示的錯(cuò)誤與實(shí)際的錯(cuò)誤是否相符顯示的錯(cuò)誤與實(shí)際的錯(cuò)誤是否相符對(duì)錯(cuò)誤條件的處理正確與否對(duì)錯(cuò)誤條件的處理正確與否在對(duì)錯(cuò)誤進(jìn)行處理之前,錯(cuò)誤條件是否已經(jīng)在對(duì)錯(cuò)誤進(jìn)行處理之前,錯(cuò)誤條件是否已經(jīng)引起系統(tǒng)的干預(yù)等引起系統(tǒng)的干預(yù)等21 邊界測(cè)試重點(diǎn)檢查剛好等于、大于或小于邊界值重點(diǎn)檢查剛好等于、大于或小于邊界值的數(shù)據(jù)的數(shù)據(jù);對(duì)運(yùn)行時(shí)間有要求的模塊,還要專門進(jìn)對(duì)運(yùn)行時(shí)間
14、有要求的模塊,還要專門進(jìn)行關(guān)鍵路徑測(cè)試,以確定最壞情況下和平均行關(guān)鍵路徑測(cè)試,以確定最壞情況下和平均意義下影響模塊運(yùn)行時(shí)間的因素。意義下影響模塊運(yùn)行時(shí)間的因素。22 7.3.2 代碼審查人工測(cè)試源程序。人工測(cè)試源程序。參與者參與者:程序的設(shè)計(jì)者、編寫者、測(cè)試者:程序的設(shè)計(jì)者、編寫者、測(cè)試者沒(méi)有直接參與系統(tǒng)開(kāi)發(fā),但有能力的程序員。沒(méi)有直接參與系統(tǒng)開(kāi)發(fā),但有能力的程序員。方法:方法:研究設(shè)計(jì)說(shuō)明書,一起審查程序代研究設(shè)計(jì)說(shuō)明書,一起審查程序代碼如何實(shí)現(xiàn)設(shè)計(jì),從中發(fā)現(xiàn)問(wèn)題。碼如何實(shí)現(xiàn)設(shè)計(jì),從中發(fā)現(xiàn)問(wèn)題。注意:注意:通常代碼審查和機(jī)器測(cè)試結(jié)合使用。通常代碼審查和機(jī)器測(cè)試結(jié)合使用。23 5. 3.3 計(jì)
15、算機(jī)測(cè)試單元測(cè)試通常在編碼階段進(jìn)行。常用單元測(cè)試通常在編碼階段進(jìn)行。常用機(jī)機(jī)器測(cè)試器測(cè)試,即通過(guò)運(yùn)行模塊發(fā)現(xiàn)問(wèn)題。,即通過(guò)運(yùn)行模塊發(fā)現(xiàn)問(wèn)題。兩個(gè)重要概念:兩個(gè)重要概念:驅(qū)動(dòng)程序(驅(qū)動(dòng)程序( driver ) :相當(dāng)于被測(cè)試模塊:相當(dāng)于被測(cè)試模塊的的“主程序主程序”,接收測(cè)試數(shù)據(jù),把這些數(shù)據(jù),接收測(cè)試數(shù)據(jù),把這些數(shù)據(jù)傳送給被測(cè)試的模塊,并且輸出相關(guān)結(jié)果。傳送給被測(cè)試的模塊,并且輸出相關(guān)結(jié)果。存根程序(存根程序(stub):):代替被測(cè)試模塊代替被測(cè)試模塊所所調(diào)用調(diào)用的模塊。不需要具有子模塊所有功能,的模塊。不需要具有子模塊所有功能,但不允許什么事情也不做。但不允許什么事情也不做。24 單元測(cè)試的
16、測(cè)試環(huán)境25 正文加工系統(tǒng)功能結(jié)構(gòu)圖若要測(cè)試若要測(cè)試“編輯子系統(tǒng)編輯子系統(tǒng)”,需要上層,需要上層“驅(qū)動(dòng)模塊驅(qū)動(dòng)模塊”和下層和下層“存根程序存根程序”26 5 . 4 集成測(cè)試( Integrated Testing )在單元測(cè)試之后,將模塊組裝成系統(tǒng),為發(fā)現(xiàn)在單元測(cè)試之后,將模塊組裝成系統(tǒng),為發(fā)現(xiàn)并排除模塊在連接中可能出現(xiàn)的問(wèn)題,而進(jìn)行的測(cè)并排除模塊在連接中可能出現(xiàn)的問(wèn)題,而進(jìn)行的測(cè)試。試。需要考慮:需要考慮:模塊連接時(shí)穿越模塊接口的數(shù)據(jù)是否會(huì)模塊連接時(shí)穿越模塊接口的數(shù)據(jù)是否會(huì) 丟失;丟失;一個(gè)模塊對(duì)另一個(gè)模塊是否會(huì)產(chǎn)生不利的影響;一個(gè)模塊對(duì)另一個(gè)模塊是否會(huì)產(chǎn)生不利的影響;各子功能組合起來(lái),能
17、各子功能組合起來(lái),能 否達(dá)到預(yù)期要求的父功能否達(dá)到預(yù)期要求的父功能全局?jǐn)?shù)據(jù)結(jié)構(gòu)是否有問(wèn)題;全局?jǐn)?shù)據(jù)結(jié)構(gòu)是否有問(wèn)題;單個(gè)模塊的誤差累積起來(lái),是單個(gè)模塊的誤差累積起來(lái),是 否會(huì)放大至不能接受否會(huì)放大至不能接受的程度。的程度。27 集成測(cè)試的兩種方式 非漸增式組裝方式非漸增式組裝方式對(duì)每個(gè)模塊分別進(jìn)行單元測(cè)試,再把所對(duì)每個(gè)模塊分別進(jìn)行單元測(cè)試,再把所有模塊組裝成一個(gè)完整的系統(tǒng)進(jìn)行的測(cè)試,有模塊組裝成一個(gè)完整的系統(tǒng)進(jìn)行的測(cè)試,從而得到要求的軟件系統(tǒng)。從而得到要求的軟件系統(tǒng)。 漸增式組裝方式漸增式組裝方式先對(duì)模塊進(jìn)行單元測(cè)試,然后將測(cè)試后先對(duì)模塊進(jìn)行單元測(cè)試,然后將測(cè)試后的模塊逐步組裝成較大的系統(tǒng);在組
18、裝的過(guò)的模塊逐步組裝成較大的系統(tǒng);在組裝的過(guò)程中邊連接邊測(cè)試,以發(fā)現(xiàn)連接過(guò)程中產(chǎn)生程中邊連接邊測(cè)試,以發(fā)現(xiàn)連接過(guò)程中產(chǎn)生的問(wèn)題;最后組裝成為要求的軟件系統(tǒng)。的問(wèn)題;最后組裝成為要求的軟件系統(tǒng)。28 漸增式組裝方式的三種類型自頂向下的漸增方式自頂向下的漸增方式自底向上結(jié)合的漸增方式自底向上結(jié)合的漸增方式混合漸增測(cè)試混合漸增測(cè)試29 自頂向下的漸增方式將模塊按系統(tǒng)程序結(jié)構(gòu),沿控制層次自將模塊按系統(tǒng)程序結(jié)構(gòu),沿控制層次自頂向下進(jìn)行組裝。頂向下進(jìn)行組裝。不需要驅(qū)動(dòng)模塊不需要驅(qū)動(dòng)模塊,需要存根模塊需要存根模塊l深度優(yōu)先深度優(yōu)先l寬度優(yōu)先寬度優(yōu)先30 深度優(yōu)先組裝的例子31 組裝步驟1 )對(duì)主模塊進(jìn)行測(cè)試
19、,用存根模塊代替)對(duì)主模塊進(jìn)行測(cè)試,用存根模塊代替下層模塊;下層模塊; 2 )根據(jù)選定的結(jié)合策略,每次用一個(gè))根據(jù)選定的結(jié)合策略,每次用一個(gè)實(shí)際模塊代替一個(gè)樁模塊;實(shí)際模塊代替一個(gè)樁模塊; 3 )在結(jié)合進(jìn)一個(gè)模塊的同時(shí)進(jìn)行測(cè)試;)在結(jié)合進(jìn)一個(gè)模塊的同時(shí)進(jìn)行測(cè)試;4 )為保證加入的模塊沒(méi)有引進(jìn)新的錯(cuò)誤,)為保證加入的模塊沒(méi)有引進(jìn)新的錯(cuò)誤,可能需要進(jìn)行回歸測(cè)試可能需要進(jìn)行回歸測(cè)試32 優(yōu)點(diǎn)優(yōu)點(diǎn):l能在早期驗(yàn)證主要的控制和判斷點(diǎn)。能在早期驗(yàn)證主要的控制和判斷點(diǎn)。l選用按深度方向組裝的方式,可以首先選用按深度方向組裝的方式,可以首先實(shí)現(xiàn)和驗(yàn)證一個(gè)完整的軟件功能。實(shí)現(xiàn)和驗(yàn)證一個(gè)完整的軟件功能。缺點(diǎn)缺點(diǎn):
20、可能遇到邏輯次序上的問(wèn)題可能遇到邏輯次序上的問(wèn)題33 自底向上的增殖方式從程序模塊結(jié)構(gòu)最底層的模塊開(kāi)始組裝和測(cè)試。從程序模塊結(jié)構(gòu)最底層的模塊開(kāi)始組裝和測(cè)試。不再需要存根程序,需要驅(qū)動(dòng)模塊。不再需要存根程序,需要驅(qū)動(dòng)模塊。組合策略:組合策略:把低層模塊組合成實(shí)現(xiàn)某個(gè)特定的軟件子功能把低層模塊組合成實(shí)現(xiàn)某個(gè)特定的軟件子功能的族;的族;用驅(qū)動(dòng)程序協(xié)調(diào)測(cè)試數(shù)據(jù)的輸入和輸出用驅(qū)動(dòng)程序協(xié)調(diào)測(cè)試數(shù)據(jù)的輸入和輸出;對(duì)由模塊組成的子功能族進(jìn)行測(cè)試對(duì)由模塊組成的子功能族進(jìn)行測(cè)試;1.去掉驅(qū)動(dòng)程序去掉驅(qū)動(dòng)程序,沒(méi)軟件結(jié)構(gòu)自下向上移動(dòng)沒(méi)軟件結(jié)構(gòu)自下向上移動(dòng),把子把子功能族組合起來(lái)形成更大的子功能族。功能族組合起來(lái)形成
21、更大的子功能族。34 自底向下組合測(cè)試的例子35 回歸測(cè)試思考:思考:采用采用“漸增式測(cè)試漸增式測(cè)試”時(shí),測(cè)試中時(shí),測(cè)試中當(dāng)新的模塊結(jié)合進(jìn)來(lái)之后,是否需要對(duì)程序當(dāng)新的模塊結(jié)合進(jìn)來(lái)之后,是否需要對(duì)程序進(jìn)行再次測(cè)試?進(jìn)行再次測(cè)試?定義:定義:指集成測(cè)試中,重新執(zhí)行已經(jīng)做指集成測(cè)試中,重新執(zhí)行已經(jīng)做過(guò)測(cè)試的某個(gè)子集,以保證上述這些變化沒(méi)過(guò)測(cè)試的某個(gè)子集,以保證上述這些變化沒(méi)有帶來(lái)非預(yù)期的副作用。有帶來(lái)非預(yù)期的副作用。先采取自頂向下的方式測(cè)試被修改的模先采取自頂向下的方式測(cè)試被修改的模塊及其子模塊;然后將這一部分視為子系統(tǒng),塊及其子模塊;然后將這一部分視為子系統(tǒng),再自底向上測(cè)試。再自底向上測(cè)試。36
22、混合策略1)衍變的自頂向下的增殖測(cè)試)衍變的自頂向下的增殖測(cè)試先對(duì)輸入輸出模塊和引入新算法模塊先對(duì)輸入輸出模塊和引入新算法模塊進(jìn)行測(cè)試;進(jìn)行測(cè)試;再自底向上組裝成為功能相當(dāng)完整且相再自底向上組裝成為功能相當(dāng)完整且相對(duì)獨(dú)立的子系統(tǒng);對(duì)獨(dú)立的子系統(tǒng);然后由主模塊開(kāi)始自頂向下進(jìn)行增殖測(cè)然后由主模塊開(kāi)始自頂向下進(jìn)行增殖測(cè)試。試。37 2)自底向上一自頂向下的增殖測(cè)試先對(duì)含讀操作的子系統(tǒng)自底向上直至根先對(duì)含讀操作的子系統(tǒng)自底向上直至根結(jié)點(diǎn)模塊進(jìn)行組裝和測(cè)試;結(jié)點(diǎn)模塊進(jìn)行組裝和測(cè)試;再對(duì)含寫操作的子系統(tǒng)做自頂向下的組再對(duì)含寫操作的子系統(tǒng)做自頂向下的組裝與測(cè)試。裝與測(cè)試。38 5.5 確認(rèn)測(cè)試又稱有效性測(cè)試
23、。驗(yàn)證軟件的功能、性又稱有效性測(cè)試。驗(yàn)證軟件的功能、性能及其它特性是否與用戶的要求一致。能及其它特性是否與用戶的要求一致。確認(rèn)測(cè)試的基礎(chǔ)確認(rèn)測(cè)試的基礎(chǔ) :軟件需求規(guī)格說(shuō)明書:軟件需求規(guī)格說(shuō)明書確認(rèn)測(cè)試的主要工作確認(rèn)測(cè)試的主要工作:有效性測(cè)試與軟:有效性測(cè)試與軟件配置審查件配置審查主要參與人員主要參與人員:以用戶為主:以用戶為主39 確認(rèn)測(cè)試的步驟40 5 .5. 1 確認(rèn)測(cè)試范圍通常采用黑盒測(cè)試,驗(yàn)證被測(cè)軟件是否滿足用通常采用黑盒測(cè)試,驗(yàn)證被測(cè)軟件是否滿足用戶需求。戶需求。測(cè)試計(jì)劃測(cè)試計(jì)劃:包括測(cè)試種類及進(jìn)度安排;:包括測(cè)試種類及進(jìn)度安排;測(cè)試步驟測(cè)試步驟:描述具體的測(cè)試用例:描述具體的測(cè)試用
24、例測(cè)試目的測(cè)試目的:確定軟件的特性是否與需求相符;:確定軟件的特性是否與需求相符; 所有的文檔都是正確且便于使用;所有的文檔都是正確且便于使用; 其它軟件需求。其它軟件需求。測(cè)試結(jié)果測(cè)試結(jié)果:與預(yù)期的結(jié)果相符;:與預(yù)期的結(jié)果相符; 與預(yù)期的結(jié)果不符:要提交一份問(wèn)與預(yù)期的結(jié)果不符:要提交一份問(wèn)題報(bào)告。題報(bào)告。41 5.5.2 軟件配置復(fù)查目的:目的:保證軟件配置的所有成分都齊全;保證軟件配置的所有成分都齊全; 各方面的質(zhì)量都符合要求;各方面的質(zhì)量都符合要求; 具有維護(hù)階段所必需的細(xì)節(jié);具有維護(hù)階段所必需的細(xì)節(jié); 而且已經(jīng)編排好分類的目錄。而且已經(jīng)編排好分類的目錄。應(yīng)當(dāng)嚴(yán)格遵守用戶手冊(cè)和操作手冊(cè)中
25、規(guī)應(yīng)當(dāng)嚴(yán)格遵守用戶手冊(cè)和操作手冊(cè)中規(guī)定的使用步驟,以便檢查這些文檔資料的完定的使用步驟,以便檢查這些文檔資料的完整性和正確性。整性和正確性。42 5 . 5. 3 測(cè)試和多測(cè)試適用:為多個(gè)用戶開(kāi)發(fā)的軟件適用:為多個(gè)用戶開(kāi)發(fā)的軟件 測(cè)試測(cè)試:由用戶在開(kāi)發(fā)環(huán)境下進(jìn)行的測(cè)試。:由用戶在開(kāi)發(fā)環(huán)境下進(jìn)行的測(cè)試。主要評(píng)價(jià)軟件產(chǎn)品的主要評(píng)價(jià)軟件產(chǎn)品的:FLURPS(即功能、即功能、局域化、可使用性、可靠性、性能和支持)局域化、可使用性、可靠性、性能和支持)測(cè)試測(cè)試:由最終用戶在實(shí)際使用環(huán)境下進(jìn):由最終用戶在實(shí)際使用環(huán)境下進(jìn)行的測(cè)試,這些用戶定期返回有關(guān)錯(cuò)誤信息行的測(cè)試,這些用戶定期返回有關(guān)錯(cuò)誤信息給開(kāi)發(fā)者。
26、給開(kāi)發(fā)者。注意:注意:只有當(dāng)只有當(dāng)測(cè)試達(dá)到一定的可靠程度測(cè)試達(dá)到一定的可靠程度時(shí),才開(kāi)始時(shí),才開(kāi)始 測(cè)試。測(cè)試。43 5. 6 自盒測(cè)試技術(shù)白盒測(cè)試執(zhí)行的要求:白盒測(cè)試執(zhí)行的要求:對(duì)程序模塊的所有獨(dú)立的執(zhí)行路徑至少對(duì)程序模塊的所有獨(dú)立的執(zhí)行路徑至少測(cè)試一次測(cè)試一次 對(duì)所有的邏輯判定,取對(duì)所有的邏輯判定,取“真真”與取與取“假假”的兩種情況都至少測(cè)試一次;的兩種情況都至少測(cè)試一次;在循環(huán)的邊界和運(yùn)行界限內(nèi)執(zhí)行循環(huán)體;在循環(huán)的邊界和運(yùn)行界限內(nèi)執(zhí)行循環(huán)體;44 5. 6. 1 邏輯覆蓋有選擇地執(zhí)行程序中某些最有代表性的有選擇地執(zhí)行程序中某些最有代表性的通路是對(duì)窮盡測(cè)試的惟一可行的替代辦法。通路是對(duì)窮
27、盡測(cè)試的惟一可行的替代辦法。從覆蓋源程序語(yǔ)句的詳盡程度分析,大從覆蓋源程序語(yǔ)句的詳盡程度分析,大致有以下一些不同的覆蓋標(biāo)準(zhǔn):致有以下一些不同的覆蓋標(biāo)準(zhǔn):語(yǔ)句覆蓋語(yǔ)句覆蓋判定覆蓋判定覆蓋 條件覆蓋條件覆蓋 判定判定/條件覆蓋條件覆蓋 條件組合覆蓋條件組合覆蓋 1. 語(yǔ)句覆蓋語(yǔ)句覆蓋含義:選擇足夠多的含義:選擇足夠多的測(cè)試數(shù)據(jù),使被測(cè)程序測(cè)試數(shù)據(jù),使被測(cè)程序中每個(gè)語(yǔ)句至少執(zhí)行一中每個(gè)語(yǔ)句至少執(zhí)行一次。次。分析:分析: 執(zhí)行路徑執(zhí)行路徑sacbed測(cè)試用例:測(cè)試用例:A2,B0,X4 覆蓋覆蓋sacbed語(yǔ)句覆蓋特點(diǎn):語(yǔ)句覆蓋特點(diǎn):語(yǔ)句覆蓋對(duì)程序的邏輯覆蓋很少。語(yǔ)句覆蓋對(duì)程序的邏輯覆蓋很少。語(yǔ)句覆蓋
28、是很弱的邏輯覆蓋標(biāo)準(zhǔn)。語(yǔ)句覆蓋是很弱的邏輯覆蓋標(biāo)準(zhǔn)。 2. 判定覆蓋(分支覆蓋)判定覆蓋(分支覆蓋)含義:不僅每個(gè)語(yǔ)句必須至少含義:不僅每個(gè)語(yǔ)句必須至少執(zhí)行一次,而且每個(gè)判定執(zhí)行一次,而且每個(gè)判定的每種可能的結(jié)果都應(yīng)該的每種可能的結(jié)果都應(yīng)該至少執(zhí)行一次。至少執(zhí)行一次。所有判定分支:所有判定分支: (1) a點(diǎn)判定為點(diǎn)判定為T (2) a點(diǎn)判定為點(diǎn)判定為F (3) b點(diǎn)判定為點(diǎn)判定為T (4) b點(diǎn)判定為點(diǎn)判定為F2. 判定覆蓋(分支覆蓋)判定覆蓋(分支覆蓋)測(cè)試用例:測(cè)試用例: . 滿足滿足(1)(4) A3,B0,X3 覆蓋覆蓋sacbd . 滿足滿足(2)(3) A2,B1,X1 覆蓋覆蓋
29、sabed2. 判定覆蓋(分支覆蓋)判定覆蓋(分支覆蓋)或者或者 . 滿足滿足(1)(3) A2,B0,X3 覆蓋覆蓋sacbed . 滿足滿足(2)(4) A3,B1,X1 覆蓋覆蓋sabd特點(diǎn):比語(yǔ)句覆蓋強(qiáng),特點(diǎn):比語(yǔ)句覆蓋強(qiáng),但對(duì)程序邏輯的覆蓋程度但對(duì)程序邏輯的覆蓋程度仍不高。仍不高。 3. 條件覆蓋條件覆蓋含義:不僅每個(gè)語(yǔ)句至少含義:不僅每個(gè)語(yǔ)句至少執(zhí)行一次,而且使判定表達(dá)執(zhí)行一次,而且使判定表達(dá)式中的每個(gè)條件都取到各種式中的每個(gè)條件都取到各種可能的結(jié)果??赡艿慕Y(jié)果。所有條件:所有條件: (1)A1 (2)A1 (3)B0 (4)B0 (5)A2 (6)A2 (7)X1 (8)X13.
30、 條件覆蓋條件覆蓋測(cè)試用例:測(cè)試用例: . 滿足滿足(1)(3)(5)(7) A2,B0,X4 覆蓋覆蓋sacbed . 滿足滿足(2)(4)(6)(8) A1,B1,X1 覆蓋覆蓋sabd 3. 條件覆蓋條件覆蓋或者或者 . 滿足滿足(1)(3)(5)(8) A2,B0,X1 覆蓋覆蓋sacbed . 滿足滿足(2)(4)(6)(7) A1,B1,X2 覆蓋覆蓋sabed或者或者條件覆蓋特點(diǎn):條件覆蓋特點(diǎn):條件覆蓋通常比判定覆蓋強(qiáng),因?yàn)樗箺l件覆蓋通常比判定覆蓋強(qiáng),因?yàn)樗姑總€(gè)條件都取到了兩個(gè)不同的結(jié)果,判定每個(gè)條件都取到了兩個(gè)不同的結(jié)果,判定覆蓋卻只關(guān)心整個(gè)判定表達(dá)式的值。但也覆蓋卻只關(guān)心
31、整個(gè)判定表達(dá)式的值。但也有反例,如第二組測(cè)試用例。有反例,如第二組測(cè)試用例。判定覆蓋不一定包含條件覆蓋,條件覆判定覆蓋不一定包含條件覆蓋,條件覆蓋也不一定包含判定覆蓋。蓋也不一定包含判定覆蓋。4. 判定判定/條件覆蓋條件覆蓋含義:使得判定表達(dá)式中的每個(gè)條件都取到各種可能的含義:使得判定表達(dá)式中的每個(gè)條件都取到各種可能的值,每個(gè)判定表達(dá)式也都取到各種可能的結(jié)果。值,每個(gè)判定表達(dá)式也都取到各種可能的結(jié)果。測(cè)試用例:測(cè)試用例: . 滿足條件滿足條件(1)(3)(5)(7) 和判定和判定(1)(3) A2,B0,X4 覆蓋覆蓋sacbed . 滿足條件滿足條件(2)(4)(6)(8) 和判定和判定(2
32、)(4) A1,B1,X1 覆蓋覆蓋sabd 特點(diǎn):有時(shí)判定特點(diǎn):有時(shí)判定/條件覆蓋也并不比條件覆蓋更強(qiáng)。條件覆蓋也并不比條件覆蓋更強(qiáng)。 5. 條件組合覆蓋條件組合覆蓋含義:要求選取足夠多的測(cè)試數(shù)據(jù),使得每個(gè)判定表達(dá)含義:要求選取足夠多的測(cè)試數(shù)據(jù),使得每個(gè)判定表達(dá)式中條件的各種可能組合都至少出現(xiàn)一次。式中條件的各種可能組合都至少出現(xiàn)一次。條件組合:條件組合: (1)A1,B0 (2)A1,B0 (3)A1,B0 (4)A1,B0 (5)A2,X1 (6)A2,X1 (7)A2,X1 (8)A2,X1 5. 條件組合覆蓋條件組合覆蓋測(cè)試用例:測(cè)試用例: .滿足滿足(1)(5) A2,B0,X4
33、覆蓋覆蓋sacbed .滿足滿足(2)(6) A2,B1,X1 覆蓋覆蓋sabed .滿足滿足(3)(7) A1,B0,X2 覆蓋覆蓋sabed . 滿足滿足(4)(8) A1,B1,X1 覆蓋覆蓋sabd條件組合覆蓋特點(diǎn):條件組合覆蓋特點(diǎn):條件組合覆蓋是前述幾種覆蓋標(biāo)準(zhǔn)中最條件組合覆蓋是前述幾種覆蓋標(biāo)準(zhǔn)中最強(qiáng)的。滿足條件組合覆蓋標(biāo)準(zhǔn)的測(cè)試數(shù)據(jù),強(qiáng)的。滿足條件組合覆蓋標(biāo)準(zhǔn)的測(cè)試數(shù)據(jù),也一定滿足判定覆蓋、條件覆蓋和判定也一定滿足判定覆蓋、條件覆蓋和判定/條條件覆蓋標(biāo)準(zhǔn)。件覆蓋標(biāo)準(zhǔn)。但是,條件組合覆蓋標(biāo)準(zhǔn)的測(cè)試數(shù)據(jù)并但是,條件組合覆蓋標(biāo)準(zhǔn)的測(cè)試數(shù)據(jù)并不一定能使程序中的每條路徑都執(zhí)行到。不一定能使程
34、序中的每條路徑都執(zhí)行到。(4組數(shù)據(jù)都沒(méi)有測(cè)試到組數(shù)據(jù)都沒(méi)有測(cè)試到sacbd) 從對(duì)程序路徑的覆蓋程度分析的邏輯覆蓋標(biāo)準(zhǔn):從對(duì)程序路徑的覆蓋程度分析的邏輯覆蓋標(biāo)準(zhǔn):6. 點(diǎn)覆蓋點(diǎn)覆蓋含義:選取足夠多的測(cè)試數(shù)據(jù),使得程序執(zhí)行路徑至含義:選取足夠多的測(cè)試數(shù)據(jù),使得程序執(zhí)行路徑至少經(jīng)過(guò)流圖的每個(gè)結(jié)點(diǎn)一次。少經(jīng)過(guò)流圖的每個(gè)結(jié)點(diǎn)一次。特點(diǎn):由于流圖的每個(gè)結(jié)點(diǎn)與一條或多條語(yǔ)句相對(duì)應(yīng),特點(diǎn):由于流圖的每個(gè)結(jié)點(diǎn)與一條或多條語(yǔ)句相對(duì)應(yīng),因此點(diǎn)覆蓋標(biāo)準(zhǔn)和語(yǔ)句覆蓋標(biāo)準(zhǔn)是相同的。因此點(diǎn)覆蓋標(biāo)準(zhǔn)和語(yǔ)句覆蓋標(biāo)準(zhǔn)是相同的。7. 邊覆蓋邊覆蓋含義:選取足夠多測(cè)試數(shù)據(jù),使得程序執(zhí)行路徑至少含義:選取足夠多測(cè)試數(shù)據(jù),使得程序執(zhí)行路
35、徑至少經(jīng)過(guò)流圖中每條邊一次。經(jīng)過(guò)流圖中每條邊一次。特點(diǎn):通常邊覆蓋和判定覆蓋是一致的。特點(diǎn):通常邊覆蓋和判定覆蓋是一致的。8. 路徑覆蓋路徑覆蓋含義:選取足夠多測(cè)試數(shù)據(jù),使程序的每條可能路徑含義:選取足夠多測(cè)試數(shù)據(jù),使程序的每條可能路徑都至少執(zhí)行一次都至少執(zhí)行一次(如果程序圖中有環(huán),則要求每個(gè)環(huán)至如果程序圖中有環(huán),則要求每個(gè)環(huán)至少經(jīng)過(guò)一次少經(jīng)過(guò)一次)。 語(yǔ)句覆蓋判定覆蓋條件覆蓋判定/條件覆蓋條件組合覆蓋路徑覆蓋點(diǎn)覆蓋邊覆蓋60 總結(jié): 6 種覆蓋標(biāo)準(zhǔn)的對(duì)比61 5. 6. 2 控制結(jié)構(gòu)測(cè)試1 、基本路徑測(cè)試、基本路徑測(cè)試以環(huán)形復(fù)雜度為基礎(chǔ),導(dǎo)出基本可執(zhí)行以環(huán)形復(fù)雜度為基礎(chǔ),導(dǎo)出基本可執(zhí)行路徑集
36、合,設(shè)計(jì)測(cè)試用例的方法。路徑集合,設(shè)計(jì)測(cè)試用例的方法。測(cè)試用例要保證程序的測(cè)試用例要保證程序的每個(gè)可執(zhí)行語(yǔ)句每個(gè)可執(zhí)行語(yǔ)句至少執(zhí)行一次至少執(zhí)行一次。62 步驟:1:由程序流程圖導(dǎo)出程序控制流圖,并計(jì)算由程序流程圖導(dǎo)出程序控制流圖,并計(jì)算其環(huán)路復(fù)雜度其環(huán)路復(fù)雜度2:確定程序的獨(dú)立路徑確定程序的獨(dú)立路徑什么是獨(dú)立路徑?什么是獨(dú)立路徑?流圖中,一條獨(dú)立路徑是至少包含一條在其它流圖中,一條獨(dú)立路徑是至少包含一條在其它獨(dú)立路徑中從未有過(guò)的邊的路徑。獨(dú)立路徑中從未有過(guò)的邊的路徑。獨(dú)立路徑條數(shù)獨(dú)立路徑條數(shù)是確保程序中,每個(gè)可執(zhí)行語(yǔ)句是確保程序中,每個(gè)可執(zhí)行語(yǔ)句至少能被執(zhí)行一次所必需的測(cè)試用例數(shù)目的上界。至少
37、能被執(zhí)行一次所必需的測(cè)試用例數(shù)目的上界。獨(dú)立路徑條數(shù)程序環(huán)路復(fù)雜性獨(dú)立路徑條數(shù)程序環(huán)路復(fù)雜性 V ( G )63 步驟1.根據(jù)程序邏輯畫出流程圖 void Func(int nPosX, int nPosY) while (nPosX 0) int nSum = nPosX + nPosY;if (nSum 1) nPosX-; nPosY-;else if (nSum -1) nPosX -= 2; else nPosX -= 4; / end of while 1 2 3 6 7 8 4 5 11 9 10 模模塊塊流流程程圖圖 64 步驟2:將流程圖轉(zhuǎn)換為流圖 2,3 6 7 8 9 1
38、0 4,5 11 程程序序流流圖圖 1 2 3 6 7 8 4 5 11 9 10 模模塊塊流流程程圖圖 65 步驟3:確定基本路徑的集合基本路徑基本路徑流圖流圖Cyclomatic復(fù)雜復(fù)雜度正好是基本路徑度正好是基本路徑的數(shù)目的數(shù)目V(G) = E N + 2 V(G) = 11 - 9 + 2 = 4 V(G) =P+1E、N、P分別為流圖分別為流圖的邊數(shù)、節(jié)點(diǎn)數(shù)和的邊數(shù)、節(jié)點(diǎn)數(shù)和謂詞節(jié)點(diǎn)數(shù)。謂詞節(jié)點(diǎn)數(shù)。 2,3 6 7 8 9 10 4,5 11 程程序序流流圖圖 66 步驟4:確定測(cè)試路徑的集合例:獨(dú)立路徑例:獨(dú)立路徑圖中一組獨(dú)立的路徑是:圖中一組獨(dú)立的路徑是:L1 : 1 , 11
39、L2: 1 , 2 , 3 , 4 , 5 , 10 , 1 , 11 L3: 1 , 2 , 3 , 6 , 8 , 9 , 10 , 1 , 11 L4: 1 , 2 , 3 , 6 , 7 , 9 , 10 , 1 , 11 路徑路徑 L1 , L2 , L3 , L4 組組成了控制流圖的一個(gè)基本路徑成了控制流圖的一個(gè)基本路徑集。集。67 步驟 5 :由基本路徑集,導(dǎo)出測(cè)試用例基本路徑集不是唯一的,對(duì)于給定的程基本路徑集不是唯一的,對(duì)于給定的程序圖,可以得到不同的基本路徑集。序圖,可以得到不同的基本路徑集。導(dǎo)出測(cè)試用例,確?;韭窂郊械拿繉?dǎo)出測(cè)試用例,確?;韭窂郊械拿恳粭l路徑的執(zhí)行
40、。一條路徑的執(zhí)行。68 針對(duì)測(cè)試路徑設(shè)計(jì)測(cè)試用例1-11nPosX 取取-1, nPosY取任取任意值意值1 - 2, 3 - 4, 5 - 10 - 1 - 11nPosX 取取1, nPosY取取11- 2, 3 - 6 - 7 - 9 - 10 - 1 11nPosX 取取1, nPosY取取-11- 2, 3 - 6 - 8 - 9 - 10 - 1 - 11 nPosX 取取1, nPosY取取-3 2,3 6 7 8 9 10 4,5 11 程程序序流流圖圖 69 5.7 黑盒測(cè)試技術(shù)黑盒測(cè)試主要是為了發(fā)現(xiàn)以下錯(cuò)誤:黑盒測(cè)試主要是為了發(fā)現(xiàn)以下錯(cuò)誤:l是否有不正確或遺漏了的功能?是否
41、有不正確或遺漏了的功能?l能否正確地接受輸入?能否正確的輸出結(jié)果?能否正確地接受輸入?能否正確的輸出結(jié)果?l是否有數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤或外部數(shù)據(jù)庫(kù)訪問(wèn)錯(cuò)誤?是否有數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤或外部數(shù)據(jù)庫(kù)訪問(wèn)錯(cuò)誤?l性能上是否能夠滿足要求?性能上是否能夠滿足要求?l是否有初始化或終止性錯(cuò)誤?是否有初始化或終止性錯(cuò)誤?幾種黑盒測(cè)試技術(shù):幾種黑盒測(cè)試技術(shù):等價(jià)類劃分、邊界值分析、錯(cuò)誤推測(cè)法、因果等價(jià)類劃分、邊界值分析、錯(cuò)誤推測(cè)法、因果圖圖70 5 .7 . 1 等價(jià)劃分基本思想:基本思想:把所有可能的輸入數(shù)據(jù)(包括有效或無(wú)把所有可能的輸入數(shù)據(jù)(包括有效或無(wú)效的),劃分成若干數(shù)據(jù)類(等價(jià)類),然效的),劃分成若干數(shù)據(jù)類(等價(jià)
42、類),然后從每個(gè)數(shù)據(jù)類中選取少數(shù)有代表性的數(shù)據(jù)后從每個(gè)數(shù)據(jù)類中選取少數(shù)有代表性的數(shù)據(jù)做為測(cè)試用例。做為測(cè)試用例。這種方法完全不考慮程序的內(nèi)部結(jié)構(gòu),這種方法完全不考慮程序的內(nèi)部結(jié)構(gòu),只依據(jù)程序的規(guī)格說(shuō)明來(lái)設(shè)計(jì)測(cè)試用例。只依據(jù)程序的規(guī)格說(shuō)明來(lái)設(shè)計(jì)測(cè)試用例。71 設(shè)計(jì)測(cè)試用例的步驟步驟步驟 1 :劃分等價(jià)類:劃分等價(jià)類(列出等價(jià)類表)列出等價(jià)類表)等價(jià)類是指輸入數(shù)據(jù)的子集合。在該子等價(jià)類是指輸入數(shù)據(jù)的子集合。在該子集合中,各輸入數(shù)據(jù)對(duì)于發(fā)現(xiàn)程序中的錯(cuò)誤集合中,各輸入數(shù)據(jù)對(duì)于發(fā)現(xiàn)程序中的錯(cuò)誤都是等效的。都是等效的。根據(jù)程序功能說(shuō)明,確定有效和無(wú)效的根據(jù)程序功能說(shuō)明,確定有效和無(wú)效的等價(jià)類等價(jià)類步驟步驟
43、2:根據(jù)等價(jià)類設(shè)計(jì)測(cè)試用例:根據(jù)等價(jià)類設(shè)計(jì)測(cè)試用例包括有效等價(jià)類和無(wú)效等價(jià)類的設(shè)計(jì)。包括有效等價(jià)類和無(wú)效等價(jià)類的設(shè)計(jì)。72 步驟 1 :劃分等價(jià)類等價(jià)類分為:等價(jià)類分為:l有效等價(jià)類:有效等價(jià)類:是指對(duì)于程序的規(guī)格說(shuō)明是指對(duì)于程序的規(guī)格說(shuō)明來(lái)說(shuō),是合理的,有意義的輸入數(shù)據(jù)構(gòu)成的來(lái)說(shuō),是合理的,有意義的輸入數(shù)據(jù)構(gòu)成的集合。集合。l無(wú)效等價(jià)類:無(wú)效等價(jià)類:是指對(duì)于程序的規(guī)格說(shuō)明是指對(duì)于程序的規(guī)格說(shuō)明來(lái)說(shuō),是不合理的,無(wú)意義的輸入數(shù)據(jù)構(gòu)成來(lái)說(shuō),是不合理的,無(wú)意義的輸入數(shù)據(jù)構(gòu)成的集合。的集合。在設(shè)計(jì)測(cè)試用例時(shí),要同時(shí)考慮有效等在設(shè)計(jì)測(cè)試用例時(shí),要同時(shí)考慮有效等價(jià)類和無(wú)效等價(jià)類的設(shè)計(jì)!價(jià)類和無(wú)效等價(jià)類的
44、設(shè)計(jì)! !73 等價(jià)類劃分原則(1)原則原則1 :若規(guī)定了取值范圍,或輸入值的:若規(guī)定了取值范圍,或輸入值的個(gè)數(shù),則可以確立一個(gè)有效等價(jià)類和兩個(gè)無(wú)個(gè)數(shù),則可以確立一個(gè)有效等價(jià)類和兩個(gè)無(wú)效等價(jià)類。效等價(jià)類。例:程序?qū)斎藯l件的要求是:例:程序?qū)斎藯l件的要求是:.輸入數(shù)是從輸入數(shù)是從 1 1 到到 999 .999 .則則 有效等價(jià)類是有效等價(jià)類是“ “ 1 =1 =輸入數(shù)輸入數(shù)=999 ;=999 ; 兩個(gè)無(wú)效等價(jià)類是兩個(gè)無(wú)效等價(jià)類是“輸入數(shù)輸入數(shù)1 1或或“輸入數(shù)輸入數(shù) 999 999 在數(shù)軸上表示成:在數(shù)軸上表示成:74 等價(jià)類劃分原則( 2)原則原則2:如果規(guī)定了輸入數(shù)據(jù)的一組值,而且:
45、如果規(guī)定了輸入數(shù)據(jù)的一組值,而且程序要對(duì)每種輸入數(shù)據(jù)分別處理,則可為每種輸入程序要對(duì)每種輸入數(shù)據(jù)分別處理,則可為每種輸入值確立一個(gè)有效等價(jià)類,此外針對(duì)這組值確立一個(gè)值確立一個(gè)有效等價(jià)類,此外針對(duì)這組值確立一個(gè)無(wú)效等價(jià)類,它是所有不允許的輸入值的集合。無(wú)效等價(jià)類,它是所有不允許的輸入值的集合。例:教師上崗方案中規(guī)定對(duì)教授、副教授、講例:教師上崗方案中規(guī)定對(duì)教授、副教授、講師和助教分別計(jì)算分?jǐn)?shù),做相應(yīng)的處理。因此可以師和助教分別計(jì)算分?jǐn)?shù),做相應(yīng)的處理。因此可以確定確定 4 4 個(gè)有效等價(jià)類為教授、副教授、講師和助教,個(gè)有效等價(jià)類為教授、副教授、講師和助教,一個(gè)無(wú)效等價(jià)類,它是所有不符合以上身分的人
46、員一個(gè)無(wú)效等價(jià)類,它是所有不符合以上身分的人員的輸入值的集合。的輸入值的集合。75 等價(jià)類劃分原則( 3)原則原則 3 :若規(guī)定了輸入值的集合,或者:若規(guī)定了輸入值的集合,或者是規(guī)定了是規(guī)定了“必須如何必須如何”的條件,則可確立一的條件,則可確立一個(gè)有效等價(jià)類和一個(gè)無(wú)效等價(jià)類。個(gè)有效等價(jià)類和一個(gè)無(wú)效等價(jià)類。例:例: Pascal Pascal 語(yǔ)言對(duì)變量標(biāo)識(shí)符規(guī)定必須語(yǔ)言對(duì)變量標(biāo)識(shí)符規(guī)定必須“以以字母打頭字母打頭”,則所有以字母打頭的構(gòu)成有效等價(jià)類,則所有以字母打頭的構(gòu)成有效等價(jià)類,而不以字母打頭的歸于無(wú)效等價(jià)類。而不以字母打頭的歸于無(wú)效等價(jià)類。76 等價(jià)類劃分原則( 4)原則原則4 :如果規(guī)
47、定輸入數(shù)據(jù)為整型,則可:如果規(guī)定輸入數(shù)據(jù)為整型,則可劃分出正整、零和負(fù)整數(shù)三個(gè)有效類,其他劃分出正整、零和負(fù)整數(shù)三個(gè)有效類,其他數(shù)據(jù)為無(wú)效類數(shù)據(jù)為無(wú)效類原則原則5:如果程序處理對(duì)象是表格,則應(yīng):如果程序處理對(duì)象是表格,則應(yīng)使用空表、含一項(xiàng)和多項(xiàng)的表。使用空表、含一項(xiàng)和多項(xiàng)的表。原則原則6:如果確知,已劃分的等價(jià)類中各:如果確知,已劃分的等價(jià)類中各元素在程序中的處理方式不同,則應(yīng)將此等元素在程序中的處理方式不同,則應(yīng)將此等價(jià)類進(jìn)一步劃分成更小的等價(jià)類。價(jià)類進(jìn)一步劃分成更小的等價(jià)類。77 步驟2:確立測(cè)試用例在確立了等價(jià)類之后,建立等價(jià)類表,在確立了等價(jià)類之后,建立等價(jià)類表,列出所有劃分出的等價(jià)類。列出所有劃分出的等價(jià)類。78 測(cè)試用例的選擇原則原則原則1: 為每一個(gè)等價(jià)類規(guī)定一個(gè)唯一編為每一個(gè)等價(jià)類規(guī)定一個(gè)唯一編號(hào);號(hào);原則原則2:設(shè)計(jì)一個(gè)新的測(cè)試用例,使其盡可設(shè)計(jì)一個(gè)新的測(cè)試用例,使其盡可能多地覆蓋尚未被覆蓋的有效等價(jià)類,重復(fù)能多地覆蓋尚未被覆蓋的有效等價(jià)類,重復(fù)這一步,直到所有的有效等價(jià)類都被
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 競(jìng)聘崗位發(fā)言稿
- 2024版機(jī)電設(shè)備買賣合同書
- 2024年車輛收車協(xié)議:以租代購(gòu)方式2篇
- 2024琴行教師聘請(qǐng)及教學(xué)成果考核合同范本3篇
- 2024年高速公路路燈采購(gòu)與安裝合同
- 2024年高壓輸電線路設(shè)計(jì)咨詢專項(xiàng)合同范本
- 三人協(xié)作商務(wù)協(xié)議樣本一
- 2024承包土方填土合同模板
- 祛斑知識(shí)培訓(xùn)課件下載
- 2024年食品行業(yè)ERP系統(tǒng)購(gòu)銷協(xié)議3篇
- 《病歷書寫基本規(guī)范》課件
- 經(jīng)理年終工作總結(jié)述職報(bào)告ppt模板
- 新概念張?jiān)粕v解的筆記
- 淺談初中歷史單元作業(yè)的設(shè)計(jì)策略
- 修訂完整-(兒研所)嬰幼兒發(fā)育診斷量表幼兒教育
- 教代會(huì)會(huì)場(chǎng)背景(紅旗)圖片課件
- 工學(xué)第八章-固相反應(yīng)課件
- 臨時(shí)用電拆除方案
- 垂體瘤診療規(guī)范內(nèi)科學(xué)診療規(guī)范診療指南2023版
- 國(guó)家安全教育學(xué)習(xí)通課后章節(jié)答案期末考試題庫(kù)2023年
- 三年級(jí)道德與法治教學(xué)工作總結(jié)
評(píng)論
0/150
提交評(píng)論