76
Verificação, Validação e Testes Leonardo Gresta Paulino Murta [email protected]ff.br

Verificação, Validação e Testes

Embed Size (px)

Citation preview

Page 1: Verificação, Validação e Testes

Verificação,ValidaçãoeTestes

[email protected]

Page 2: Verificação, Validação e Testes

Oqueé?•  “HerraréUmano!!!”– Masnossosusuáriosnãotemculpa

– PrecisamosfazeromáximoparaentregarsoJwaredequalidade

•  ObjeMvosdeVV&T– Assegurarqueestamosfazendodeformacorretaoprodutocorreto

LeonardoMurta Verificação,ValidaçãoeTestes 2

Page 3: Verificação, Validação e Testes

Ciclodepropagação

LeonardoMurta Verificação,ValidaçãoeTestes 3

1–Desenvolvedorcometeumengano(mistake)

2–SoJwarecomdefeito(fault)

3–Defeitoéexercitadoegeraumerro(error)

001101

2+2=5

4–SoJwarefalha(failure)

5–Usuáriosofreasconsequências

001101

max(1,0)à0

Page 4: Verificação, Validação e Testes

TestexDepuração

LeonardoMurta Verificação,ValidaçãoeTestes 4

1–Desenvolvedorcometeumengano(mistake)

2–SoJwarecomdefeito(fault)

3–Defeitoéexercitadoegeraumerro(error)

001101

2+2=5

4–SoJwarefalha(failure)

001101

max(1,0)à0

TestebuscaporfalhasouerrosexercitandoosoJwarecomoumtodooupartesdele

Page 5: Verificação, Validação e Testes

TestexDepuração

LeonardoMurta Verificação,ValidaçãoeTestes 5

1–Desenvolvedorcometeumengano(mistake)

2–SoJwarecomdefeito(fault)

3–Defeitoéexercitadoegeraumerro(error)

001101

2+2=5

4–SoJwarefalha(failure)

001101

max(1,0)à0

DepuraçãobuscaecorrigedefeitosquesãoresponsáveisporfalhasouerrosdosoJware

Page 6: Verificação, Validação e Testes

Vamosentãofazertestesparatodasaspossibilidadesexistentes!

LeonardoMurta Verificação,ValidaçãoeTestes 6

Page 7: Verificação, Validação e Testes

Vamosentãofazertestesparatodasaspossibilidadesexistentes!

•  Infelizmente,issoéimpossível•  Exemplo–  Programasimples,com2loopsaninhadosqueexecutam6vezescadae1if-then-elsedentro

– Aproximadamente236caminhosdeexecuçãopossíveis– Assumindoqueamáquinaexecuta1testepormilissegundo

–  Seriamnecessários2anosininterruptosdeprocessamento•  ImaginetestarexausMvamenteoDebianGNU/LINUX4,comsuas283MLOCs!!!

LeonardoMurta Verificação,ValidaçãoeTestes 7

Page 8: Verificação, Validação e Testes

VerificaçãoxValidação•  Verificação– EstamosfazendocorretamenteosoJware?– Aderênciaaosrequisitosespecificados

•  Validação– EstamosfazendoosoJwarecorreto?– Aderênciaaosrequisitosdesejadosdousuário

•  NãoadiantafazercomperfeiçãoumsoJwarequenãosejaoqueousuáriodeseja!

LeonardoMurta Verificação,ValidaçãoeTestes 8

Page 9: Verificação, Validação e Testes

VerificaçãoxValidação

LeonardoMurta Verificação,ValidaçãoeTestes 9

Requisitos Arquitetura Código

Page 10: Verificação, Validação e Testes

Verificação

LeonardoMurta Verificação,ValidaçãoeTestes 10

?

Page 11: Verificação, Validação e Testes

Verificação

LeonardoMurta Verificação,ValidaçãoeTestes 11

Desenvolvimento

Requisitos Arquitetura Código

Page 12: Verificação, Validação e Testes

Verificação

LeonardoMurta Verificação,ValidaçãoeTestes 12

Desenvolvimento

Verificação

Requisitos Arquitetura Código

TestedeUnidade

TestedeIntegração

Page 13: Verificação, Validação e Testes

Validação

LeonardoMurta Verificação,ValidaçãoeTestes 13

?

Page 14: Verificação, Validação e Testes

Validação

LeonardoMurta Verificação,ValidaçãoeTestes 14

