軟件測(cè)試復(fù)習(xí)_第1頁(yè)
軟件測(cè)試復(fù)習(xí)_第2頁(yè)
軟件測(cè)試復(fù)習(xí)_第3頁(yè)
軟件測(cè)試復(fù)習(xí)_第4頁(yè)
軟件測(cè)試復(fù)習(xí)_第5頁(yè)
已閱讀5頁(yè),還剩60頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

目錄TOC\o"1-3"\h\u6264lec1測(cè)試概述 3299741.軟件測(cè)試SoftwareTesting 3149892.術(shù)語(yǔ)Terminology 3269783.一些對(duì)比 427561lec2單元測(cè)試UnitTesting 5212951.概述 5167632.JUnit 630765lec3白盒測(cè)試 616072lec3.1圖論與結(jié)構(gòu)化覆蓋 673161.GraphinTesting軟件測(cè)試的圖 6228552.Path路徑 882193.GraphCoverageCriteria圖覆蓋準(zhǔn)則 859574.StructuralCoverage結(jié)構(gòu)化覆蓋 10183075.ControlFlowGraphandItsCoverage控制流圖及其覆蓋 1119332lec3.2主路徑和基本路徑覆蓋 16162581.PrimePathCoverage主路徑覆蓋 16268652.BasicPathCoverage基本路徑覆蓋 193102lec3.3數(shù)據(jù)流覆蓋和事件流覆蓋 21299841.DataFlow數(shù)據(jù)流 21285892.DataFlowCoverageCriteria數(shù)據(jù)流覆蓋標(biāo)準(zhǔn) 2160763.DataFlowTesting 22284434.EventFlowGraph事件流圖 25302755.GUITAR 2513246.CoverageCriteria覆蓋率標(biāo)準(zhǔn) 2518115lec3.4變異測(cè)試和缺陷測(cè)試 25257901.MutationTesting變異測(cè)試 2565222.Fault-basedTesting基于缺陷的測(cè)試 2727245lec3.5邏輯覆蓋 2962821.LogicCoverage邏輯覆蓋 2981962.MC/DC 3113845lec4自動(dòng)化測(cè)試 322193lec5黑盒測(cè)試 3317541lec5.1隨機(jī)測(cè)試 33251221.BlackboxTesting黑盒測(cè)試 33251222.DiversityRandominUniformDistribution均勻分布中的隨機(jī) 334558lec5.2等價(jià)-邊界-組合測(cè)試 34129201.EquivalencePartitioning等價(jià)類(lèi)劃分 3496942.Assumptions假設(shè)Equivalence等價(jià) 35241093.Boundary-ValueAnalysis邊界值分析 3714514.CombinatorialTesting組合測(cè)試 41179505.CostEffectiveTesting成本效益測(cè)試 4210098lec5.3缺省-約束-決策表 4413071.DefaultOptionsinTesting測(cè)試中的默認(rèn)選項(xiàng) 45271732.ConstraintsinTesting測(cè)試約束 45307633.DecisionTables決策表 4612573lec6測(cè)試前沿專(zhuān)題 4719946lec6.1多樣性 4737211.OtherTesting 4732197lec6.2測(cè)試預(yù)言與測(cè)試約簡(jiǎn) 48312871.TestOracle測(cè)試預(yù)言 48199992.TestSuiteReduction測(cè)試用例集約簡(jiǎn) 4916287lec7集成與系統(tǒng)、驗(yàn)收測(cè)試、移動(dòng)測(cè)試 512217lec7.1集成與系統(tǒng) 51259501.系統(tǒng)集成的模式與方法 51139382.功能測(cè)試FunctionalTesting 5485863.回歸測(cè)試 55188104.非功能性測(cè)試 5618806lec7.2驗(yàn)收測(cè)試 5919921.驗(yàn)收測(cè)試的過(guò)程和主要內(nèi)容 59248152.產(chǎn)品規(guī)格說(shuō)明書(shū)的驗(yàn)證 60277363.用戶(hù)界面和可用性測(cè)試 60194394.兼容性測(cè)試 6152175.可安裝性和可恢復(fù)性測(cè)試 61326016.文檔測(cè)試 6217333lec7.3移動(dòng)應(yīng)用測(cè)試 63123581.報(bào)告中發(fā)現(xiàn)的缺陷 6385312.缺陷 64lec1測(cè)試概述軟件測(cè)試SoftwareTestingFault,Error&FailureSoftwareFault:Astaticdefectinthesoftware(i.e.,defect)軟件中的靜態(tài)缺陷(即缺陷)SoftwareError:Anincorrectinternalstatethatisthemanifestationofsomefault一種不正確的內(nèi)部狀態(tài),它是某些故障的表現(xiàn)SoftwareFailure:External,incorrectbehaviorwithrespecttotherequirementsorotherdescriptionoftheexpectedbehavior關(guān)于預(yù)期行為的要求或其他描述的外部的不正確行為Bug:informaltermforfault/failurefault/failure的非正式術(shù)語(yǔ)PIEModel餅圖模型執(zhí)行/可達(dá)性:必須到達(dá)程序中包含故障的一個(gè)或多個(gè)位置感染:程序的狀態(tài)一定不正確傳播:受感染的狀態(tài)必須傳播以導(dǎo)致程序的某些輸出不正確討論:測(cè)試可能無(wú)法執(zhí)行故障位置執(zhí)行錯(cuò)誤的測(cè)試可能不會(huì)產(chǎn)生錯(cuò)誤錯(cuò)誤可能不會(huì)傳播到輸出練習(xí)Isthereisafault,whichcannotberevealedbyanytest?是否存在無(wú)法通過(guò)任何測(cè)試發(fā)現(xiàn)的故障?Isitafaultornotafault?PleaseconstructasimpleprogramP(withafault)and3tests(t1,t2,t3),s.t.①t1executesthefault,butnoerror②t2(executesthefaultand)producesanerror,butnofailure③t3producesafailure術(shù)語(yǔ)TerminologyTestCase測(cè)試用例TestCase包含:TestInput(TestData)、TestOracle(Expectedoutput)、Others(Environment)Testoracle給定輸入的軟件預(yù)期輸出測(cè)試用例的一部分自動(dòng)測(cè)試中最困難的問(wèn)題:測(cè)試Oracle生成Testfixture被測(cè)軟件的一種固定狀態(tài),用作運(yùn)行測(cè)試的基準(zhǔn);也稱(chēng)為測(cè)試上下文,例如:用一組已知的特定數(shù)據(jù)加載數(shù)據(jù)庫(kù)準(zhǔn)備輸入數(shù)據(jù)以及設(shè)置/創(chuàng)建偽造或模擬對(duì)象Testsuite&Testscript測(cè)試套件&測(cè)試腳本Testsuite測(cè)試用例集通常,這些測(cè)試用例具有相似的先決條件和配置通??梢园错樞蛞黄疬\(yùn)行用于不同目的的不同測(cè)試套件某些平臺(tái),某些功能,性能……Testscript自動(dòng)運(yùn)行一系列測(cè)試用例或測(cè)試套件的腳本Testdriver測(cè)試驅(qū)動(dòng)可以加載測(cè)試用例集合或測(cè)試套件的軟件框架它還可以處理預(yù)期輸出和實(shí)際輸出之間的配置和比較Testadequacy需要一種策略來(lái)確定何時(shí)完成了足夠的工作充分性標(biāo)準(zhǔn):一個(gè)規(guī)則,可讓我們判斷某個(gè)軟件的一組測(cè)試數(shù)據(jù)的充分性example:testcoverage測(cè)試覆蓋率評(píng)估測(cè)試代碼百分比的度量聲明范圍分支機(jī)構(gòu)覆蓋率一些對(duì)比Testingvs.DebuggingTestingistorevealabugbyexecutingtestandobservingfailure.測(cè)試是通過(guò)執(zhí)行測(cè)試并觀察故障來(lái)發(fā)現(xiàn)錯(cuò)誤Debuggingistofixabugbylocating,understandingandcorrectingfault.調(diào)試是通過(guò)定位、理解和糾正錯(cuò)誤來(lái)修復(fù)錯(cuò)誤Verificationvs.Validation驗(yàn)證Verification:對(duì)產(chǎn)品、服務(wù)或系統(tǒng)是否符合規(guī)定、要求、規(guī)范或強(qiáng)加條件的評(píng)估。這通常是一個(gè)內(nèi)部過(guò)程Validation:產(chǎn)品、服務(wù)或系統(tǒng)滿(mǎn)足顧客和其他確定的利益相關(guān)者的需求的保證。它通常涉及外部客戶(hù)的接受度和適用性StaticTestingvs.DynamicTestingStaticTesting靜態(tài)測(cè)試withoutexecutingprograms不執(zhí)行程序DynamicTestingwithexecutingprogramsBlack-boxTestingvs.White-boxTestingBlack-boxTestingwithoutsourcecode源代碼White-boxTestingwithsourcecodeGray-boxTesting=Black-boxTesting+White-boxTestinglec2單元測(cè)試UnitTesting概述GranularityofTesting測(cè)試粒度單元測(cè)試:每個(gè)模塊的測(cè)試集成測(cè)試:測(cè)試模塊之間的交互系統(tǒng)測(cè)試:開(kāi)發(fā)人員將系統(tǒng)作為一個(gè)整體進(jìn)行測(cè)試驗(yàn)收測(cè)試:由沒(méi)有正式測(cè)試用例的客戶(hù)根據(jù)用戶(hù)需求驗(yàn)證系統(tǒng)單元測(cè)試軟件測(cè)試的基本模塊函數(shù),類(lèi),組件發(fā)現(xiàn)的典型問(wèn)題本地?cái)?shù)據(jù)結(jié)構(gòu)演算法邊界條件錯(cuò)誤處理單元測(cè)試的作用分而治之的方法將系統(tǒng)拆分為多個(gè)單元單獨(dú)調(diào)試單元縮小可能存在錯(cuò)誤的地方不追逐其他單元的錯(cuò)誤如何做單元測(cè)試分層構(gòu)建系統(tǒng)從不依賴(lài)其他的類(lèi)開(kāi)始在已經(jīng)測(cè)試過(guò)的類(lèi)上繼續(xù)測(cè)試好處避免編寫(xiě)模擬類(lèi)在測(cè)試模塊時(shí),它所依賴(lài)的模塊是可靠的UnittestframeworkxUnit、JUnitJUnit測(cè)試通過(guò)測(cè)試程序自動(dòng)驗(yàn)證可以自己編寫(xiě)這樣的測(cè)試程序,或使用測(cè)試工具支持,例如JUnitJUnit一個(gè)簡(jiǎn)單,靈活,易于使用的開(kāi)放源代碼且實(shí)用的Java單元測(cè)試框架可以處理大量的測(cè)試用例集JUnitTestSuite測(cè)試套件:一組測(cè)試(或其他測(cè)試套件)將測(cè)試組織到更大的測(cè)試集中幫助自動(dòng)化測(cè)試lec3白盒測(cè)試lec3.1圖論與結(jié)構(gòu)化覆蓋GraphinTesting軟件測(cè)試的圖概述圖可能是計(jì)算機(jī)科學(xué)中最常用的結(jié)構(gòu)ControlFlowGraph控制流程圖112354687Graphscomefrommanysources需求說(shuō)明書(shū)、有限狀態(tài)機(jī)、用例圖、活動(dòng)圖FormalDefinitionofGraphs1練習(xí)1Isasinglevertexagraph?一個(gè)頂點(diǎn)是圖嗎?CanEbeaninfiniteset?E可以是一個(gè)無(wú)限集嗎?討論P(yáng)ath路徑PathPath:Asequenceofvertices–[v1,v2,…,vn]路徑:頂點(diǎn)序列Eachpairofverticesisanedge每對(duì)頂點(diǎn)都是一條邊Length:Thenumberofedges長(zhǎng)度:邊的數(shù)目Asinglevertexisapathoflength0單個(gè)頂點(diǎn)是長(zhǎng)度為0的路徑Subpath:Asubsequenceofverticesinp子路徑:p中頂點(diǎn)的子序列TestPath測(cè)試路徑:從初始頂點(diǎn)開(kāi)始,到最終頂點(diǎn)結(jié)束的路徑11327465p1=v1v2v4v5v7p2=v1v2v4v6v7p3=v1v3v4v5v7p4=v1v3v4v6v7測(cè)試路徑代表測(cè)試用例的執(zhí)行一些測(cè)試路徑可以由許多測(cè)試執(zhí)行某些測(cè)試路徑無(wú)法通過(guò)任何測(cè)試執(zhí)行TestandTestPathpath(t):測(cè)試t執(zhí)行的測(cè)試路徑path(T):由測(cè)試集T執(zhí)行的測(cè)試路徑集每個(gè)測(cè)試僅執(zhí)行一個(gè)測(cè)試路徑GraphCoverageCriteria圖覆蓋準(zhǔn)則Reach如果存在以v1開(kāi)頭并以v2結(jié)尾的路徑,則v1可以到達(dá)v2如果存在一條以v1開(kāi)頭并以G'中的頂點(diǎn)結(jié)尾的路徑,則v1可以到達(dá)G’11327465v1canreachv5v2canreachv6v2canreachG’V’={v4,v5,v6},E’={(v4,v5),(v4,v6)}Syntacticreach:Apathexistsinthegraph語(yǔ)法范圍:圖中存在一條路徑Semanticreach:Atestexiststhatcanexecutethatpath語(yǔ)義范圍:存在一個(gè)可以執(zhí)行該路徑的測(cè)試v2cansyntactically語(yǔ)法上reachv5v2maynotsemantically語(yǔ)義上reachv5Cover如果v在p中,則測(cè)試路徑p覆蓋頂點(diǎn)v如果e在p中,則測(cè)試路徑p覆蓋邊e如果p'在p中,則測(cè)試路徑p覆蓋子路徑p'若p1=v1v2v4v5v7p1coversv5p1coversv4v5p1doesnotcoverv4v6①GraphCoverage在測(cè)試中使用的圖形如下:將軟件模型開(kāi)發(fā)為圖形要求測(cè)試覆蓋特定的頂點(diǎn)、邊或子路徑集②StructuralCoverage結(jié)構(gòu)覆蓋在圖上僅根據(jù)頂點(diǎn)和邊定義源代碼需求規(guī)格設(shè)計(jì)圖③DataFlowCoverage要求對(duì)圖進(jìn)行引用變量的注釋11327465i<5x>yx=i+1TestCriteria測(cè)試標(biāo)準(zhǔn)測(cè)試要求(TR):描述測(cè)試路徑的屬性測(cè)試標(biāo)準(zhǔn):定義測(cè)試要求的規(guī)則滿(mǎn)足度:給定一個(gè)準(zhǔn)則C的一組測(cè)試需求TR,一組測(cè)試T滿(mǎn)足圖上的C當(dāng)且僅當(dāng)對(duì)于TR中的每個(gè)測(cè)試需求,路徑(T)中有一個(gè)測(cè)試路徑滿(mǎn)足測(cè)試需求TRStructuralCoverage結(jié)構(gòu)化覆蓋VertexCoverage(VC)頂點(diǎn)覆蓋率(VC)當(dāng)且僅當(dāng)對(duì)于V中的每個(gè)語(yǔ)法上可到達(dá)的頂點(diǎn)v,在path(T)中存在一條路徑p使得p覆蓋v時(shí),測(cè)試集T滿(mǎn)足圖G上的頂點(diǎn)覆蓋TR包含G中的每個(gè)可達(dá)頂點(diǎn)EdgeCoverage(EC)邊緣覆蓋率(EC)當(dāng)且僅當(dāng)對(duì)于E中每個(gè)句法可到達(dá)的邊e,在path(T)中存在一條路徑p使得p覆蓋e時(shí),測(cè)試集T滿(mǎn)足圖G的邊緣覆蓋率TR包含G中的每個(gè)可到達(dá)邊緣23231VertexCoverage:TR={v1,v2,v3}TestPath=[v1,v2,v3]EdgeCoverage:TR={(v1,v2),(v1,v3),(v2,v3)}TestPaths=[v1,v2,v3][v1,v3]CoveringMultipleEdges覆蓋多個(gè)邊邊對(duì)覆蓋需要一對(duì)邊邊對(duì)覆蓋(EPC):TR包含每一條長(zhǎng)度不超過(guò)2(含2)的可達(dá)路徑,單位為G完全路徑覆蓋(CPC):TR包含G中的所有路徑n路徑覆蓋(nPC):TR包含每個(gè)長(zhǎng)度為n(含n)的可達(dá)路徑,單位為GVC(n=0),EC(n=1),EPC(n=2),CPC(n=∞)11327465Subsume包含C1包含C2,表示為C1≥C2

