第6章 軟件測試(1) pwq_第1頁
第6章 軟件測試(1) pwq_第2頁
第6章 軟件測試(1) pwq_第3頁
第6章 軟件測試(1) pwq_第4頁
第6章 軟件測試(1) pwq_第5頁
已閱讀5頁,還剩169頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2023/2/40第6章軟件測試(1)軟件工程2023/2/41本章目錄一、測試概述

二、測試方法三、測試級別四、測試管理流程五、測試自動(dòng)化六、測試過程七、案例分析2023/2/42軟件測試---測試概述2023/2/43本節(jié)要點(diǎn)一、測試概述

二、測試方法簡述三、測試級別簡述四、測試管理流程簡述2023/2/44什么是測試?

為了發(fā)現(xiàn)軟件系統(tǒng)的錯(cuò)誤而運(yùn)行或測試某個(gè)系統(tǒng)的過程。破壞的過程軟件測試是質(zhì)量控制的重要手段定義:2023/2/45測試概述

軟件測試是對軟件需求分析、設(shè)計(jì)、編碼實(shí)現(xiàn)的審查。 軟件測試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程。或者說,軟件測試是根據(jù)軟件開發(fā)各階段的規(guī)格說明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計(jì)一批測試用例(即輸入數(shù)據(jù)及其預(yù)期的輸出結(jié)果),并利用這些測試用例去運(yùn)行程序,以發(fā)現(xiàn)程序錯(cuò)誤的過程。

2023/2/46什么是測試?

(4195835/3145727)×3145727-4195835愛國者導(dǎo)彈防御系統(tǒng)千年蟲軟件錯(cuò)誤典型案例:2023/2/47什么是測試?(1)測試是程序的執(zhí)行過程,目的在于發(fā)現(xiàn)錯(cuò)誤;(2)一個(gè)好的測試用例在于能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯(cuò)誤;(3)一個(gè)成功的測試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯(cuò)誤的測試。保證產(chǎn)品質(zhì)量!Myers軟件測試目的2023/2/48軟件測試的原則1.應(yīng)當(dāng)把“盡早地和不斷地進(jìn)行軟件測試”作為軟件開發(fā)者的座右銘。2.測試用例應(yīng)由測試輸入數(shù)據(jù)和對應(yīng)的預(yù)期輸出結(jié)果這兩部分組成。3.程序員應(yīng)避免檢查自己的程序。4.在設(shè)計(jì)測試用例時(shí),應(yīng)包括合理的輸入條件和不合理的輸入條件。2023/2/495.充分注意測試中的群集現(xiàn)象。

經(jīng)驗(yàn)表明,測試后程序中殘存的錯(cuò)誤數(shù)目與該程序中已發(fā)現(xiàn)的錯(cuò)誤數(shù)目成正比。6.嚴(yán)格執(zhí)行測試計(jì)劃,排除測試的隨意性。7.應(yīng)當(dāng)對每一個(gè)測試結(jié)果做全面檢查。8.妥善保存測試計(jì)劃,測試用例,出錯(cuò)統(tǒng)計(jì)和最終分析報(bào)告,為維護(hù)提供方便。

2023/2/410什么是測試?軟件測試的實(shí)踐性大于理論性軟件測試?yán)碚擉w系尚不成熟軟件測試工具尚不成熟軟件測試效果對于個(gè)人的依賴性比較大現(xiàn)狀:2023/2/411基本術(shù)語(1/2)?

錯(cuò)誤(Error)–錯(cuò)誤是指導(dǎo)致系統(tǒng)可能包含故障的人的行為,如輸入錯(cuò)誤、需求錯(cuò)誤、設(shè)計(jì)錯(cuò)誤等。?

缺陷(Defect,Bug)–缺陷是錯(cuò)誤的表現(xiàn),包括過錯(cuò)缺陷和遺漏缺陷。?

故障(Fault)–故障是指系統(tǒng)的規(guī)格說明與其行為之間的偏差,通常由一個(gè)或多個(gè)缺陷引起。2023/2/412基本術(shù)語(2/2)?

驗(yàn)證(Verification)–我們是否在正確地制造產(chǎn)品?–軟件驗(yàn)證試圖證明在軟件生存周期的各個(gè)階段,軟件產(chǎn)品或中間產(chǎn)品是否能夠滿足客戶需求,包括一致性、完整性和正確性。?

確認(rèn)(Validation)–我們是否在制造正確的產(chǎn)品?–軟件確認(rèn)的目的是保證所開發(fā)的最終軟件產(chǎn)品能夠符合用戶的需求。?

說明:驗(yàn)證強(qiáng)調(diào)對于過程的檢驗(yàn),確認(rèn)強(qiáng)調(diào)對于結(jié)果的檢驗(yàn)。2023/2/413軟件錯(cuò)誤或缺陷?

軟件錯(cuò)誤(或軟件缺陷)的表現(xiàn)–軟件未達(dá)到產(chǎn)品說明書標(biāo)明的功能;–軟件出現(xiàn)了產(chǎn)品說明書指明不會出現(xiàn)的錯(cuò)誤;–軟件功能超出了產(chǎn)品說明書指明的范圍;–軟件未達(dá)到產(chǎn)品說明書雖未指出但應(yīng)達(dá)到的目標(biāo);–軟件測試人員認(rèn)為軟件難以理解、不易使用、運(yùn)行速度緩慢、或者最終用戶不滿意。?