Validação

Requisitos

Especificação

Page 15: Verificação, Validação e Testes

Validação

LeonardoMurta Verificação,ValidaçãoeTestes 15

Validação

Requisitos

TestedeAceitação(homologação)

Especificação

Page 16: Verificação, Validação e Testes

VerificaçãoxValidação

LeonardoMurta Verificação,ValidaçãoeTestes 16

Verificação

Page 17: Verificação, Validação e Testes

Anatomiadetestes

LeonardoMurta Verificação,ValidaçãoeTestes 17

Sistemasendotestado

Casodeteste

Oráculo

DadosestansMcos

Sistemaslegados

Valoresdeexemplo Especialista

Resultado

Dadosdeteste

Page 18: Verificação, Validação e Testes

Pontosimportantes•  Verificaçãonãoprecisaserfeitasomentequandoexistecódigo–  InspeçõessãotécnicasefeMvasparaidenMficaçãodedefeitos,mesmoantesdetercódigo

•  Testesdevemseraplicadosnaspartes,parasóentãoseraplicadonotodo–  Facilitaoisolamentoealocalizaçãoposteriordedefeitos

•  Quemfazostestes?–  Oprópriodesenvolvedor,emrelaçãoàspartes(testesdeunidade)

–  Umaequipeprópriaeindependentedetestes,emrelaçãoaotodo(testesdeintegração)

–  Ousuário(testesdeaceitação)LeonardoMurta Verificação,ValidaçãoeTestes 18

Page 19: Verificação, Validação e Testes

Pontosimportantes•  TestesnãosubsMtuemprodutosdequalidade– Produtosdebaixaqualidade,aoseremsubmeMdosatestes,precisarãoserrefeitos(retrabalho!!!)

•  ParaquetestessejamefeMvos,planejamentoéfundamental– Énecessárioestabelecerumobje>voclarodetestes– Éimportanteoalinhamentodostestescomosperfisdosusuários

LeonardoMurta Verificação,ValidaçãoeTestes 19

Page 20: Verificação, Validação e Testes

CaracterísMcasdeumbomcasodeteste

•  Teraltaprobabilidadedeencontrarerros– Conheceroprodutoeexploraraspectosdiferenciados

•  Nãoserredundante– Estabelecerclaramenteopropósitodecadateste(planejamento)

•  Nãoserdemasiadamentecomplexo–  Decomporostestesdeformaquecadatestefoqueemsomenteumobje>vo

LeonardoMurta Verificação,ValidaçãoeTestes 20

Page 21: Verificação, Validação e Testes

Exercício•  Etapa1–  Codifiquenopapelumalgoritmoparaordenação–  Definaalgunstestesparaessealgoritmo

•  Etapa2–  Insirapropositalmenteumdefeitonoseualgoritmo

•  Etapa3–  Passeoseualgoritmoparaoutrogrupoerecebaoalgoritmodeoutrogrupo

–  Apliqueseustestessobreoalgoritmorecebido–  Seustestesforamcapazesdedetectarafalhanoalgoritmo?

LeonardoMurta Verificação,ValidaçãoeTestes 21

Page 22: Verificação, Validação e Testes

Testecaixabrancaxcaixapreta•  DuasestratégiasdisMntasparaelaboraçãodetestes•  Testecaixabranca–  Tambémconhecidocomotesteestrutural–  Conheceointeriordoproduto–  UMlizaesseconhecimentonadefiniçãodaestratégiadeteste–  Encontraerros

•  Testecaixapreta–  Tambémconhecidocomotestefuncional–  Nãoconheceointeriordoproduto–  UMlizasomenteosrequisitosnadefiniçãodaestratégiadeteste–  Encontrafalhas

LeonardoMurta Verificação,ValidaçãoeTestes 22

Page 23: Verificação, Validação e Testes

Metadotestecaixabranca•  GaranMrquetodososcaminhosindependentesforamexercitadosaomenosumavez– Umcaminhoindependenteéumcaminhoqueexercitaalgumanovainstruçãooucondiçãodoprograma

•  GaranMrquetodasasdecisõeslógicasforamexercitadasdonosdoissenMdos(V/F)

•  GaranMrquetodososloopsforamexercitadosnosseusvaloresdefronteira

•  GaranMrqueasestruturasdedadosinternasforamexercitadasparaassegurarasuaintegridade

