《prsentationlmo0v6湖北某大型剧场水电安装施工组织设》由会员分享,可在线阅读,更多相关《prsentationlmo0v6湖北某大型剧场水电安装施工组织设(79页珍藏版)》请在金锄头文库上搜索。
1、Testetdiagnostic:desobjetsauxmodlesYves Le Traonin God we trust, for the rest we test (A. Petrenko)1Unevisiondelarechercheengnielogiciel01Testingcanprovethepresenceofbugs,butnevertheirabsenceDijkstraBienvenuedansledomainedelincertitude!lMonde pas idal = gnie logicielCompromis entre une solution idal
2、e en pratique inapplicable et solution imparfaite mais praticableTest et gnie logiciel : difficile alchimiesolution idalepratique actuellebon dosage ?24/03/20062LetestdelogicielslCest important !lObjectifs du testexaminer ou excuter un programme dans le but dy trouver des fautesrelativement une spci
3、ficationformalisation de critres pour guider la slection des testscas de test / oracle24/03/20063ProblmatiqueLe test Vrification/preuvetestsconformit du produit par rapport sa spcification24/03/20064Problmatiquedutestanalyse desbesoinsspcificationImplmentationtestLe cot du test dans le dveloppement+
4、 maintenance = 100 % du cot global de dveloppement ! TestAn. bSpcif.Implm.24/03/20065ProblmatiquedutestPourquoi ?CotEffortConfiance24/03/20066Letestdynamique:processusDonne de testProgramme PExcutionOracleRsultatSpcification SVerdictCritre darrtvraiLocalisation / Mise au pointfauxnon vrifiProblmesGn
5、ration de donnes de testOracleDiagnostic24/03/20067Letest:cestunpeudsordrelAutant de techniques que de domaines dapplicationlNombreux problmes (gnration/oracle/environnement, tape du processus/critre)lPsychologiquement redoutable24/03/20068LetestdeslogicielsobjetsAu dpart une certaine mfiance des te
6、steurs24/03/20069SentimentmitigauniveauducodeC.m1()B.m1()A.m1()C.m4()B.m2()MethodcallsflowforprocessingC.m1()Am1()m2()m3()m4()Bwm1()m2()m3()Cm1()m4()TheYo-yoEffect(Binder,Offut)callssuper()callssuper()callsm4()callsm2()ImplementsImplements24/03/200610Etpourtant.lOO fonctionne aussi bien que le procd
7、ural classique lCulture testEnvironnement pour assister la ralisation des tests: JunitTest-first development24/03/200611JUnitlPermet de structurer les cas de testcas de test / suite de testlPermet de sauvegarder les cas de testimportant pour la non rgressionquand une classe volue on r-excute les cas
8、 de test24/03/200612Test-firstdevelopmentlXtreme programminglOn crit les tests dabord, on ralise ensuitelLes cas de test servent de support la documentationlTester avec une intention prciselRetours rapides sur la qualit du codeitrations courtes dans le cycle de dveloppementon excute le code tout de
9、suite (avant mme de lavoir crit)On ne code que quand un test a chourefactorings frquentslApproche anti-modle24/03/200613Test-firstdevelopmentcrireuncasdetestExcuterlescasdetestFaireunpetitchangementExcuterlescasdetestchecsuccschecdveloppementsarrtedveloppementcontinueExemple:ajoutdansunelistechainep
10、ublicvoidtestAdd()list.add(first);assertTrue()=1);publicvoidadd(Stringit)Nodenode=newNode();node.setItem(it);node.setNext(null);if(firstNode=null)node.setPrevious(null);this.setFirstNode(node);lastNode=node;this.setCurrentNode(node);publicvoidadd(Stringit)24/03/200614DesobjetsauxmodlesrefactoringTis
11、sagecompositioncoderefactoring24/03/200615DestapesdetestautestdestapesAnalyse Conception globaleConceptiondtailleExigencesImplmentation SystmeSystmeIntgrationIntgrationUnitaireUnitaireTest transfoTest transfomodlesmodles24/03/200616PlanlTest de composantslAssemblage de composantslTest systmelDiagnos
12、ticlTest et modles24/03/20061724/03/200618Composantsettest24/03/200619ComposantsdeconfiancelDu point de vue utilisateur.Components“off-the-shelf”?24/03/200620ComposantsdeconfianceDu point de vue utilisateur.Components“off-the-shelf”85%“replay”selftests100%55%100%24/03/200621ComposantdeconfianceSpcif
13、icationImplantationV&V:ensembledecasdetestConfiance fonde sur la cohrencecontratsexcutablesComposants autotestables24/03/200622AnalysedemutationR. DeMillo, R. Lipton and F. Sayward, Hints on Test Data Selection : Help R. DeMillo, R. Lipton and F. Sayward, Hints on Test Data Selection : Help For The
14、Practicing Programmer. IEEE Computer For The Practicing Programmer. IEEE Computer 1111(4): 34 - 41 April 1978.(4): 34 - 41 April 1978. lTechnique pour valuer lefficacit dun ensemble de cas de testInjection derreurs dans le programme sous testCalcul de la proportion derreurs dtectes par les cas de te
15、st24/03/200623AnalysedemutationPGnrationdemutantsMutant1Mutant2Mutant3Mutant4Mutant5Mutant6CTExcutionMutanttuDiagnosticMutantvivantSpcificationincomplteAutomatiqueManuelOptimiseurMutantquivalentSupprimdelensembledesmutantsAjoutdecontratsCasdetestinsuffisants24/03/200624Optimisationautomatiquedecasde
16、testlScore de mutation moyen facile atteindrelComment optimiser ces testsAnalogie avec lvolution24/03/200625ClasseAAmliorationdestestsTestTest1Test2Test3Test4Test5PopulationdeprdateursPopulationdeproies mutantA5 mutantA6 mutantA7 mutantA8 mutantA9 mutantA10 mutantA1 mutantA2 mutantA3 mutantA4 mutant
17、A14 mutantA11 mutantA18 mutantA12 mutantA13 mutantA17Test624/03/200626tudedunparserC#24/03/200633RsultatslApproche composant autotestablelAlgorithme original pour la gnration de cas de testlDveloppement doutils pour les expriences24/03/200634Assemblagedecomposants24/03/200635TestdintgrationlPlan de
18、testordonnancementminimiser le nombre de testing stubs24/03/200636Autrestravaux:conceptiontestablelTestabilit dun diagramme de classesidentification d anti-patternslTransformations de modles pour supprimer les ambiguts dune architectureApplication aux design patterns courantslrefactorings24/03/20063
19、7Testsystme24/03/200638Lesexigencesattention!terraininstablelPoint dentre dun projetlPremires approchesFonctionnellesExtra-fonctionnelles ?Techniques ?lComment valider du flou, de linformel ?lComment sen servir pour valider la conception/implmentation 24/03/200639TestpartirdesexigenceslPartir des ex
20、igencesSoit textuellesSoit cas dutilisation tendus avec des contrats (dans une logique proche du B)Gnrer automatiquement des objectifs/cas de test lAdaptable aux lignes de produitslExprimentations industrielles24/03/200640Mtamodle dexigences requirement 1.1 Register a book the book becomes registere
21、d after the librar ian did register the book. the book is available after the librarian did register the book.8Mtamodle dobjectifs de tests :C1:C2:C3CallActionCallAction12Mtamodle statique C1C2C30.1*Mtamodle UCTS s1s2s3s4/a1/a5/a4/a3/a2 7Mtamodle de cas dutilisationPackageActorUseCaseobservable(x)=d
22、ummytrue34Mtamodle de configuration :C1:C2:C1observable=dummystatus=on56if the mode of the system is dummy or real and the user did deselect Example function then the phase of the system is no phase and the status of the component is released implies the presence of the component is false. Traabilit
23、MModles indpendants24/03/200641ExprimentationslQuestion de baseDes cas de test gnrs partir des exigences peuvent-ils tester correctement un systme ?Etudes de caslDeuxime questionapplicable au niveau industriel (ROI) ?% des exigences couvert pour un vrai systme ?24/03/200642Nominal code24/03/200643Ex
24、igenceslStabiliser les concepts grce la mtamodlisationlSe servir des mtamodles pourLa vrificationLa simulationLa drivation des tests24/03/200644Diagnosticmaiso?24/03/200645DiagnosticetDesign-by-contract24/03/200646DiagnosticetDesign-by-contractlDesign by Contract : Robustesse / VigilanceCapacit dun
25、composant dtecter un tat interne erronlDesign by Contract : DiagnosabilitFacilit localiser une faute dans un composant sachant quune dfaillance est dtecte24/03/200647RobustesseARobustesselocalecapacitdescontratsdtecterdeserreursCombinaisonamliorelaqualitRobustesseglobaleBCAcontratsDet(A,C)24/03/2006
26、48UnexempleEiffel24/03/200649Exemplep_date.ep_time.ep_date_time.eTotalnumberofmutants673275199Nbrequivalent491815Mutation score100%100%100%Initial contracts efficiency10,35%17,90%8,7%Improved contractsefficiency69,42%91,43%70,10%Firstversiontestsize1069378Reducedtestssize72334424/03/200650ExemplelRo
27、bustesse des autotests contre un environnement infectlp_date_time selftest24/03/200651Robustesse24/03/200652ZonedediagnostiqueLogicielclassiqueDiagnosabilitZonedediagnostiqueLogicielconuparcontratsTraitementdexception24/03/200653Diagnosabilit00,20,40,60,81DensitdescontratsDiagnosabilit01002003004005
28、0060070080090010000.20.40.60.8Efficacit des contrats24/03/200654Rsultatsltude qualitative de la conception par contratslBilanLajout de contrats, mme peu efficaces, amliore la qualit du composantLefficacit amliore plus que la densit24/03/200655Diagnosticettest24/03/200656Testetdiagnostic:objectifsdif
29、frentsl2 activits relierlTest gnrer un minimum de donnes de test qui satisfont le critre darrt. Les fautes sont dtectes.lDiagnostic les algorithmes de localisation des fautes ncessitent de recouper un maximum dinformations. 24/03/200657Recoupementdetraces?Nombre de cas de test + capacit isoler la fa
30、ute24/03/200658FaultlocalizationalgorithmError : it should be p := -yDiagnosis matrix1234x=2 x=-2 x=2 x=-3y=4 y=0 y=-4 y=-3%Passed%FailedTrustIntens.Rankpow(x, y:integer) : float i := 0;11111100%100%0,50100%3 Result := 1;21111100%100%0,50100%3 if y0 then p := -x;3001133%100%0,25100%14110066%0%1,0066
31、%5 Result := Result * x;5100166%0%1,0066%5 i := i + 1;6100166%0%1,0066%5 Result := 1/Result; 7001133%100%0,25100%1endVerdicts :PPFP local i, p : integer else p := y; while ip do done if y contrats24/03/200668GnrationdedonnesdetestClassAStringnameClassBIntval *a1brandom null1; 1011; 0- ;-1Critre AllP
32、erECStopCriteria = 2ClassAname:totoClassAname:ClassBval:0a24/03/200669LetestdetransformationsdemodlesOraclelLe problme de loracleDisposant du modle attendu :lComparaison de modlesConformit du modle son mtamodle travaux de Jim SteelContrats (OCL)lContrats sur le modle de sortielContrats de la spcific
33、ation de la transformation24/03/200670OracleContratdelaspcificationfortlEn OCL:context MetaUmlRdbms inv:-select(e|e.oclIsTypeOf(Class) and -exists(s|=persistent)-collect(ecp|ecp.oclAsType(Class)-forAll(cp|-one(t|t.name= and(-collect(p|(Class).feature)-select(f|f.oclIsTypeOf(Attribute)-collect(fa|fa.
34、oclAsType(Attribute)-forAll(a|-one(tc|= and =)and ()=(-collect(p|p.oclAsType(Class).feature)-select(f|f.oclIsTypeOf(Attribute).size()and ()=-select(e|e.oclIsTypeOf(Class) and -exists(s|s.name=persistent).size()24/03/200671AnalysedemutationpourlestransformationsdemodleslOprateurs classiquesOrients ob
35、jet ou nonlOutil java de OffuttlNcessit doprateurs spcifiquesOprateurs smantiques24/03/200672LanalysedemutationDcompositionsmantiquelNavigation, filtrage, cration, modification Exemple de transformationname:stringID:intA Bpersistentname:stringID:intA Bpersistentname:stringID:intA BpersistenttableBna
36、me:stringID:intA IDnametableBname:stringID:intA BpersistentIDnametableBID nametableB(a)(b)(c)(d)(e)(f) Bpersistentnavigationfiltragecrationnavigationcrationnavigationfiltragemodification24/03/200673FaultmodelsExample for navigation mutationsWrong role to a correct class: from class A, navigate b2 in
37、stead of b1 Wrong role to a wrong class: from class A, navigate c instead of b124/03/200674Analysedemutation/OracleRsultatsexprimentauxlDifficult du test + 24/03/200675Modles & AspectsDesignModelUseCaseModelSecurityModelQoSModelBusinessModelObjectModelTestModelUIModelPlateformeModelCodeModeltesterCh
38、allenges:-Tissageautomatique-ProductFamilies(variations)-Rutilisationdetransformations24/03/200676ConclusionmodleslContributionsGnration de donnes de testMutation pour lIDMOracle par contrats24/03/200677LargeuretperspectivesLefacteurdispersionTransformation de modlesTissages de vues : daspectsDiagnosticEt composantsTraabilitRaffinement des testsTest guid par les exigences24/03/200678Questions ?24/03/200679