有錯(cuò)是軟件的屬性,而且是無法改變的。因此,關(guān)鍵在于如何避免錯(cuò)誤的產(chǎn)生和消除已經(jīng)產(chǎn)生的錯(cuò)誤,使程序中的錯(cuò)誤密度達(dá)到盡可能低的程度。2023/2/414驗(yàn)證與確認(rèn)2023/2/415這是什么?2023/2/416錯(cuò)誤的狀態(tài)2023/2/417算法錯(cuò)誤2023/2/418機(jī)械錯(cuò)誤2023/2/419處理錯(cuò)誤或缺陷:驗(yàn)證?2023/2/420處理錯(cuò)誤或缺陷:冗余?2023/2/421處理錯(cuò)誤或缺陷:特性?2023/2/422處理錯(cuò)誤或缺陷:補(bǔ)???2023/2/423處理錯(cuò)誤或缺陷:測試?2023/2/424另一種觀點(diǎn)?錯(cuò)誤預(yù)防(在系統(tǒng)發(fā)布之前實(shí)施)–使用好的程序設(shè)計(jì)方法來減少復(fù)雜性–使用版本控制來防止系統(tǒng)的不一致–應(yīng)用驗(yàn)證技術(shù)來防止算法錯(cuò)誤?錯(cuò)誤檢測(當(dāng)系統(tǒng)運(yùn)行時(shí)實(shí)施)–測試:以事先規(guī)劃的方式發(fā)現(xiàn)錯(cuò)誤–調(diào)試:假設(shè)從意外故障著手可以找到錯(cuò)誤–監(jiān)控:發(fā)送狀態(tài)信息,發(fā)現(xiàn)性能錯(cuò)誤?錯(cuò)誤恢復(fù)(一旦系統(tǒng)發(fā)布后出現(xiàn)錯(cuò)誤時(shí)實(shí)施)–數(shù)據(jù)庫系統(tǒng):提供從故障中恢復(fù)的基本事務(wù)處理–模塊冗余:將不止一個(gè)組件分配執(zhí)行同一個(gè)操作–恢復(fù)程序:該程序處理錯(cuò)誤信息,使系統(tǒng)從故障中恢復(fù)過來2023/2/425本節(jié)要點(diǎn)一、測試概述二、測試方法簡述三、測試級別簡述四、測試管理流程簡述2023/2/426測試方法軟件測試方法動(dòng)態(tài)測試靜態(tài)測試黑盒測試白盒測試在不知道程序內(nèi)部結(jié)構(gòu),只知道程序規(guī)格的情況下采用的測試技術(shù)或策略。在知道程序內(nèi)部結(jié)構(gòu)的情況下采用的測試技術(shù)或策略。黑盒測試方法和白盒測試方法綜合的策略。不實(shí)際運(yùn)行程序,而是通過檢查和閱讀等手段來發(fā)現(xiàn)錯(cuò)誤并評估代碼質(zhì)量的軟件測試技術(shù)。也稱為靜態(tài)分析技術(shù)。實(shí)際運(yùn)行程序,并通過觀察程序運(yùn)行的實(shí)際結(jié)果來發(fā)現(xiàn)錯(cuò)誤的軟件測試技術(shù)。白盒測試灰盒測試2023/2/427本節(jié)要點(diǎn)一、測試概述二、測試方法簡述三、測試級別簡述四、測試管理流程簡述2023/2/428測試的級別概要設(shè)計(jì)詳細(xì)設(shè)計(jì)編碼集成測試單元測試代碼審查需求分析系統(tǒng)測試回歸測試驗(yàn)收測試2023/2/429本節(jié)要點(diǎn)一、測試概述二、測試方法簡述三、測試級別簡述四、測試管理流程簡述2023/2/430測試管理流程測試計(jì)劃測試設(shè)計(jì)、開發(fā)測試執(zhí)行測試記錄分析測試總結(jié)完畢缺陷跟蹤針對測試目標(biāo),規(guī)定測試任務(wù)、資源分配、人員角色、進(jìn)度安排等。根據(jù)測試計(jì)劃,設(shè)計(jì)測試用例,包括:測試步驟、測試場景、測試代碼、測試數(shù)據(jù)(包括預(yù)期結(jié)果)。根據(jù)測試計(jì)劃,配置測試環(huán)境,并手動(dòng)或者自動(dòng)執(zhí)行測試設(shè)計(jì)。根據(jù)測試計(jì)劃,忠實(shí)地記錄測試執(zhí)行的過程和結(jié)果。分析測試記錄,如果發(fā)現(xiàn)與預(yù)期結(jié)果不同,確定并重現(xiàn)缺陷。檢查測試設(shè)計(jì)是否全部執(zhí)行完畢,缺陷是否全部關(guān)閉。記錄、分發(fā)、評估、關(guān)閉缺陷報(bào)告。分析測試過程和缺陷報(bào)告,評估測試質(zhì)量和測試效果,給出是否通過測試的建議。2023/2/431軟件測試---測試方法2023/2/432本節(jié)要點(diǎn)一、靜態(tài)測試方法二、動(dòng)態(tài)測試方法三、面向?qū)ο鬁y試2023/2/433靜態(tài)測試(分析)定義:不實(shí)際運(yùn)行程序,而是通過檢查和閱讀等手段來發(fā)現(xiàn)錯(cuò)誤并評估代碼質(zhì)量的軟件測試技術(shù)。也稱為靜態(tài)測試技術(shù)。方法:走查:WalkThrough審查:Inspection評審:ReviewMichaelFaganIBM(1976)2023/2/434靜態(tài)分析-走查定義:開發(fā)組內(nèi)部進(jìn)行的,主要是個(gè)人通過檢查和閱讀等手段來查找錯(cuò)誤的活動(dòng)。經(jīng)驗(yàn):限時(shí),一般2-3小時(shí)避免跑題不要現(xiàn)場修改檢查要點(diǎn)邏輯錯(cuò)誤代碼標(biāo)準(zhǔn)/規(guī)范/風(fēng)格2023/2/435靜態(tài)分析-審查定義:開發(fā)組內(nèi)部進(jìn)行的,分配了相關(guān)的角色,采用講解、提問并使用Checklist方式進(jìn)行的查找錯(cuò)誤的活動(dòng)。經(jīng)驗(yàn):以會議的形式,制定會議目標(biāo)、流程和規(guī)則,結(jié)束后要編寫報(bào)告參加人員經(jīng)驗(yàn)豐富的開發(fā)人員和本模塊相關(guān)的開發(fā)人員本項(xiàng)目組的新人由另外一名開發(fā)者進(jìn)行講解、其他開發(fā)者主要按照Checklist進(jìn)行提問并填表、本模塊開發(fā)者回答問題并記錄不要現(xiàn)場修改檢查要點(diǎn)設(shè)計(jì)需求代碼標(biāo)準(zhǔn)/規(guī)范/風(fēng)格2023/2/436靜態(tài)分析-評審定義:開發(fā)組、測試組和相關(guān)人員(QA、產(chǎn)品經(jīng)理等)聯(lián)合進(jìn)行的,采用講解、提問并使用Checklist方式進(jìn)行的查找錯(cuò)誤的活動(dòng)。一般有正式的計(jì)劃、流程和結(jié)果報(bào)告。經(jīng)驗(yàn):以會議的形式,制定會議目標(biāo)、流程和規(guī)則,結(jié)束后要編寫報(bào)告。相關(guān)資料要在會議前下發(fā)并閱讀。參加人員經(jīng)驗(yàn)豐富的開發(fā)人員和本模塊相關(guān)的開發(fā)人員測試組和相關(guān)人員由另外一名開發(fā)者進(jìn)行講解、其他開發(fā)者主要按照Checklist進(jìn)行提問并填表、本模塊開發(fā)者回答問題并記錄不要現(xiàn)場修改檢查要點(diǎn)設(shè)計(jì)需求代碼標(biāo)準(zhǔn)/規(guī)范/風(fēng)格文檔的完整性和一致性2023/2/437同行(對等)評審

(PeerReview)對等技術(shù)評審是由與工作產(chǎn)品開發(fā)人員具有同等背景和能力的人員對工作產(chǎn)品進(jìn)行的一種評審,目的是早期和有效的消除軟件工作產(chǎn)品中的缺陷,并可對軟件工作產(chǎn)品和其中可預(yù)防的缺陷有更好的理解。2023/2/438本節(jié)要點(diǎn)一、靜態(tài)測試方法二、動(dòng)態(tài)測試方法三、面向?qū)ο鬁y試2023/2/439動(dòng)態(tài)測試白盒測試黑盒測試2023/2/440白盒測試基于代碼的測試2023/2/441白盒測試基本的邏輯覆蓋其它的邏輯覆蓋準(zhǔn)則2023/2/442基本邏輯覆蓋測試語句覆蓋判定覆蓋條件覆蓋判定/條件覆蓋條件組合覆蓋路徑覆蓋2023/2/443語句覆蓋

選擇足夠的測試用例,使得程序中每一條可執(zhí)行語句至少被執(zhí)行一次。語句覆蓋率=(至少被執(zhí)行一次的語句數(shù)量)/(可以執(zhí)行的語句總數(shù))2023/2/444語句覆蓋實(shí)例1.ifConditionthenDo_something;EndifAnother_Statement;TestCase:ConditionTrue2023/2/445判定覆蓋選擇足夠的測試用例,使得程序中每一個(gè)判斷的每一種可能結(jié)果都至少被執(zhí)行一次。判定覆蓋也叫分支覆蓋。判定覆蓋率=(判定結(jié)果被評價(jià)的次數(shù))/(判定結(jié)果的總數(shù))2023/2/446判定覆蓋實(shí)例1.ifConditionthenDo_something;EndifAnother_Statement;TestCase:1、ConditionTrue2、ConditionFalse2023/2/447判定覆蓋實(shí)例1.ifConditionthenDo_something;ElseDo_something_Else;EndifAnother_Statement;TestCase:ConditionTrueTestCase:ConditionFalse2023/2/448判定覆蓋實(shí)例1. IfAandBthenDo-SomethingEndif判斷:1.A=T,B=T=>AandB=T2.A=T,B=F=>AandB=FTestCaseABAandBTestCase1TTTTestCase2TFF2023/2/449條件覆蓋

