/
Introduction al testing de software Introduction al testing de software

Introduction al testing de software - PDF document

natalia-silvester
natalia-silvester . @natalia-silvester
Follow
389 views
Uploaded On 2017-04-08

Introduction al testing de software - PPT Presentation

Validacionestamosconstruyendoelproductocorrecto Veri cacionestamosconstruyendoelproductocorrectamenteEnestesentidolaveri cacionconsisteencorroborarqueelprogramarespetasuespeci cacionmientr ID: 337640

Validacion:estamosconstruyendoelproductocorrecto? Veri cacion:estamosconstruyendoelproductocorrectamente?Enestesentido laveri cacionconsisteencorroborarqueelprogramarespetasuespeci cacion mientr

Share:

Link:

Embed:

Download Presentation from below link

Download Pdf The PPT/PDF document "Introduction al testing de software" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.


Presentation Transcript

IntroduccionalTestingdeSoftwareMaximilianoCristiaIngenieradeSoftwareFacultaddeCienciasExactas,IngenierayAgrimensuraUniversidadNacionaldeRosario2015ResumenEnesteapuntedeclaseseintroducenbrevementelosconceptosbasicosdetestingdesoftwarenecesariosparacomprenderlastecnicasdetestingqueseense~nanmasadelante.Indice1.Veri cacionyvalidacion12.De niciondetestingyvocabulariobasico23.Elprocesodetesting44.Testingdedistintosaspectosdeunsoftware65.Lasdosmetodologasclasicasdetesting6LasbasesAprogramiscorrectifitbehavesaccordingtoitsspe-ci cation.{Programcorrectnessde nitionProgramtestingcanbeaverye ectivewaytoshowthepresenceofbugs,butitishopelesslyinadequateforshowingtheirabsence.{EdsgerDijkstraBewareofbugsintheabovecode;Ihaveonlyproveditcorrect,nottriedit.{DonaldKnuthUnprogramaescorrectosiveri casuespeci cacion.{De niciondecorrecciondeunprogramaEltestingdeprogramaspuedeserunaformamuyefectivademostrarlapresenciadeerrores,peroesdesesperanzadoramenteinadecuadoparamostrarsuausencia.{EdsgerDijkstraEsteatentoaloserroresenelcodigomostradomasarriba;yosolodemostrequeescorrecto,peronoloejecute.{DonaldKnuth1.Veri cacionyvalidacionEltestingdesoftwareperteneceaunaactividadoetapadelprocesodeproducciondesoftwaredenominadaVeri cacionyValidacion{usualmenteabreviadacomoV&V.V&Veselnombregenericodadoalasactividadesdecomprobacionqueaseguranqueelsoftwarerespetasuespeci cacionysatisfacelasnecesidadesdesususuarios.Elsistemadebeserveri cadoy1 validadoencadaetapadelprocesodedesarrolloutilizandolosdocumentos(descripciones)producidasdurantelasetapasanteriores[Som95].EnrigornosoloelcodigodebesersometidoaactividadesdeV&Vsinotambientodoslossubproductosgeneradosduranteeldesarrollodelsoftware[GJM91].Porejemplo,enotroscaptuloshemosestudiadocomoveri carunmodeloformalutilizandounasistentedepruebas.Otroejemploeslaveri caciondelaarquitecturayeldise~no.Enefecto,estossubproductosdebenserveri cadosdeformataldequeexistamayorcon anzaenquecumplenconlosrequerimientosdelcliente{enparticularelequipodedesarrollodebeasegurarsedequelaarquitecturapodraincorporarloscambiosprevistosabajocostoyqueestahabilitaotraspropiedadesquehayasolicitadoelclientetalescomoseguridad,portabilidad,etc.;paramasdetallessobrelaveri caciondearquitecturassepuedeconsultar[BCK03,captulo11].Tareassemejantesdebenllevarseacaboparalosotrossubproductosdeldesarrollo.Sibienestosterminosensuusocotidianopuedenllegarasersinonimos,enIngenieradeSoftwaretienensigni cadosdiferentesycadaunotieneunade nicionmasomenosprecisa. Validacion:�estamosconstruyendoelproductocorrecto? Veri cacion:�estamosconstruyendoelproductocorrectamente?Enestesentido,laveri cacionconsisteencorroborarqueelprogramarespetasuespeci cacion,mientrasquevalidacionsigni cacorroborarqueelprogramasatisfacelasexpectativasdelusuario[Som95].Enotraspalabras,laveri cacionesunaactividaddesarrolladaporingenierosteniendoencuentaunmodelodelprogramayelprogramaens,entantoquelavalidacionladeberealizarelusuarioteniendoencuentaloqueelesperadelprogramayelprogramaens.ExistenvariastecnicasdentrodelmarcodelaV&Vdesdelasmasinformales(prototipacionderequerimientos,revisionderequerimientos,etc.),pasandoporlassemiformales(eltestingeslamasconocidaperociertastecnicasdeanalisisestaticodecodigoseusanfrecuentemente),hastalapruebaformaldeprogramas,elcalculodere namiento,etc.Aunqueeltestingsepuedeaplicartantoenveri cacioncomoenvalidacion,enestecursonosconcentraremoscasiexclusivamenteeneltestingdeprogramascomopartedelaveri cacion.Esdecirquenoestudiaremosotrastecnicasdeveri cacion,noestudiaremostecnicasdevalidacionynoestudiaremoslaV&Vdeotrasdescripcionesmasalladelprograma.2.De niciondetestingyvocabulariobasicoProgramtestingcanbeaverye ectivewaytoshowthepresenceofbugs,butitishopelesslyinadequateforshowingtheirabsence.E.W.DijkstraEltestingesunaactividaddesarrolladaparaevaluarlacalidaddelproducto,yparamejorar-loalidenti cardefectosyproblemas.Eltestingdesoftwareconsisteenlaveri caciondinamicadelcomportamientodeunprogramasobreunconjunto nitodecasosdeprueba,apropiadamen-teseleccionadosapartirdeldominiodeejecucionqueusualmenteesin nito,enrelacionconelcomportamientoesperado[DBA+01,UL06].Laspalabrasresaltadasenelparrafoanteriorcorrespondenalascaractersticasfundamentalesdeltesting.Esunatecnicadinamicaenelsentidodequeelprogramaseveri caponiendoloenejecuciondelaformamasparecidaposibleacomoejecutaracuandoesteenproduccion{estosecontraponealastecnicasestaticaslascualessebasanenanalizarelcodigofuente.Elprogramasepruebaejecutandosolounospocoscasosdepruebadadoqueporlogeneralesfsica,economicaotecnicamenteimposibleejecutarloparatodoslosvaloresdeentradaposibles{deaqulafrase2 deDijkstra.Siunodeloscasosdepruebadetectaunerror1elprogramaesincorrecto,perosiningunodeloscasosdepruebaseleccionadosencuentraunerrornopodemosdecirqueelprogramaescorrecto(perfecto).Esoscasosdepruebasonelegidossiguiendoalgunareglaocriteriodeseleccion.Sedeterminasiuncasodepruebahadetectadounerroronocomparandolasalidaproducidaconlasalidaesperadaparalaentradacorrespondiente{lasalidaesperadadeberaestardocumentadaenlaespeci caciondelprograma.Laslimitacionesantesmencionadasnoimpidenqueeltestingsebaseentecnicasconsistentes,sistematicasyrigurosas(eincluso,comoveremosmasadelante,formales).Sinembargo,enlapracticaindustrial,comoocurreconotrasareasdeIngenieradeSoftware,usualmenteseconsiderasolounapartemnimadedichastecnicastornandoaunaactividadrazonablementee cazye cienteenalgofutilydeescasoimpacto.Aunqueenlaindustriadesoftwareeltestingeslatecnicapredominante{enaquelloscasosminoritariosenqueserealizaunaactividadseriadeV&V{,enelambienteacademicoseestudianmuchasotrastecnicas.Veamosalgunosconceptosbasicosdetesting.Testearunprogramasigni caejecutarlobajocon-dicionescontroladastalesquepermitanobservarsusalidaoresultados.Eltestingseestructuraencasosdepruebaocasosdetest;loscasosdepruebasereunenenconjuntosdeprueba.Desdeelpuntodevistadeltestingseveaunprograma(osubrutina)comounafuncionquevadelproductocartesianodesusentradasenelproductocartesianodesussalidas.Esdecir:P:ID!ODdondeIDsellamadominiodeentradadelprogramayODeseldominiodesalida.Normalmentelosdominiosdeentradaysalidasonconjuntosdetuplastipadascuyoscamposidenti canacadaunadelasvariablesdeentradaosalidadelprograma,esdecir:IDb=[x1:X1;:::;xn:Xn]ODb=[y1:Y1;:::;ym:Ym]Deestaforma,uncasodepruebaesunelemento,x,deldominiodeentrada(esdecirx2ID)ytestearPconxessimplementecalcularP(x).Enelmismosentido,unconjuntodeprueba,porejemploT,esunconjuntodecasosdepruebade nidoporextensionytestearPconTescalcularP(x)paracadax2T.Esmuyimportantenotarquexesunvalorconstante,nounavariable;esdecir,siporejemploIDb=[num:N]entoncesuncasodepruebaes5,otropuedeser1000,etc.,peronon�24.Tambienesimportanteremarcarquex1;:::;xnsonlasentradasconqueseprogramoelprograma(estoincluyearchivos,parametrosrecibidos,datosledosdesdeelentorno,etc.)ynoentradasabstrac-tasogeneralesquenoestanrepresentadasexplcitamenteenelcodigo.Delamismaforma,y1;:::;ymsonlassalidasexplcitasoimplcitasdelprograma(estoincluyesalidasporcualquierdispositivo,parametroovalorderetorno,einclusoerrorestalescomonoterminacion,Segmentationfault,etc.).Deacuerdoalade nicionclasicadecorreccion,unprogramaescorrectosiveri casuespeci -cacion2.Entonces,alconsiderarsecomotecnicadeveri cacioneltesting,unprogramaescorrectosiningunodeloscasosdepruebaseleccionadosdetectaunerror.Precisamente,lapresenciadeunerrorodefectosedemuestracuandoP(x)nosatisfacelaespeci cacionparaalgunxenID.Unafallaeselsntomamani estodelapresenciadeunerror3[GJM91].Esdecirqueunerrorpermaneceraocultohastaqueocurraunafallacausadaporaquel.Porejemplo,silacondiciondeunasentencia 1Enelareadetestingsedistingueconciertaprecisionlosterminoserrorodefecto,fallayfalta,aunqueporelmomentonosotroslosconsideraremossinonimos.2Estade nicionseformalizarahastaciertopuntoenseccionesposteriores.3Fallaesnuestratraduccionparafailure.3 ifesx�0cuandodeberahabersidox�1,entonceshayunerrorenelprograma,quesemani-festara(falla)cuandosetesteeelprogramaconxiguala1{siporfortunaestecasodepruebaesseleccionado{porqueentalcasoapareceraciertomensajeenlapantallaqueparaesevalordexnodeberahaberaparecido.Enestesentidoeltestingtratadeincrementarlaprobabilidaddequeloserroresenunprogramacausenfallas,alseleccionarcasosdepruebaapropiados.Finalmente,unafaltaesunestadointermedioincorrectoalcualsellegadurantelaejecuciondeunprograma{porejemploseinvocaaunasubrutinacuandosedeberahaberinvocadoaotra,oseasignaunvaloraunavariablecuandosedeberahaberasignadootro4[GJM91].3.ElprocesodetestingEscasiimposible,exceptoparalosprogramasmaspeque~nos,testearunsoftwarecomosifueraunaunicaentidadmonoltica.Comohemosvistoenloscaptulossobrearquitecturaydise~no,losgrandessistemasdesoftwareestancompuestosdesubsistemas,modulosysubrutinas.Sesugiere,porlotanto,queelprocesodetestingesteguiadopordichaestructura,comomuestralaFigura1.Masaun,sielprocesosugeridosecombinaadecuadamenteconelprocesodedesarrollo,comomuestralaFigura3,entoncessehabilitalaposibilidaddeirdetectandoerroresdeimplementacionlomastempranamenteposible{loqueasuvezreduceelcostodedesarrollo. Figura1:Elprocesogeneraldetesting(fuente[Som95]).ComosugierelaFigura1,unsistemacomplejosueletestearseenvariasetapasqueporlogeneralseejecutansiguiendounaestrategiabottom-up,aunqueelprocesogeneralesiterativo.Sedebevolveralasfasesanteriorescadavezqueseencuentraunerrorenlafasequeestasiendoejecutada.Porejemplo,siseencuentraunerrorduranteeltestingdeunsubsistemaparticular,unavezqueaquelhayasidoreparadosedeberantestearlaunidaddondeestabaelerroryluegoelmoduloalcualpertenecelaunidadreparada.Engeneral,unavezdetectadounerrorsesigueelprocesogra cadoenlaFigura2.DeaququealasiteracionesdelprocesodelaFigura1selasllamere-testing.Dadoquenohayunade nicionprecisadesubsistemaeinclusodeunidad,elprocesodetestingsugeridodebeserconsideradocomounaguaquedebeseradaptadaacadacasoespec co.Eltestingdeaceptacionmencionadoenla gurapertenecealavalidaciondeunsistema(ynoalaveri cacion) 4Faltaesnuestratraduccionparafault.4 Figura2:Elprocesodedebugging(fuente[Som95]). Figura3:Coordinacionentreelprocesodetestingyelprocesodedesarrollo(adaptadode[Som95]).dadoqueeselusuarioelqueusaelsistemaenunentornomasomenosrealconel ndecomprobarsiesunaimplementacionrazonabledelosrequerimientos.Enestecursonosconcentraremoseneltestingdeunidaddadoqueeslabaseparaelrestodelproceso.Enlapracticaindustrialusualmenteseentiendequeeltestingesunaactividadqueserealizaunavezquelosprogramadoreshanterminadodecodi car;engeneralessinonimodetestingdeaceptacion.Entendidodeestaformaeltestingseconvierteenunaactividadcostosaeine cientedesdevariospuntosdevista: Lostestersestaranociososdurantelamayorpartedelproyectoyestaransobrecargadosdetrabajocuandoesteestepor nalizar. Loserrorestiendenaserdetectadosmuytarde. Sedescubreungrannumerodeerrorescuandoelpresupuestoseestaterminando. Loserrorestiendenaserdetectadosporlosusuariosynoporelpersonaldedesarrollo{loqueimplicaundesprestigioparaelgrupodedesarrollo.Porlotanto,sesugiereunprocesodetestingmejorimbricadoconelprocesogeneraldedesarrollo,comosemuestraenlaFigura3.Encuantoelequipodedesarrollocuentaconundocumentoderequerimientosmasomenosestable,lostesterspuedencomenzarade nircasosdepruebaparaeltestingdeaceptacion,dadoqueestesebasaenvalidarlosrequerimientos.Delamismaforma,tanprontocomosehade nidolaarquitecturaoeldise~nodelsistema,lostesterspuedenusardichadocumentacionparacalcularcasosdepruebaparaeltestingdesubsistemasydelsistema.Inclusoteniendoundise~nomasomenosdetallado{descriptoconladocumentacionquehemosanalizadoencaptulosanteriores{yunaespeci cacion(formaloinformal)decadaunidad,esperfectamente5 posiblecalcularcasosdepruebadeunidadmientraslosprogramadoreshacensutrabajo.Deestaformasereducenotablementeelimpactodealgunosdelosproblemasenumeradosmasarriba.AunquelaliteraturadeIngenieradeSoftwareproponeunayotravezestetipodeprocesos,ennuestraopinionlastecnicasyherramientasconcretasdisponiblesactualmenteaunestanmuylejoscomoparahacerdeltestingunaactividadrentableparalamayoradelosequiposdedesarrollo.Masaun,estamosconvencidosdequelallaveparahabilitarestosprocesosradicaencontarconlaposibilidaddeautomatizareltestingdeunidaddealgunaformatalquelostesterspuedancomenzaracalcularloscasosdepruebadesdelasfasesinicialesdelproyecto.Analizaremosunapropuestaenestesentidoencaptulosposteriores.4.TestingdedistintosaspectosdeunsoftwareHastaaquhemostratadodemaneraimplcitaqueesloqueseveri caenunsoftware.Porotrolado,hemosde nidoqueunprogramaescorrectosiveri casuespeci cacion.Pero,�quedescribelaespeci caciondeunsoftware?Encaptulosanterioresalhablardeespeci cacionhacamosreferenciaunicamentealafunciondelsoftware,esdeciralasoperacionesqueelsistemadeberealizar,elordenenquedeberealizarlas,etc.Sinembargo,laespeci caciondeunsoftware,enterminosmasgenerales,incluye{odeberaincluir{otrosaspectos(orequerimientosnofuncionales)masalladelafuncionalidad.Porejemplo,suelenespeci carserequisitosdeseguridad,desempe~no,toleranciaafallas,usabilidad,etc.Porlotanto,aldecirqueunprogramaescorrectosiveri casuespeci cacionenrealidadestamosincluyendotodosesosaspectosademasdelafuncionalidad.Enconsecuenciaaltestearunprogramadeberamosseleccionarcasosdepruebaconelobjetivodetesteartodosesosaspectosynosololafuncionalidad.Esdecirnosolodeberamosintentarresponderpreguntastalescomo�\Elsistemapermitecargarunatransaccionsoloenlascondicionesespeci cadas?",sinotambienotrascomo�\Elsistemapermitecargarhasta10.000transaccionesporminuto?",�\Elsistemapermitequesololosusuariosautorizadoscarguentransacciones?",etc.Claramentetodoestoesposiblesielequipodedesarrollocuentaconlasespeci cacionescorres-pondientes.Eltestingdealgunosdeestosaspectosnofuncionalessehaespecializadoenalgunamedidadandolugaraareasmasespec casconsuspropiasmetodologa,tecnicasyherramientas.Elcasomasreconocidoes,talvez,eltestingdeseguridadelcualintentaencontrarerroresquepermitanausuariosnoautorizadosutilizaromodi cardatosoprogramas.Eltestingdeesteaspectosehaespecializadotantoquelostestersdeseguridadsonprofesionalesconunapreparacionmuyespec capararealizarestatarea.Apesardetodasestasconsideracionesenestecaptulosoloabordaremoseltestingdelafuncio-nalidaddeunsoftware.Paramayoresdetallessobreeltestingderequisitosnofuncionalespuedenconsultarse,entreotros,[PJR08,captulo11]y[P 01,secciones9.3,9.6y9.9].5.LasdosmetodologasclasicasdetestingTradicionalmenteeltestingdesoftwaresehadivididoendosestrategiasbasicasquesesuponesondeaplicacionuniversal. Testingestructuralodecajablanca.Testearunsoftwaresiguiendoestaestrategiaimplicaquesetieneencuentalaestructuradelcodigofuentedelprogramaparaseleccionarcasosdeprueba{esdecir,eltestingestaguiadofundamentalmenteporlaexistenciadesentenciastipoif,case,while,etc.Enmuchasocasionesseponetantoenfasisenlaestructuradelcodigoqueseignoralaespeci caciondelprograma[GJM91],convirtiendoaltestingenunatareauntantodesprolijaeinconsistente.6 Comoloscasosdepruebasecalculandeacuerdoalaestructuradelcodigo,noesposiblegenerarlossinohastaqueelprogramahasidoterminado.Peoraun,sidebidoaerroresocambiosenlasestructurasdedatosoalgoritmos{aunsinquehayacambiadolaespeci cacion{,puedesernecesariovolveracalculartodosloscasos.Porestasrazonespreferimoslaotraestrategiadetesting,aunqueestudiaremoseltestingestructuralconciertodetalle.Sinembargoesinteresanteremarcarlaracionalidaddetrasdeestaestrategia:nosepuedeencontrarunerrorsinoseejecutalalneadecodigodondeseencuentraeseerror{aunqueejecutarunalneadecodigoconalgunoscasosdepruebanogarantizaencontrarunposibleerror;pienseenunaasignaciondelaformax=1/y.Porconsiguienteesimportanteseleccionarcasosdepruebaqueejecutenalmenosunaveztodaslaslneasdelprograma,locualselograanalizandolaestructuradelcodigo.Sedicequeeltestingestructuralpruebaloqueelprogramahaceynoloquesesuponequedebehacer. Testingbasadoenmodelosodecajanegra5.Testearunapiezadesoftwarecomounacajanegrasigni caejecutarelsoftwaresinconsiderarningundetallesobrecomofueimplementado.Estaestrategiasebasaenseleccionarloscasosdepruebaanalizandolaespeci cacionomodelodelprograma,enlugardesuimplementacion[GJM91].Algunosautores[UL06]consideranqueeltestingbasadoenmodelos(MBT)eslaautoma-tizaciondeltestingdecajanegra.ParalograrestaautomatizacionelMBTrequierequelosmodelosseanformalesdadoqueestaeslaunicaformaquepermiterealizarmultiplesanalisismecanicossobreeltextodelosmodelos.Porelcontrario,eltestingdecajanegratradicionalcalculaloscasosdepruebapartiendodeldocumentoderequerimientos.ComoenelMBTloscasosdepruebasecalculanpartiendodelmodelo,esposiblecomenzara\testear"casidesdeelcomienzodelproyecto{almenosmuchoantesdequesehayaterminadodeprogramarlaprimeraunidad.Porotraparte,peroporlamismarazon,loscasosdepruebacalculadoscontecnicasdeMBTsonmuchomasresistentesaloscambiosenlaimplementacionqueaquelloscalculadoscontecnicasdetestingestructural.Masaun,elMBTes,efectivamente,automatizableengranmedidacomodemostraremosmasadelantealutilizarunaherramientaparatal n.LagrandesventajadelMBTradicaensumismade nicion:serequieredeunmodeloformaldelsoftware,cosaquesolounporcentajen modelaindustriaescapazderealizar.DebidoalenfasisquelehemosdadoalosmetodosformalesydebidoalasventajasquepresentaelMBTesqueestudiaremosconmuchodetalleunatecnicaespec cadeestaestrategiadetesting.Sedicequeeltestingbasadoenmodelospruebaloqueelprogramasesuponequedebehacer,ynoloqueelprogramahace.Creemosqueesmuyimportanteremarcarqueestasestrategiasnosonopuestassinocomplemen-tarias.EnnuestraopinioneltestingdeberaestarguiadofundamentalmenteportecnicasdeMBTperocomplementadasconherramientasdeanalisisdecubrimientodesentenciasdeformatalqueloscasosgeneradosmedianteMBTcubranalmenostodaslaslneasdecodigo. 5Enedicionesanterioresdeestecursoyalgunosautores(porejemplo[GJM91])utilizantambienelnombretestingfuncional.Luegodeconsultarotrosautorescreemosquedichonombrenoesdeltodocorrectopuestoquedalaideadequeestaestrategiasolosepuedeaplicarcuandosetestealafuncionalidaddeunprograma.Porestemotivonoutilizaremosmasestenombrecomosinonimodetestingbasadoenmodelosodecajanegra.Deaquenmaselterminotestingfuncionalloutilizaremosparadesignareltestingdelafuncionalidaddelprograma(encontraposicionaltestingdelosaspectosnofuncionales;cf.seccion4).7 Enresumen,enloscaptulosquesiguenharemoshincapiecasiexclusivamenteeneltestingfun-cionalmediantetecnicasdeMBTparatestingdeunidad,aunqueintroduciremosalgunoscriteriosdetestingestructural(tambienparatestingdeunidad).Claramenteestoessolounafraccionmnimadetodoestetemaperoennuestraopinioneslabasesobrelacualsepuedeconstruirelrestodelmarcoteorico-practicodeltesting.Referencias[BCK03]LenBass,PaulClements,andRickKazman.Softwarearchitectureinpractice(secondedition).PearsonEducation,Boston,2003.[DBA+01]R.Dupuis,P.Bourque,A.Abran,J.W.Moore,andL.L.Tripp.TheSWEBOKProject:Guidetothesoftwareengineeringbodyofknowledge,May2001.StoneManTrialVersion1.00,http://www.swebok.org/[01/12/2003].[GJM91]CarloGhezzi,MehdiJazayeri,andDinoMandrioli.Fundamentalsofsofwareengineering.PrenticeHall,UpperSaddleRiver,NewJersey,1991.[P 01]ShariLawrenceP eeger.SoftwareEngineering:TheoryandPractice.PrenticeHallPTR,UpperSaddleRiver,NJ,USA,2001.[PJR08]AlanPage,KenJohnston,andBjRollison.HowWeTestSoftwareatMicrosoft.MicrosoftPress,2008.[Som95]IanSommerville.Softwareengineering(5thed.).AddisonWesleyLongmanPublishingCo.,Inc.,RedwoodCity,CA,USA,1995.[UL06]MarkUttingandBrunoLegeard.PracticalModel-BasedTesting:AToolsApproach.MorganKaufmannPublishersInc.,SanFrancisco,CA,USA,2006.8