對(duì)于任何T,如果T滿(mǎn)足C1意味著T滿(mǎn)足C2如果n1≧n2則n1PC≧n2PCC1≥C2并不意味著滿(mǎn)足C1的T1可以檢測(cè)到由T2檢測(cè)到的滿(mǎn)足C2的任何故障StructuralCoverageExample結(jié)構(gòu)覆蓋率示例ControlFlowGraphandItsCoverage控制流圖及其覆蓋CodeCoverage代碼覆蓋率代碼覆蓋率控制流覆蓋聲明范圍分行覆蓋率路徑覆蓋率覆蓋率收集工具EclEmma獲得代碼覆蓋率:一種常見(jiàn)的方法是將程序抽象成圖形圖:通常是控制流圖(CFG)節(jié)點(diǎn)覆蓋率:執(zhí)行每條語(yǔ)句邊緣覆蓋:執(zhí)行每個(gè)分支ControlFlowGraph控制流程圖控制流圖(CFG)是使用圖表示法表示程序在執(zhí)行期間可能遍歷的所有路徑①CFG:if②CFG:if-return③CFG:while④CFG:do⑤CFG:for⑥CFG:breakandcontinue⑦CFG:switchControlFlowGraphCFG-basedCoverage基于CFG的覆蓋范圍若x=0,a=true,b=false①CFG-basedCoverage:StatementCoverage聲明覆蓋范圍測(cè)試覆蓋語(yǔ)句的百分比SCov=4/5=80%②CFG-basedCoverage:BranchCoverage分支覆蓋測(cè)試覆蓋的分支百分比,考慮每個(gè)條件語(yǔ)句的false和true分支BCov=2/4=50%聲明覆蓋分支覆蓋③CFG-basedCoverage:PathCoverage路徑覆蓋率測(cè)試覆蓋的路徑百分比,考慮所有可能的程序執(zhí)行路徑PCov=1/4=25%CFG-basedCoverage:Comparison①Statement聲明CoverageVS.Branch分支Coverage如果一個(gè)測(cè)試套件達(dá)到100%的分支覆蓋,那么它必須達(dá)到100%的聲明覆蓋不在分支中的語(yǔ)句將被任何測(cè)試覆蓋所有其他語(yǔ)句都在某個(gè)分支中分支覆蓋嚴(yán)格包含聲明覆蓋②Branch分支CoverageVS.Path路徑Coverage如果測(cè)試套件達(dá)到100%的路徑覆蓋率,則必須達(dá)到100%的分支覆蓋率所有分支組合均已覆蓋,表明所有分支均已覆蓋路徑覆蓋嚴(yán)格包含分支覆蓋③總結(jié)路徑覆蓋率嚴(yán)格包含分支覆蓋嚴(yán)格包含聲明覆蓋CFG-basedCoverage:Effectiveness有效性大約65%的錯(cuò)誤可以在單元測(cè)試中捕獲單元測(cè)試以控制流測(cè)試方法為主導(dǎo)語(yǔ)句和分支測(cè)試在控制流測(cè)試中占主導(dǎo)地位CFG-basedCoverage:Limitation某些方面的100%覆蓋率永遠(yuǎn)不能保證無(wú)bug軟件CoverageCollection:Mechanism機(jī)制源代碼已插入指令(源代碼/二進(jìn)制代碼)寫(xiě)入跟蹤文件的日志代碼插入到每個(gè)分支、語(yǔ)句等中執(zhí)行插入指令的代碼時(shí),覆蓋率信息將寫(xiě)入跟蹤文件lec3.2主路徑和基本路徑覆蓋PrimePathCoverage主路徑覆蓋LoopsinGraphs圖中的循環(huán)如果一個(gè)圖包含一個(gè)循環(huán),那么它有無(wú)限多條路徑因此,CPC是不可行的概念①簡(jiǎn)單路徑:如果沒(méi)有節(jié)點(diǎn)出現(xiàn)多次,則從節(jié)點(diǎn)ni到nj的路徑是簡(jiǎn)單的,除非第一個(gè)和最后一個(gè)節(jié)點(diǎn)可能相同沒(méi)有內(nèi)部循環(huán)循環(huán)是一條簡(jiǎn)單的路徑②主路徑:一條簡(jiǎn)單路徑,它不會(huì)作為任何其他簡(jiǎn)單路徑的正確子路徑出現(xiàn)PrimePathCoverage主路徑覆蓋一個(gè)簡(jiǎn)單、優(yōu)雅和有限的標(biāo)準(zhǔn),它要求執(zhí)行循環(huán)和跳過(guò)循環(huán)主路徑覆蓋(PPC):TR包含G中的每個(gè)基本路徑將覆蓋所有長(zhǎng)度的路徑0,1…也就是說(shuō),它包含節(jié)點(diǎn)和邊覆蓋PPC不包含EPC如果頂點(diǎn)v本身有一條邊,EPC將需要[v,v,v'][v,v,v']不是素?cái)?shù)RoundTrip往返路徑:在同一節(jié)點(diǎn)上開(kāi)始和結(jié)束的基本路徑簡(jiǎn)單往返覆蓋率(SRTC):TR包含至少一個(gè)往返路徑,用于開(kāi)始和結(jié)束往返路徑的G種每個(gè)可到達(dá)頂點(diǎn)完全往返覆蓋(CRTC):TR包含G中每個(gè)可達(dá)頂點(diǎn)的所有往返路徑這些條件會(huì)忽略不在往返中的節(jié)點(diǎn)和邊也就是說(shuō),它們不包含邊對(duì),邊或頂點(diǎn)覆蓋率Simple&PrimePathExamplePrimePaths[1,2,3,4,7][1,2,3,5,7]Executeloop0times[1,2,3,5,6][1,3,4,7][1,3,5,7]Executelooponce[1,3,5,6][6,5,7][6,5,6]Executeloopmorethanonce[5,6,5]練習(xí)Howtogenerateteststocoverallprimepath?如何生成覆蓋所有主路徑的測(cè)試?Aresomeprimepathsinfeasible?一些主路徑是不可行的嗎?Primepath:themaximal-longsimplepath主路徑:最大長(zhǎng)度的簡(jiǎn)單路徑BasicPathCoverage基本路徑覆蓋概述McCabe提出的一種測(cè)試機(jī)制分支覆蓋和所有路徑覆蓋之間的測(cè)試標(biāo)準(zhǔn)滿(mǎn)足分支測(cè)試要求的測(cè)試;還測(cè)試可用于通過(guò)計(jì)算機(jī)程序構(gòu)造任意路徑的所有獨(dú)立路徑路徑①I(mǎi)ndependentPath獨(dú)立路徑通過(guò)系統(tǒng)的路徑僅在其包含某些頂點(diǎn)或邊未被其他路徑覆蓋的情況下,才與其他路徑無(wú)關(guān)路徑1[1,2,3,4,5,6,8]路徑2[1,2,3,5,6,7,8]②LinearlyIndependentPath線(xiàn)性獨(dú)立路徑[e1,e2,e3,e4,e5,e6,e7,e8,e9][1,1,0,0,1,1,0,0,1][1,1,1,1,1,1,0,0,1][1,1,0,0,1,1,1,1,1][1,1,1,1,1,1,1,1,1][1,1,2,2,1,1,2,2,1]……從線(xiàn)性代數(shù)可知,每個(gè)矩陣都有一個(gè)唯一的秩(線(xiàn)性獨(dú)立行數(shù)),該秩小于或等于列數(shù)③TheNumberofLinearlyIndependentPaths線(xiàn)性獨(dú)立路徑數(shù)線(xiàn)性獨(dú)立路徑的個(gè)數(shù)就是這個(gè)矩陣的秩這個(gè)矩陣的秩正是圖的圈復(fù)雜度④McCabe’sBasicPathTestingMcCabe的基本路徑測(cè)試生成控制流程圖計(jì)算圈復(fù)雜度選擇一組基本路徑生成基本路徑的測(cè)試BasicPathCoverage練習(xí)所有路徑測(cè)試>=BPT>=分支測(cè)試McCabe圈復(fù)雜度基本路徑(線(xiàn)性獨(dú)立)lec3.3數(shù)據(jù)流覆蓋和事件流覆蓋DataFlow數(shù)據(jù)流DataFlow超越結(jié)構(gòu)目標(biāo):嘗試確保正確計(jì)算和使用值定義(def):將變量值存儲(chǔ)到內(nèi)存中的位置用途:訪(fǎng)問(wèn)變量值的位置defs中給出的值應(yīng)至少達(dá)到一種,某些或所有可能的用途SetsofDefandUse定義和使用集def(n)或def(e):由節(jié)點(diǎn)n或邊e定義的一組變量use(n)或use(e):節(jié)點(diǎn)n或邊e所使用的變量集定義①DUpair對(duì):一對(duì)位置(li,lj),使得變量v在li處定義并在lj處使用②Def-clear:如果變量v在路徑中的任何節(jié)點(diǎn)或邊上均未賦予其他值,則對(duì)于變量v,從li到lj的路徑是def-clear的到達(dá)率:如果從li到lj相對(duì)于v有def-clear的路徑,則li處的v的def到達(dá)lj處③dupath:

一個(gè)簡(jiǎn)單的子路徑是def-clear,和v的def到v的用法相關(guān)du(ni,nj,v)t從ni到nj的du路徑集du(ni,v)t從ni開(kāi)始的du路徑集DataFlowCoverageCriteria數(shù)據(jù)流覆蓋標(biāo)準(zhǔn)全定義覆蓋率(ADC):對(duì)于每組du-pathsS=du(n,v),TR在S中至少包含一條路徑d所有使用覆蓋率(AUC):對(duì)于要使用S=du(ni,nj,v)的每組du路徑,TR至少包含S中的一條路徑d全du-paths覆蓋(ADUPC):對(duì)于每個(gè)集合S=du(ni,nj,v),TR包含S中的每個(gè)路徑dDataFlowTestingControlFlowGraph控制流程圖VariableListofNodesEdgeUse(1,

2)(2,

3)(3,

4){

i,

length

}(4,

3)(3,

5){

i,

length

}(5,

6)(6,

7){

i,

length

}(7,

6)(6,

8){

i,

length

}DU-PathsvariableDU

PairsDU

Pathsnumbers(1,

4)(1,

5)(1,

7)[

1,

2,

3,

4

][

1,

2,

3,

5

][

1,

2,

3,

5,

6,

7

]length(1,

5)(1,

8)(1,

(3,4))(1,

(3,5))(1,

(6,7))(1,

(6,8))[

1,

2,

3,

5

][

1,

2,

3,

5,

6,

8

][

1,

2,

3,

4

][

1,

2,

3,

5

][

1,

2,

3,

5,

6,

7

][

1,

2,

3,

5,

6,

8

]