選擇足夠的測試用例,使得程序中每一個(gè)判斷中的每一個(gè)條件的可能結(jié)果都至少被執(zhí)行一次條件覆蓋率=(條件操作數(shù)值至少被評價(jià)一次的數(shù)量)/(條件操作數(shù)值的總數(shù))2023/2/450條件覆蓋實(shí)例1. IfAandBthenDo-SomethingEndifTestCaseABAandBTestCase1TFFTestCase2FTF2023/2/451條件覆蓋例如:if(A>1)and(B=0)thenX=X/A;if(A=2)and(X>1)thenX=X+1;A>1,A<=1A=2,A<>2

B=0,B<>0X>1,X<=12023/2/452條件覆蓋條件:A>1T1;A<=1F1B=0T2;B<>0F2A=2T3;A<>2F3X>1T4;X<=1F4TestcaseABX Case1、103 Case2、211 if(A>1)and(B=0)thenX=X/A;if(A=2)and(X>1)thenX=X+1;2023/2/453判定條件覆蓋

選擇足夠的測試用例,使得同時(shí)滿足判定覆蓋和條件覆蓋。判定條件覆蓋率=(條件操作數(shù)值或者判定結(jié)果至少被評價(jià)一次的數(shù)量)/(條件操作數(shù)值總數(shù)+判定結(jié)果的總數(shù))2023/2/454判定條件覆蓋-實(shí)例1. IfAandBthenDo-SomethingEndif判斷:1.AandB=T2.AandB=FTestCase

A

B

AandBTestCase1TTTTestCase2FFF條件:1.A=T2.A=F3.B=T4.B=F2023/2/455判斷條件覆蓋-實(shí)例判斷(A>1)and(B=0)A>1,B=0=>TrueA>1,B<>0=>FalseA<=1,B=0=>FalseA<=1,B<>0=>False(A=2)and(X>1)A=2,X>1=>TrueA=2,X<=1=>FalseA<>2,X>1=>FalseA<>2,X<=1=>False條件:A>1T1;A<=1F1B=0T2;B<>0F2A=2T3;A<>2F3X>1T4;X<=1F4A、B、X2、0、31、1、1if(A>1)and(B=0)thenX=X/A;if(A=2)and(X>1)thenX=X+1;2023/2/456判斷條件覆蓋-案例冗余判斷(A>1)and(B=0)A>1,B=0=>TrueA>1,B<>0=>FalseA<=1,B=0=>FalseA<=1,B<>0=>False(A=2)and(X>1)A=2,X>1=>TrueA=2,X<=1=>FalseA<>2,X>1=>FalseA<>2,X<=1=>False條件:A>1T1;A<=1F1B=0T2;B<>0F2A=2T3;A<>2F3X>1T4;X<=1F4A、B、X2、0、31、1、1if(A>1)and(B=0)thenX=X/A;if(A=2)and(X>1)thenX=X+1;1、0、32、1、12023/2/457條件組合覆蓋

選擇足夠的測試用例,使得程序中每一個(gè)分支判斷中的每一個(gè)條件的每一種可能組合結(jié)果都至少被執(zhí)行一次。條件組合覆蓋率=(被評價(jià)的分支條件組合數(shù)量)/(分支條件組合總數(shù))2023/2/458條件組合覆蓋1. IfAandBthenDo-SomethingEndifTestCase

A

B

AandBTestCase1TTTTestCase2FFFTestCase3TFFTestCase4FTF2023/2/459條件組合覆蓋條件組合A>1,B=0A>1,B<>0A<=1,B=0A<=1,B<>0A=2,X>1A=2,X<=1A<>2,X>1A<>2,X<=1條件:(A>1)and(B=0)A>1A<=1B=0B<>0(A=2)and(X>1)A=2A<>2X>1X<=11、0、3A、B、X2、1、12、0、31、1、1if(A>1)and(B=0)thenX=X/A;if(A=2)and(X>1)thenX=X+1;2023/2/460路徑覆蓋

選擇足夠的測試用例,使得程序中所有的可能路徑都至少被執(zhí)行一次。路徑覆蓋率=(至少被執(zhí)行一次的路徑數(shù))/(總的路徑數(shù))2023/2/461路徑覆蓋(A>1)and(B=0)X=X/A(A=2)or(X>1)X=X+1cTrueFalsebTrueFalseedaTestcaseABX覆蓋路徑Case1103abeCase2211abeCase3203aceCase4111abdTestcaseABX覆蓋路徑Case5601acdif(A>1)and(B=0)thenX=X/A;if(A=2)or(X>1)thenX=X+1;2023/2/462三角形程序?qū)崿F(xiàn)的數(shù)據(jù)流圖2023/2/463三角形程序的偽代碼ProgramTriangle2Dima,b,casintegerDimIsATriangleAsBoolean Step1:GetInputOutput(“Enter3integerswhicharesidesoftriangle”)Input(a,b,c)Output(“SideAis”,a)Output(“SideBis”,b)Output(“SideCis”,c) Step2:IsaTriangle?If(a<b+c)and(b<a+c)and(C<a+b)ThenIsATriangle=TrueElseIsATriangle=falseEndif2023/2/464三角形程序的偽代碼 Step3:DetermineTriangleTypeIfIsATriangleThenif(a=b)AND(b=c)ThenOutput(“Equilateral”)Elseif(a<>b)AND(a<>c)AND(b<>c)ThenOutput(“Scalene”)ElseOutput(“Isosceles”)EndifEndifElseOutput(“NotaTriangle”)EndifEndtriangle22023/2/465三角形程序圖2023/2/466DD-路徑

(Decision-to-DecisionPaths)判斷(決策)到判斷(決策)的路徑判斷(決策):一個(gè)序列語句開始位置是一個(gè)判斷(決策)的開始,結(jié)束位置是下一個(gè)判斷(決策)語句的開始。序列語句沒有分支2023/2/467三角形的DD-路徑2023/2/468DD-路徑覆蓋DD路徑覆蓋率=(至少被執(zhí)行一次的決策路徑數(shù))/(系統(tǒng)中總的決策路徑數(shù))E.F.Miller發(fā)現(xiàn):DD-路徑覆蓋可以發(fā)現(xiàn)全部缺陷的85%2023/2/469McCabe的基路徑方法線性獨(dú)立路徑數(shù):V(G)=e-n+2e:邊數(shù)n:節(jié)點(diǎn)數(shù)

BDAEFGCV(G)=10-7+2=52023/2/470保險(xiǎn)金程序-需求保險(xiǎn)金=基本保險(xiǎn)費(fèi)率×年齡系數(shù)-安全駕駛折扣年齡系數(shù)是投保人年齡的函數(shù),如果投保人駕駛執(zhí)照上的當(dāng)前點(diǎn)數(shù)(根據(jù)交通違規(guī)次數(shù)確定)低于與年齡有關(guān)的門限,則給予安全駕駛折扣。書面保險(xiǎn)政策的駕駛?cè)四挲g范圍為從16-100歲,如果投保人有12點(diǎn),則駕駛?cè)说膱?zhí)照就會被吊銷(因此不需要保險(xiǎn))。基本保險(xiǎn)費(fèi)率隨時(shí)間變化,是每半年500美元。