LeonardoMurta Verificação,ValidaçãoeTestes 23

Page 24: Verificação, Validação e Testes

Testedefumaça•  Metáforaafumaçageradaporcircuitoeletrônicocomdefeitonasuaprimeiraexecução

•  Consisteemfazerumtestesuperficialqueindicaaviabilidadederodarosdemaistestes–  TodasaspartessãocombinadaseégeradoumbuilddosoJware

–  EssebuildésubmeMdoatestesbásicos

–  EsseprocessoérepeMdofrequentemente(e.g.,diariamente)

LeonardoMurta Verificação,ValidaçãoeTestes 24

Page 25: Verificação, Validação e Testes

Testesdeunidade•  Focoemtestarcaminhosespecíficosdoproduto(caixabranca)

•  Visater100%decobertura– Nestecaso,100%decoberturarepresentandoaexecuçãodetodasaslinhasdocódigo

–  Jávimosqueéimpossívelter100%decoberturaparatodososcaminhospossíveisdeexecução!!!

•  Normalmentecapturaerrosdecálculos,comparaçõesefluxodecontrole–  Éfundamentaltestarasfronteiras–  Ex.:valores-1,0,n,(n+1)paraumloopde0an

LeonardoMurta Verificação,ValidaçãoeTestes 25

Page 26: Verificação, Validação e Testes

Testesdeunidade(Drivers&stubs)

•  Paraviabilizarotestedeunidade,énecessárioconstruirdriversestubs

LeonardoMurta Verificação,ValidaçãoeTestes 26

Parteasertestada

Driver

Stub1 Stub2

Chamadaafuncionalidadesaseremtestadas

Chamadasafuncionalidadesqueretornamvalorespredefinidos

Page 27: Verificação, Validação e Testes

Testesdeunidade•  Esenãodertempoparafazertodosostestesdeunidade?– Seconcentreaomenosnaspartescommaiorcomplexidade

– Paraissoénecessáriocalcularacomplexidadeciclomá>cadaspartes

•  ComplexidadeciclomáMcaéonúmerodecaminhosindependentesdeumprograma

LeonardoMurta Verificação,ValidaçãoeTestes 27

Page 28: Verificação, Validação e Testes

Projetodetestes•  Métododeconjuntobásico(basisset)–  Visaexercitaraomenosumaveztodasassentenças

deumprograma–  Sebaseianografodefluxo(flowgraph)doprograma

enasuacomplexidadeciclomáMca–  Permiteencontrarquantossãooscaminhos

independentesdeteste–  Permiteencontrarpossíveisconjuntosmínimosde

caminhosindependentesdeteste

LeonardoMurta Verificação,ValidaçãoeTestes 28

Page 29: Verificação, Validação e Testes

Projetodetestes1.  Gerarografodefluxos(flowgraph)paracada

parte(método,procedimento,função,etc.)•  sentençaa;sentençab;sentençac;...(1)

•  ifa(1)thenb(2)elsec(3)endif(4)

LeonardoMurta Verificação,ValidaçãoeTestes 29

12

34

1

Page 30: Verificação, Validação e Testes

Projetodetestes•  whilea(1)dob(2)endwhile(3)[ou]•  fora(1)dob(2)endfor(3)

•  doa(1)whileb(2)enddo(3)[ou]•  repeata(1)unMlb(2)enddo(3)

LeonardoMurta Verificação,ValidaçãoeTestes 30

1 2 3

1 2 3

Page 31: Verificação, Validação e Testes

Projetodetestes•  switcha(1)caseb(2);casec(3)cased(4)...

endswitch(5)

•  Tratamentoespecialparaexpressõesbooleanas–  ifa(1)OUb(2)thenc(3)elsed(4)endif(5)

LeonardoMurta Verificação,ValidaçãoeTestes 31

1

2

3 5

4

13

25

4

Page 32: Verificação, Validação e Testes

Projetodetestes2.  CalcularacomplexidadeciclomáMcadografode

fluxos

•  V(G)=E–N+2–  Géografodefluxo–  V(G)éacomplexidadeciclomáMcadografodefluxo

G–  EéonúmerodearestasdografoG–  NéonúmerodevérMcesdografoG

LeonardoMurta Verificação,ValidaçãoeTestes 32

Page 33: Verificação, Validação e Testes

Projetodetestes3.  IdenMficarV(G)caminhosindependentesque