var(8,

8)No

path

neededsum(1,

4)(1,

5)(4,

4)(4,

5)[

1,

2,

3,

4

][

1,

2,

3,

5

][

4,

3,

4

][

4,

3,

5

]variableDU

PairsDU

Pathsmean(5,

7)(5,

8)[

5,

6,

7

][

5,

6,

8

]varsum(5,

7)(5,

8)(7,

7)(7,

8)[

5,

6,

7

][

5,

6,

8

][

7,

6,

7

][

7,

6,

8

]i(2,

4)(2,

(3,4))(2,

(3,5))(4,

4)(4,

(3,4))(4,

(3,5))(5,

7)(5,

(6,7))(5,

(6,8))(7,

7)(7,

(6,7))(7,

(6,8))[

2,

3,

4

][

2,

3,

4

][

2,

3,

5

][

4,

3,

4

][

4,

3,

4

][

4,

3,

5

][

5,

6,

7

][

5,

6,

7

][

5,

6,

8

][

7,

6,

7

][

7,

6,

7

][

7,

6,

8

]EventFlowGraph事件流圖定義:事件流圖(EFG)是一個(gè)三元組M=?V,I,E?,其中:1.V是一組表示對(duì)象的所有事件的頂點(diǎn)2.I?V是一組初始頂點(diǎn)3.E?V×V是頂點(diǎn)之間的一組邊。(vi,vj)∈E如果vj可以在vi之后立即執(zhí)行GUITAR基于EFG的自動(dòng)化測(cè)試框架四個(gè)子系統(tǒng):GUIRipper:GUI對(duì)象提取GUIStructure2Graph:EFG構(gòu)造TestCaseGenerator:基于EFG的測(cè)試生成GUIReplayer:運(yùn)行測(cè)試CoverageCriteria覆蓋率標(biāo)準(zhǔn)基于圖形的覆蓋率活動(dòng)范圍事件對(duì)覆蓋率路徑覆蓋率根據(jù)已執(zhí)行功能的事件覆蓋率語(yǔ)義交互事件的覆蓋雙向、三向覆蓋lec3.4變異測(cè)試和缺陷測(cè)試MutationTesting變異測(cè)試MutationTesting通過(guò)創(chuàng)建程序的許多版本(稱(chēng)為變異體)將錯(cuò)誤引入程序每個(gè)變異體都包含一個(gè)缺陷測(cè)試用例應(yīng)用于原始程序和變異程序目的是使變異程序失敗,從而證明測(cè)試用例的有效性變異測(cè)試是一種將錯(cuò)誤插入程序中以測(cè)試是否檢測(cè)到錯(cuò)誤,從而使測(cè)試有效或無(wú)效的方法變異測(cè)試是一種測(cè)試技術(shù),致力于衡量測(cè)試用例的充分性變異測(cè)試應(yīng)該與傳統(tǒng)的測(cè)試技術(shù)結(jié)合使用,而不是代替它們MutantPrograms變異測(cè)試包括創(chuàng)建一組被測(cè)試程序的變異程序每一個(gè)變異體與原來(lái)的程序有一個(gè)不同的突變變異是對(duì)程序語(yǔ)句進(jìn)行的單個(gè)語(yǔ)法更改①CategoriesofMutationOperators變異因子的類(lèi)別OperandMutationOperators操作數(shù)突變運(yùn)算符:用另一個(gè)操作數(shù)或常量替換單個(gè)操作數(shù)。例如,if(5>y)Replacingxbyconstant5.if(x>5)Replacingybyconstant5.if(y>x)Replacingxandywitheachother.ExpressionMutationOperators表達(dá)式變異操作符:Replaceanoperatororinsertnewoperators.E.g.,if(x==y)if(x>=y) Replacing==by>=.if(x==++y) Inserting++.E.g.,ifalloperatorsare{+,-,*,/}thenthefollowingexpressiona=b*(c-d)willgenerate6mutants:3byreplacing*3byreplacing-.Object-OrientedMutationOperators面向?qū)ο笞儺愐蜃幼R(shí)別變異算子是困難的,因?yàn)閭鹘y(tǒng)的變異技術(shù)不能輕易地?cái)U(kuò)展到面向?qū)ο蟮恼Z(yǔ)言。它們可能導(dǎo)致無(wú)法編譯的代碼R.T.Alexander等人(2002)使用對(duì)“對(duì)象突變引擎”的調(diào)用來(lái)突變測(cè)試中的類(lèi)他們的標(biāo)準(zhǔn)庫(kù)包括以下內(nèi)容:CollectionMutator-刪除,添加,更改訂單ListMutator-最后刪除,更改順序VectorMutator-最后刪除MapMutator-首先刪除,最后刪除,清空IteratorMutator-跳到下一個(gè)對(duì)象EquivalentMutant等效變異體可能存在尚無(wú)法殺死的突變體,這些突變體稱(chēng)為等價(jià)突變體盡管在語(yǔ)法上有所不同,但通過(guò)測(cè)試無(wú)法區(qū)分這些突變體因此,必須“手動(dòng)”檢查它們MutationScore變異分?jǐn)?shù)一組測(cè)試用例的變異分?jǐn)?shù)是被測(cè)試數(shù)據(jù)殺死的非等效變異的百分比變異分?jǐn)?shù)=100*K/(T-E)K=被殺死的突變體數(shù)量T=總突變體數(shù)E=等效突變體的數(shù)量如果一組測(cè)試用例的變異分?jǐn)?shù)為100%,則該測(cè)試用例是充足變異的討論:等價(jià)變異體的不確定性,以及“手工”檢查的成本Hypotheses假設(shè)稱(chēng)職程序員假說(shuō)被測(cè)模塊已經(jīng)由合格的程序員或設(shè)計(jì)師編寫(xiě)。因此,如果模塊不正確,則與正確模塊的區(qū)別最多為幾個(gè)小故障耦合效應(yīng)僅通過(guò)簡(jiǎn)單的故障就可以將所有模塊與正確的模塊區(qū)分開(kāi)的測(cè)試套件是如此敏感,以至于它也隱式地區(qū)分了更復(fù)雜的故障。Conclusion變異是單個(gè)語(yǔ)法變異測(cè)試用于評(píng)估測(cè)試的充分性Fault-basedTesting基于缺陷的測(cè)試Fault-basedTesting設(shè)計(jì)測(cè)試以揭示種子故障證明沒(méi)有某些故障揭示錯(cuò)誤我們想通過(guò)評(píng)估測(cè)試套件發(fā)現(xiàn)種子錯(cuò)誤的程度來(lái)判斷測(cè)試套件的有效性變異是廣泛使用的基于缺陷的測(cè)試方法之一變異:?jiǎn)我徽Z(yǔ)法變更(a|b)&c(a|b)&!ca|(b&c)(a&b)&cFaultClassE=(a|b)&c①OperatorFaultClass操作員操作員參考故障OperatorReferenceFault(ORF)邏輯連接詞“&”的出現(xiàn)被“|”代替或相反亦然E’=(a&b)&c表達(dá)否定錯(cuò)誤ExpressionNegationFault(ENF)子表達(dá)式(條件除外)將替換為其否定E’=!(a|b)&c可變負(fù)故障VariableNegationFault(VNF)E’=(a|b)&!c條件的出現(xiàn)被其否定所代替關(guān)聯(lián)換檔故障AssociativeShiftFault(ASF)E’=a|b&cASF是由于對(duì)操作員評(píng)估優(yōu)先級(jí)的誤解而省略了方括號(hào)②OperandFaultClass操作數(shù)缺少可變故障MissingVariableFault(MVF)E’=(a|b)條件的出現(xiàn)被省略可變參考故障VariableReferenceFault(VRF)E’=(a|b)&a一種情況的出現(xiàn)被另一種可能出現(xiàn)的情況所替代子句合并錯(cuò)誤ClauseConjunctionFault(CCF)E’=(a|b)&(c&a))條件c的出現(xiàn)由c&c’代替子句析取錯(cuò)誤ClauseDisjunctionFault(CDF)E’=(a|b)&(c|a))卡在0故障Stuck-At-0Fault(SA0)E’=(0|b)&c條件的出現(xiàn)被替換為0卡在1故障Stuck-At-1Fault(SA1)E’=(1|b)&cTestCondition試驗(yàn)條件Testcondition:E⊕E’AtestcasetdetectsthemutantE’ofE,iftsatisfiesthetestconditionE⊕E’.如果t滿(mǎn)足測(cè)試條件E⊕E',則測(cè)試用例t將檢測(cè)到E的變異E'E=(a|b)&cVNFE’=((a|b)&!c)(a=1,b=0,c=1):E=1,E’=0(a=0,b=1,c=1):E=1,E’=0E⊕E’≈a|bImplicationofTestConditions測(cè)試條件的含義Implication:(E⊕E1)|=(E⊕E2),denotedbyE1|=EE2蘊(yùn)含:(E⊕E1)|=(E⊕E2),由E1|=EE2表示E1isstrongerthanE2ImplicationRelation蘊(yùn)涵關(guān)系FAisstrongerthanFB,ifforany(mutant)faultE1inFB,thereexistsone(mutant)faultE2inFA,suchthatE1|=EE2,thenFA|=FBFA比FB強(qiáng),如果FB中的任一(變異)故障E1,F(xiàn)A中存在一個(gè)(變異)故障E2,使得E1|=E2,則FA|=FBFaultClassHierarchy1故障等級(jí)1lec3.5邏輯覆蓋LogicCoverage邏輯覆蓋DecisionCoverage決策覆蓋率DecisionCoverage(DC):

