




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Ch03-軟件測試方法-軟件測試方法和技術(shù)第一頁,共114頁。第2章回顧軟件缺陷是軟件質(zhì)量的對立面軟件缺陷(Bug)是什么驗(yàn)證和確認(rèn) 軟件測試的分類靜態(tài)測試與動(dòng)態(tài)測試主動(dòng)測試與被動(dòng)測試黑盒測試與白盒測試測試級別:單元、集成、系統(tǒng)和驗(yàn)收軟件測試計(jì)劃與用例專業(yè)測試人員的責(zé)任和要求第一頁第二頁,共114頁。第3章軟件測試的方法3.1基于直覺和經(jīng)驗(yàn)的方法3.2基于輸入域的方法3.3基于組合及其優(yōu)化的技術(shù)3.4基于邏輯覆蓋的方法3.5基于故障模式的測試方法3.6基于模型的測試方法3.7形式化方法第二頁第三頁,共114頁。方法論和具體方法從方法論看,更多體現(xiàn)了一種哲學(xué)的思想,例如辯證統(tǒng)一的方法,在測試中有許多對立統(tǒng)一體,如靜態(tài)測試和動(dòng)態(tài)測試、白盒測試和黑盒測試、自動(dòng)化測試和手工測試等。軟件測試的方法論來源于軟件工程的方法論,例如有面向?qū)ο蟮拈_發(fā)方法,就有面向?qū)ο蟮臏y試方法;有敏捷方法,就有和敏捷方法對應(yīng)的敏捷測試。第三頁第四頁,共114頁。測試領(lǐng)域DomainsunderTestGUILogicInputSpaceSyntaxUsecasesSpecsDesignSourceAppliedtoDNFSpecsFSMsSourceInputModelsIntegrationSourceDNF:DisjunctiveNormalForm(析取范式)
FSM:FiniteStatusMachine第四頁第五頁,共114頁。測試方法@SWEBOK3.0IDBTCBTFBTUBTMBTTBNA第五頁6第六頁,共114頁。具體方法或技術(shù)IDBT等價(jià)類、邊界值、兩兩組合(pairwise)、隨機(jī)測試黑盒測試CBT基于控制流的標(biāo)準(zhǔn)、基于數(shù)據(jù)流的標(biāo)準(zhǔn)、CBT參考模型白盒測試FBT故障模型、錯(cuò)誤猜測法、變異測試UBT操作配置(operational
profile)、用戶觀察啟發(fā)黑盒測試MBT決策表、有限狀態(tài)機(jī)、形式化驗(yàn)證、TTCN3、工作流模型TBNAOOS、web、real-time、SOA、embedded、safe-critical應(yīng)用領(lǐng)域第六頁7第七頁,共114頁。過去常提“黑盒和白盒”方法等價(jià)類劃分法邊界值分析法判定表方法因果圖法正交試驗(yàn)法功能圖法錯(cuò)誤推測法語句覆蓋判定覆蓋條件覆蓋判定條件覆蓋條件組合覆蓋基本路徑覆蓋黑盒方法白盒方法第七頁8第八頁,共114頁。其它方法@world上下文驅(qū)動(dòng)方法基于需求驗(yàn)證的方法基于場景的測試方法快速測試方法基于經(jīng)驗(yàn)的方法第八頁9第九頁,共114頁。3.1基于直覺和經(jīng)驗(yàn)的方法3.1.1Ad-hoc測試方法和ALAC測試3.1.2
錯(cuò)誤推測法基于經(jīng)驗(yàn)和直覺推測程序中所有可能存在的各種錯(cuò)誤,從而有針對性地設(shè)計(jì)測試用例。第九頁第十頁,共114頁。3.1.1ALAC測試和隨機(jī)測試ALAC,是Act-like-a-customer(象客戶那樣做)的簡寫,ALAC測試方法是一種基于客戶使用產(chǎn)品的知識(shí)開發(fā)出來的測試方法,它的出發(fā)點(diǎn)是著名的Pareto80/20規(guī)律第十頁第十一頁,共114頁。3.1.2錯(cuò)誤猜測法錯(cuò)誤推測法是測試者根據(jù)經(jīng)驗(yàn)、知識(shí)和直覺來發(fā)現(xiàn)軟件錯(cuò)誤,來推測程序中可能存在的各種錯(cuò)誤,從而有針對性的進(jìn)行測試。發(fā)現(xiàn)程序經(jīng)常出現(xiàn)的錯(cuò)誤的方法:單元測試中發(fā)現(xiàn)的模塊錯(cuò)誤;產(chǎn)品的以前版本曾經(jīng)發(fā)現(xiàn)的錯(cuò)誤;輸入數(shù)據(jù)為0或字符為空;當(dāng)軟件要求輸入時(shí)(比如在文本框中),不是沒有輸入正確的信息,而是根本沒有輸入任何內(nèi)容,單單按了Enter鍵;…
…第十一頁第十二頁,共114頁。3.2基于輸入域的測試方法3.2.1
等價(jià)類劃分法3.2.2
邊界值分析法第十二頁第十三頁,共114頁。3.2.1等價(jià)類劃分方法等價(jià)類是某個(gè)輸入域的子集,在該子集中每個(gè)輸入數(shù)據(jù)的作用是等效的.將輸入數(shù)據(jù)分成若干個(gè)子集,從每個(gè)子集選取一個(gè)代表性的數(shù)據(jù)作為測試用例分為有效等價(jià)類和無效等價(jià)類。在分析需求規(guī)格說明的基礎(chǔ)上劃分等價(jià)類,列出等價(jià)類表設(shè)計(jì)測試用例時(shí),要同時(shí)考慮這兩種等價(jià)類。因?yàn)檐浖粌H要能接收合理的數(shù)據(jù),也要能經(jīng)受異常數(shù)據(jù)的考驗(yàn)。經(jīng)過正反的測試才能確保軟件具有更高的可靠性。allinputsi1i4i2i3第十三頁第十四頁,共114頁。確定等價(jià)類的方法在輸入條件規(guī)定了取值范圍或值的個(gè)數(shù)的情況下,則可以確立一個(gè)有效等價(jià)類和兩個(gè)無效等價(jià)類inrangegreaterthanrangelessthanrangevaluegreaterthanvaluelessthanvalue第十四頁第十五頁,共114頁。在輸入條件規(guī)定了輸入值的集合或者規(guī)定了“必須如何”的條件的情況下,可以確立一個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類。在輸入條件是一個(gè)布爾量的情況下,可確定一個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類確定等價(jià)類的方法(2)notmemberofsetmemberofsetBooleanNon-Boolean第十五頁第十六頁,共114頁。確定等價(jià)類的方式(3)在規(guī)定了輸入數(shù)據(jù)的一組值(假定n個(gè)),并且程序要對每一個(gè)輸入值分別處理的情況下,可確立n個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類。在規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則的情況下,可確立一個(gè)有效等價(jià)類(符合規(guī)則)和若干個(gè)無效等價(jià)類(從不同角度違反規(guī)則)。有什么具體案例?第十六頁第十七頁,共114頁。等價(jià)類測試用例-Example等價(jià)類1:Integer等價(jià)類2:Decimalfraction等價(jià)類3:Negative等價(jià)類4:Invalidinput第十七頁第十八頁,共114頁。根據(jù)等價(jià)類創(chuàng)建測試用例的步驟建立等價(jià)類表,列出所有劃分出的等價(jià)類:為每個(gè)等價(jià)類規(guī)定一個(gè)唯一的編號;設(shè)計(jì)一個(gè)新的測試用例,使其盡可能多地覆蓋尚未覆蓋的有效等價(jià)類重復(fù)c),最后使得所有有效等價(jià)類均被測試用例所覆蓋;設(shè)計(jì)一個(gè)新的測試用例,使其只覆蓋一個(gè)無效等價(jià)類。重復(fù)e)使所有無效等價(jià)類均被覆蓋。輸入條件有效等價(jià)類無效等價(jià)類………………第十八頁第十九頁,共114頁。3.2.2邊界值分析方法很多錯(cuò)誤發(fā)生在輸入或輸出范圍的邊界上,因此針對各種邊界情況設(shè)置測試用例,可以更有效地發(fā)現(xiàn)缺陷。BVA–BoundaryValueAnalysis設(shè)計(jì)方法:確定邊界情況(輸入或輸出等價(jià)類的邊界)選取正好等于、剛剛大于或小于邊界值作為測試數(shù)據(jù)第十九頁第二十頁,共114頁。確定邊界值的方法如果輸入條件規(guī)定了值的范圍,則應(yīng)取剛達(dá)到這個(gè)范圍的邊界的值,以及剛剛超越這個(gè)范圍邊界的值作為測試輸入數(shù)據(jù)。如果輸入條件規(guī)定了值的個(gè)數(shù),則用最大個(gè)數(shù)、最小個(gè)數(shù)、比最小個(gè)數(shù)少一、比最大個(gè)數(shù)多一的數(shù)作為測試數(shù)據(jù)。abab第二十頁第二十一頁,共114頁。確定邊界值的方法(2)如果程序的規(guī)格說明給出的輸入域或輸出域是有序集合,則應(yīng)選取集合的第一個(gè)元素和最后一個(gè)元素作為測試用例。如果程序中使用了一個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu),則應(yīng)當(dāng)選擇這個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu)的邊界上的值作為測試用例。TestcasesforABS(x):classx<0,arbitraryvalue: x=-10classx>=0,arbitraryvalue x=100classesx<0,x>=0,onboundary: x=0classesx<0,x>=0,belowandabove: x=-1,x=1第二十一頁第二十二頁,共114頁。正常值(有效類):X1=123123邊界值:X2=12345邊界值:X3=1234567邊界值:X4=1邊界值:X5=0無效類的值:X6=-123123無效類的值:X7=asdasd其它?BVA示例2測試限制性用戶輸入:6位正整數(shù)
無效值:X8=000123
X9=asd123X10=Empty第二十二頁第二十三頁,共114頁。BVA示例3Testcases:任意的正常值:隨機(jī)選擇幾個(gè)選項(xiàng)
邊界值:選擇所有選項(xiàng)
邊界值:一個(gè)都不選
邊界值:選擇一個(gè)選項(xiàng)第二十三頁第二十四頁,共114頁。二進(jìn)制Term取值范圍BitNibbleByteWordKiloMegaGigaTera0or10-15<Halfbyte>0-2550-65535or0-429496729510241073741824160和1,byte由8bits構(gòu)成,字由4bytes構(gòu)成,…第二十四頁第二十五頁,共114頁。ASCIITableCharacterASCIIValueCharacter
ASCIIValueNullSpace/0129;@A0324748495057586465BYZ[‘a(chǎn)byz{66899091969798121122123第二十五頁第二十六頁,共114頁。字符編輯域DefaultEmptyBlankNullZeroNone第二十六頁第二十七頁,共114頁。一些特殊的邊界值數(shù)值字符位置數(shù)量速度位置體積First/last,F(xiàn)irst-1/Last+1Min/Max,Min-1/max+1Star/Finish,Start-1/Finish+1Empty/FullLessthanempty/morethanfullSlower/FasterLargest/SmallestOver/Under,justOver/JustUnderShortest/Longest……有什么具體案例?第二十七頁第二十八頁,共114頁。3.3基于組合技術(shù)和組合優(yōu)化的方法3.3.1判定表/決策表方法3.3.2因果圖3.3.3兩兩組合方法3.3.4正交實(shí)驗(yàn)法第二十八頁第二十九頁,共114頁。3.3.1判定表方法在實(shí)際應(yīng)用中,許多輸入是由多個(gè)因素構(gòu)成,而不是單一因素,這時(shí)就需要多因素組合分析。對于多因素,有時(shí)可以直接對輸入條件進(jìn)行組合設(shè)計(jì),不需要進(jìn)行因果分析,即直接采用判定表方法。判定表由“條件和活動(dòng)”兩部分組成,即列出一個(gè)測試活動(dòng)執(zhí)行所需的條件組合,所有可能的條件組合定義了一系列的選擇,而測試活動(dòng)需要考慮每一個(gè)選擇。第二十九頁第三十頁,共114頁。判定表元素條件樁,列出問題的所有條件動(dòng)作樁:列出可能針對問題所采取的操作條件項(xiàng):針對所列條件的具體賦值動(dòng)作項(xiàng):列出在條件項(xiàng)(各種取值)組合情況下應(yīng)該采取的動(dòng)作。規(guī)則:任何一個(gè)條件組合的特定取值及其相應(yīng)要執(zhí)行的操作。第三十頁第三十一頁,共114頁。判定表方法步驟列出條件樁列出動(dòng)作樁填入條件項(xiàng)及其組合填入動(dòng)作項(xiàng),制定初始判定表;簡化、合并相似規(guī)則或者相同動(dòng)作條件樁動(dòng)作樁規(guī)則第三十一頁第三十二頁,共114頁。判定表示例1ID項(xiàng)目名稱R1R2R3R4R5條件項(xiàng)C1此商品在經(jīng)營范圍NYYYYC2此商品可以發(fā)貨YYNNC3此客戶沒有拖欠過付款YNYN動(dòng)作項(xiàng)A1貨到后允許客戶轉(zhuǎn)賬1A2貨到客戶必須立即付款1A3重新組織貨源11A4電話通知1A5書面通知11第三十二頁第三十三頁,共114頁。判定表示例2第三十三頁第三十四頁,共114頁。3.3.2因果圖法多種輸入條件的組合,產(chǎn)生多種結(jié)果設(shè)計(jì)測試用例。設(shè)計(jì)方法:分析軟件規(guī)格說明文檔描述的哪些是原因(輸入條件),哪些是結(jié)果(輸出條件),給每個(gè)原因和結(jié)果賦予一個(gè)標(biāo)示符。找出原因與結(jié)果,原因與原因之間的對應(yīng)關(guān)系,劃出因果圖在因果圖上標(biāo)上哪些不可能發(fā)生的因果關(guān)系,表明約束或限制條件根據(jù)因果圖,創(chuàng)建判定表,將復(fù)雜的邏輯關(guān)系和多種條件組合很具體明確的表示出來把判定表的每一行作為依據(jù)設(shè)計(jì)測試用例。第三十四頁第三十五頁,共114頁。恒等-關(guān)系:果j取決于因i。因出現(xiàn),則果也出現(xiàn)。
非-關(guān)系:只有當(dāng)因i不存在時(shí),果j才出現(xiàn)。ijij因果圖的基本符合或-關(guān)系:如果因i1或因i2或……因in存在時(shí),結(jié)果j才出現(xiàn)。
與-關(guān)系:只有當(dāng)因i1與因i2與……因in同時(shí)存在時(shí),結(jié)果j才出現(xiàn)。
j
i1i2inj
i1i2in第三十五頁第三十六頁,共114頁。因果圖法-示例(1)有效等價(jià)類:
輸入條件
有效類.
abs(N) N0,N
0
maxint kmaxint,
k>maxint測試用例: maxint N result maxint N result 55 10 55 100 0 0
54 10 error 100 -1 1
56 10 55 100 1 1
0 0 0 … … …給定maxint和N,如果結(jié)果<=maxint,則按以下公式計(jì)算;否則提示出錯(cuò):
K=0|N|kresult=
第三十六頁第三十七頁,共114頁。
kmaxint
kmaxintN0N0
kerrorandxorORCauses
kmaxint
1 1 0 0Inputs
kmaxint
0 0 1 1 N0 1 0 1 0 N0 0 1 0 1Effects k 1 1 0 0Outputs error 0 0 1
1因果圖法-示例(2)第三十七頁第三十八頁,共114頁。1100error0011
kEffects1010N00101N01100
kmaxint0011
kmaxintCauseCaseMatrix:因果圖法-示例(3)第三十八頁第三十九頁,共114頁。3.3.3兩兩組合(Pairwise)方法大部分缺陷是在兩個(gè)變量取值沖突的測試時(shí)被發(fā)現(xiàn)的不僅僅是在所有的組合情況下才會(huì)發(fā)現(xiàn)所有的測試缺陷這個(gè)是“PairwiseTesting”基本原理,不要測試所有的組合,測試所有的“Pairwise”即可第三十九頁第四十頁,共114頁。Pairwise測試工具第四十頁第四十一頁,共114頁。3.3.4正交實(shí)驗(yàn)法確定影響功能的因子與狀態(tài)選擇一個(gè)合適的正交表利用正交表構(gòu)造測試數(shù)據(jù)集參考
第四十一頁第四十二頁,共114頁。為什么使用正交試驗(yàn)法?打印范圍分:全部、當(dāng)前幻燈片、給定范圍打印內(nèi)容分:幻燈片、講義、備注頁、大綱視圖打印顏色/灰度分:彩色、灰度、黑白打印效果分:幻燈片加框和幻燈片不加框。在許多應(yīng)用系統(tǒng)的測試工作中,不會(huì)象判斷三角形那樣簡單,輸入條件的因素很多,而且每個(gè)因素也不能簡單用“是”和“否”來回答。比如,微軟Powerpoint程序的打印測試,也需要考慮4個(gè)因素,每個(gè)因素也有多個(gè)選項(xiàng)測試組合會(huì)變得很多,如果按照傳統(tǒng)的測試方法,會(huì)導(dǎo)致很大的測試工作量
第四十二頁第四十三頁,共114頁。正交實(shí)驗(yàn)設(shè)計(jì)方法依據(jù)Galois理論,從大量的(實(shí)驗(yàn))數(shù)據(jù)(測試?yán)┲刑暨x適量的、有代表性的點(diǎn)(條件組合),從而合理地安排實(shí)驗(yàn)(測試)的一種科學(xué)實(shí)驗(yàn)設(shè)計(jì)方法第四十三頁第四十四頁,共114頁。實(shí)例員工號(ID)。員工姓名(Name)。員工郵件地址(MailAddress)信息系統(tǒng)中,員工信息查詢功能是常見的。例如,設(shè)有3個(gè)獨(dú)立的查詢條件,以獲得特定員工的個(gè)人信息第四十四頁第四十五頁,共114頁。小結(jié)黑盒方法靜態(tài)動(dòng)態(tài)其它多因素單因素等價(jià)類劃分邊界值分析因果分析法決策表正交試驗(yàn)法功能圖有限狀態(tài)機(jī)錯(cuò)誤推測法第四十五頁第四十六頁,共114頁。3.4基于邏輯覆蓋的方法3.4.1語句覆蓋3.4.2判定覆蓋3.4.3條件覆蓋3.4.4判定條件覆蓋3.4.5條件組合覆蓋3.4.6基本路徑測試法第四十六頁第四十七頁,共114頁。邏輯覆蓋vs.路徑覆蓋邏輯覆蓋:以程序或系統(tǒng)的內(nèi)部邏輯結(jié)構(gòu)為基礎(chǔ),分為語句覆蓋、判定覆蓋、判定-條件覆蓋、條件組合覆蓋等基本路徑測試:在程序或業(yè)務(wù)控制流程的基礎(chǔ)上,分析控制構(gòu)造的環(huán)路復(fù)雜性,導(dǎo)出基本可執(zhí)行路徑集合,從而設(shè)計(jì)測試用例。第四十七頁第四十八頁,共114頁。代碼:語句覆蓋語句覆蓋法的基本思想是設(shè)計(jì)若干測試用例,運(yùn)行被測程序,使程序中的每個(gè)可執(zhí)行語句至少被執(zhí)行一次如果是順序結(jié)構(gòu),就是讓測試從頭執(zhí)行到尾如果有分支、條件和循環(huán),需要利用下面的方法,執(zhí)行足夠的測試覆蓋全部語句第四十八頁第四十九頁,共114頁。3689IFIFENDIFENDIFfeicbad457jh程序源代碼1. dima,basintegerdimcasdoubleif(a>0andb>0)thenc=c/aendifif(a>1orc>1)thenc=c+1endifc=b+c程序控制流圖示例:語句覆蓋可發(fā)現(xiàn)的問題(a,b,c)=(1,1,2)第四十九頁第五十頁,共114頁。3689IFIFENDIFENDIFfeicbad457jh程序源代碼1. dima,basintegerdimcasdoubleif(a>0orb>0)thenc=c/aendifif(a>1and
c>1)thenc=c+1endifc=b+c程序控制流圖示例:語句覆蓋不能發(fā)現(xiàn)的問題(a,b,c)=(1,1,2)andor第五十頁第五十一頁,共114頁。3.4.1判定覆蓋判定覆蓋法的基本思想是設(shè)計(jì)若干用例,運(yùn)行被測程序,使得程序中每個(gè)判斷的取真分支和取假分支至少經(jīng)歷一次,即判斷真假值均曾被滿足。一個(gè)判定代表著程序的一個(gè)分支,
所以判定覆蓋也被稱為分支覆蓋。第五十一頁第五十二頁,共114頁。示例:繪制控制圖第五十二頁第五十三頁,共114頁。示例:設(shè)計(jì)測試用例(a,b,c)=(1,1,2)(a,b,c)=(-1,1,0)第五十三頁第五十四頁,共114頁。3.4.2條件覆蓋條件覆蓋的基本思想是設(shè)計(jì)若干測試用例,執(zhí)行被測程序以后,要使每個(gè)判斷中每個(gè)條件的可能取值至少滿足一次。(a>0andb>0)
a>0b>0第五十四頁第五十五頁,共114頁。示例:列出所有條件判定條件M:條件a>0:取.T.時(shí)為T1取.F.時(shí)為F1條件b>0:取.T.時(shí)為T2取.F.時(shí)為F2;判定條件N:條件a>1:取.T.時(shí)為T3取.F.時(shí)為F3條件c>1:取.T.時(shí)為T4取.F.時(shí)為F4第五十五頁第五十六頁,共114頁。示例:覆蓋所有條件(a,b,c)=(2,-1,0)(a,b,c)=(-1,1,2)T1,F2,T3,F4F1,T2,F3,T4但有什么問題嗎?第五十六頁第五十七頁,共114頁。3.4.3判定條件覆蓋判定-條件覆蓋是判定和條件覆蓋設(shè)計(jì)方法的交集,即設(shè)計(jì)足夠的測試用例,使得判斷條件中的所有條件可能取值至少執(zhí)行一次,同時(shí),所有判斷的可能結(jié)果至少執(zhí)行一次條件取值條件分支判定條件a>0,b>0,a>1,c>1T1,T2,T3,T4a>0ANDb>0M=.T.N=.T.a<=0,b<=0,a<=1,c<=1F1,F(xiàn)2,F(xiàn)3,F(xiàn)4a>1ORc>1M=.F.N=.F.第五十七頁第五十八頁,共114頁。示例:覆蓋判定/條件(a,b,c)=(2,1,2)(a,b,c)=(-1,0,1)T1,T2,T3,T4F1,F2,F3,F4第五十八頁第五十九頁,共114頁。3.4.4條件組合測試條件組合覆蓋的基本思想是設(shè)計(jì)足夠的測試用例,使得判斷中每個(gè)條件的所有可能至少出現(xiàn)一次,并且每個(gè)判斷本身的判定結(jié)果也至少出現(xiàn)一次。它與條件覆蓋的差別是它不是簡單地要求每個(gè)條件都出現(xiàn)“真”與“假”兩種結(jié)果,而是要求讓這些結(jié)果的所有可能組合都至少出現(xiàn)一次第五十九頁第六十頁,共114頁。示例
(1)組合編號覆蓋條件取值判定條件取值判定-條件組合1T1,T2M=.T.a>0,b>0,M取真2T1,F(xiàn)2M=.F.a>0,b<=0,M取假3F1,T2M=.F.a<=0,b>0,M取假4F1,F(xiàn)2M=.F.a<=0,b<=0,M取假5T3,T4N=.T.a>1,c>1,N取真6T3,F(xiàn)4N=.T.a>1,c<=1,N取真7F3,T4N=.T.a<=1,c>1,N取真8F3,F(xiàn)4N=.F.a<=1,c<=1,N取假第六十頁第六十一頁,共114頁。示例
(2)測試用例覆蓋條件覆蓋路徑覆蓋組合輸入:a=2,b=1,c=6輸出:a=2,b=1,c=5T1,T2,T3,T4P1(1-2-4)1,5輸入:(a,b,c)=(2,-1,-2)輸出:(a,b,c)=(2,-1,-2)T1,F(xiàn)2,T3,F(xiàn)4P3(1-3-4)2,6輸入:(a,b,c)=(-1,2,3)輸出:(a,b,c)=(-1,2,6)F1,T2,F(xiàn)3,T4P3(1-3-4)3,7輸入:(a,b,c)=(-1,-2,-3)輸出:(a,b,c)=(-1,-2,-5)F1,F(xiàn)2,F(xiàn)3,F(xiàn)4P4(1-3-5)4,8覆蓋了所有組合,但覆蓋路徑有限,1-2-5沒被覆蓋第六十一頁第六十二頁,共114頁。問題條件組合效率不高,有些測試是不必要的判定/條件還不夠強(qiáng)第六十二頁第六十三頁,共114頁。修正條件/判定覆蓋每個(gè)判定的所有可能結(jié)果至少能取值一次;判定中的每個(gè)條件的所有可能結(jié)果至少取值一次;
一個(gè)判定中的每個(gè)條件曾經(jīng)獨(dú)立地對判定的結(jié)果產(chǎn)生影響;每個(gè)入口和出口至少執(zhí)行一次>=
n+1
testcasesforadecisionwithn
inputs.第六十三頁第六十四頁,共114頁。示例組合編號覆蓋條件取值判定條件取值1T1,T2M=.T.2T1,F(xiàn)2M=.F.3F1,T2M=.F.4F1,F(xiàn)2M=.F.5T3,T4N=.T.6T3,F(xiàn)4N=.T.7F3,T4N=.T.8F3,F(xiàn)4N=.F.第六十四頁第六十五頁,共114頁。3.4.5基本路徑覆蓋顧名思義,路徑覆蓋就是設(shè)計(jì)所有的測試用例,來覆蓋程序中的所有可能的執(zhí)行路徑。測試用例覆蓋路徑覆蓋條件覆蓋組合輸入:a=2,b=1,c=6輸出:a=2,b=1,c=5P1(1-2-4)T1,T2,T3,T41,5輸入:a=1,b=1,c=-3輸出:a=1,b=1,c=-2P2(1-2-5)T1,T2,F(xiàn)3,F(xiàn)41,8輸入:a=2,b=-1,c=-2輸出:a=2,b=-1,c=-2P3(1-3-4)T1,F(xiàn)2,T3,F(xiàn)42,6輸入:a=-1,b=2,c=3輸出:a=-1,b=2,c=6P3(1-3-4)F1,T2,F(xiàn)3,T43,7輸入:a=-1,b=-2,c=-3輸出:a=-1,b=-2,c=-5P4(1-3-5)F1,F(xiàn)2,F(xiàn)3,F(xiàn)44,8第六十五頁第六十六頁,共114頁?;韭窂礁采w的設(shè)計(jì)過程依據(jù)代碼繪制流程圖確定流程圖的圈復(fù)雜度(cyclomaticcomplexity)確定線性獨(dú)立路徑的基本集合(basisset)設(shè)計(jì)測試用例覆蓋每條基本路徑第六十六頁第六十七頁,共114頁。示例–源代碼Procedure:processrecords1. DoWhilerecordsremain2.
Read
record;3.
If
recordfield1=0Then4. storeinbuffer;5. incrementcounter;6.
ElseIf
recordfield2=0Then7. resetcounter;8.
Elsestoreinfile;9.
EndIf10.
EndIf11.
EndDoEnd第六十七頁第六十八頁,共114頁。示例–流程圖1910112457836第六十八頁第六十九頁,共114頁。基本路徑測試:流程圖簡化12,387694,51011第六十九頁第七十頁,共114頁。流程圖的圈復(fù)雜度V(G)=區(qū)域數(shù)量(由節(jié)點(diǎn)、連線包圍的區(qū)域,包括圖形外部區(qū)域)V(G)=連線數(shù)量-節(jié)點(diǎn)數(shù)量+2V(G)=簡單可預(yù)測節(jié)點(diǎn)數(shù)量+1圈復(fù)雜度(Cyclomaticcomplexity):代碼邏輯復(fù)雜度的
度量,提供了被測代碼的路徑數(shù)量。復(fù)雜度越高,出錯(cuò)的概率越大V(G)modules第七十頁第七十一頁,共114頁。流程圖復(fù)雜度-例子V(G)=412,378694,51011Region1Region2Region3Region4第七十一頁第七十二頁,共114頁。確定線性獨(dú)立的路徑集合
獨(dú)立路徑:
至少引入一系列新的處理語句或條件的任何路徑
基本集:
由獨(dú)立路徑構(gòu)成的集合
由基本集導(dǎo)出的測試用例,保證每行代碼語句至少被執(zhí)行一次基本集合不一定唯一第七十二頁第七十三頁,共114頁。Path1:1-2-3-6-7-9-10-1-11示例:基本路徑測試用例
Path2:1-2-3-6-8-9-10-1-11Path3:1-2-3-4-5-10-1-11Path4:1-111910112458736第七十三頁第七十四頁,共114頁。測試用例覆蓋集合中每條路徑基本路徑測試并不是測試所有路徑的組合,僅僅保證每條基本路徑被執(zhí)行一次
不需要活動(dòng)圖,但最好繪制程序流程圖
計(jì)算每個(gè)邏輯測試,也就是布爾操作符數(shù)加1
最好每個(gè)單元都進(jìn)行基本路徑測試,對關(guān)鍵組件則是必要的第七十四頁第七十五頁,共114頁。小結(jié)語句覆蓋判定覆蓋DC條件覆蓋CC判定/條件覆蓋DC/CC條件組合覆蓋MCC基本路徑覆蓋BPCConditionCoverage(CC)DecisionCoverage(DC)MultipleConditionCoverage(MCC)Modi?edCondition/DecisionCoverage(MC/DC)MC/DC第七十五頁第七十六頁,共114頁。作業(yè)DC/CCBPCMC/DC1.TestwellCTC++2.CoverageMeter3.BullseyeCoverage4.GCT5.CppUnit6.DynamicCodeCoverage7.TCATC/C++8.COVTOOL9.gocv10.xCover+找一合適的函數(shù)代碼+選擇一覆蓋率工具–完成三種覆蓋率的測試第七十六頁第七十七頁,共114頁。小結(jié):方法的靈活運(yùn)用代碼中循環(huán)結(jié)構(gòu)如何測試?從數(shù)據(jù)輸入和結(jié)構(gòu)兩方面來考慮第七十七頁第七十八頁,共114頁。目標(biāo):在循環(huán)內(nèi)部及邊界上執(zhí)行測試循環(huán)測試-11.簡單循環(huán)(迭代次數(shù)n)
完全跳過循環(huán)
只經(jīng)過循環(huán)一次經(jīng)過循環(huán)兩次經(jīng)過循環(huán)m(m<n)次
分別經(jīng)過循環(huán)n-1,n,n+1次第七十八頁第七十九頁,共114頁。循環(huán)測試-22.嵌套(Nested)循環(huán)在最里面的循環(huán)完成前面所述的簡單循環(huán)測試,同時(shí)設(shè)定外部循環(huán)的最小迭代次數(shù)逐步向外循環(huán)進(jìn)行直到所有循環(huán)被測試第七十九頁第八十頁,共114頁。循環(huán)測試-
3其它非結(jié)構(gòu)循環(huán)重新設(shè)計(jì)!3.串行連接的循環(huán)獨(dú)立循環(huán)
可以分別看著簡單循環(huán)測試依賴性循環(huán)
可以看著是嵌套循環(huán)第八十頁第八十一頁,共114頁。3.5基于缺陷模式的測試故障模型。安全漏洞模型性能模型并發(fā)故障模型不良習(xí)慣模型代碼國際化模型易誘騙代碼模型第八十一頁第八十二頁,共114頁。檢測步驟預(yù)處理/預(yù)編譯詞法分析(LexicalAnalysis)語法分析(Parsing)和語義處理(SemanticAnalysis)抽象語法樹生成控制流圖生成IP掃描人工確認(rèn)第八十二頁第八十三頁,共114頁。3.6基于模型的測試方法3.6.1功能圖方法3.6.2模糊測試方法第八十三頁第八十四頁,共114頁。什么是MBT?基于模型的測試(MBT,Model-basedtesting):通過構(gòu)建能夠正確描述被測軟件系統(tǒng)功能特性的模型,然后基于這個(gè)模型產(chǎn)生測試用例并執(zhí)行這些測試用例的過程isapartialdescriptionofModelSystemAbstract
TestsExecutableTestscanberunagainstareabstractversionsofcanbederivedfrom第八十四頁第八十五頁,共114頁。為被測試系統(tǒng)(SUT)建模基于模型產(chǎn)生測試用例將抽象的測試具體化使測試用例具有可執(zhí)行性執(zhí)行測試分析測試結(jié)果MBT方法第八十五頁第八十六頁,共114頁。MBT示例第八十六頁第八十七頁,共114頁。MBT架構(gòu)第八十七頁第八十八頁,共114頁。MBT工具第八十八頁第八十九頁,共114頁。3.6.1功能圖法每個(gè)程序的功能通常由靜態(tài)說明和動(dòng)態(tài)說明組成靜態(tài)說明描述了輸入條件和輸出條件之間的對應(yīng)關(guān)系動(dòng)態(tài)說明描述了輸入數(shù)據(jù)的次序或者轉(zhuǎn)移的次序功能圖法就是為了解決動(dòng)態(tài)說明問題的一種測試用例的設(shè)計(jì)方法功能圖由狀態(tài)遷移圖(statetransitiondiagram,STD)和邏輯功能模型(logicfunctionmodel,LFM)構(gòu)成第八十九頁第九十頁,共114頁。狀態(tài)遷移圖
狀態(tài)遷移圖,描述系統(tǒng)狀態(tài)變化的動(dòng)態(tài)信息——?jiǎng)討B(tài)說明,由狀態(tài)和遷移來描述,狀態(tài)指出數(shù)據(jù)輸入的位置(或時(shí)間),而遷移則指明狀態(tài)的改變第九十頁第九十一頁,共114頁。如何設(shè)計(jì)測試用例?從功能邏輯模型(決策表或因果圖)導(dǎo)出局部測試用例,覆蓋各個(gè)狀態(tài)的各種輸入數(shù)據(jù)的組合從狀態(tài)遷移圖導(dǎo)出整體的測試用例,以覆蓋系統(tǒng)(程序)控制的邏輯路徑功能圖法設(shè)計(jì)測試用例,就是如何覆蓋軟件所表現(xiàn)出來的所有狀態(tài),可以轉(zhuǎn)化為兩個(gè)層次的測試用例功能圖法是綜合運(yùn)用黑盒方法和白盒方法來設(shè)計(jì)測試用例,即整體上選用白盒方法——路徑覆蓋、分支和條件覆蓋等,而局部上選用的是黑盒方法——決策表或因果圖方法第九十一頁第九十二頁,共114頁。3.6.2模糊測試方法模糊測試(Fuzztesting)方法,簡單的說,就是構(gòu)造大量的變異數(shù)據(jù)作為系統(tǒng)的輸入,從而檢驗(yàn)系統(tǒng)在各種數(shù)據(jù)情況下是否會(huì)出現(xiàn)問題模糊測試方法可模擬黑客對系統(tǒng)發(fā)動(dòng)攻擊測試,完成安全性測試,并能應(yīng)用于服務(wù)器的容錯(cuò)性測試參考網(wǎng)站:
第九十二頁第九十三頁,共114頁。3.7形式化方法3.7.1形式化方法3.7.2形式化驗(yàn)證3.7.3擴(kuò)展有限狀態(tài)機(jī)方法第九十三頁第九十四頁,共114頁。3.7.1形式化方法形式化方法:基于數(shù)學(xué)的方法(數(shù)學(xué)表示、精確的數(shù)學(xué)語義)來描述目標(biāo)軟件系統(tǒng)屬性的一種技術(shù)形式化規(guī)范說明語言的構(gòu)成:語法、語義和一組關(guān)系形式化方法可應(yīng)用在軟件規(guī)格和驗(yàn)證之上,包括軟件系統(tǒng)的精確建模和軟件規(guī)格特性的具體描述,即可以看作是面向模型的形式化方法和面向?qū)傩缘男问交椒蓞⒖迹旱诰攀捻摰诰攀屙摚?14頁。示例巴科斯范式(Backus–NaurForm,BNF)第九十五頁第九十六頁,共114頁。形式化三部曲形式化描述形式化開發(fā)形式化驗(yàn)證第九十六頁第九十七頁,共114頁。形式化的具體方法基于模型的方法,如Z語言、B語言等代數(shù)方法,如OBJ、CLEAR、ASL、ACT等過程代數(shù)方法,如CSP、CCS、ACP、LOTOS、TPCCS等基于邏輯的方法,如區(qū)間時(shí)序邏輯、Hoare邏輯、模態(tài)邏輯、時(shí)序邏輯、時(shí)序代理模型等。基于網(wǎng)絡(luò)的方法第九十七頁第九十八頁,共114頁。3.7.2形式化驗(yàn)證形式化驗(yàn)證,就是根據(jù)某些形式規(guī)范或?qū)傩裕褂眯问竭壿嫹椒ㄗC明其正確性或非正確性。一般通過形式化規(guī)范進(jìn)行分析和推理,研究它的各種靜態(tài)和動(dòng)態(tài)性質(zhì),驗(yàn)證是否一致、完整,從而找出所存在的錯(cuò)誤和缺陷。無法證明某個(gè)系統(tǒng)沒有缺陷,因?yàn)椴荒芏x“沒有缺陷”。只能證明一個(gè)系統(tǒng)不存在我們可以想得到的缺陷,以及驗(yàn)證滿足系統(tǒng)質(zhì)量要求的屬性第九十八頁第九十九頁,共114頁。形式化驗(yàn)證的一些具體方法有限狀態(tài)機(jī)(FSM)或擴(kuò)展有限狀態(tài)機(jī)(EFSM)SPIN和線性時(shí)態(tài)語言UML語義轉(zhuǎn)換標(biāo)準(zhǔn)RBAC模型擴(kuò)展的RBAC模型和基于粒計(jì)算的RBAC模型
符號模型檢驗(yàn)BAN邏輯模型第九十九頁第一百頁,共114頁。3.7.3擴(kuò)展有限狀態(tài)機(jī)方法有限狀態(tài)機(jī)(FiniteStateMachine,F(xiàn)SM)是對象行為建模的工具,以描述對象在其生命周期內(nèi)所經(jīng)歷的狀態(tài)序列,以及如何響應(yīng)來自外界的各種事件第一百頁第一百零一頁,共114頁。EFSM示例-1第一百零一頁第一百零二頁,共114頁。EFSM示例-2上第一百零二頁第一百零三頁,共114頁。來源:nachSpillner,Linz:BasiswissenSoftwaretest,2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 尚品宅配全屋定制合同模板
- 肇慶市實(shí)驗(yàn)中學(xué)高三上學(xué)期語文高效課堂教學(xué)設(shè)計(jì):詩歌鑒賞(學(xué)案)
- 新疆司法警官職業(yè)學(xué)院《少兒趣味田徑》2023-2024學(xué)年第二學(xué)期期末試卷
- 石家莊信息工程職業(yè)學(xué)院《擒拿與格斗》2023-2024學(xué)年第一學(xué)期期末試卷
- 連鎖酒店股份制投資入股合同
- 咸陽職業(yè)技術(shù)學(xué)院《企業(yè)級前端應(yīng)用開發(fā)實(shí)踐》2023-2024學(xué)年第二學(xué)期期末試卷
- 江南大學(xué)《新媒體與社會(huì)變遷》2023-2024學(xué)年第二學(xué)期期末試卷
- 長江大學(xué)《信息論與編碼》2023-2024學(xué)年第二學(xué)期期末試卷
- 遼寧傳媒學(xué)院《西醫(yī)兒科學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 開封文化藝術(shù)職業(yè)學(xué)院《計(jì)算機(jī)輔助模具設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- (部編版)統(tǒng)編版小學(xué)語文教材目錄(一至六年級上冊下冊齊全)
- 允許孩子犯錯(cuò)課件
- 項(xiàng)目建筑智能化工程施工招標(biāo)文件模板
- 110kv線路施工方案
- 大東鞋業(yè)合同協(xié)議書
- 港口與船舶協(xié)同運(yùn)營優(yōu)化
- 用所給詞的適當(dāng)形式填空(專項(xiàng)訓(xùn)練)人教PEP版英語六年級上冊
- 勉縣房地產(chǎn)市場調(diào)研報(bào)告
- NBT 47013.2-2015 承壓設(shè)備無損檢測 第2部分:射線檢測
- 2024年巴西獸醫(yī)快速診斷市場機(jī)會(huì)及渠道調(diào)研報(bào)告
- 2024年云南省中考數(shù)學(xué)試題含答案
評論
0/150
提交評論