年齡范圍年齡系數(shù)門限點(diǎn)數(shù)安全駕駛折扣〔16,25)2.8150〔25,35)1.8350〔35,45)1.05100〔45,60)0.87150〔60,100)1.552002023/2/471保險(xiǎn)金程序圖2023/2/472保險(xiǎn)金程序路徑?V(G)=112023/2/473路徑覆蓋覆蓋路徑P1的案例年齡:17,點(diǎn)數(shù):1覆蓋路徑P2的案例年齡:16,點(diǎn)數(shù):0。。。。。。。2023/2/474基本邏輯覆蓋測試方法語句覆蓋判定覆蓋條件覆蓋判定/條件覆蓋條件組合覆蓋路徑覆蓋2023/2/475動(dòng)態(tài)測試基本邏輯覆蓋其它邏輯覆蓋準(zhǔn)則2023/2/476其它測試覆蓋準(zhǔn)則ESTCA(ErrorSensitiveTestCasesAnalysis)MC/DC(ModifiedConditional/DecisionCoverage)2023/2/477ESTCA的引入

邏輯覆蓋的出發(fā)點(diǎn)似乎是合理的。所謂“覆蓋”,就是想要作到全面,而無遺漏。但事實(shí)表明,它并不能真的作到無遺漏。面對這類情況我們應(yīng)該從中吸取的教訓(xùn)是測試工作要有重點(diǎn),要多針對容易發(fā)生問題的地方設(shè)計(jì)測試用例。

K.A.Foster從測試工作實(shí)踐的教訓(xùn)出發(fā),吸收了計(jì)算機(jī)硬件的測試原理,提出了一種經(jīng)驗(yàn)型的測試覆蓋準(zhǔn)則,較好地解決了上述問題。

Foster的經(jīng)驗(yàn)型覆蓋準(zhǔn)則是從硬件的早期測試方法中得到啟發(fā)的。我們知道,硬件測試中,對每一個(gè)門電路的輸入、輸出測試都是有額定標(biāo)準(zhǔn)的。通常,電路中一個(gè)門的錯(cuò)誤常常是“輸出總是0”,或是“輸出總是1”。與硬件測試中的這一情況類似,我們常常要重視程序中謂詞的取值,但實(shí)際上它可能比硬件測試更加復(fù)雜。Foster通過大量的實(shí)驗(yàn)確定了程序中謂詞最容易出錯(cuò)的部分,得出了一套錯(cuò)誤敏感測試用例分析ESTCA(ErrorSensitiveTestCasesAnalysis)規(guī)則。IF(I=0)錯(cuò)寫為IF(I>0)IF(I>1)錯(cuò)寫為IF(I>0)IF(I=X)錯(cuò)寫為IF(I=0)2023/2/478ESTCA

(ErrorSensitiveTestCasesAnalysis)規(guī)則1:

對于ArelB(rel可以是<,=和>)型的分支謂詞,應(yīng)適當(dāng)?shù)剡x擇A與B的值,使得測試執(zhí)行到該分支語句時(shí),A<B,A=B和A>B的情況分別出現(xiàn)一次。規(guī)則2:ArelC:Rel為<、>;A是變量,C是常量(M是距C最小的容許正數(shù),若A和C均為整型時(shí),M=1)。Rel為<時(shí),適當(dāng)選擇A,使A=C-MRel為>時(shí),適當(dāng)選擇A,使A=C+M規(guī)則3:對外部輸入變量賦值,使其每一測試用例均有不同的值和符號,并與同一組測試用例中其它變量的值與符號不一致。顯然,上述規(guī)則1是為了檢測rel的錯(cuò)誤,規(guī)則2是為了檢測“差一”之類的錯(cuò)誤(如本應(yīng)是“IFA>1”而錯(cuò)成“IFA>0”),而規(guī)則3則是為了檢測程序語句中的錯(cuò)誤(如應(yīng)引用一變量而錯(cuò)成引用一常量)。

2023/2/479MC/DC覆蓋(修訂的條件/判定覆蓋)

(ModifiedConditional/DecisionCoverage)定義:在每個(gè)判定中的每個(gè)條件都曾獨(dú)立的影響判定的結(jié)果至少一次,(獨(dú)立影響意思是在其他的條件不變的情況下,改變一個(gè)條件)。即:每個(gè)條件對結(jié)果都獨(dú)立起作用。

2023/2/480condition和decision的概念:

if(AorB)andCthen

Statement;

else

Statement2;

A,B,C都是一個(gè)條件,而(AorBandC)叫一個(gè)Decision,如果是判定覆蓋的話只需兩個(gè)case就能覆蓋,就是讓這個(gè)decision為true和false各一次就能達(dá)到即為011,010

如果是MC/DC的話就得四個(gè)case。比如A對結(jié)果起作用的話,B必須為false,C必須為true--101

和001,這樣結(jié)果就獨(dú)立受A的值影響.同理如果B對結(jié)果獨(dú)立起作用的話,A必須為false,C必須為true,兩種情況B為true,false各一.即為011

和001而C獨(dú)立對結(jié)果起作用的話就是讓(AorB)為true,為了減少case,上面的case已經(jīng)含有這樣的case了,我們就取A為false,B為true,這樣c獨(dú)體起作用的case為:011

和010

可以看出每個(gè)條件各走了一次true和false,這樣三個(gè)變量條件就會有六個(gè)case,我們看出其中里面還有兩個(gè)是重復(fù)的。

2023/2/481MC/DC覆蓋-實(shí)例If{XandY}then{block1}Else{block2}TestCaseXYResultTestCase1TTTTestCase2TFFTestCase3FTF2023/2/482MC/DC覆蓋-實(shí)例練習(xí):(Xand(YorZ))TestcaseXYZResultTestcaseTTTTTestcaseFTTFTestcaseTTFTTestcaseTFFFTestcaseTFTT2023/2/483C/DC和MC/DC之間的差異1)選取兩種方法的條件不同

當(dāng)以下的需求在程序測試中遇到時(shí),需要考慮用MC/DC方法:每一個(gè)程序模塊的輸入和輸出點(diǎn)都要考慮至少出現(xiàn)1次,每個(gè)程序的判定到所有可能的結(jié)果值要至少實(shí)現(xiàn)1次;程序的判定被分解為通過邏輯操作符(AND,OR,etc.)連接為BOOL條件,每一個(gè)條件對于判定的結(jié)果值是獨(dú)立的,或者說單個(gè)條件的變化將導(dǎo)致判定的最后變化.2)兩者的測試集不同3)兩者在測試中的覆蓋面不同4)兩者的用途不同