Executingtrueandfalseofdecision.執(zhí)行決策的真假((x>5)&&(y>0)):trueandfalse//{(6,1),(1,1)}--DCintfoo(intx,inty){ intz=y; if((x>5)&&(y>0)){ z=x;} returnx*z;}ConditionCoverage條件覆蓋率ConditionCoverage(CC):

Executingtrueandfalseofeachcondition執(zhí)行每個(gè)條件的true和false(x>5):trueandfalse(y>0):trueandfalse//{(6,0),(0,1)}--CCintfoo(intx,inty){ intz=y; if((x>5)&&(y>0)){ z=x;} returnx*z;}Subsume包含C1subsumesC2,denoted表示byC1≥C2DC≥SCCCnot≥SCDCnot≥CC,CCnot≥DCCondition/DecisionCoverageCondition/DecisionCoverage(C/DC):CombingDCandCC條件/決策覆蓋(C/DC):結(jié)合DC和CCC/DC≥CCC/DC≥DC//??intfoo(intx,inty){ intz=y; if((x>5)&&(y>0)){ z=x;} returnx*z;}MultipleConditionCoverage多條件覆蓋多條件覆蓋(MCC)報(bào)告布爾表達(dá)式的每種可能組合是否發(fā)生滿(mǎn)足條件的多個(gè)條件所必需的測(cè)試用例基本上由該條件的邏輯運(yùn)算符真值表給出MCC//??intfoo(intx,inty){ intz=y; if((x>5)&&(y>0)){ z=x;} returnx*z;}MC/DCModifiedCondition/DecisionCoverage修改的條件/決策覆蓋率MC/DCorMCDC:

Executingtheindependenttrueandfalseoutcomesofeachcondition.執(zhí)行每個(gè)條件的獨(dú)立真假結(jié)果MC/DC≥C/DCMC/DC//??intfoo(intx,inty){ intz=y; if((x>5)&&(y>0)){ z=x;} returnx*z;}MC/DC:Discussion修改后的條件/決策范圍設(shè)計(jì)用于包含不會(huì)短路的邏輯運(yùn)算符的語(yǔ)言C,C++和Java中的短路邏輯運(yùn)算符僅在其結(jié)果會(huì)影響包圍決策時(shí)評(píng)估條件MC/DC將受到程序中決策結(jié)構(gòu)的影響MC/DC練習(xí)Pleaseconstructadecision,inwhichaconditionhasnoindependentoutcome.請(qǐng)構(gòu)造一個(gè)條件沒(méi)有獨(dú)立結(jié)果的決策Discussionlec4自動(dòng)化測(cè)試自動(dòng)化軟件測(cè)試測(cè)試用例生成測(cè)試用例選擇RegressionTestSelection針對(duì)修改部分的測(cè)試TestSuiteReduction針對(duì)測(cè)試需求的用例集約簡(jiǎn)TestCasePrioritization針對(duì)測(cè)試需求的用例排序測(cè)試用例選擇假設(shè)測(cè)試用例過(guò)多,無(wú)法在指定時(shí)間執(zhí)行完云計(jì)算的出現(xiàn)舊的測(cè)試用例能夠在新版本軟件執(zhí)行測(cè)試用例修復(fù)測(cè)試用例擴(kuò)增測(cè)試用例修復(fù)EFG模型的測(cè)試腳本修復(fù)工業(yè)化測(cè)試工具腳本對(duì)象映射問(wèn)題完備的EFG模型非完備EFG,無(wú)法判斷對(duì)象是漏識(shí)別還是已刪除lec5黑盒測(cè)試lec5.1隨機(jī)測(cè)試BlackboxTesting黑盒測(cè)試RandomTesting隨機(jī)測(cè)試測(cè)試用例是完全隨機(jī)生成的[SwebokV3.0]輸入域必須是已知的在輸入域內(nèi)選取隨機(jī)點(diǎn)自動(dòng)化ProblemsinRTDefineinputdomain定義輸入域Randommechanism隨機(jī)機(jī)制RandomnessandIntegrityService()隨機(jī)性和完整性服務(wù)()DiversityRandominUniformDistribution均勻分布中的隨機(jī)AdaptiveRandomTesting自適應(yīng)隨機(jī)測(cè)試ARTAlgorithm自適應(yīng)隨機(jī)測(cè)試算法隨機(jī)生成輸入t,運(yùn)行t,將t加到Twhile(未達(dá)到停止條件)隨機(jī)生成k個(gè)候選輸入c1,…ckforeachcandidateci計(jì)算距T的最小距離diendfor選擇一個(gè)最小距離的候選trunt,addttoTendwhileProblemsinARTDistanceOverheadCurseofDimensionality維度TypicalPatternsofFailure-causingRegions故障發(fā)生區(qū)域的典型模式lec5.2等價(jià)-邊界-組合測(cè)試EquivalencePartitioning等價(jià)類(lèi)劃分EquivalencePartitioning可以平等地應(yīng)用于多個(gè)測(cè)試級(jí)別單元一體化系統(tǒng)相對(duì)容易應(yīng)用,無(wú)需自動(dòng)化易于調(diào)整程序,以獲取更多或更少的測(cè)試InputDomains輸入域程序的輸入域包含該程序的所有可能輸入即使是小型程序,輸入域也是如此之大,以至于它可能是無(wú)限的從根本上講,測(cè)試是從輸入域中選擇有限的一組值輸入?yún)?shù)定義輸入域的范圍方法的參數(shù)從文件讀取數(shù)據(jù)全局變量用戶(hù)級(jí)輸入每個(gè)輸入?yún)?shù)的域被劃分為多個(gè)區(qū)域從每個(gè)區(qū)域中至少選擇一個(gè)值PartitioningDomains劃分域域DD的劃分方案pp定義了一組塊b1,b2,...bn劃分必須滿(mǎn)足兩個(gè)屬性:①塊必須成對(duì)不相交(無(wú)重疊)②這些塊一起覆蓋了域D(完整)bb1b2b3Assumptions假設(shè)Equivalence等價(jià)TwoApproaches兩種方法①I(mǎi)nterface-basedapproach基于接口的方法直接從單個(gè)輸入?yún)?shù)開(kāi)發(fā)特性最簡(jiǎn)單的應(yīng)用在某些情況下,可以部分自動(dòng)化②Functionality-basedapproach基于功能的方法從被測(cè)程序的行為觀出發(fā),開(kāi)發(fā)出特征更難開(kāi)發(fā)--需要更多的設(shè)計(jì)努力可能會(huì)導(dǎo)致更好的測(cè)試,或更少的測(cè)試同樣有效Interface-BasedApproach基于接口的方法機(jī)械地單獨(dú)考慮每個(gè)參數(shù)這是一種簡(jiǎn)單的建模技術(shù),主要依靠的是語(yǔ)法忽略參數(shù)之間的關(guān)系TriTyp:三個(gè)int參數(shù)合理的特性:邊與零的關(guān)系TriTyphasthreeintegerinputs①FirstCharacterizationofTriTyp’sInputsTriTyp輸入的第一個(gè)特征Characteristicb1b2b3q1