formemoconjuntobásico–  Fazerumabuscaemprofundidadepeloscaminhos

possíveis,sempreadicionandoalgumaarestanova

4.  Elaborarcasosdetestecomvaloresdeentradaqueexercitemcadaumdoscaminhosindependentesdoconjuntobásico

LeonardoMurta Verificação,ValidaçãoeTestes 33

Page 34: Verificação, Validação e Testes

Exemplo(quicksort)publicList<String>ordena(List<String>listaDesordenada){List<String>listaOrdenada=newArrayList<String>();if(listaDesordenada.size()>1){Stringpivo=listaDesordenada.get(0);List<String>listaMenoresDesordenada=newArrayList<String>();List<String>listaMaioresDesordenada=newArrayList<String>();for(inti=1;i<listaDesordenada.size();i++){Stringelemento=listaDesordenada.get(i);if(elemento.compareTo(pivo)<0){listaMenoresDesordenada.add(elemento);}else{listaMaioresDesordenada.add(elemento);}}listaOrdenada.addAll(ordena(listaMenoresDesordenada));listaOrdenada.add(pivo);listaOrdenada.addAll(ordena(listaMaioresDesordenada));}else{listaOrdenada.addAll(listaDesordenada);}returnlistaOrdenada;}

LeonardoMurta Verificação,ValidaçãoeTestes 34

Page 35: Verificação, Validação e Testes

Extraçãodografodefluxo...publicList<String>ordena(List<String>listaDesordenada){List<String>listaOrdenada=newArrayList<String>();if(listaDesordenada.size()>1){Stringpivo=listaDesordenada.get(0);List<String>listaMenoresDesordenada=newArrayList<String>();List<String>listaMaioresDesordenada=newArrayList<String>();for(inti=1;i<listaDesordenada.size();i++){Stringelemento=listaDesordenada.get(i);if(elemento.compareTo(pivo)<0){listaMenoresDesordenada.add(elemento)}else{listaMaioresDesordenada.add(elemento);}}listaOrdenada.addAll(ordena(listaMenoresDesordenada));listaOrdenada.add(pivo);listaOrdenada.addAll(ordena(listaMaioresDesordenada));}else{listaOrdenada.addAll(listaDesordenada);}returnlistaOrdenada;}

LeonardoMurta Verificação,ValidaçãoeTestes 35

1

3

4

75

9810

12 13

2

6

11

14

Page 36: Verificação, Validação e Testes

GrafodefluxoecomplexidadeciclomáMca

•  V(G)=E–N+2=16–14+2=4–  Teste1:1,2,12,13,14–  Teste2:1,2,3,4,10,11,13,14(impossível)–  Teste3:1,2,3,4,5,6,7,9,4,10,11,13,14–  Teste4:1,2,3,4,5,6,8,9,4,10,11,13,14

LeonardoMurta Verificação,ValidaçãoeTestes 36

2

3

1

4 5 1067

89 11

12

13 14

Page 37: Verificação, Validação e Testes

Exemplo(teste1comJUnit)

@Testpublicvoidteste1(){List<String>listaDesordenada=Arrays.asList("abc");List<String>oraculo=Arrays.asList("abc");List<String>resultado=quicksort.ordena(listaDesordenada);assertEquals(oraculo,resultado);}

LeonardoMurta Verificação,ValidaçãoeTestes 37

Page 38: Verificação, Validação e Testes

Exemplo(teste2comJUnit)

@Testpublicvoidteste2(){List<String>listaDesordenada=Arrays.asList("def","abc");List<String>oraculo=Arrays.asList("abc","def");List<String>resultado=quicksort.ordena(listaDesordenada);assertEquals(oraculo,resultado);}

LeonardoMurta Verificação,ValidaçãoeTestes 38

Page 39: Verificação, Validação e Testes

Exemplo(teste3comJUnit)

@Testpublicvoidteste3(){List<String>listaDesordenada=Arrays.asList("abc","def");List<String>oraculo=Arrays.asList("abc","def");List<String>resultado=quicksort.ordena(listaDesordenada);assertEquals(oraculo,resultado);}

LeonardoMurta Verificação,ValidaçãoeTestes 39

Page 40: Verificação, Validação e Testes

Exemplo(resultadonoJUnit)

LeonardoMurta Verificação,ValidaçãoeTestes 40

Page 41: Verificação, Validação e Testes