由于MC/DC在尋找測試集時(shí)的要求比C/DC要嚴(yán)格,所以相比較下在測試時(shí)為了尋找出測試集合所花費(fèi)的時(shí)間多,由此而引起的人力、物力、財(cái)力三重開銷也會直接攀升,但是MC/DC測試錯(cuò)誤的準(zhǔn)確率卻是特別地高,因此MC/DC適合那些大型的并且要求測試非常精確的軟件測試所用.為達(dá)到用戶的目的和一個(gè)較高的信價(jià)比,近年來MC/DC方法主要應(yīng)用于大型的航空航天軟件程序的測試上.對比而言C/DC方法要求較低,開銷少,而覆蓋率也低,所以比較適合對于例如C++,JAVA等小型的程序的測4試當(dāng)中使用,這正是因?yàn)樾⌒统绦蛩鶕碛械捻?xiàng)目經(jīng)費(fèi)較少、語句代碼少則導(dǎo)致相應(yīng)地尋找錯(cuò)誤也比較容易.此時(shí)使用C/DC方法足以測試軟件.2023/2/484黑盒測試基于需求的測試2023/2/485黑盒測試需求的覆蓋率=(被驗(yàn)證的需求的數(shù)量)/(總的需求的數(shù)量)2023/2/486黑盒測試方法邊界值分析等價(jià)類規(guī)范導(dǎo)出錯(cuò)誤猜測基于故障的測試因果圖法2023/2/487邊界值分析a<=X1<=b||c<=X2<=dX12023/2/488邊界值測試原理1.定義:邊界值分析法就是對輸入或輸出的邊界值進(jìn)行測試的一種黑盒測試方法。通常邊界值分析法是作為對等價(jià)類劃分法的補(bǔ)充,這種情況下,其測試用例來自等價(jià)類的邊界。2023/2/489邊界值分析邊界值分析方法的考慮:長期的測試工作經(jīng)驗(yàn)告訴我們,大量的錯(cuò)誤是發(fā)生在輸入或輸出范圍的邊界上,而不是發(fā)生在輸入輸出范圍的內(nèi)部。因此針對各種邊界情況設(shè)計(jì)測試用例,可以查出更多的錯(cuò)誤。

使用邊界值分析方法設(shè)計(jì)測試用例,首先應(yīng)確定邊界情況。通常輸入和輸出等價(jià)類的邊界,就是應(yīng)著重測試的邊界情況。應(yīng)當(dāng)選取正好等于,剛剛大于或剛剛小于邊界的值作為測試數(shù)據(jù),而不是選取等價(jià)類中的典型值或任意值作為測試數(shù)據(jù)。2023/2/490邊界值分析-基本思想邊界值最小值:Min略高于最小值::Min+正常值:Normal略低于最大值:Max-最大值:Max正常取值范圍2023/2/491邊界值分析-健壯性測試邊界值略低于最小值:Min-最小值:Min略高于最小值::Min+正常值:Normal略低于最大值:Max-最大值:Max略高于最大值:Max+2023/2/492邊界值分析-健壯性測試2023/2/493邊界值分析-最壞情況多缺陷假設(shè)多個(gè)變量取極值的情況2023/2/494邊界值分析-最壞情況兩變量函數(shù)的最壞情況測試用例:2023/2/495邊界值分析-最壞情況兩變量函數(shù)的健壯最壞情況測試用例2023/2/496保險(xiǎn)金程序-需求保險(xiǎn)金=基本保險(xiǎn)費(fèi)率×年齡系數(shù)-安全駕駛折扣年齡范圍年齡系數(shù)門限點(diǎn)數(shù)安全駕駛折扣〔16,25)2.8150〔25,35)1.8350〔35,45)1.05100〔45,60)0.87150〔60,100)1.552002023/2/497邊界值測試-最壞情況2023/2/498細(xì)化的最壞情況測試2023/2/499細(xì)化的最壞情況測試2023/2/4100常見的邊界值1)對16-bit的整數(shù)而言32767和-32768是邊界

2)屏幕上光標(biāo)在最左上、最右下位置

3)報(bào)表的第一行和最后一行

4)數(shù)組元素的第一個(gè)和最后一個(gè)

5)循環(huán)的第0次、第1次和倒數(shù)第2次、最后一次2023/2/4101邊界值分析—邊界劃分(1/6)

1)邊界值分析使用與等價(jià)類劃分法相同的劃分,只是邊界值分析假定錯(cuò)誤更多地存在于劃分的邊界上,因此在等價(jià)類的邊界上以及兩側(cè)的情況設(shè)計(jì)測試用例。

例:測試計(jì)算平方根的函數(shù)

--輸入:實(shí)數(shù)

--輸出:實(shí)數(shù)

--規(guī)格說明:當(dāng)輸入一個(gè)0或比0大的數(shù)的時(shí)候,返回其正平方根;當(dāng)輸入一個(gè)小于0的數(shù)時(shí),顯示錯(cuò)誤信息“平方根非法-輸入值小于0”并返回0;庫函數(shù)Print-Line可以用來輸出錯(cuò)誤信息。

2023/2/4102邊界值分析—邊界劃分(2/6)

2)等價(jià)類劃分:

3)邊界值分析:

劃分(ii)的邊界為0和最大正實(shí)數(shù);劃分(i)的邊界為最小負(fù)實(shí)數(shù)和0。由此得到以下測試用例:

a、輸入{最小負(fù)實(shí)數(shù)}b、輸入{絕對值很小的負(fù)數(shù)}c、輸入0d、輸入{絕對值很小的正數(shù)}e、輸入{最大正實(shí)數(shù)}

I.可以考慮作出如下劃分II.測試用例有兩個(gè)a、輸入(i)<0和(ii)>=0b、輸出(a)>=0和(b)Errora、輸入4,輸出2。對應(yīng)于(ii)和(a)。b、輸入-10,輸出0和錯(cuò)誤提示。對應(yīng)于(i)和(b)。2023/2/4103邊界值分析—邊界檢驗(yàn)(3/6)4)通常情況下,軟件測試所包含的邊界檢驗(yàn)有幾種類型:數(shù)字、字符、位置、重量、大小、速度、方位、尺寸、空間等。

5)相應(yīng)地,以上類型的邊界值應(yīng)該在:最大/最小、首位/末位、上/下、最快/最慢、最高/最低、

最短/最長、空/滿等情況下。

2023/2/4104

項(xiàng)邊界值測試用例的設(shè)計(jì)思路字符起始-1個(gè)字符/結(jié)束+1個(gè)字符假設(shè)一個(gè)文本輸入?yún)^(qū)域允許輸入1個(gè)到255個(gè)字符,輸入1個(gè)和255個(gè)字符作為有效等價(jià)類;輸入0個(gè)和256個(gè)字符作為無效等價(jià)類,這幾個(gè)數(shù)值都屬于邊界條件值。數(shù)值最小值-1/最大值+1假設(shè)某軟件的數(shù)據(jù)輸入域要求輸入5位的數(shù)據(jù)值,可以使用10000作為最小值、99999作為最大值;然后使用剛好小于5位和大于5位的數(shù)值來作為邊界條件。空間小于空余空間一點(diǎn)/大于滿空間一點(diǎn)例如在用U盤存儲數(shù)據(jù)時(shí),使用比剩余磁盤空間大一點(diǎn)(幾KB)的文件作為邊界條件。

邊界值分析—

利用邊界值作為測試數(shù)據(jù)(4/6)2023/2/4105邊界值分析—內(nèi)部邊界值分析(5/6)

在多數(shù)情況下,邊界值條件是基于應(yīng)用程序的功能設(shè)計(jì)而需要考慮的因素,可以從軟件的規(guī)格說明或常識中得到,也是最終用戶可以很容易發(fā)現(xiàn)問題的。然而,在測試用例設(shè)計(jì)過程中,某些邊界值條件是不需要呈現(xiàn)給用戶的,或者說用戶是很難注意到的,但同時(shí)確實(shí)屬于檢驗(yàn)范疇內(nèi)的邊界條件,稱為內(nèi)部邊界值條件或子邊界值條件。

內(nèi)部邊界值條件主要有下面幾種:

a)數(shù)值的邊界值檢驗(yàn):計(jì)算機(jī)是基于二進(jìn)制進(jìn)行工作的,因此,軟件的任何數(shù)值運(yùn)算都有一定的范圍限制。b)字符的邊界值檢驗(yàn):在計(jì)算機(jī)軟件中,字符也是很重要的表示元素,其中ASCII和Unicode是常見的編碼方式。2023/2/4106項(xiàng)范圍或值位(bit)0或1字節(jié)(byte)0~255字(word)0~65535(單字)或0~4294967295(雙字)千(K)1024兆(M)1048576吉(G)1073741824字符ASCII碼值字符ASCII碼值空(null)0A65空格(space)32a97斜杠(/)47Z90048z122冒號(:)58單引號(‘)96@64

a)數(shù)值的邊界值檢驗(yàn):b)字符的邊界值檢驗(yàn):2023/2/4107

1)如果輸入條件規(guī)定了值的范圍,則應(yīng)取剛達(dá)到這個(gè)范圍的邊界的值,以及剛剛超越這個(gè)范圍邊界的值作為測試輸入數(shù)據(jù)。

例如,如果程序的規(guī)格說明中規(guī)定:“重量在10公斤至50公斤范圍內(nèi)的郵件,其郵費(fèi)計(jì)算公式為……”。作為測試用例,我們應(yīng)取10及50,還應(yīng)取10.01,49.99,9.99及50.01等。

2)如果輸入條件規(guī)定了值的個(gè)數(shù),則用最大個(gè)數(shù),最小個(gè)數(shù),比最小個(gè)數(shù)少一,比最大個(gè)數(shù)多一的數(shù)作為測試數(shù)據(jù)。

比如,一個(gè)輸入文件應(yīng)包括1~255個(gè)記錄,則測試用例可取1和255,還應(yīng)取0及256等。

3)將規(guī)則1)和2)應(yīng)用于輸出條件,即設(shè)計(jì)測試用例使輸出值達(dá)到邊界值及其左右的值。

例如,某程序的規(guī)格說明要求計(jì)算出“每月保險(xiǎn)金扣除額為0至1165.25元”,其測試用例可取0.00及1165.24、還可取一0.01及1165.26等。

再如一程序?qū)儆谇閳?bào)檢索系統(tǒng),要求每次“最少顯示1條、最多顯示4條情報(bào)摘要”,這時(shí)我們應(yīng)考慮的測試用例包括1和4,還應(yīng)包括0和5等。

4)如果程序的規(guī)格說明給出的輸入域或輸出域是有序集合,則應(yīng)選取集合的第一個(gè)元素和最后一個(gè)元素作為測試用例。

5)如果程序中使用了一個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu),則應(yīng)當(dāng)選擇這個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu)的邊界上的值作為測試用例。

6)分析規(guī)格說明,找出其它可能的邊界條件。

邊界值分析—

基于邊界值分析方法選擇測試用例的原則

(6/6)2023/2/4108實(shí)戰(zhàn)演習(xí)1.現(xiàn)有一個(gè)學(xué)生標(biāo)準(zhǔn)化考試批閱試卷,產(chǎn)生成績報(bào)告的程序。其規(guī)格說明如下:程序的輸入文件由一些有80個(gè)字符的記錄組成,如右圖所示,所有記錄分為3組:說明2023/2/4109①標(biāo)題:這一組只有一個(gè)記錄,其內(nèi)容為輸出成績報(bào)告的名字。

②試卷各題標(biāo)準(zhǔn)答案記錄:每個(gè)記錄均在第80個(gè)字符處標(biāo)以數(shù)字“2”。該組的第一個(gè)記錄的第1至第3個(gè)字符為題目編號(取值為1一999)。第10至第59個(gè)字符給出第1至第50題的答案(每個(gè)合法字符表示一個(gè)答案)。該組的第2,第3……個(gè)記錄相應(yīng)為第51至第100,第101至第150,…題的答案。③每個(gè)學(xué)生的答卷描述:該組中每個(gè)記錄的第80個(gè)字符均為數(shù)字“3”。每個(gè)學(xué)生的答卷在若干個(gè)記錄中給出。如甲的首記錄第1至第9字符給出學(xué)生姓名及學(xué)號,第10至第59字符列出的是甲所做的第1至第50題的答案。若試題數(shù)超過50,則第2,第3……紀(jì)錄分別給出他的第51至第100,第101至第150……題的解答。然后是學(xué)生乙的答卷記錄。④學(xué)生人數(shù)不超過200,試題數(shù)不超過999。

⑤程序的輸出有4個(gè)報(bào)告:a)按學(xué)號排列的成績單,列出每個(gè)學(xué)生的成績、名次。

b)按學(xué)生成績排序的成績單。c)平均分?jǐn)?shù)及標(biāo)準(zhǔn)偏差的報(bào)告。d)試題分析報(bào)告。按試題號排序,列出各題學(xué)生答對的百分比。

2023/2/4110解答:分別考慮輸入條件和輸出條件,以及邊界條件。給出下表所示的輸入條件及相應(yīng)的測試用例。2023/2/4111

輸出條件及相應(yīng)的測試用例表。

⑤程序的輸出有4個(gè)報(bào)告:a)按學(xué)號排列的成績單,列出每個(gè)學(xué)生的成績、名次。

b)按學(xué)生成績排序的成績單。c)平均分?jǐn)?shù)及標(biāo)準(zhǔn)偏差的報(bào)告。d)試題分析報(bào)告。按試題號排序,列出各題學(xué)生答對的百分比。2023/2/4112測試用例abc預(yù)期輸出Test1Test2Test3Test4Test560606050506060605050126099100等腰三角形等腰三角形等邊三角形等腰三角形非三角形Test6Test7Test8Test960605050129910060605050等腰三角形等腰三角形等腰三角形非三角形Test10Test11Test12Test1312991006060505060605050等腰三角形等腰三角形等腰三角形非三角形

練習(xí):三角形問題的邊界值分析測試用例。在三角形問題描述中,除了要求邊長是整數(shù)外,沒有給出其它的限制條件。在此,我們將三角形每邊邊長的取范圍值設(shè)值為[1,100]。2023/2/4113