=

“Relation

of

Side

1

to

0”greater

than

0equal

to

0less

than

0q2

=

“Relation

of

Side

2

to

0”greater

than

0equal

to

0less

than

0q3

=

“Relation

of

Side

3

to

0”greater

than

0equal

to

0less

than

0Amaximumof3*3*3=27testsSometriangles三角形arevalid,someareinvalidRefiningthecharacterizationcanleadtomoretests…細(xì)化特征可以導(dǎo)致更多的測(cè)試…②SecondCharacterizationofTriTyp’sInputsCharacteristicb1b2b3b4q1

=

“Refinement

of

q1”greater

than

1equal

to

1equal

to

0less

than

0q2

=

“Refinement

of

q2”greater

than

1equal

to

1equal

to

0less

than

0q3

=

“Refinement

of

q3”greater

than

1equal

to

1equal

to

0less

than

0Amaximumof4*4*4=64testsThisisonlycompletebecausetheinputsareintegers(0..1)Possiblevaluesforpartitionq1Characteristicb1b2b3b4Side1510-5Functionality-BasedApproach基于功能的方法識(shí)別與預(yù)期功能相對(duì)應(yīng)的特征需要測(cè)試人員更多的設(shè)計(jì)工作可以整合領(lǐng)域和語(yǔ)義知識(shí)可以使用參數(shù)之間的關(guān)系建??梢曰谛枨?,而不是實(shí)現(xiàn)同一個(gè)參數(shù)可能出現(xiàn)在多個(gè)特性中,因此很難將值轉(zhuǎn)換為測(cè)試用例TriTyp:三個(gè)參數(shù)代表一個(gè)三角形合理的特性:三角形的類(lèi)型前兩個(gè)表征是基于語(yǔ)法參數(shù)及其類(lèi)型的語(yǔ)義層面的表征可以使用三個(gè)整數(shù)代表一個(gè)三角形的事實(shí)GeometricCharacterizationofTriTyp’sInputsCharacteristicb1b2b3b4q1

=

“Geometric

Classification”scaleneisoscelesequilateralinvalid該分區(qū)的值可以選擇為Possiblevaluesforgeometricpartitionq1Characteristicb1b2b3b4Triangle(4,

5,

6)(3,

3,

4)(3,

3,

3)(3,

4,

8)Boundary-ValueAnalysis邊界值分析等價(jià)類(lèi)邊界上的BugEquivalentclasses等價(jià)類(lèi)Need2testcasesClass(i)x<0Class(ii)x>=0Boundaryvalues邊界值Boundaryvaluesof(i)are0and-MAX(i)的邊界值為0和-MAXBoundaryvaluesof(ii)are0and+MAX(ii)的邊界值為0和+MAXTestcases測(cè)試用例-MAX-MIN0+MIN+MAXBoundaryTest

casesstringMin

length-1

/

Max

length+1A

input

string

with

1

~

255

character:Valid

inputs:

1

character,

255

characterInvalid

input:

0

character,

256

characterintMIN-1

/

MAX+116

bit

unsigned

integer:Valid

inputs:

0,

65535Invalid

input:

-1,

65536

looploop

numberfor(int

i=0;i<n;++i)for(int

i=0;i<=n;++i)for(int

i=1;i<n;++i)rangebit0

or

1byte0

~

255word0~65535(16bit)

or

0~4294967295(32bit)K1024M1048576G

1073741824characterASCIIcharacterASCIInull0A65space32a97/

47Z90048z122

:

58

96@64SelectBoundaryValues選擇邊界值A(chǔ)ninputvariablewithequivalentclass[Min,Max]具有等效類(lèi)[Min,Max]的輸入變量SelectMinMin+NomMax-MaxExample:Twoinputvariablesx1(a≤x1≤b)andx2(c≤x2≤d).Testcasesinclude:兩個(gè)輸入變量x1(a≤x1≤b)和x2(c≤x2≤d)。測(cè)試用例包括:<x1nom,x2min>,<x1nom,x2min+>,<x1nom,x2nom>,<x1nom,x2max>,<x1nom,x2max->,<x1min,x2nom>,<x1min+,x2nom>,<x1max,x2nom>,<x1max-,x2nom>Number6positiveintegersTests:Classarbitraryvalue:X1=123123Classboundaryvalue:X2=12345Classboundaryvalue:X3=1234567Classboundaryvalue:X4=1Classboundaryvalue:X5=0Classinvalidvalue:X6=-123123Classinvalidvalue:X7=asdasdOthers?Classinvalidvalue:X8=000123X9=asd123X10=EmptyWeakBoundaryAnalysis弱邊界分析aabcdSelectBoundaryValues選擇邊界值

(Considerinvalidvalues)考慮無(wú)效值Example:Twoinputvariablesx1(a≤x1≤b)andx2(c≤x2≤d).Testcasesincludes:aabcd①BoundaryAnalysisforTriTypTriTyp(a,b,c):1≤a≤1001≤b≤1001≤c≤100a={0,1,2,50,99,100,101}b={0,1,2,50,99,100,101}c={0,1,2,50,99,100,101}②BoundaryAnalysisforNextDateMonth[1,12]DateJan,Mar,May,Jul,Aug,Oct,Dec:[1,31]Apr,Jun,Sep,Nov:[1,30]Febincommonyear:[1,28]Febinleapyear:[1,29]StrongBoundaryAnalysis強(qiáng)邊界分析aabcd①BoundaryAnalysisforTriTypTriTyp(a,b,c):1≤a≤1001≤b≤1001≤c≤100a={1,2,50,99,100}b={1,2,50,99,100}c={1,2,50,99,100}Testset=a×b×c

={1,2,50,99,100}

×{1,2,50,99,100}

×{1,2,50,99,100}Example:Twoinputvariablesx1(a≤x1≤b)andx2(c≤x2≤d).Testcasesincludes:aabcd②BoundaryAnalysisforNextDateNextDate(Day,Month,Year):1≤day≤311≤month≤121900≤year≤2012Month={0,1,2,6,11,12,13}Day={0,1,2,15,30,31,32}Year={1899,1900,1901,1930,2011,2012,2013}CombinatorialTesting組合測(cè)試InputDomainTestingInputDomainTesting輸入域測(cè)試Randomtesting隨機(jī)測(cè)試Equivalencepartitioning等價(jià)劃分Boundary-valueanalysis邊界分析ProblemRelationshipamonginputvariables輸入變量之間的關(guān)系ModelBasedTestingModelBasedTesting基于模型的測(cè)試DecisionTables(consideringrelationshipbetweeninputandoutputvariables)決策表(考慮輸入和輸出變量之間的關(guān)系)Problem:TooDifficultExtractrelationship提取關(guān)系Describerelationship描述關(guān)系WeakEquivalenceClassTesting弱等效類(lèi)測(cè)試StrongEquivalenceClassTestingCostEffectiveTesting成本效益測(cè)試ExampleCombinatorialTesting組合測(cè)試AllCombinations測(cè)試所有可能的參數(shù)值組合2*2*2*3=24Pair-wiseTesting成對(duì)測(cè)試t-wise/t-waysCombinatorialTestingTestcases(t=3)Input