Exemplo(quicksortcomdefeito)publicList<String>ordena(List<String>listaDesordenada){List<String>listaOrdenada=newArrayList<String>();if(listaDesordenada.size()>1){Stringpivo=listaDesordenada.get(0);List<String>listaMenoresDesordenada=newArrayList<String>();List<String>listaMaioresDesordenada=newArrayList<String>();for(inti=1;i<listaDesordenada.size()-1;i++){Stringelemento=listaDesordenada.get(i);if(elemento.compareTo(pivo)<0){listaMenoresDesordenada.add(elemento)}else{listaMaioresDesordenada.add(elemento);}}listaOrdenada.addAll(ordena(listaMenoresDesordenada));listaOrdenada.add(pivo);listaOrdenada.addAll(ordena(listaMaioresDesordenada));}else{listaOrdenada.addAll(listaDesordenada);}returnlistaOrdenada;}

LeonardoMurta Verificação,ValidaçãoeTestes 41

Page 42: Verificação, Validação e Testes

Exemplo(resultadonoJUnitcomdefeito)

LeonardoMurta Verificação,ValidaçãoeTestes 42

Page 43: Verificação, Validação e Testes

Exemplo(coberturadostestescomEMMA)

LeonardoMurta Verificação,ValidaçãoeTestes 43

Page 44: Verificação, Validação e Testes

Exemplo(coberturadostestescomEMMA)

LeonardoMurta Verificação,ValidaçãoeTestes 44

Page 45: Verificação, Validação e Testes

Exemplo(coberturadoteste1comEMMA)

LeonardoMurta Verificação,ValidaçãoeTestes 45

Page 46: Verificação, Validação e Testes

Exemplo(coberturadoteste1comEMMA)

LeonardoMurta Verificação,ValidaçãoeTestes 46

Page 47: Verificação, Validação e Testes

Projetodetestes(outrasestratégias)

•  Testesbaseadosemdefeitos– VisaidenMficarosMposdedefeitomaisprováveis– Projetatestesquesãoeficazesnadescobertadeerrosoriundosdessesdefeitos

•  Testesbaseadosemcenários– Projetatestesemfunçãodosprincipaiscenáriosdeusodosistema,enãonasfuncionalidadesdosistema

– Éguiadopelousuário,enãopelaestruturaLeonardoMurta Verificação,ValidaçãoeTestes 47

Page 48: Verificação, Validação e Testes

Tratamentodeexceções•  ÉumaboapráMcaconstruirsoJwarecapazdetratarassuasprópriasexceções(erros)

•  Nestecaso,otratamentodeexceçõesprecisatambémsertestado– Amensagemquedescreveaexceçãoécompreensível?– Amensagemcorrespondeaoerro?– OmecanismouMlizadoparaotratamentoéapropriado?– AmensagempermiMráqueosdesenvolvedoreslocalizemodefeito?

LeonardoMurta Verificação,ValidaçãoeTestes 48

Page 49: Verificação, Validação e Testes

Exercício•  ApliquejUnit(ouqualqueroutroxUnit)sobrealgumapartedotrabalhodocurso

•  ExibaacoberturadetestesuMlizandoEMMA(ouqualqueroutraferramenta)

•  Dica:oNetBeanstemambasasferramentas– h�p://www.netbeans.org–  JUnitjávemnadistribuiçãopadrãodoNetBeans– EMMAéumplugin-h�p://codecoverage.netbeans.org

LeonardoMurta Verificação,ValidaçãoeTestes 49

Page 50: Verificação, Validação e Testes

Exercícios•  Tragaumexemplodacriaçãodestubscoma

ferramentaMockito,EasyMockoujMock(oualgumaoutraquevocêconheça)–  h�p://www.mockito.org–  h�p://www.easymock.org–  h�p://www.jmock.org

LeonardoMurta Verificação,ValidaçãoeTestes 50

Page 51: Verificação, Validação e Testes

DesenvolvimentoDirigidoaTestes(TDD–métodoágil)

•  Inverteaordem,colocandotesteantesdacodificação(testfirst)1.  Otesteéconstruídoantesdaimplementaçãoda

funcionalidade2.  Otestedevefalharnessemomento(vermelho)3.  Éfeitoocódigomaissimplescapazdeatenderaoteste

(verde)4.  OcódigoérefatoradocomoobjeMvodeaumentara