練習(xí):NextDate函數(shù)的邊界值分析測試用例在NextDate函數(shù)中,隱含規(guī)定了變量mouth和變量day的取值范圍為1≤mouth≤12和1≤day≤31,并設(shè)定變量year的取值范圍為1912≤year≤2050。測試用例mouthdayyear預(yù)期輸出Test1Test2Test3Test4Test5Test6Test766666661515151515151519111912191319752049205020511911.6.161912.6.161913.6.161975.6.162049.6.162050.6.162051.6.16Test8Test9Test10Test11Test12Test13666666012303132200120012001200120012001day超出[1…31]2001.6.22001.6.32001.7.1輸入日期超界day超出[1…31]Test14Test15Test16Test17Test18Test19012111213151515151515200120012001200120012001Mouth超出[1…12]2001.1.162001.2.162001.11.162001.12.16Mouth超出[1…12]2023/2/4114一、分析輸入的情形。二、分析輸出情形。R>1000<R<=100R<=0P>100R<=P<=100P<RN50=1N50=04>N10>=1N10=0N5=1N5=04>N1>=1N1=0找零錢最佳組合:假設(shè)商店貨品價(jià)格(R)皆不大於100元(且為整數(shù)),若顧客付款在100元內(nèi)(P),求找給顧客之最少貨幣個(gè)(張)數(shù)?(貨幣面值50元(N50),10元(N10),5元(N5),1元(N1)四種)2023/2/4115三、分析規(guī)格中每一決策點(diǎn)之情形,以RR1,RR2,RR3表示計(jì)算要找50,10,5元貨幣數(shù)時(shí)之剩余金額。R>100R<=0P>100P<RRR1>=50RR2>=10RR3>=5四、由上述之輸入/輸出條件組合出可能的情形。R>100R<=00<R<=100,P>1000<R<=100,P<R0<R<=100,R<=P<=100,RR=500<R<=100,R<=P<=100,RR=490<R<=100,R<=P<=100,RR=100<R<=100,R<=P<=100,RR=90<R<=100,R<=P<=100,RR=50<R<=100,R<=P<=100,RR=40<R<=100,R<=P<=100,RR=10<R<=100,R<=P<=100,RR=0五、為滿足以上之各種情形,測試資料設(shè)計(jì)如下:1.貨品價(jià)格=1012.貨品價(jià)格=03.貨品價(jià)格=-14.貨品價(jià)格=100,付款金額=1015.貨品價(jià)格=100,付款金額=996.貨品價(jià)格=50,付款金額=1007.貨品價(jià)格=51,付款金額=1008.貨品價(jià)格=90,付款金額=1009.貨品價(jià)格=91,付款金額=10010.貨品價(jià)格=95,付款金額=10011.貨品價(jià)格=96,付款金額=10012.貨品價(jià)格=99,付款金額=10013.貨品價(jià)格=100,付款金額=1002023/2/4116保險(xiǎn)金程序案例變量最小值略大于最小值正常值略小于最大值最大值年齡16175499100點(diǎn)數(shù)01611122023/2/4117黑盒測試方法邊界值分析等價(jià)類規(guī)范導(dǎo)出錯(cuò)誤猜測基于故障的測試因果圖法2023/2/4118等價(jià)類1.定義

是把所有可能的輸入數(shù)據(jù),即程序的輸入域劃分成若干部分(子集),然后從每一個(gè)子集中選取少數(shù)具有代表性的數(shù)據(jù)作為測試用例。該方法是一種重要的,常用的黑盒測試用例設(shè)計(jì)方法。X1的輸入域是[a,d],區(qū)間[a,b),[b,c),[c,d]X2的輸入域是[e,g],區(qū)間[e,f),(f,g]abcdfgeX2X12023/2/4119等價(jià)類測試原理通過每個(gè)等價(jià)類中的一個(gè)元素標(biāo)識測試用例降低測試用例之間的冗余例如:三角型測試{5,5,5}與{10,10,10}是一個(gè)等價(jià)類2023/2/4120弱一般等價(jià)類單缺陷假設(shè)abcdfgeX1X22023/2/4122強(qiáng)一般等價(jià)類多缺陷假設(shè)abcdfgeX1X22023/2/4123弱健壯等價(jià)類單缺陷假設(shè)無效輸入abcdfgeX1X22023/2/4124強(qiáng)健壯等價(jià)類多缺陷假設(shè)無效輸入abcdfgeX1X22023/2/4125保險(xiǎn)金程序-需求保險(xiǎn)金=基本保險(xiǎn)費(fèi)率×年齡系數(shù)-安全駕駛折扣年齡范圍年齡系數(shù)門限點(diǎn)數(shù)安全駕駛折扣〔16,25)2.8150〔25,35)1.8350〔35,45)1.05100〔45,60)0.87150〔60,100)1.552002023/2/4126等價(jià)類年齡A1=〔16,25)A2=〔25,35)A3=〔35,45)A4=〔45,60)A5=〔60,100)點(diǎn)數(shù)P1={0,1}P2={2,3}P3={4,5}P4={6,7}P5={8,9,10,11,12}2023/2/4127弱等價(jià)類測試2023/2/4128強(qiáng)等價(jià)類測試2023/2/41292.劃分等價(jià)類:

等價(jià)類是指某個(gè)輸入域的子集合。在該子集合中,各個(gè)輸入數(shù)據(jù)對于揭露程序中的錯(cuò)誤都是等效的,并合理地假定:測試某等價(jià)類的代表值就等于對這一類其它值的測試,因此,可以把全部輸入數(shù)據(jù)合理劃分為若干等價(jià)類,在每一個(gè)等價(jià)類中取一個(gè)數(shù)據(jù)作為測試的輸入條件就可以用少量代表性的測試數(shù)據(jù)取得較好的測試結(jié)果。等價(jià)類劃分可有兩種不同的情況:有效等價(jià)類和無效等價(jià)類。

1)有效等價(jià)類

是指對于程序的規(guī)格說明來說是合理的、有意義的輸入數(shù)據(jù)構(gòu)成的集合。利用有效等價(jià)類可檢驗(yàn)程序是否實(shí)現(xiàn)了規(guī)格說明中所規(guī)定的功能和性能。

2)無效等價(jià)類

與有效等價(jià)類的定義恰巧相反。無效等價(jià)類指對程序的規(guī)格說明是不合理的或無意義的輸入數(shù)據(jù)所構(gòu)成的集合。對于具體的問題,無效等價(jià)類至少應(yīng)有一個(gè),也可能有多個(gè)。

設(shè)計(jì)測試用例時(shí),要同時(shí)考慮這兩種等價(jià)類。因?yàn)檐浖粌H要能接收合理的數(shù)據(jù),也要能經(jīng)受意外的考驗(yàn),這樣的測試才能確保軟件具有更高的可靠性。

2023/2/41303.劃分等價(jià)類的標(biāo)準(zhǔn):1)完備測試、避免冗余;

2)劃分等價(jià)類重要的是:集合的劃分,劃分為互不相交的一組子集,而子集的并是整個(gè)集合;

3)并是整個(gè)集合:完備性;

4)子集互不相交:保證一種形式的無冗余性;

5)同一類中標(biāo)識(選擇)一個(gè)測試用例,同一等價(jià)類中,往往處理相同,相同處理映射到"相同的執(zhí)行路徑"。2023/2/41314.劃分等價(jià)類的方法2)在輸入條件規(guī)定了輸入值的集合或者規(guī)定了“必須如何”的條件的情況下,可確立一個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類;

3)在輸入條件是一個(gè)布爾量的情況下,可確定一個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類。

4)在規(guī)定了輸入數(shù)據(jù)的一組值(假定n個(gè)),并且程序要對每一個(gè)輸入值分別處理的情況下,可確立n個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類。

例:輸入條件說明學(xué)歷可為:???、本科、碩士、博士四種之一,則分別取這四種這四個(gè)值作為四個(gè)有效等價(jià)類,另外把四種學(xué)歷之外的任何學(xué)歷作為無效等價(jià)類。

5)在規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則的情況下,可確立一個(gè)有效等價(jià)類(符合規(guī)則)和若干個(gè)無效等價(jià)類(從不同角度違反規(guī)則);

6)在確知已劃分的等價(jià)類中各元素在程序處理中的方式不同的情況下,則應(yīng)再將該等價(jià)類進(jìn)一步的劃分為更小的等價(jià)類。

1)在輸入條件規(guī)定了取值范圍或值的個(gè)數(shù)的情況下,則可以確立一個(gè)有效等價(jià)類和兩個(gè)無效等價(jià)類。如:輸入值是學(xué)生成績,范圍是0~100;

2023/2/41325.設(shè)計(jì)測試用例

在確立了等價(jià)類后,可建立等價(jià)類表,列出所有劃分出的等價(jià)類輸入條件:有效等價(jià)類、無效等價(jià)類,然后從劃分出的等價(jià)類中按以下三個(gè)原則設(shè)計(jì)測試用例:

1)為每一個(gè)等價(jià)類規(guī)定一個(gè)唯一的編號;