AInput

BInput

CInput

DA1B1C1D1A1B2C2D1A2B1C2D1A2B2C1D1A1B1C2D2A1B2C1D2A2B1C1D2A2B2C2D2A1B1C1D3A1B2C2D3A2B1C2D3A2B2C1D3Combinatorialtesting組合測(cè)試固定強(qiáng)度組合測(cè)試成對(duì)測(cè)試Pair-wisetestingT型組合測(cè)試T-waycombinatorialtesting可變強(qiáng)度組合測(cè)試關(guān)鍵問(wèn)題所有組合中的抽樣不考慮投入的特殊信息Variablestrengthcombinatorialtesting可變強(qiáng)度組合測(cè)試lec5.3缺省-約束-決策表DefaultOptionsinTesting測(cè)試中的默認(rèn)選項(xiàng)BaseChoiceMultipleBaseChoiceConstraintsinTesting測(cè)試約束MergeInputVariables合并輸入變量RefineInputDomain優(yōu)化輸入域ModifyTestCases修改測(cè)試用例DecisionTables決策表概述決策表表示條件(大致為輸入)和操作(大致為輸出)之間的邏輯關(guān)系。系統(tǒng)地導(dǎo)出測(cè)試用例…[SWEBOKv3.0]決策表的優(yōu)點(diǎn):能夠?qū)?fù)雜的問(wèn)題按照各種可能的情況全部列舉出來(lái),簡(jiǎn)明并避免遺漏。因此,利用決策表能夠設(shè)計(jì)出完整的測(cè)試用例集合在一些數(shù)據(jù)處理問(wèn)題當(dāng)中,某些操作的實(shí)施依賴(lài)于多個(gè)邏輯條件的組合,即:針對(duì)不同邏輯條件的組合值,分別執(zhí)行不同的操作。決策表很適合于處理這類(lèi)問(wèn)題決策表的組成決策表通常由以下4部分組成:條件樁—列出問(wèn)題的所有條件條件項(xiàng)—針對(duì)條件樁中條件列出所有可能的取值動(dòng)作樁—列出問(wèn)題規(guī)定的可能采取的操作動(dòng)作項(xiàng)—指出條件項(xiàng)各取值情況下應(yīng)采取的動(dòng)作決策表的生成構(gòu)造決策表的5個(gè)步驟:①確定規(guī)則的個(gè)數(shù)有n個(gè)條件的決策表有2n個(gè)規(guī)則(每個(gè)條件取真、假值)②列出所有的條件樁和動(dòng)作樁③填入條件項(xiàng)④填入動(dòng)作項(xiàng),得到初始決策表⑤簡(jiǎn)化決策表,合并相似規(guī)則若表中有兩條以上規(guī)則具有相同的動(dòng)作,并且在條件項(xiàng)之間存在極為相似的關(guān)系,便可以合并合并后的條件項(xiàng)用符號(hào)“-”表示,說(shuō)明執(zhí)行的動(dòng)作與該條件的取值無(wú)關(guān),稱(chēng)為無(wú)關(guān)條件練習(xí)前一日函數(shù)DPreate是NextDate的逆函數(shù),即給定一個(gè)月份、日期、年,會(huì)返回前一天的日期。年的取值在1812年到2017年日的取值在1日到31日之間月的取值在1到12月之間條件項(xiàng)M1={月份:4,6,9,11月}M2={月份:5,7,10,12月}M3={月份:1月}M4={月份:2月}M5={月份:3月}M6={月份:8月}D1={日期:1日}D2={日期:2<=日期<=27}D3={日期:28日}D4={日期:29日}D5={日期:30日}D6={日期:31日}Y1={年:是閏年}Y2={年:不是閏年}lec6測(cè)試前沿專(zhuān)題lec6.1多樣性O(shè)therTestingDiversity:aprincipleoftestdesign

多樣性:測(cè)試設(shè)計(jì)的原則lec6.2測(cè)試預(yù)言與測(cè)試約簡(jiǎn)TestOracle測(cè)試預(yù)言TwoFundamentalProblems兩個(gè)基本問(wèn)題AdequacyCriteria充分性標(biāo)準(zhǔn)TestOracle測(cè)試OracleNotestoracleNoautomatedtestoracle無(wú)自動(dòng)預(yù)言測(cè)試NoTestOracle某些類(lèi)型的應(yīng)用程序尤其難以測(cè)試,因?yàn)闆](méi)有“測(cè)試預(yù)言”機(jī)器學(xué)習(xí)、離散事件模擬、優(yōu)化、科學(xué)計(jì)算等即使在沒(méi)有oracle的情況下,如果違反了軟件的屬性,也有可能檢測(cè)到缺陷MetamorphicTesting蛻變測(cè)試如果新的測(cè)試用例輸出f(t(x))如預(yù)期的那樣,則不一定正確但是,如果f(t(x))不是預(yù)期的,則f(x)或f(t(x))–或者兩者都是!–錯(cuò)的練習(xí)使用蛻變測(cè)試為示例1和示例2定義新的MRExample1:Sin(x)functionExample2:theshortestdistancebetweentwonodes:ShortestDis(x,y)where,xisastartingnodeandyisanendingnode.兩個(gè)節(jié)點(diǎn)之間的最短距離:ShortestDis(x,y),其中,x是起始節(jié)點(diǎn),y是結(jié)束節(jié)點(diǎn)MetamorphicRelationTestinput:[a,-a,b,-b]mean=0Testinput1:[a,b,c,d]mean1Testinput2:[a+1,b+1,c+1,d+1]mean2Thenmean2=mean1+1NoAutomatedTestOracle無(wú)自動(dòng)測(cè)試預(yù)言某些類(lèi)型的應(yīng)用程序尤其難以測(cè)試,因?yàn)闆](méi)有自動(dòng)化的“測(cè)試oracle”多媒體、人機(jī)交互等OneSolution:當(dāng)沒(méi)有自動(dòng)化的oracle時(shí),應(yīng)該減少手動(dòng)檢查測(cè)試結(jié)果的成本TestSuiteReduction測(cè)試用例集約簡(jiǎn)TestSuiteReduction①Greedy貪心forTestSuiteReduction②AdditionalGreedyforTestSuiteReductionComplexityTestSuiteReduction測(cè)試用例集約簡(jiǎn)≈MinimumCardinality最小基數(shù)HittingSetFailureProximity故障接近度SoftwareBehaviorLearningDistance