qualidadedoproduto5.  Retornaaopasso1enquantoMveremnovas

funcionalidadesaseremimplementadas

LeonardoMurta Verificação,ValidaçãoeTestes 51

Page 52: Verificação, Validação e Testes

Testesdeintegração•  Focoemcombinaraspartesdoprodutoetestaraspartesemconjunto

•  Visaanalisaroprodutoemtermosdeentradasesaídas(caixapreta)– Eventualmentetestatambémcaminhosespecíficosdegranderelevância

LeonardoMurta Verificação,ValidaçãoeTestes 52

Page 53: Verificação, Validação e Testes

Estratégiasparaintegração•  Bigbang–  Jogaforaosdriversestubs,conectatodasaspartes,eexecutatodosostestesdeintegração

– Geranormalmenteumgrandenúmerodeerros–  Tornadi�cilaaMvidadededepuração

•  Incremental– Aospoucos,segundoalgumcritério,driversestubssãosubsMtuídosporpartesreaisdosoJware,eostestesdeintegraçãosãoexecutados

– OserrosaparecemgradaMvamente– OespaçodebuscaparaaMvidadededepuraçãoémenor

LeonardoMurta Verificação,ValidaçãoeTestes 53

Page 54: Verificação, Validação e Testes

Exercício•  AssumaqueosvérMcesabaixosejamclassesdeumsistema

orientadoaobjetos,easarestasassuasdependênciasondeAàBsignificaAdependedeB.–  Qualcritériodeintegraçãoincrementalvocêadotaria?–  QualMpodebusca(larguraouprofundidade)implementaessecritério?

–  QualseriaumapossívelordemdeintegraçãoassumindoqueaclasseAéresponsávelpelainicializaçãodosistema(classeraiz)?

F

G

J

H

I

B

A

C

D

E

LeonardoMurta 54Verificação,ValidaçãoeTestes

Page 55: Verificação, Validação e Testes

Integraçãotop-down•  AparteraizdaárvorededependênciastemseusstubsgradaMvamentesubsMtuídosporpartesreaisdosistema

LeonardoMurta Verificação,ValidaçãoeTestes 55

ADriverStubB

StubC

BDriver StubD

CDriverStubE

StubF

...

...

ADriver

B StubD

CStubE

StubF

...

Page 56: Verificação, Validação e Testes

Integraçãobo?om-up•  AspartesfolhadaárvorededependênciastêmseusdriversgradaMvamentesubsMtuídosporpartesreaisdosistema

LeonardoMurta Verificação,ValidaçãoeTestes 56

ADriverStubB

StubC

BDriver StubD

CDriverStubE

StubF

...

...

ADriverStubB

StubC

BDriver

CDriver

...F

E

D

Page 57: Verificação, Validação e Testes

Top-downxbo?om-up•  Integraçãotop-down,apesardefazersenMdo,manteráousodestubsportodosospassosdeintegraçãoincremental,menosoúlMmo

•  Integraçãobo?om-updefatosubsMtuigradaMvamentestubsporpartesreais– Ostestesmanipulamdadosprocessadosenãoconstruídosporstubs

LeonardoMurta Verificação,ValidaçãoeTestes 57

Page 58: Verificação, Validação e Testes

Exercício•  Definaaestratégiaaseradotadapeloseugrupoparatestesdeintegraçãodotrabalhodocurso

LeonardoMurta Verificação,ValidaçãoeTestes 58

Page 59: Verificação, Validação e Testes

Testedesistema•  TranscendeosoJware•  Ocorredepoisdosdemaisteste

•  VisagaranMrqueosoJwarefuncionacorretamentecomosdemaiselementosdosistema

•  Exemplo– Hardware-in-the-loop

LeonardoMurta Verificação,ValidaçãoeTestes 59

Page 60: Verificação, Validação e Testes

Testedesistema(Mpos)

•  Testederecuperação–  Forçasituaçõesextremas–  Verificacomoosistemasecomportaposteriormente

•  Testedesegurança–  Verificaseosistematembrechasquepossibiliteminvasões

–  Emalgunscasos,hackerssãocontratadosparaessefim•  Testedeestresse(carga)–  SubmeteosoJwareaumaelevadademandadeuMlização–  Verificacomoaqualidadedeserviçovariaemfunçãodessademanda

LeonardoMurta Verificação,ValidaçãoeTestes 60

Page 61: Verificação, Validação e Testes

