




已閱讀5頁(yè),還剩187頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第五章 軟件測(cè)試工程,概述 軟件開(kāi)發(fā)過(guò)程必須伴有質(zhì)量保證活動(dòng)。 軟件測(cè)試是軟件質(zhì)量保證的關(guān)鍵元素,代表了規(guī)約、設(shè)計(jì)和編碼的最終檢查。,軟件產(chǎn)品最大的成本是檢測(cè)軟 件錯(cuò)誤、修正軟件錯(cuò)誤的成本。 在整個(gè)軟件開(kāi)發(fā)中,測(cè)試工作量 一般占30%40%,甚至50%。 在人命關(guān)天的軟件(如飛機(jī)控制、核反應(yīng)堆等)測(cè)試所花費(fèi)的時(shí)間往往是其它軟件工程活動(dòng)時(shí)間之和的三到五倍,軟件測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過(guò)程,或者說(shuō),軟件測(cè)試是根據(jù)軟件的規(guī)格說(shuō)明(例如軟件的功能、性能、運(yùn)行環(huán)境等要求)以及程序內(nèi)部結(jié)構(gòu)而設(shè)計(jì)一批測(cè)試用例,并利用這些測(cè)試用例去運(yùn)行程序,以發(fā)現(xiàn)軟件錯(cuò)誤的過(guò)程。,測(cè)試用例是為了測(cè)試軟件而設(shè)計(jì)的一組數(shù)據(jù),它應(yīng)該包括輸入的數(shù)據(jù)和預(yù)期輸出的結(jié)果兩部分。 測(cè)試用例=輸入數(shù)據(jù)+預(yù)期結(jié)果,軟件測(cè)試背景,軟件是人編的所以不完美 實(shí)例: Intel的pentium處理器 1994年浮點(diǎn)除法缺陷 2000年8月28日,1.13MHZ處理器一個(gè)可能導(dǎo)致運(yùn)行程序被掛起的執(zhí)行指令問(wèn)題 1999年12月3日,美國(guó)航天局火星極地登陸飛船失蹤 1991年愛(ài)國(guó)者導(dǎo)彈防御系統(tǒng)系統(tǒng)時(shí)鐘錯(cuò)誤積累造成跟蹤系統(tǒng)失去精確度 千年蟲(chóng):世界各地解決2000年錯(cuò)誤超過(guò)數(shù)億美元,質(zhì)量管理領(lǐng)域權(quán)威人物J.M.Juran將質(zhì)量定義為“決定產(chǎn)品性能和滿意程度的特征”, 測(cè)試注重于產(chǎn)品的滿意度。 測(cè)試應(yīng)針對(duì)這樣一種情況:軟件產(chǎn)品在一些特定的范圍內(nèi)不能滿足客戶的合理要求。 通過(guò)測(cè)試過(guò)程可以評(píng)定質(zhì)量風(fēng)險(xiǎn)(可能的錯(cuò)誤),了解被測(cè)試系統(tǒng)中存在的錯(cuò)誤模式(觀察到的錯(cuò)誤癥狀)。,軟件測(cè)試是一個(gè)查找錯(cuò)誤的過(guò)程,所以軟件測(cè)試只能證明錯(cuò)誤的存在,而不是證明程序無(wú)錯(cuò),不能保證經(jīng)過(guò)測(cè)試的程序一定沒(méi)有錯(cuò)誤。 軟件測(cè)試僅僅是一個(gè)手段,根本的目的是為了糾錯(cuò),即糾正軟件中的錯(cuò)誤,從而提高軟件的質(zhì)量。 測(cè)試不可能發(fā)現(xiàn)所有錯(cuò)誤,只能在有限的時(shí)間和經(jīng)濟(jì)條件下,盡可能地發(fā)現(xiàn)錯(cuò)誤。,質(zhì)量控制技術(shù),質(zhì)量控制活動(dòng)分類,開(kāi)發(fā)方法學(xué),配置管理,驗(yàn)證技術(shù),評(píng) 審,正確性驗(yàn)證,性能調(diào)試,組件測(cè)試,集成測(cè)試,系統(tǒng)測(cè)試,原子事務(wù),模塊冗余性,檢 錯(cuò),質(zhì)量控制,避免錯(cuò)誤,容 錯(cuò),調(diào) 試,測(cè) 試,測(cè)試的目的與地位 G.J.Myers在軟件測(cè)試技巧中認(rèn)為: 1.測(cè)試是為了尋找錯(cuò)誤而運(yùn)行程序的過(guò)程。 2.一個(gè)好的測(cè)試用例是指很可能找到迄今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。 3.一個(gè)成功的測(cè)試是揭示了迄今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。,E.W.Dijkstra 指出: “程序測(cè)試能證明錯(cuò)誤的存在,但不能證明錯(cuò)誤不存在。” 測(cè)試的目的是發(fā)現(xiàn)程序中的錯(cuò)誤,是為了證明程序有錯(cuò),而不是證明程序無(wú)錯(cuò)。,把證明程序無(wú)錯(cuò)當(dāng)作測(cè)試目的不僅是不正確的, 完全做不到的,而且對(duì)做好測(cè)試沒(méi)有任何益處,甚至是十分有害的。 軟件測(cè)試要設(shè)法使軟件發(fā)生故障,暴露軟件錯(cuò)誤。 測(cè)試的“成功”與“失敗”:能夠發(fā)現(xiàn)錯(cuò)誤的測(cè)試是成功的測(cè)試,否則是失敗的測(cè)試。,“測(cè)試的目的是說(shuō)明程序正確地執(zhí)行它應(yīng)有的功能” 這種說(shuō)法正確嗎? 例:程序Triangle,輸入三個(gè)整數(shù),表示一個(gè)三角形的三個(gè)邊長(zhǎng),該程序產(chǎn)生一個(gè)結(jié)果,指出該三角形是等邊三角形、等腰三角形還是不等邊三角形。 為說(shuō)明其能正確執(zhí)行它的功能,可使用“測(cè)試用例”(3,4,5),(5,5,6),(6,6,6), 程序都能給出正確結(jié)果,是否就可認(rèn)為程序是正確的? (兩邊之和必須大于第三邊),難以說(shuō)清的軟件缺陷,古諺: “一片樹(shù)葉飄落在森林中沒(méi)有人聽(tīng)見(jiàn),誰(shuí)能說(shuō)它發(fā)出了聲音?”,由于不能報(bào)告沒(méi)有看見(jiàn)的問(wèn)題,因此,沒(méi)有看見(jiàn)就不能說(shuō)存在軟件缺陷。,如果軟件中的問(wèn)題沒(méi)有人發(fā)現(xiàn),那么它算不算軟件缺陷?”,只有看到了,才能斷言軟件缺陷,尚未 發(fā)現(xiàn)的軟件缺陷只能說(shuō)是未知軟件缺陷。,眼 見(jiàn) 為 實(shí),測(cè)試原則 (1)所有的測(cè)試都應(yīng)追溯到用戶需求 最嚴(yán)重的錯(cuò)誤(從用戶角度)是那些導(dǎo)致軟件無(wú)法滿足需求的錯(cuò)誤。 程序中的問(wèn)題根源可能出現(xiàn)在開(kāi)發(fā)前期的各階段,糾正錯(cuò)誤也必須追溯到前期工作。,測(cè)試與開(kāi)發(fā)前期工作的關(guān)系,決定軟件與系統(tǒng)的配合關(guān)系,需求分析,概要設(shè)計(jì),詳細(xì)設(shè)計(jì),編 碼,單元測(cè)試,集成測(cè)試,確認(rèn)測(cè)試,系統(tǒng)測(cè)試,開(kāi)發(fā)前期出現(xiàn)錯(cuò)誤的擴(kuò)展,計(jì)劃,需求 分析,設(shè) 計(jì),編 碼,測(cè) 試,A,A,B,軟件生存期各階段間需保持的正確性,用戶要求,用戶: 我要什么?,運(yùn)行結(jié)果,計(jì)算機(jī): 程序運(yùn)行得 到的結(jié)果,源程序,程序員: 我要讓計(jì)算 機(jī)什么做?,設(shè)計(jì)說(shuō)明書(shū),設(shè)計(jì)員: 我要讓軟件 做什么?,需求說(shuō)明書(shū),分析員: 我可以提 供什么?,1,2,3,4,5,理解正確性 表達(dá)正確性,理解正確性 設(shè)計(jì)正確性 表達(dá)正確性,理解正確性 編碼正確性,運(yùn)行正確性 輸入正確性,相符嗎?,測(cè)試原則 (2)應(yīng)該盡早制定測(cè)試計(jì)劃。 概要設(shè)計(jì)時(shí)應(yīng)完成測(cè)試計(jì)劃,詳細(xì)的測(cè)試用例定義可在設(shè)計(jì)模型確定后開(kāi)始,所有測(cè)試可在任何代碼被產(chǎn)生之前進(jìn)行計(jì)劃和設(shè)計(jì)。,測(cè)試原則 (3)應(yīng)該由第三方進(jìn)行測(cè)試工作。 一個(gè)軟件項(xiàng)目的開(kāi)發(fā)人員不應(yīng)該同時(shí)是該軟件的測(cè)試人員,基于心理因素,人們往往不愿意否定自己的工作。,測(cè)試原則 (4)窮舉測(cè)試是不可能的。 測(cè)試的最高目標(biāo)是指發(fā)現(xiàn)錯(cuò)誤的可能性最高的測(cè)試,所以,測(cè)試的關(guān)鍵技術(shù)是設(shè)計(jì)一組高產(chǎn)的測(cè)試用例,好的測(cè)試方案是盡可能發(fā)現(xiàn)至今為止仍未發(fā)現(xiàn)的錯(cuò)誤。從某種意義上說(shuō),測(cè)試是否成功,取決測(cè)試用例的選擇。,測(cè)試原則 (5)充分注意到錯(cuò)誤的群集現(xiàn)象 經(jīng)驗(yàn)表明,測(cè)試發(fā)現(xiàn)的錯(cuò)誤中有80%的錯(cuò)誤很可能是由20%的程序模塊造成的,這是一種錯(cuò)誤群集性現(xiàn)象。也就是說(shuō),在程序段中,發(fā)現(xiàn)錯(cuò)誤數(shù)目多的地方,則殘存錯(cuò)誤的數(shù)目也比較多,這一現(xiàn)象已為許多程序測(cè)試實(shí)踐所證明。,測(cè)試原則 (6)測(cè)試應(yīng)該從“小規(guī)模”到“大規(guī)?!?通常,最初的測(cè)試重點(diǎn)往往是放在單個(gè)的程序模塊中,然后,進(jìn)一步的測(cè)試重點(diǎn)放在集成的模塊族,最后是對(duì)整個(gè)系統(tǒng)進(jìn)行測(cè)試。隨著測(cè)試的逐步深入展開(kāi),要集中測(cè)試容易出錯(cuò)的地方。,軟件測(cè)試流程,軟件 配置,測(cè)試,測(cè)試 配置,測(cè)試 工具,結(jié)果 分析,排錯(cuò),可靠性 分析,測(cè)試 結(jié)果,錯(cuò)誤,預(yù)期 結(jié)果,出錯(cuò)率,改正 的軟件,預(yù)測(cè) 的可 靠性,需求規(guī)格說(shuō)明書(shū) 軟件設(shè)計(jì)說(shuō)明書(shū) 被測(cè)源程序,測(cè)試計(jì)劃 測(cè)試用例 (測(cè)試數(shù)據(jù)) 測(cè)試驅(qū)動(dòng)程序,軟件配置:需求規(guī)格說(shuō)明、設(shè)計(jì)說(shuō)明書(shū)、源程序等。軟件配置中還應(yīng)包含測(cè)試配置。 測(cè)試工具:為軟件測(cè)試提供的某種服務(wù)程序。 評(píng)價(jià):測(cè)試結(jié)果與期望結(jié)果比較,如果有差異則往往程序有錯(cuò),需要改正。 可靠性預(yù)測(cè)有3種情況可以考慮: A.如果測(cè)試發(fā)現(xiàn)嚴(yán)重錯(cuò)誤,則軟件的質(zhì)量和可靠性一定不高; B.如果測(cè)試結(jié)果是軟件功能完成正常,發(fā)現(xiàn)的問(wèn)題不是嚴(yán)重錯(cuò)誤,也容易修改,則可能:(1)軟件質(zhì)量和可靠性可以接受;(2)所進(jìn)行的測(cè)試還不足以發(fā)現(xiàn)嚴(yán)重錯(cuò)誤,錯(cuò)誤被潛伏下來(lái)。 C.測(cè)試沒(méi)有發(fā)現(xiàn)任何錯(cuò)誤,則極有可能是測(cè)試配置選擇不當(dāng)(測(cè)試用例沒(méi)有選好),錯(cuò)誤被深深地潛伏下來(lái),這是極危險(xiǎn)。,軟件測(cè)試對(duì)象,軟件測(cè)試的對(duì)象應(yīng)包括需求分析與設(shè)計(jì)以及編碼等所獲得一切的文檔和程序。,軟件測(cè)試方法,軟件測(cè)試方法一般可以分成靜態(tài)測(cè)試和動(dòng)態(tài)測(cè)試等。 靜態(tài)測(cè)試實(shí)際上是確認(rèn)在給定的外部環(huán)境中軟件的邏輯正確性,它應(yīng)該包括需求規(guī)格說(shuō)明和程序等的確認(rèn)。 動(dòng)態(tài)測(cè)試也稱為機(jī)器測(cè)試,動(dòng)態(tài)測(cè)試主要是通過(guò)動(dòng)態(tài)分析以及程序測(cè)試來(lái)檢查程序的執(zhí)行狀態(tài),以確認(rèn)程序的正確性。,測(cè)試的方法與技術(shù),軟件測(cè)試的 策略和方法,靜態(tài)測(cè) 試方法,動(dòng)態(tài)測(cè) 試方法,人工測(cè)試方法,計(jì)算機(jī)輔助靜 態(tài)分析方法,白盒測(cè)試方法,黑盒測(cè)試方法,靜態(tài)和動(dòng)態(tài)測(cè)試,汽車的檢查過(guò)程: 踩油門(mén) 看車漆 打開(kāi)前蓋檢查 發(fā)動(dòng)汽車 聽(tīng)聽(tīng)發(fā)動(dòng)機(jī)聲音 上路行使,靜態(tài)測(cè)試,動(dòng)態(tài)測(cè)試,靜態(tài)測(cè)試:基本特征是對(duì)軟件進(jìn)行 分析、檢查和審閱,不實(shí) 際運(yùn)行被測(cè)試的軟件。 靜態(tài)測(cè)試約可找出3070%的邏輯設(shè)計(jì)錯(cuò)誤. 對(duì)需求規(guī)格說(shuō)明書(shū)、軟件設(shè)計(jì)說(shuō)明書(shū)、源程序做檢查和審閱,包括:是否符合標(biāo)準(zhǔn)和規(guī)范;通過(guò)結(jié)構(gòu)分析、流圖分析、符號(hào)執(zhí)行指出軟件缺陷;,靜態(tài)測(cè)試方法 (1)人工測(cè)試方法。人工測(cè)試就是通過(guò)人工閱讀分析以及評(píng)審軟件的文檔、程序資料等等,以發(fā)現(xiàn)程序中的錯(cuò)誤,尤其是一些設(shè)計(jì)上的邏輯錯(cuò)誤在機(jī)器上不易發(fā)現(xiàn),需要人工復(fù)查。根據(jù)統(tǒng)計(jì),好的人工評(píng)審,可以發(fā)現(xiàn)30%到70%的編碼或邏輯設(shè)計(jì)錯(cuò)誤。 (2)計(jì)算機(jī)輔助靜態(tài)分析。為了提高測(cè)試的效率,人們可以設(shè)計(jì)一些分析工具對(duì)被測(cè)試的程序進(jìn)行靜態(tài)分析,從中提取一些信息。例如,檢查程序中的局部變量和全局變量、參數(shù)的匹配、判斷與循環(huán)的嵌套匹配、潛在的死循環(huán)、不執(zhí)行的代碼、過(guò)程調(diào)用層次等等。 (3)程序正確性說(shuō)明。程序正確性證明是試圖找到某種方法,確切地證明程序是沒(méi)有錯(cuò)誤的。所謂證明,就是確信一個(gè)斷言真實(shí)性的論證。這種證明可以形式化的或非形式化。,動(dòng)態(tài)測(cè)試:通過(guò)運(yùn)行軟件來(lái)檢驗(yàn)軟件的動(dòng)態(tài)行為和運(yùn)行結(jié)果的正確性。 動(dòng)態(tài)測(cè)試的兩個(gè)基本要素: 被測(cè)試程序 測(cè)試數(shù)據(jù)(測(cè)試用例),動(dòng)態(tài)測(cè)試方法 (1)選取定義域有效值,或定義域 外無(wú)效值. (2)對(duì)已選取值決定預(yù)期的結(jié)果 (3)用選取值執(zhí)行程序 (4)執(zhí)行結(jié)果 與(2)結(jié)果相比, 不吻和則程序有錯(cuò).,動(dòng)態(tài)黑盒測(cè)試 閉著眼睛測(cè)試軟件,軟件,輸入,不深入代碼細(xì)節(jié)的測(cè)試方法稱為動(dòng)態(tài)黑盒測(cè)試。 軟件測(cè)試員充當(dāng)客戶來(lái)使用它。,輸出,動(dòng)態(tài)白盒測(cè)試 帶上X光眼鏡測(cè)試軟件,?,3581322.293419985680302829734315,250*(1+0.015)*(1+0.015)360-1)/0.015,250*(1+0.015)*(1+0.015)360-1)/0.015,假如知道一個(gè)盒子包含一臺(tái)計(jì)算機(jī),而另一個(gè) 盒子是人用紙筆計(jì)算,就會(huì)選擇不同的測(cè)試用例,了解軟件的運(yùn)作方式會(huì)影響測(cè)試手段,窮舉測(cè)試 例:輸入 三條邊長(zhǎng) 黑盒測(cè)試 可采用的測(cè)試用例數(shù) (設(shè)字長(zhǎng)16位) 執(zhí)行時(shí)間: 設(shè)測(cè)試一次需1ms 共需一萬(wàn)年.,=2 X2 X2 3X10,16,16,16,14,窮舉測(cè)試 白盒測(cè)試 例: 含4個(gè)分支,循環(huán)次數(shù) 20,從A到B的可能 路徑 執(zhí)行時(shí)間: 設(shè)測(cè)試一次需2ms 窮舉測(cè)試需5億年.,=5+5 +5 +5 10,20,1,2,19,14,A,B,第一次為5,第二次為5*5,不論黑盒還是白盒測(cè)試都不能 進(jìn)行窮盡測(cè)試, 所以軟件測(cè)試不可 能發(fā)現(xiàn)程序中存在的所有錯(cuò)誤, 因 此需精心設(shè)計(jì)測(cè)試方案, 力爭(zhēng)盡可 能少的次數(shù),測(cè)出盡可能多的錯(cuò)誤.,兩種類型的測(cè)試 黑盒測(cè)試 又稱:功能測(cè)試 數(shù)據(jù)驅(qū)動(dòng)測(cè)試 基于規(guī)格說(shuō)明書(shū)的測(cè)試,白盒測(cè)試 又稱:開(kāi)盒測(cè)試 結(jié)構(gòu)測(cè)試 玻璃盒測(cè)試 基于覆蓋的測(cè)試. 根據(jù)被測(cè)程序的邏輯結(jié)構(gòu)設(shè)計(jì)測(cè)試用例;力求提高測(cè)試覆蓋率;,黑盒測(cè)試與白盒測(cè)試比較 黑盒測(cè)試是從用戶觀點(diǎn),按 規(guī)格說(shuō)明書(shū)要求的輸入數(shù)據(jù)與輸 出數(shù)據(jù)的對(duì)應(yīng)關(guān)系設(shè)計(jì)測(cè)試用例, 是根據(jù)程序外部特征進(jìn)行測(cè)試。 白盒測(cè)試是根據(jù)程序內(nèi)部邏輯結(jié)構(gòu)進(jìn)行測(cè)試。,黑盒測(cè)試與白盒測(cè)試優(yōu)缺點(diǎn)比較,黑盒測(cè)試 白盒測(cè)試,優(yōu) 點(diǎn),缺 點(diǎn),性 質(zhì),適用于各階段測(cè)試 從產(chǎn)品功能角度測(cè)試 容易入手生成測(cè)試數(shù) 據(jù),可構(gòu)成測(cè)試數(shù)據(jù)使特定程 序部分得到測(cè)試 有一定的充分性度量手段 較多工具支持,某些代碼得不到測(cè)試 如果規(guī)格說(shuō)明有誤, 則無(wú)法發(fā)現(xiàn) 不易進(jìn)行充分性測(cè)試,不易生成測(cè)試數(shù)據(jù)(通常) 無(wú)法對(duì)未實(shí)現(xiàn)規(guī)格說(shuō)明的 部分進(jìn)行測(cè)試 工作量大,通常只用于單 元測(cè)試,有應(yīng)用局限,是一種確認(rèn)技術(shù),回答: “我們?cè)跇?gòu)造一個(gè)正確 的系統(tǒng)嗎?”,是一種驗(yàn)證技術(shù),回答: “我們?cè)谡_地構(gòu)造一個(gè)系 統(tǒng)嗎?”,黑盒測(cè)試與白盒測(cè)試能發(fā)現(xiàn)的錯(cuò)誤,C,B,A,D,-只能用黑盒測(cè)試發(fā)現(xiàn)的錯(cuò)誤,A,-只能用白盒測(cè)試發(fā)現(xiàn)的錯(cuò)誤,-兩種方法都能發(fā)現(xiàn)的錯(cuò)誤,-兩種方法都不能發(fā)現(xiàn)的錯(cuò)誤,B,C,D,測(cè)試用例設(shè)計(jì) 選擇測(cè)試用例是軟件測(cè)試員最重要 的一項(xiàng)工作。 測(cè)試用例的屬性: 屬性 描述 name 測(cè)試用例的名稱 location 可執(zhí)行的完全路徑名 input 輸入數(shù)據(jù)或命令 oracle 與測(cè)試輸入相比較的期待測(cè)試結(jié)果 log 測(cè)試生產(chǎn)的輸出,程序測(cè)試舉例 例:程序 Triangle, 輸入三個(gè)整 數(shù),表示一個(gè)三角形的三個(gè)邊 長(zhǎng),該程序產(chǎn)生一個(gè)結(jié)果,指 出該三角形是等邊三角形、等 腰三角形還是不等邊三角形。,判斷三角型的測(cè)試用例設(shè)計(jì): 輸入數(shù)據(jù) 預(yù)期結(jié)果 (1) 6;6;6 等邊 (2) 8;8;4 等腰 (3) 4;5;6 一般 還應(yīng)輸入非法數(shù)據(jù): 0; 7; 9 -7;3; 5 a; 2; 7 等,白盒測(cè)試的測(cè)試用例設(shè)計(jì) 邏輯覆蓋法 (1)語(yǔ)句覆蓋 (2)判定覆蓋 (3)條件覆蓋 (4)判定/條件覆蓋 (5)條件組合覆蓋 (6)路徑覆蓋 (7)點(diǎn)覆蓋 (8)邊覆蓋,例:PROCEDURE SAMPAL (A,B:REAL; VAR X:REAL); BEGIN IF (A1) AND (B=0) THEN X:=X/A IF (A=2) OR (X1) THEN X:=X+1 END;,開(kāi)始,(A1) AND (B=0),(A=2) OR (X1),返回,X=X/A,X=X+1,F,F,T,T,a,b,d,c,e,(1)語(yǔ)句覆蓋 使程序中每個(gè)語(yǔ)句至少執(zhí)行一次,語(yǔ)句覆蓋,開(kāi)始,(A1) AND (B=0),(A=2) OR (X1),返回,X=X/A,X=X+1,F,F,T,T,a,b,d,c,e,只需設(shè)計(jì)一個(gè)測(cè)試用例: 輸入數(shù)據(jù):A=2,B=0,X=4 則覆蓋ace,可以執(zhí)行程序中的每一條語(yǔ)句,即達(dá)到了語(yǔ)句覆蓋; 語(yǔ)句覆蓋是最弱的邏輯覆蓋,(2)判定覆蓋(分支覆蓋) 使每個(gè)判定的真假分支都至少執(zhí)行一次,判定覆蓋,開(kāi)始,(A1) AND (B=0),(A=2) OR (X1),返回,X=X/A,X=X+1,F,F,T,T,a,b,d,c,e,例:可設(shè)計(jì)兩組測(cè)試用例: A=3,B=0 ,X=3 可覆蓋c、d分支 A=2,B=1 ,X=1 可覆蓋b、e分支 兩組測(cè)試用例可覆蓋所有判定的真假 分支。 語(yǔ)句覆蓋仍是弱的邏輯覆蓋。,(3)條件覆蓋 使每個(gè)判定的每個(gè)條件的可能取值至少執(zhí)行一次,第一判定表達(dá)式: 設(shè)條件 A1 取真 記為 T1 假 T1 條件 B=1 取真 記為 T2 假 T2 第二判定表達(dá)式: 設(shè)條件 A=2 取真 記為 T3 假 T3 條件 X1 取真 記為 T4 假 T4,條件覆蓋,開(kāi)始,(A1) AND (B=0),(A=2) OR (X1),返回,X=X/A,X=X+1,F,F,T,T,a,b,d,c,e,滿足條件: T1,T1, T2,T2 T3,T3 T4,T4,測(cè)試用例 通過(guò) 滿足的 覆蓋 A B X 路徑 條件 分支 1 0 3 abe T1,T2,T3,T4 b,e 2 1 1 abe T1,T2,T3,T4 b,e 兩個(gè)測(cè)試用例覆蓋了四個(gè)條件八種可能 取值。 未覆蓋c、d分支,不滿足判定覆蓋的要 求. 條件覆蓋不一定包含判定覆蓋 判定覆蓋也不一定包含條件覆蓋,(4)判定/條件覆蓋 選取足夠多的測(cè)試用例,使判斷中的每個(gè)條件的所有可能取值至少執(zhí)行一次,同時(shí)每個(gè)判斷本身的所有可能判斷結(jié)果至少執(zhí)行一次.,判定/條件 覆蓋,開(kāi)始,(A1) AND (B=0),(A=2) OR (X1),返回,X=X/A,X=X+1,F,F,T,T,a,b,d,c,e,滿足條件: T1,T1, T2,T2 T3,T3 T4,T4,測(cè)試用例 通過(guò) 滿足的 覆蓋 A B X 路徑 條件 分支 2 0 4 ace T1,T2,T3,T4 c,e 2 1 1 abd T1,T2,T3,T4 b,d 能同時(shí)滿足判定、條件兩種覆蓋標(biāo)準(zhǔn)取值。,測(cè)試用例 通過(guò) 滿足的 覆蓋 A B X 路徑 條件 分支 2 0 3 ace T1,T2,T3,T4 c,e 2 1 1 abe T1,T2,T3,T4 b,e 1 0 3 abe T1,T2,T3,T4 b,e 1 1 1 abd T1,T2,T3,T4 b,d,(5)條件組合覆蓋 所有可能的條件取值組合至少執(zhí)行一次 A1, B=0 A1, B0 A1, B=0 A1, B0 A=2, X1 A=2, X1 A2, X1 A2, X1,測(cè)試用例 通過(guò) 滿足的 覆蓋 ABX 路徑 條件 分支 204 ace T1,T2,T3,T4 c,e 211 abe T1,T2,T3,T4 b,e 102 abd T1,T2,T3,T4 b,d 111 abd T1,T2,T3,T4 b,d 它是這幾種覆蓋標(biāo)準(zhǔn)中最強(qiáng)的,(6)路徑覆蓋 覆蓋每一個(gè)可能的路徑 測(cè)試用例 通過(guò) 滿足的 覆蓋 A B X 路徑 條件 分支 1 1 1 abd T1,T2,T3,T4 b,d 1 1 2 abe T1,T2,T3,T4 b,e 3 0 1 acd T1,T2,T3,T4 c,d 2 0 4 ace T1,T2,T3,T4 c,e,循環(huán)測(cè)試,(1)簡(jiǎn)單循環(huán)測(cè)試 假設(shè)n是允許通過(guò)循環(huán)的最大次數(shù),應(yīng)該進(jìn)行下列的測(cè)試: 跳過(guò)整個(gè)循環(huán); 只執(zhí)行循環(huán)一次; 執(zhí)行循環(huán)兩次; 執(zhí)行循環(huán)m次,其中,mn-1; 執(zhí)行循環(huán)n-1,n,n+1次。,(2)嵌套循環(huán)測(cè)試 如果把簡(jiǎn)單循環(huán)的方法直接用于嵌套循環(huán),可能的測(cè)試次數(shù)會(huì)隨著嵌套循環(huán)的層數(shù)的增加按幾何級(jí)數(shù)增加,導(dǎo)致不現(xiàn)實(shí)的測(cè)試數(shù)目,可以進(jìn)行下列的測(cè)試: 從最內(nèi)層循環(huán)開(kāi)始測(cè)試,把其他循環(huán)都設(shè)置為最小值; 對(duì)最內(nèi)層循環(huán)使用簡(jiǎn)單測(cè)試方法,使外層循環(huán)的迭代參數(shù)取最小值(例如,循環(huán)計(jì)算器等),并且,為越界或非法值增加一些額外的測(cè)試; 由內(nèi)向外,對(duì)下一個(gè)循環(huán)進(jìn)行測(cè)試,保持它的所有外層循環(huán)為最小值,其他的嵌套循環(huán)取“典型”值。如此繼續(xù)進(jìn)行,直到測(cè)試完所有循環(huán)。,(3)串接循環(huán)測(cè)試 如果串接循環(huán)的各個(gè)循環(huán)都彼此獨(dú)立,則可以使用簡(jiǎn)單循環(huán)測(cè)試的方法來(lái)進(jìn)行。但是,如果在兩個(gè)串接循環(huán)中,第一個(gè)循環(huán)的循環(huán)計(jì)算器的值是第二個(gè)循環(huán)的初始值,則這兩個(gè)循環(huán)并不是獨(dú)立的。這時(shí),建議使用嵌套循環(huán)測(cè)試方法來(lái)進(jìn)行。,基本路徑測(cè)試法 通過(guò)分析由控制構(gòu)造的環(huán)路的復(fù)雜性,導(dǎo)出基本路徑集合,從而設(shè)計(jì)測(cè)試用例,保證這些路徑至少通過(guò)一次。 基本路徑測(cè)試步驟: 導(dǎo)出程序流程圖的拓?fù)浣Y(jié)構(gòu)-流圖 (程序圖) 計(jì)算流圖G的環(huán)路復(fù)雜度V(G) 確定只包含獨(dú)立路徑的基本路徑集 設(shè)計(jì)測(cè)試用例,導(dǎo)出程序流程圖的拓?fù)浣Y(jié)構(gòu)-流圖,1,2,3,6,4,5,7,10,11,a,節(jié)點(diǎn),邊,R4,區(qū)域,1,2,3,4,5,8,7,6,9,10,11,程序流程圖,8,9,R1,R2,R3,計(jì)算流圖G的環(huán)路復(fù)雜度V(G) V(G)=區(qū)域個(gè)數(shù)=4 V(G)=邊的條數(shù)-節(jié)點(diǎn)個(gè)數(shù)+2=4 V(G)=判定節(jié)點(diǎn)個(gè)數(shù)+1=4,確定只包含獨(dú)立路徑的基本路徑集 path1:1-11 path2:1-2-3-4-5-10-1-11 path3:1-2-3-6-8-9-10-1-11 path4:1-2-3-6-7-9-10-1-11 一條新路徑必須包含一條新邊。 這4條路徑組成了一個(gè)基本路徑集。4(環(huán) 路復(fù)雜度V(G)是構(gòu)成這個(gè)基本路徑集的獨(dú)立 路徑數(shù)的上界,也是設(shè)計(jì)測(cè)試用例的數(shù)目。 設(shè)計(jì)測(cè)試用例,保證基本路徑集中每條 路徑的執(zhí)行。,黑盒測(cè)試的測(cè)試用例設(shè)計(jì) 等價(jià)類劃分法 把所有可能的輸入數(shù)據(jù)(有效的 和無(wú)效的)劃分成若干個(gè)等價(jià)的子集 (稱為等價(jià)類), 使得每個(gè)子集中的 一個(gè)典型值在測(cè)試中的作用與這一 子集中所有其它值的作用相同. 可從每個(gè)子集中選取一組數(shù)據(jù)來(lái)測(cè)試程序,例:某報(bào)表處理系統(tǒng)要求用戶輸入處理 報(bào)表的日期,日期限制在2001年1 月至2005年12月,即系統(tǒng)只能對(duì)該 段期間內(nèi)的報(bào)表進(jìn)行處理,如日期 不在此范圍內(nèi),則顯示輸入錯(cuò)誤信 息。 系統(tǒng)日期規(guī)定由年、月的6位數(shù)字 字符組成,前四位代表年,后兩位 代表月。 如何用等價(jià)類劃分法設(shè)計(jì)測(cè)試用例, 來(lái)測(cè)試程序的日期檢查功能?,如何劃分等價(jià)類? 有效等價(jià)類(合理等價(jià)類) 無(wú)效等價(jià)類(不合理等價(jià)類) 劃分等價(jià)類的標(biāo)準(zhǔn): 覆蓋 不相交 代表性,劃分等價(jià)類的規(guī)則,(1)如果輸入條件規(guī)定了取值范圍, 可定義一個(gè)有效等價(jià)類和兩個(gè)無(wú) 效等價(jià)類。,例 輸入值是學(xué)生成績(jī),范圍是0100,0 100,有效 等價(jià)類 1成績(jī)100,無(wú)效等價(jià)類 成績(jī)100,無(wú)效等價(jià)類 成績(jī)0,劃分等價(jià)類的規(guī)則:,(2)如果輸入條件代表集合的某 個(gè)元素,則可定義一個(gè)有效 等價(jià)類和一個(gè)無(wú)效等價(jià)類。,劃分等價(jià)類的規(guī)則:,(3)如規(guī)定了輸入數(shù)據(jù)的一組值,且 程序?qū)Σ煌斎胫底霾煌幚恚?則每個(gè)允許的輸入值是一個(gè)有 效等價(jià)類,并有一個(gè)無(wú)效等價(jià)類 (所有不允許的輸入值的集合)。 例:輸入條件說(shuō)明學(xué)歷可為:???、本科、 碩士、博士四種之一,則分別取這四 個(gè)值作為四個(gè)有效等價(jià)類,另外把四 種學(xué)歷之外的任何學(xué)歷作為無(wú)效等價(jià)類,劃分等價(jià)類的規(guī)則:,(4)如果規(guī)定了輸入數(shù)據(jù)必須遵循的規(guī) 則,可確定一個(gè)有效等價(jià)類(符合 規(guī)則)和若干個(gè)無(wú)效等價(jià)類(從不 同角度違反規(guī)則)。 (5)如已劃分的等價(jià)類各元素在程序中 的處理方式不同,則應(yīng)將此等價(jià) 類進(jìn)一步劃分成更小的等價(jià)類。,用等價(jià)類劃分法設(shè)計(jì)測(cè)試用例步驟:,(1)形成等價(jià)類表,每一等價(jià)類規(guī)定 一個(gè)唯一的編號(hào); (2)設(shè)計(jì)一測(cè)試用例,使其盡可能多 地覆蓋尚未覆蓋的有效等價(jià)類, 重復(fù)這一步驟,直到所有有效等 價(jià)類均被測(cè)試用例所覆蓋; (3)設(shè)計(jì)一新測(cè)試用例,使其只覆蓋 一個(gè)無(wú)效等價(jià)類,重復(fù)這一步驟 直到所有無(wú)效等價(jià)類均被覆蓋;,第一步:等價(jià)類劃分,輸入等價(jià)類 有效等價(jià)類 無(wú)效等價(jià)類,報(bào)表日期的 類型及長(zhǎng)度,6位數(shù)字字符(1),有非數(shù)字字符 (4) 少于6個(gè)數(shù)字字符 (5) 多于6個(gè)數(shù)字字符 (6),年份范圍,在20012005 之間 (2),小于2001 (7) 大于2005 (8),月份范圍,在112之間(3),“報(bào)表日期”輸入條件的等價(jià)類表,小于1 (9) 大于12 (10),第二步:為有效等價(jià)類設(shè)計(jì)測(cè)試用例 對(duì)表中編號(hào)為1,2,3的3個(gè)有效等價(jià)類 用一個(gè)測(cè)試用例覆蓋:,測(cè)試數(shù)據(jù) 期望結(jié)果 覆蓋范圍,200105,等價(jià)類(1)(2)(3),輸入有效,第三步:為每一個(gè)無(wú)效等價(jià)類至少設(shè) 計(jì)一個(gè)測(cè)試用例,測(cè)試數(shù)據(jù) 期望結(jié)果 覆蓋范圍,001MAY,等價(jià)類(4),輸入無(wú)效,20015,等價(jià)類(5),輸入無(wú)效,2001005,等價(jià)類(6),輸入無(wú)效,200005,等價(jià)類(7),輸入無(wú)效,200805,等價(jià)類(8),輸入無(wú)效,200100,等價(jià)類(9),輸入無(wú)效,200113,等價(jià)類(10),輸入無(wú)效,不能出現(xiàn)相同 的測(cè)試用例,本例的10個(gè)等價(jià)類至 少需要8個(gè)測(cè)試用例,例:對(duì)招干考試系統(tǒng)“輸入學(xué)生成績(jī)” 子模塊設(shè)計(jì)測(cè)試用例 招干考試分三個(gè)專業(yè),準(zhǔn)考證號(hào)第一位 為專業(yè)代號(hào),如: 1-行政專業(yè), 2-法律專業(yè), 3-財(cái)經(jīng)專業(yè). 行政專業(yè)準(zhǔn)考證號(hào)碼為:110001111215 法律專業(yè)準(zhǔn)考證號(hào)碼為:210001212006 財(cái)經(jīng)專業(yè)準(zhǔn)考證號(hào)碼為:310001314015,例:準(zhǔn)考證號(hào)碼的等價(jià)類劃分 有效等價(jià)類: (1) 110001 111215 (2) 210001 212006 (3) 310001 314015 無(wú)效等價(jià)類: (4) - 110000 (5) 111216 210000 (6) 212007 310000 (7) 314016 + ,例:計(jì)算給定月份中天數(shù)的方法接口(java): Class MyGregorianCalender public static in getNumDaysInMonth(int month,int year) getNumDaysInMonth( )方法有兩個(gè)參數(shù), 月和年,年份的有效輸入是從0到maxInt.,等價(jià)類劃分即把輸入空間分解成一系列子域,軟件在一個(gè)子域內(nèi)的行為應(yīng)是等價(jià)的。,軟件錯(cuò)誤分為兩類:計(jì)算錯(cuò)誤 域錯(cuò)誤,針對(duì)計(jì)算錯(cuò)誤的測(cè)試方法 針對(duì)域錯(cuò)誤的測(cè)試方法:測(cè)試域邊界 劃定的正確性,邊界值分析法 邊界值分析法與等價(jià)類劃分法區(qū)別 (1)邊界值分析不是從某等價(jià)類中 隨便挑一個(gè)作為代表,而是使 這個(gè)等價(jià)類的每個(gè)邊界都要作 為測(cè)試條件。 (2)邊界值分析不僅考慮輸入條件, 還要考慮輸出空間產(chǎn)生的測(cè)試 情況,被測(cè)試 子 域,測(cè)試內(nèi)點(diǎn),測(cè)試外點(diǎn),軟件邊界與懸崖很類似,邊界條件類型,如果軟件測(cè)試問(wèn)題 包含確定的邊界,那 么數(shù)據(jù)類型可能是: 數(shù)值 字符 位置 數(shù)量 速度 地址 尺寸 ,還要考慮數(shù)據(jù)類型的特征: 第一個(gè)/最后一個(gè) 最小值/最大值 開(kāi)始/完成 空/滿 最慢/最快 相鄰/最遠(yuǎn) 超過(guò)/在內(nèi) ,測(cè)試邊界線 測(cè)試臨近邊界的合法數(shù)據(jù),以及剛超過(guò)邊界的非法數(shù)據(jù). 越界測(cè)試通常簡(jiǎn)單地加1或很小的數(shù) (對(duì)于最大值)和減1或很小的數(shù)(對(duì)于最小值).,輸入 條件,報(bào)表日 期的類 型及長(zhǎng) 度,1個(gè)數(shù)字字符 5個(gè)數(shù)字字符 7個(gè)數(shù)字字符 有1個(gè)非數(shù)字字符 全部是非數(shù)字字符 6個(gè)數(shù)字字符,顯示出錯(cuò) 顯示出錯(cuò) 顯示出錯(cuò) 顯示出錯(cuò) 顯示出錯(cuò) 輸入有效,日期 范圍,月份 范圍,“報(bào)表日期”邊界值分析法測(cè)試用例,測(cè)試用例說(shuō)明,測(cè)試數(shù)據(jù),期望結(jié)果,選取理由,5 20015 2001005 2001.5 MAY- 200105,月份為1月 月份為12月 月份12,200101 200112 200100 200113,200101 200512 200100 200513,輸入有效 輸入有效 顯示出錯(cuò) 顯示出錯(cuò),輸入有效 輸入有效 顯示出錯(cuò) 顯示出錯(cuò),在有效范圍 邊界上選取 數(shù)據(jù),僅有1個(gè)合法字符 比有效長(zhǎng)度少1 比有效長(zhǎng)度多1 只有1個(gè)非法字符 6個(gè)非法字符 類型及長(zhǎng)度均有效,最小日期 最大日期 剛好小于最小日期 剛好大于最大日期,最小月份 最大月份 剛好小于最小月份 剛好大于最大月份,錯(cuò)誤推測(cè)法(error guessing) 根據(jù)經(jīng)驗(yàn)來(lái)設(shè)計(jì)測(cè)試用例的方法。 例如,數(shù)據(jù)測(cè)試中的: 缺省值 空白 空值 零值 無(wú),狀態(tài)測(cè)試 軟件必須測(cè)試程序的狀態(tài)及其轉(zhuǎn)換。 測(cè)試軟件的邏輯流程 建立狀態(tài)轉(zhuǎn)換圖 減少要測(cè)試的狀態(tài)及轉(zhuǎn)換的數(shù)量,空閑,等待用戶 輸入命令,按下Esc鍵 顯示口令框,口令錯(cuò)誤 消除,口令正確 初始狀態(tài)消失,空閑,等待用戶 輸入命令,按下Esc鍵,口令正確,口令錯(cuò)誤,不同形式的狀態(tài)轉(zhuǎn)換圖,設(shè)置2Bwatch 上的時(shí)間的順序圖,:2Bwatch用戶,按下按鈕1和2,:2Bwatch輸入,:2Bwatch顯示,:2Bwatch時(shí)間,時(shí)間,按下按鈕1,按下按鈕2,按下按鈕1和2,閃爍小時(shí),閃爍分鐘,增加分鐘,刷新,提交更新時(shí)間,停止閃爍,2Bwatch 設(shè)置時(shí)間功能的狀態(tài)圖和測(cè)試結(jié)果,按左按鈕 按右按鈕,按左按鈕 按右按鈕,4. 2分鐘以后,測(cè)量時(shí)間,設(shè)置時(shí)間,電池沒(méi)電,3.按下左右按鈕,5.按下左右按鈕/蜂鳴,8. 20年以后,7. 20年以后,6.,2.,1.,激勵(lì)因素,空集合,測(cè)量時(shí)間,1.初始變遷,測(cè)試的變遷,預(yù)期結(jié)果狀態(tài),按下左邊按鈕,測(cè)量時(shí)間,2.,同時(shí)按下兩個(gè)按鈕,設(shè)置時(shí)間,3.,等2分鐘,測(cè)量時(shí)間,4.超時(shí),失敗狀態(tài)測(cè)試 找到測(cè)試軟件失敗的案例。 競(jìng)爭(zhēng)條件和時(shí)序錯(cuò)亂 重復(fù) 壓迫 重負(fù),應(yīng)聯(lián)合使用,同時(shí)進(jìn)行,有效等價(jià)類和用來(lái)測(cè)試getNumDaysInMonth()方法所選的有效輸入,有效等價(jià)類,一個(gè)月有31天,非閏年,1901,7(七月),一個(gè)月有31天, 閏年,1904,7(七月),一個(gè)月有30天,非閏年,1901,6(六月),一個(gè)月有30天, 閏年,1904,6(六月),一個(gè)月為28或29天,非閏年,1901,2(二月),月份 輸入值,年份 輸入值,一個(gè)月為28或29天, 閏年,2(二月),1904,用來(lái)測(cè)試getNumDaysInMonth()方法的附加邊界值,等價(jià)類,可以被400整除的閏年,2000,2(二月),可以被100整除的非閏年,1900,2(二月),非正數(shù)無(wú)效月份,1291,0,正數(shù)無(wú)效月份,1315,13,月份 輸入值,年份 輸入值,因果圖法 因果圖適合于描述對(duì)于多種輸入條件的組合,相應(yīng)產(chǎn)生多個(gè)動(dòng)作的形式來(lái)設(shè)計(jì)測(cè)試用例。 因果圖方法最終生成的是判定表。,因果圖方法實(shí)例 某電力公司有A、B、C、D四類收費(fèi)標(biāo)準(zhǔn), 并規(guī)定: 居民用電 100度/月 按A類收費(fèi) 100度/月按B類收費(fèi) 動(dòng)力用電 10000度/月,非高峰,B類收費(fèi) 10000度/月,非高峰,C類收費(fèi) 10000度/月, 高峰,C類收費(fèi) 10000度/月, 高峰,D類收費(fèi),用因果圖表明輸入和輸出間的邏輯關(guān)系,1,I1,2,B,4,A,C,3,5,D,I4,I3,I2,把因果圖轉(zhuǎn)換為判定表,組合條件,條件 (原因),動(dòng)作 (結(jié)果),A,B,C,1,2,3,1,2,3,4,5,6,1,0,1,1,0,0,0,1,1,0,0,0,1,1,0,0,0,0,1,0,0,0,0,1,1,0,4,1,0,1,0,5,0,0,1,1,D,0,0,0,1,1,0,0,1,0,0,0,0,測(cè)試用例,為判定表每一列設(shè)計(jì)一個(gè)測(cè)試用例:,1列 居民電,90度/月 A 2列 居民電,110度/月 B 3列 動(dòng)力電,非高峰,8000度/月 B 4列 動(dòng)力電,非高峰,1.2萬(wàn)度/月 C 5列 動(dòng)力電, 高峰,0.9萬(wàn)度/月 C 6列 動(dòng)力電, 高峰,1.1萬(wàn)度/月 D,條件 測(cè)試用例 預(yù)期結(jié)果 組合 (輸入數(shù)據(jù)) (輸出動(dòng)作),軟件測(cè)試的過(guò)程,被測(cè) 模塊,單元 測(cè)試,設(shè)計(jì) 信息,集成 測(cè)試,被測(cè) 模塊,單元 測(cè)試,被測(cè) 模塊,單元 測(cè)試,測(cè)試過(guò) 的模塊,確認(rèn) 測(cè)試,系統(tǒng) 測(cè)試,軟件 需求,其它系 統(tǒng)元素,裝配好的軟件,確認(rèn) 的軟件,可運(yùn) 行的 軟件,軟件測(cè)試的步驟,軟件測(cè)試策略,單元測(cè)試,U,C,D,R,S,I,V,ST,集成測(cè)試,確認(rèn)測(cè)試,系統(tǒng)測(cè)試,系統(tǒng)工程,軟件需求分析,軟件設(shè)計(jì),代碼編寫(xiě),單元測(cè)試 一.單元測(cè)試的內(nèi)容 主要對(duì)模塊的五個(gè)基本特性進(jìn)行評(píng)價(jià),模塊,錯(cuò)誤處理,模塊接口,局部數(shù) 據(jù)結(jié)構(gòu),重要的 執(zhí)行路徑,邊界條件,1.常見(jiàn)錯(cuò)誤類型 接口錯(cuò)誤 I/O錯(cuò)誤 數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤 算法錯(cuò)誤 比較及控制邏輯錯(cuò)誤 錯(cuò)誤處理錯(cuò)誤,2.單元測(cè)試基本原則 至少一次測(cè)試所有語(yǔ)句 測(cè)試所有可能的執(zhí)行或邏輯路徑的組合 測(cè)試每個(gè)模塊的所有入口和出口,3. 確定單元測(cè)試數(shù)據(jù)集 值域 值類 離散值 值的次序集(測(cè)試順序文件和表),二.單元測(cè)試的方法 單元測(cè)試一般為編碼步驟的附屬部分。 模塊不是獨(dú)立的程序,自己不能運(yùn)行, 要靠其它部分來(lái)調(diào)用和驅(qū)動(dòng),要為每個(gè) 單元測(cè)試開(kāi)發(fā)兩個(gè)軟件: (1)驅(qū)動(dòng)模塊(驅(qū)動(dòng)程序):相當(dāng)于主模塊 (2)樁模塊(測(cè)試存根、連接程序) :代替所測(cè)模塊調(diào)用的子模塊,單元測(cè)試的測(cè)試環(huán)境舉例:,B,A,C,D,E,待測(cè)試模塊,單元測(cè)試的測(cè)試環(huán)境舉例:,被測(cè)模塊 B,驅(qū)動(dòng)模塊 (模擬模塊A),樁模塊(測(cè)試存根) (模擬模塊E),測(cè)試用例,測(cè)試結(jié)果,許多模塊不能用簡(jiǎn)單的軟件進(jìn)行充分的單元測(cè)試, 此時(shí), 完全的測(cè)試可放到集成測(cè)試階段再進(jìn)行。,單元測(cè)試的測(cè)試環(huán)境舉例:,實(shí)際軟件,華氏到懾氏 轉(zhuǎn)換模塊,溫度數(shù)據(jù),實(shí)際配置,測(cè)試用例數(shù)據(jù),結(jié)果,測(cè)試驅(qū)動(dòng)軟件,華氏到懾氏 轉(zhuǎn)換模塊,結(jié)果,測(cè)試驅(qū)動(dòng)際配置,單元測(cè)試的測(cè)試環(huán)境舉例,溫度顯示模塊,溫度接口 模塊,實(shí)際配置,測(cè)試驅(qū)動(dòng)實(shí)際配置,溫度顯示模塊,程序員編寫(xiě)的樁模塊 (測(cè)試存根),溫度值的測(cè)試文件,結(jié)構(gòu)性模式(structural patterns) 適配器模式(Adapter)打包器(Wrapper) 橋模式(Bridge)句柄(Handle) 組合模式(Composite) 修飾模式(Decorator)包裝器(Wrapper) 外觀模式(Facade) 輕量模式 (Flyweight) 代理模式(Proxy),Implementor,OperationaImp( ),橋模式(Bridge) 意圖:將抽象部分和實(shí)現(xiàn)部分分離,使他們都可以獨(dú)立地變化,Abstraction,Contextinterface( ),ConcreteImplementorA,OperationaImp( ),ConcreteImplementorB,OperationaImp( ),RefinedAbstraction,支持多種窗口系統(tǒng)的設(shè)計(jì)窗口與窗口實(shí)現(xiàn)分離,Window,Raise( ) DrawRact(),ApplicationWindow,IconWindow,DialogWindow,MacWindowlmp,DeviceRaise( ) DeviceRect( ) ,PMWindowlmp,DeviceRaise( ) DeviceRect( ) ,XWindowlmp,DeviceRaise( ) DeviceRect( ) ,Windowlmp,DeviceRaise( ) DeviceRect( ) ,利用Bridge設(shè)計(jì)模式與未完成、未知或在測(cè)試 另一組件時(shí)不可用組件的接口(UML類圖),用戶接口,數(shù)據(jù)庫(kù)戶接口,數(shù)據(jù)庫(kù)戶接口,測(cè)試存根,數(shù)據(jù)庫(kù),可用Bridge設(shè)計(jì)模式實(shí)現(xiàn)測(cè)試存根,用戶接口子系統(tǒng)訪問(wèn)測(cè)試不能訪問(wèn)的數(shù)據(jù)庫(kù)子系統(tǒng)。 將數(shù)據(jù)庫(kù)接口和數(shù)據(jù)庫(kù)實(shí)現(xiàn)分離開(kāi)來(lái)。,集成測(cè)試(組裝測(cè)試) 集成測(cè)試需考慮的問(wèn)題: 數(shù)據(jù)穿越接口可能丟失. 一模塊可能破壞另一模塊功能. 子功能組裝可能未產(chǎn)生所要求的 主功能. 全程數(shù)據(jù)結(jié)構(gòu)可能出問(wèn)題. 誤差累積問(wèn)題.,集成測(cè)試方法 通常采用黑盒測(cè)試技術(shù) 實(shí)施策略: 非增量式系統(tǒng)集成 增量式系統(tǒng) 集成,深度優(yōu)先 廣度優(yōu)先,自頂向下結(jié)合 自底向上結(jié)合,一.非增量式系統(tǒng)集成 一次就把所有通過(guò)了單元測(cè)試 的模塊組合在一起進(jìn)行全程序的測(cè) 試。 缺點(diǎn):發(fā)現(xiàn)錯(cuò)誤難以診斷定位, 又稱“莽撞測(cè)試” 。,二. 增量式系統(tǒng)集成 從一個(gè)模塊開(kāi)始,測(cè)一次添加一個(gè)模塊,邊組裝邊測(cè)試,以發(fā)現(xiàn)與接口相聯(lián)系的問(wèn)題。,自頂向下結(jié)合方式舉例:,A,D,B,E,模塊測(cè)試 結(jié)合順序,C,F,深度優(yōu)先:A、B、E、C、D、F,廣度優(yōu)先:A、B、C、D、E、F,自頂向下結(jié)合方式舉例:(深度優(yōu)先),A,測(cè)試 A,S2,S1,S3,A,加入B,S2,B,S3,S4,A,加入E,S2,B,S3,E,A,加入C,C,B,S3,E,加入D,C,B,D,E,加入F,C,B,D,E,A,A,F,S5,自底向上結(jié)合方式舉例:,A,C,B,D,F,E,E,d1,C,d3,F,d4,B,d2,E,D,d5,F,自底向上結(jié)合方式舉例:,Mc,D1,Ma,Mb,D2,D3,簇1,簇2,簇3,自頂向下 自底向上 優(yōu)點(diǎn) 可在測(cè)試早期 設(shè)計(jì)測(cè)試用例容易 實(shí)現(xiàn)并驗(yàn)證系 統(tǒng)主要功能 不需驅(qū)動(dòng)模塊 不需樁模塊 缺點(diǎn) 需樁模塊 只有到最后程序才 能作為一個(gè)整體 3. 混合集成測(cè)試方法 一般對(duì)軟件結(jié)構(gòu)的上層使用自頂向下 結(jié)合的方法; 對(duì)下層使用自底向上結(jié)合的方法;,接口測(cè)試,接口測(cè)試的目的是檢查由于接口錯(cuò)誤或者接口進(jìn)行無(wú)效假設(shè)造成的系統(tǒng)缺陷。程序組件的接口有很多的類型,例如: 參數(shù)接口。 主要是數(shù)據(jù)和函數(shù)指針等,它們由一個(gè)構(gòu)件傳遞到另一個(gè)構(gòu)件。 共享內(nèi)存接口。 有一個(gè)被子系統(tǒng)共享的內(nèi)存塊。由一個(gè)子系統(tǒng)把數(shù)據(jù)放在該內(nèi)存中,然后被另一個(gè)子系統(tǒng)取出。 程序接口。 由一個(gè)子系統(tǒng)封裝了的一組程序,這些程序可以被其他子系統(tǒng)調(diào)用。例如,對(duì)象(類)和抽象數(shù)據(jù)類型就存在這種接口。 消息傳遞接口。 子系統(tǒng)通過(guò)消息傳遞來(lái)請(qǐng)求其他子系統(tǒng)的服務(wù),返回的消息也包含了該服務(wù)的運(yùn)行結(jié)果。例如,一些面向?qū)ο笙到y(tǒng)、客戶機(jī)/服務(wù)器系統(tǒng)存在這種接口。,接口錯(cuò)誤可以分成3類: 接口誤用。調(diào)用者(組件)在調(diào)用其他組件時(shí),接口使用不當(dāng)而產(chǎn)生錯(cuò)誤,例如,在使用參數(shù)接口時(shí),參數(shù)類型和傳遞順序以及參數(shù)個(gè)數(shù)不對(duì)等。 接口誤解。調(diào)用者(組件)誤解了被調(diào)用組件的接口描述而產(chǎn)生錯(cuò)誤,被調(diào)用組件沒(méi)有按照預(yù)期的行為執(zhí)行。 計(jì)時(shí)錯(cuò)誤。這類錯(cuò)誤一般發(fā)生在實(shí)時(shí)控制系統(tǒng)中,系統(tǒng)使用了共享內(nèi)存接口或者消息傳遞接口而產(chǎn)生接口錯(cuò)誤。例如,數(shù)據(jù)的生產(chǎn)和消費(fèi)可能以不同的速度進(jìn)行,由于生產(chǎn)者沒(méi)有及時(shí)更新共享接口的信息導(dǎo)致消費(fèi)者訪問(wèn)了過(guò)期的數(shù)據(jù)。,接口測(cè)試的一般準(zhǔn)則: 檢查代碼并明確地列出對(duì)外部構(gòu)件的調(diào)用。對(duì)傳給外部構(gòu)件的參數(shù)值,應(yīng)選擇取值范圍的邊緣值作為測(cè)試用例,這樣可能發(fā)現(xiàn)接口的不一致性。 如果有指針從接口傳遞,應(yīng)該用空指針參數(shù)來(lái)進(jìn)行測(cè)試。 如果通過(guò)程序接口調(diào)用構(gòu)件,可以設(shè)計(jì)一些容易引起構(gòu)件失敗的測(cè)試。 如果是通過(guò)消息傳遞到系統(tǒng)進(jìn)行強(qiáng)度測(cè)試,應(yīng)該設(shè)計(jì)大量的消息,可能發(fā)現(xiàn)計(jì)時(shí)錯(cuò)誤。 當(dāng)構(gòu)件之間是通過(guò)共享內(nèi)存進(jìn)行交互時(shí),設(shè)計(jì)測(cè)試用例時(shí),改變激活構(gòu)件的次序,這樣可能發(fā)現(xiàn)共享數(shù)據(jù)的生產(chǎn)和消費(fèi)的順序的錯(cuò)誤。,集成測(cè)試的標(biāo)準(zhǔn)應(yīng)包括: 接口完整性。每一個(gè)模塊集成到整個(gè)系統(tǒng)結(jié)構(gòu)中,都要對(duì)它的內(nèi)部和外部接口進(jìn)行測(cè)試。 功能有效性。為發(fā)現(xiàn)功能性錯(cuò)誤進(jìn)行的測(cè)試。 信息內(nèi)容。為發(fā)現(xiàn)與局部數(shù)據(jù)結(jié)構(gòu)或者全局?jǐn)?shù)據(jù)結(jié)構(gòu)有關(guān)錯(cuò)誤的測(cè)試。 性能。為驗(yàn)證軟件設(shè)計(jì)過(guò)程中建立的性能邊界的測(cè)試。,回歸測(cè)試 在軟件集成測(cè)試的過(guò)程中,每當(dāng)一個(gè)模塊加入到系統(tǒng)時(shí),軟件就發(fā)生變化,模塊之間的影響也可能有改變。 新的數(shù)據(jù)路徑被建立,也可能出現(xiàn)新的輸入/輸出操作。很有可能激活新的控制邏輯,所有這些改變的因素可能會(huì)導(dǎo)致原來(lái)工作正常的系統(tǒng)產(chǎn)生錯(cuò)誤。 回歸測(cè)試是對(duì)已經(jīng)進(jìn)行過(guò)測(cè)試的子集(模塊)重新測(cè)試,以確保新添加的模塊不會(huì)對(duì)系統(tǒng)產(chǎn)生無(wú)法預(yù)料的副作用。,確認(rèn)測(cè)試,有效 性 測(cè)試,軟件 配置 審查,管理 機(jī)構(gòu) 裁決,選擇測(cè)試人員,軟件計(jì)劃,用戶文檔,開(kāi)發(fā)文檔,源程序文本,支持環(huán)境,交用戶 運(yùn)行 維護(hù),測(cè)試 報(bào)告,軟件 配置,構(gòu)造測(cè)試用例,實(shí)際運(yùn)行測(cè)試,專家 鑒定 會(huì),有效性測(cè)試 通過(guò)黑盒測(cè)試,證實(shí)軟件功能與 用戶需求是否一致. 軟件配置審查與驗(yàn)收,確認(rèn) 測(cè)試,軟件配 置審查,主管部 門(mén)批準(zhǔn),集成的軟件,軟件需求,用戶文檔,設(shè)計(jì)文檔,源程序,測(cè)試文檔,交付的 軟 件,確認(rèn)的 軟 件,確認(rèn)的 配 置,確認(rèn)測(cè)試結(jié)果 測(cè)試完成后可能出現(xiàn)兩種情況: (1)測(cè)試與預(yù)期相符, 可接受。 (2)不相符,列出軟件缺陷表,與用戶協(xié)商解 決。,測(cè)試和測(cè)試 測(cè)試(Alpha) 在開(kāi)發(fā)者的場(chǎng)所由用戶進(jìn)行,在開(kāi)發(fā) 者關(guān)注和控制的環(huán)境下進(jìn)行。 測(cè)試(Beta) 最終用戶在自己的場(chǎng)所進(jìn)行。,系統(tǒng)測(cè)試 軟件只是計(jì)算機(jī)系統(tǒng)的一個(gè) 元素,軟件最終要與其他系統(tǒng)元 素(如新硬件、信息等)相結(jié)合, 進(jìn)行各種集成測(cè)試和確認(rèn)測(cè)試.,用于系統(tǒng)測(cè)試的測(cè)試類型: (1)恢復(fù)測(cè)試 (2)安全性測(cè)試 (3)強(qiáng)度測(cè)試 (4)性能測(cè)試,(1)恢復(fù)測(cè)試 以不同的方式強(qiáng)使軟件出現(xiàn)故障,檢測(cè) 軟件能否恰當(dāng)?shù)赝瓿苫謴?fù). 自動(dòng)恢復(fù):檢測(cè)重新初始化、 檢測(cè)點(diǎn)設(shè)置、 數(shù)據(jù)恢復(fù)、 重新啟動(dòng)等是否正確. 人工干預(yù)恢復(fù):檢測(cè)平均恢復(fù)時(shí)間是 否在允許范圍內(nèi).,(2)安全性測(cè)試 設(shè)計(jì)測(cè)試用例,突破軟件安全保護(hù)機(jī)構(gòu) 的安全保密措施,檢驗(yàn)系統(tǒng)預(yù)防機(jī)制的 漏洞. (3)強(qiáng)度測(cè)試 設(shè)計(jì)測(cè)試用例, 檢驗(yàn)系統(tǒng)能力最高能達(dá)到的實(shí)際限度, 讓系統(tǒng)處于資源的異常數(shù)量、異常頻率、異常批量的條件下測(cè)試系統(tǒng)的承受能力。一般比平常限度高5-10倍的限度做測(cè)試用例.,強(qiáng)度測(cè)試是一種敏感性測(cè)試技術(shù)。在某種情況下, 包含在程序有效數(shù)據(jù)邊界內(nèi)的非常小范圍的數(shù)據(jù)變動(dòng)可能導(dǎo)致極端的, 甚至錯(cuò)誤的處理, 會(huì)使系統(tǒng)性能嚴(yán)重下降。,(4)性能測(cè)試,設(shè)計(jì)測(cè)試用例,并記錄軟件運(yùn)行性 能,與性能要求比較,檢驗(yàn)是否達(dá)到性 能要求規(guī)格。,面向?qū)ο蟮能浖y(cè)試,測(cè)試目標(biāo):在現(xiàn)實(shí)的時(shí)間跨度內(nèi)應(yīng)用可管理 的工作量去發(fā)現(xiàn)最大可能數(shù)量的 錯(cuò)誤,基本目標(biāo)不變,但由于OO程序的性質(zhì)改變了測(cè)試策略 和測(cè)試戰(zhàn)術(shù) 更多的設(shè)計(jì)模式復(fù)用是否將減輕OO系統(tǒng)的繁重測(cè)試? Binder,R.V.在“Object-Oriented Software Testing”中討論改問(wèn)題: “每次復(fù)用是一個(gè)新的使用語(yǔ)境,并且重新測(cè)試是謹(jǐn)慎的.為了獲得面向?qū)ο笙到y(tǒng)的高可靠性,似乎可能需要更多而不是更少的測(cè)試.”,OOA和OOD的 模型測(cè)試,每個(gè)階段的所有面向?qū)ο竽P投紤?yīng)被測(cè)試。 OOA和OOD的模型不能被執(zhí)行,對(duì)它們不能進(jìn)行傳統(tǒng)意義上的測(cè)試。,可通過(guò)技術(shù)復(fù)審檢查OOA和OOD的 模型的正確性和一致性。,擴(kuò)大測(cè)試的視角,面向?qū)ο鬁y(cè)試策略,信息隱蔽對(duì)測(cè)試的影響 封裝和繼承對(duì)測(cè)試的影響,面向?qū)ο蟪绦虻奶攸c(diǎn)對(duì)軟件測(cè)試的影響:,單元和集成測(cè)試策略必須有很大的改變 測(cè)試用例的設(shè)計(jì)必須考慮OO軟件的特征,1. OO的單元測(cè)試,一個(gè)類可以包含一組不同的操作,而一個(gè)特定 的操作也可能存在于一組不同的類中。不再孤 立地測(cè)試單個(gè)操作(這是傳統(tǒng)單元測(cè)試的視角) OO軟件的類測(cè)試等價(jià)于傳統(tǒng)的單元測(cè)試. 傳統(tǒng)軟件的單元測(cè)試關(guān)注算法細(xì)節(jié)和模塊接口 間流動(dòng)的數(shù)據(jù) OO軟件的類測(cè)試是由封裝在類中的操作和類的 狀態(tài)行為驅(qū)動(dòng)的,單元概念的變化封裝的類或?qū)ο笞鳛樽钚?的可測(cè)試單位,2. OO的集成測(cè)試,OO軟件沒(méi)有層次的控制結(jié)構(gòu)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高校學(xué)科專業(yè)設(shè)置調(diào)整對(duì)學(xué)術(shù)發(fā)展的推動(dòng)作用
- 江蘇省東臺(tái)市第七聯(lián)盟2024-2025學(xué)年數(shù)學(xué)七年級(jí)第一學(xué)期期末考試試題含解析
- 遼寧省錦州市名校2024年化學(xué)九年級(jí)第一學(xué)期期末達(dá)標(biāo)檢測(cè)模擬試題含解析
- 云南省澗南彝族自治縣2024-2025學(xué)年化學(xué)九年級(jí)第一學(xué)期期末統(tǒng)考模擬試題含解析
- 房屋租賃合同附帶租客入住培訓(xùn)
- 汽車零部件采購(gòu)合同簽訂與質(zhì)量認(rèn)證要求
- 2025至2030中國(guó)印刷用紙行業(yè)市場(chǎng)發(fā)展分析與發(fā)展趨勢(shì)及投資前景報(bào)告
- 公交車優(yōu)化調(diào)度系統(tǒng)實(shí)施方案
- 2025至2030中國(guó)自行式割草機(jī)行業(yè)市場(chǎng)占有率及投資前景評(píng)估規(guī)劃報(bào)告
- 2025至2030中國(guó)腹主動(dòng)脈瘤藥行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢(shì)及投資規(guī)劃深度研究報(bào)告
- 冷卻塔維修施工方案設(shè)計(jì)
- 綜采工作面液壓支架安裝回撤工職業(yè)技能理論考試題庫(kù)150題(含答案)
- 場(chǎng)地平整項(xiàng)目承包合同范本
- 船舶修理行業(yè)專業(yè)實(shí)踐操作規(guī)范
- 河南省歷年中考語(yǔ)文現(xiàn)代文閱讀之非連續(xù)性文本閱讀5篇(截至2024年)
- 麥秸稈環(huán)保板材項(xiàng)目可行性研究報(bào)告
- 水利水電工程施工機(jī)械臺(tái)班費(fèi)定額
- 山東某智慧農(nóng)場(chǎng)項(xiàng)目可行性研究報(bào)告
- 新版《醫(yī)療器械經(jīng)營(yíng)質(zhì)量管理規(guī)范》(2024)培訓(xùn)試題及答案
- 2025年N1叉車司機(jī)考試試題(附答案)
- 新建自體血液回收機(jī)項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告
評(píng)論
0/150
提交評(píng)論