lec7集成與系統(tǒng)、驗(yàn)收測(cè)試、移動(dòng)測(cè)試lec7.1集成與系統(tǒng)系統(tǒng)集成的模式與方法集成測(cè)試前的準(zhǔn)備人員安排測(cè)試計(jì)劃測(cè)試內(nèi)容集成模式測(cè)試方法集成測(cè)試的模式漸增式測(cè)試模式與非漸增式測(cè)試模式非漸增式測(cè)試模式:先分別測(cè)試每個(gè)模塊,再把所有模塊按設(shè)計(jì)要求放在一起結(jié)合成所要的程序,如大棒模式。漸增式測(cè)試模式:把下一個(gè)要測(cè)試的模塊同已經(jīng)測(cè)試好的模塊結(jié)合起來(lái)進(jìn)行測(cè)試,測(cè)試完以后再把下一個(gè)應(yīng)該測(cè)試的模塊結(jié)合進(jìn)來(lái)測(cè)試自頂向下和自底向上集成方法驅(qū)動(dòng)程序/驅(qū)動(dòng)模塊(driver),用以模擬被測(cè)模塊的上級(jí)模塊。驅(qū)動(dòng)模塊在集成測(cè)試中接受測(cè)試數(shù)據(jù),把相關(guān)的數(shù)據(jù)傳送給被測(cè)模塊,啟動(dòng)被測(cè)模塊,并打印出相應(yīng)的結(jié)果。樁程序/樁模塊(stub),也有人稱(chēng)為存根程序,用以模擬被測(cè)模塊工作過(guò)程中所調(diào)用的模塊。樁模塊由被測(cè)模塊調(diào)用,它們一般只進(jìn)行很少的數(shù)據(jù)處理,例如打印入口和返回,以便于檢驗(yàn)被測(cè)模塊與其下級(jí)模塊的接口①自頂向下法(Top-downIntegration)②自底向上法(Bottom-upIntegration)③混合策略(ModifiedTop-downIntegration)混合法:對(duì)軟件結(jié)構(gòu)中較上層,使用的是“自頂向下”法;對(duì)軟件結(jié)構(gòu)中較下層,使用的是“自底向上”法,兩者相結(jié)合大棒與三明治集成方法①大棒集成方法(Big-bangIntegration)采用大棒集成方法,先是對(duì)每一個(gè)子模塊進(jìn)行測(cè)試(單元測(cè)試階段),然后將所有模塊一次性的全部集成起來(lái)進(jìn)行集成測(cè)試因?yàn)樗械哪K一次集成的,所以很難確定出錯(cuò)的真正位置、所在的模塊、錯(cuò)誤的原因。這種方法并不推薦在任何系統(tǒng)中使用,適合在規(guī)模較小的應(yīng)用系統(tǒng)中使用②三明治集成方法(SandwichIntegration)采用三明治方法的優(yōu)點(diǎn)是:它將自頂向下和自底向上的集成方法有機(jī)地結(jié)合起來(lái),不需要寫(xiě)樁程序因?yàn)樵跍y(cè)試初自底向上集成已經(jīng)驗(yàn)證了底層模塊的正確性采用這種方法的主要缺點(diǎn)是:在真正集成之前每一個(gè)獨(dú)立的模塊沒(méi)有完全測(cè)試過(guò)③改善的三明治集成方法改進(jìn)的三明治集成方法,不僅自?xún)深^向中間集成,而且保證每個(gè)模塊得到單獨(dú)的測(cè)試,使測(cè)試進(jìn)行得比較徹底持續(xù)集成通常系統(tǒng)集成都會(huì)采用持續(xù)集成的策略,軟件開(kāi)發(fā)中各個(gè)模塊不是同時(shí)完成,根據(jù)進(jìn)度將完成的模塊盡可能早的進(jìn)行集成,有助于盡早發(fā)現(xiàn)Bug,避免集成中大量Bug涌現(xiàn)而且容易定位Bug、修正Bug,最終提高軟件開(kāi)發(fā)的質(zhì)量與效率幾種集成方法性能的比較自底向上自頂向下混合策略大棒三明治改進(jìn)三明治集成早早早晚早早基本程序能工作時(shí)間晚早早晚早早需要驅(qū)動(dòng)程序是否是是是是需要樁程序否是是是是是工作并行性中低中高中高特殊路徑測(cè)試容易難容易容易中等容易計(jì)劃與控制容易難難容易難難功能測(cè)試

FunctionalTesting

根據(jù)產(chǎn)品特性和設(shè)計(jì)需求,驗(yàn)證一個(gè)產(chǎn)品的特性和行為是否滿(mǎn)足設(shè)計(jì)需求功能測(cè)試常用步驟①根據(jù)需求來(lái)細(xì)分功能點(diǎn)②根據(jù)功能點(diǎn)派生測(cè)試需求③根據(jù)測(cè)試需求設(shè)計(jì)功能測(cè)試用例④逐項(xiàng)執(zhí)行功能測(cè)試用例驗(yàn)證產(chǎn)品用戶(hù)界面類(lèi)型非圖形化用戶(hù)界面命令行圖形化用戶(hù)界面(GUI)桌面:Windows風(fēng)格,單文檔、多文檔、資源管理器等Web:Html元素等,靜態(tài)頁(yè)面,動(dòng)態(tài)頁(yè)面移動(dòng)設(shè)備:多觸點(diǎn)交互,傳感器等其他用戶(hù)交互方式相關(guān)的測(cè)試類(lèi)型正確性產(chǎn)品功能是否與需求和設(shè)計(jì)文檔一致可靠性用戶(hù)交互是否引發(fā)軟件崩潰和其它異常易用性軟件產(chǎn)品完成特定任務(wù)的難易程度功能測(cè)試示例軟件需求:功能點(diǎn)單程國(guó)內(nèi)機(jī)票預(yù)訂測(cè)試需求有直飛航班城市間的預(yù)訂無(wú)直飛航班城市間的預(yù)訂有聯(lián)程,無(wú)聯(lián)程單人,多人(帶小孩,帶嬰兒)有票無(wú)票,座位選擇等測(cè)試編號(hào)測(cè)試環(huán)境輸入數(shù)據(jù)預(yù)期結(jié)果實(shí)際結(jié)果回歸測(cè)試回歸測(cè)試的目的所做的修改達(dá)到了預(yù)定的目的,如錯(cuò)誤得到了改正,新功能得到了實(shí)現(xiàn),能夠適應(yīng)新的運(yùn)行環(huán)境等不影響軟件原有功能的正確性回歸測(cè)試的方法再測(cè)試全部用例基于風(fēng)險(xiǎn)選擇測(cè)試基于操作剖面選擇測(cè)試再測(cè)試修改的部分非功能性測(cè)試性能測(cè)試 ①定義PerformanceTesting驗(yàn)證產(chǎn)品的性能在特定負(fù)載和環(huán)境條件下使用是否滿(mǎn)足性能指標(biāo)進(jìn)一步發(fā)現(xiàn)系統(tǒng)中存在的性能瓶頸,優(yōu)化系統(tǒng)②性能測(cè)試目的和需求目的:

為了驗(yàn)證系統(tǒng)是否達(dá)到用戶(hù)提出的性能指標(biāo),同時(shí)發(fā)現(xiàn)系統(tǒng)中存在的性能瓶頸,起到優(yōu)化系統(tǒng)的目的。性能測(cè)試需求:

用戶(hù)對(duì)各項(xiàng)指標(biāo)提出的明確需求;如果用戶(hù)沒(méi)有提出性能指標(biāo)則根據(jù)用戶(hù)需求、測(cè)試設(shè)計(jì)人員的經(jīng)驗(yàn)來(lái)設(shè)計(jì)各項(xiàng)測(cè)試指標(biāo)。(需求+經(jīng)驗(yàn))主要的性能指標(biāo):

服務(wù)器的各項(xiàng)指標(biāo)(CPU、內(nèi)存占用率等)、后臺(tái)數(shù)據(jù)庫(kù)的各項(xiàng)指標(biāo)、網(wǎng)絡(luò)流量、響應(yīng)時(shí)間③性能測(cè)試度量方法不同的關(guān)注對(duì)象采用不同的性能的度量方法服務(wù)端性能采用CPU、內(nèi)存等使用率來(lái)度量客戶(hù)端性能通常根據(jù)系統(tǒng)處理特定用戶(hù)請(qǐng)求的響應(yīng)時(shí)間來(lái)度量④響應(yīng)時(shí)間響應(yīng)時(shí)間是指系統(tǒng)對(duì)請(qǐng)求作出響應(yīng)所需要的時(shí)間響應(yīng)時(shí)間劃分為:服務(wù)端響應(yīng)時(shí)間是指從請(qǐng)求發(fā)出開(kāi)始到客戶(hù)端接收到最后一個(gè)字節(jié)數(shù)據(jù)所消耗的時(shí)間客戶(hù)端響應(yīng)時(shí)間是指客戶(hù)端收到響應(yīng)數(shù)據(jù)后呈現(xiàn)/響應(yīng)用戶(hù)所消耗的時(shí)間⑤并發(fā)用戶(hù)數(shù)并發(fā)用戶(hù)數(shù)取決于測(cè)試對(duì)象的目標(biāo)業(yè)務(wù)場(chǎng)景需要先確定業(yè)務(wù)場(chǎng)景,然后基于場(chǎng)景采用某些相應(yīng)方法計(jì)算并發(fā)用戶(hù)數(shù)并發(fā)用戶(hù)數(shù)與同時(shí)在線(xiàn)數(shù)的區(qū)別⑥吞吐量吞吐量是指單位時(shí)間內(nèi)處理的用戶(hù)請(qǐng)求數(shù)量訪(fǎng)問(wèn)人數(shù)/天,頁(yè)面數(shù)/秒,請(qǐng)求數(shù)/秒,處理業(yè)務(wù)數(shù)/小時(shí),等等⑦性能計(jì)數(shù)器性能計(jì)數(shù)器是描述系統(tǒng)性能的一些數(shù)據(jù)指標(biāo)例

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論