Exemplo(Selenium–gravaçãoereprodução)

LeonardoMurta Verificação,ValidaçãoeTestes 61

Page 62: Verificação, Validação e Testes

Exemplo(Selenium–exportação)

LeonardoMurta Verificação,ValidaçãoeTestes 62

Page 63: Verificação, Validação e Testes

Exemplo(Selenium–exportadoparaJUnit)

packagecom.example.tests;importcom.thoughtworks.selenium.*;importjava.uMl.regex.Pa�ern;publicclassUnMtledextendsSeleneseTestCase{

publicvoidsetUp()throwsExcepMon{ setUp("h�p://www.google.com.br/","*chrome");}publicvoidtestUnMtled()throwsExcepMon{ selenium.open("/"); selenium.type("q","EngenhariadeSoJwareuff"); selenium.click("btnG"); selenium.waitForPageToLoad("30000"); selenium.click("//ol[@id='rso']/li[1]/h3/a/em"); selenium.waitForPageToLoad("30000"); verifyTrue(selenium.isTextPresent("LeonardoGrestaPaulinoMurta"));}

}

LeonardoMurta Verificação,ValidaçãoeTestes 63

Page 64: Verificação, Validação e Testes

Exemplo(jMeter–configuraçãodacarga)

LeonardoMurta Verificação,ValidaçãoeTestes 64

Page 65: Verificação, Validação e Testes

Exemplo(jMeter–adiçãodetestador)

LeonardoMurta Verificação,ValidaçãoeTestes 65

Page 66: Verificação, Validação e Testes

Exemplo(jMeter–resultados)

LeonardoMurta Verificação,ValidaçãoeTestes 66

Page 67: Verificação, Validação e Testes

Exemplo(profilingdeCPU)

LeonardoMurta Verificação,ValidaçãoeTestes 67

Page 68: Verificação, Validação e Testes

Exemplo(profilingdememória)

LeonardoMurta Verificação,ValidaçãoeTestes 68

Page 69: Verificação, Validação e Testes

Exercício•  UMlizeSelenium,jMeteroualgumprofilersobreotrabalhodocursoeapresenteosresultadosobMdos

LeonardoMurta Verificação,ValidaçãoeTestes 69

Page 70: Verificação, Validação e Testes

Testederegressão•  NãoémaisumMpodeteste,massimumpapelquepodeserempenhadopordiferentesMposdeteste

•  Visaevitarquedefeitosjácorrigidosretornemaoproduto

•  Muitousadoemtestesdeintegração,ondetestesanterioressãoaplicados

LeonardoMurta Verificação,ValidaçãoeTestes 70

Page 71: Verificação, Validação e Testes

Testesdeaceitação•  Focoemapresentaroprodutoaousuárioparaqueoprodutosejahomologado

•  Visaestabelecercritériosparaaceitação– Funcionais– Comportamentais– Dedesempenho

•  Tiposdetestedeaceitação– Alfa– Beta

LeonardoMurta Verificação,ValidaçãoeTestes 71

Page 72: Verificação, Validação e Testes

Cenárionpicodevalidação

LeonardoMurta Verificação,ValidaçãoeTestes 72

Sistemasendotestado

Testesformais(critérios,planos,etc.)

Testesinformais(adhoc)Semanasoumeses

SistemaanMgo(manualou

automaMzado)

UMlizaçãoemparalelo

Page 73: Verificação, Validação e Testes

Testesalfa

LeonardoMurta Verificação,ValidaçãoeTestes 73

Sistemasendotestado

Usa

Ambientecontrolado(e.g.,localdodesenvolvimento)

Observa

(numeroreduzido)

Page 74: Verificação, Validação e Testes

Testesbeta

LeonardoMurta Verificação,ValidaçãoeTestes 74

Sistemasendotestado

Usa

Ambientereal(e.g.,localdeprodução)

Reportaproblemas

SistemadeControledeSolicitações

Page 75: Verificação, Validação e Testes

Referências•  Pilone,D.;Miles,R.;2008.HeadFirstSoJwareDevelopment.O’ReillyMedia.

•  Pressman,R.S.;2004.SoJwareEngineering:APracMMoner’sApproach.6ed.McGraw-Hill.

LeonardoMurta 75Verificação,ValidaçãoeTestes

Page 76: Verificação, Validação e Testes

Verificação,ValidaçãoeTestes

[email protected]