资源描述:
《What Test Coverage Mean to us.pdf》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、WhatTestCoverageMeantous?JosephYaoWhoIam?AgileCoachatOdd-eFather,Husband...SoftwareCraftsmanBasketball,BoardGame...AgendaBiasandTruthofTestCoverageClassicalTestCoverageMutationTestCoverageTDDandTestCoverageBiasofTestCoverageTruthofTestCoverag
2、eIexpectahighlevelofcoverage.Sometimesmanagersrequireone.There'sasubtledifference.--BrianMarickhttp://martinfowler.com/bliki/TestCoverage.htmlTruthofTestCoverageClassicalTestCoverageFunctionCoverageintfoo(intx,inty){intz=0;if((x>0)&&(y>0)){z=x;}retur
3、nz;}SatisfiedTest:foo(2,2)FunctionCoverageintfoo(intx,inty){intz=0;if((x>0)&&(y>0)){z=x;}returnz;}StatementCoverageintfoo(intx,inty){intz=0;if((x>0)&&(y>0)){z=x;}returnz;}SatisfiedTest:foo(2,2)StatementCoverageintfoo(intx,inty){intz=0;if((x>0)&&(y>0)){
4、z=x;}returnz;}UnsatisfiedTest:foo(2,-1)DecisionCoverageintfoo(intx,inty){intz=0;T/Fif((x>0)&&(y>0)){z=x;}returnz;}SatisfiedTest:foo(2,2),foo(-1,2)DecisionCoverageintfoo(intx,inty){intz=0;T/Fif((x>0)&&(y>0)){z=x;}returnz;}UnsatisfiedTest:foo(2,2)Conditio
5、nCoverageintfoo(intx,inty){intz=0;T/Fif((x>0)&&(y>0)){T/Fz=x;}returnz;}SatisfiedTest:foo(2,2),foo(2,-1),foo(-1,-1)ConditionCoverageintfoo(intx,inty){intz=0;T/Fif((x>0)&&(y>0)){T/Fz=x;}returnz;}UnsatisfiedTest:foo(2,2),foo(-1,2)ClassicalTestCoverageExpe
6、ctationofAutomatedTestAnyPossible“Bad”CodeChangecanbeDetectedMutationTestCoverageWhyMutationTestRedundantCode?intfoo(intx,inty)intfoo(intx,inty){{intz=0;intz=0;if((x>0)&&(y>0)){if((x>0)&&(y>0)){z=x;z=x;}}sideEffect(z);sideEffect(z);returnz;returnz;}}
7、MissingtesttoprovethesideEffectcallisneededIfcodeisredundant,itcan’tbelearntviaanyclassicaltestcoverageConditionalBoundaryMutatorintfoo(intx,inty)intfoo(intx,inty){{intz=0;intz=0;if((x>0)&&(y>0)){if((x>0)&&(y>=0)){z=x;z=x;}}returnz;returnz;}}Condit
8、ionCoverageSatisfiedTest:TesttocoverthisMutator:assertEquals(2,foo(2,2))assertEquals(2,foo(2,2))assertEquals(0,foo(2,-1))assertEquals(0,foo(2,0))assertEquals(0,foo(-1,2))assertEquals(0,foo(-1,2))Testnotprevent“bad”codechangetohappenOtherMutatorsNega