2)設(shè)計(jì)一個(gè)新的測試用例,使其盡可能多地覆蓋尚未被覆蓋地有效等價(jià)類,重復(fù)這一步,直到所有的有效等價(jià)類都被覆蓋為止;

3)設(shè)計(jì)一個(gè)新的測試用例,使其僅覆蓋一個(gè)尚未被覆蓋的無效等價(jià)類,重復(fù)這一步,直到所有的無效等價(jià)類都被覆蓋為止。

2023/2/4133實(shí)戰(zhàn)演習(xí)1.某程序規(guī)定:“輸入三個(gè)整數(shù)a、b、c分別作為三邊的邊長構(gòu)成三角形。通過程序判定所構(gòu)成的三角形的類型,當(dāng)此三角形為一般三角形、等腰三角形及等邊三角形時(shí),分別作計(jì)算…

”。用等價(jià)類劃分方法為該程序進(jìn)行測試用例設(shè)計(jì)。(三角形問題的復(fù)雜之處在于輸入與輸出之間的關(guān)系比較復(fù)雜。)

分析題目中給出和隱含的對輸入條件的要求:

(1)整數(shù)

(2)三個(gè)數(shù)

(3)非零數(shù)

(4)正數(shù)

(5)兩邊之和大于第三邊

(6)等腰

(7)等邊

如果a、b、c滿足條件(1)~(4),則輸出下列四種情況之一:

1)如果不滿足條件(5),則程序輸出為"非三角形"。

2)如果三條邊相等即滿足條件(7),則程序輸出為"等邊三角形"。

3)如果只有兩條邊相等、即滿足條件(6),則程序輸出為"等腰三角形"。

4)如果三條邊都不相等,則程序輸出為"一般三角形"。

列出等價(jià)類表并編號

2023/2/4134覆蓋有效等價(jià)類的測試用例3

45(1)-(7)445

(1)-(7)(8)455

(1)-(7)(9)545

(1)--(7)(10)444

(1)--(7)(11)abc覆蓋等價(jià)類號碼2023/2/4135覆蓋無效等價(jià)類的測試用例:2023/2/4136

練習(xí):2.設(shè)有一個(gè)檔案管理系統(tǒng),要求用戶輸入以年月表示的日期。假設(shè)日期限定在1990年1月~2049年12月,并規(guī)定日期由6位數(shù)字字符組成,前4位表示年,后2位表示月?,F(xiàn)用等價(jià)類劃分法設(shè)計(jì)測試用例,來測試程序的"日期檢查功能"。2023/2/41371)劃分等價(jià)類并編號,下表等價(jià)類劃分的結(jié)果輸入等價(jià)類有效等價(jià)類無效等價(jià)類日期的類型及長度①6位數(shù)字字符②有非數(shù)字字符③少于6位數(shù)字字符④多于6位數(shù)字字符年份范圍⑤在1990~2049之間⑥小于1990⑦大于2049月份范圍⑧在01~12之間⑨等于00⑩大于122023/2/41382)設(shè)計(jì)測試用例,以便覆蓋所有的有效等價(jià)類在表中列出了3個(gè)有效等價(jià)類,編號分別為①、⑤、⑧,設(shè)計(jì)的測試用例如下:

測試數(shù)據(jù)

期望結(jié)果

覆蓋的有效等價(jià)類

200211

輸入有效

①、⑤、⑧

3)為每一個(gè)無效等價(jià)類設(shè)計(jì)一個(gè)測試用例,設(shè)計(jì)結(jié)果如下:

測試數(shù)據(jù)

期望結(jié)果

覆蓋的無效等價(jià)類

95June

無效輸入

20036

無效輸入

2001006

無效輸入

198912

無效輸入

200401

無效輸入

200100

無效輸入

200113

無效輸入

2023/2/41393.NextDate函數(shù)包含三個(gè)變量:month、day和year,函數(shù)的輸出為輸入日期后一天的日期。例如,輸入為2006年3月7日,則函數(shù)的輸出為2006年3月8日。要求輸入變量month、day和year均為整數(shù)值,并且滿足下列條件:

①1≤month≤12

②1≤day≤31

③1920≤year≤2050

1)有效等價(jià)類為:

M1={月份:1≤月份≤12}

D1={日期:1≤日期≤31}

Y1={年:1812≤年≤2012}

2)若條件①~③中任何一個(gè)條件失效,則NextDate函數(shù)都會產(chǎn)生一個(gè)輸出,指明相應(yīng)的變量超出取值范圍,比如"month的值不在1-12范圍當(dāng)中"。顯然還存在著大量的year、month、day的無效組合,NextDate函數(shù)將這些組合作統(tǒng)一的輸出:"無效輸入日期"。其無效等價(jià)類為:

M2={月份:月份<1}

M3={月份:月份>12}

D2={日期:日期<1}

D3={日期:日期>31}

Y2={年:年<1812}

Y3={年:年>2012}

弱一般等價(jià)類測試用例

月份

日期

預(yù)期輸出

6

15

1912

1912年6月16日

強(qiáng)一般等價(jià)類測試用例同弱一般等價(jià)類測試用例

注:弱--有單缺陷假設(shè);健壯--考慮了無效值

2023/2/4140

(一)弱健壯等價(jià)類測試

用例ID

月份

日期

預(yù)期輸出

WR1

6

15

1912

1912年6月16日

WR2

-1

15

1912

月份不在1~12中

WR3

13

15

1912

月份不在1~12中

WR4

6

-1

1912

日期不在1~31中

WR5

6

32

1912

日期不在1~31中

WR6

6

15

1811

年份不在1812~2012中

WR7

6

15

2013

年份不在1812~2012中

(二)強(qiáng)健壯等價(jià)類測試

用例ID

月份

日期

預(yù)期輸出

SR1

-1

15

1912

月份不在1~12中

SR2

6

-1

1912

日期不在1~31中

SR3

6

15

1811

年份不在1812~2012中

SR4

-1

-1

1912

兩個(gè)無效一個(gè)有效

SR5

6

-1

1811

兩個(gè)無效一個(gè)有效

SR6

-1

15

1811

兩個(gè)無效一個(gè)有效

SR7

-1

-1

1811

三個(gè)無效

2023/2/4141黑盒測試方法邊界值分析等價(jià)類規(guī)范導(dǎo)出錯(cuò)誤猜測基于故障的測試因果圖法2023/2/4142規(guī)范導(dǎo)出根據(jù)相關(guān)規(guī)范描述來設(shè)計(jì)測試用例,每個(gè)測試用例被用來測試一個(gè)或多個(gè)規(guī)范陳述句?;旧鲜歉鶕?jù)陳述規(guī)范所用語句的順序來相應(yīng)地為被測斷垣設(shè)計(jì)測試用例。這個(gè)方法在用例和規(guī)范陳述之間做到了很好的對應(yīng)。加強(qiáng)了規(guī)范的可讀性和可維護(hù)性。是一種正向的測試技術(shù),需要逆向的測試技術(shù)對測試用例進(jìn)行補(bǔ)充。例如:規(guī)范輸入一個(gè)大于等于0的實(shí)數(shù),返回正的平方根輸入一個(gè)小于0的實(shí)數(shù),顯示錯(cuò)誤信息“平方根非法-輸入值小于0”Print_Line庫函數(shù)可以用來輸出錯(cuò)誤信息2023/2/4143規(guī)范導(dǎo)出測試用例Testcase1:輸入4,輸出2Testcase2:輸入-1,輸出“平方根非法-輸入值小于0”2023

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論