verificação, validação e testesleomurta/courses/es2/aula6.pdf · vamos então fazer testes...
TRANSCRIPT
![Page 2: Verificação, Validação e Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/2.jpg)
Oqueé?• “HerraréUmano!!!”– Masnossosusuáriosnãotemculpa
– PrecisamosfazeromáximoparaentregarsoJwaredequalidade
• ObjeMvosdeVV&T– Assegurarqueestamosfazendodeformacorretaoprodutocorreto
LeonardoMurta Verificação,ValidaçãoeTestes 2
![Page 3: Verificação, Validação e Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/3.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/4.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/5.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/6.jpg)
Vamosentãofazertestesparatodasaspossibilidadesexistentes!
LeonardoMurta Verificação,ValidaçãoeTestes 6
![Page 7: Verificação, Validação e Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/7.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/8.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/9.jpg)
VerificaçãoxValidação
LeonardoMurta Verificação,ValidaçãoeTestes 9
Requisitos Arquitetura Código
![Page 10: Verificação, Validação e Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/10.jpg)
Verificação
LeonardoMurta Verificação,ValidaçãoeTestes 10
?
![Page 11: Verificação, Validação e Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/11.jpg)
Verificação
LeonardoMurta Verificação,ValidaçãoeTestes 11
Desenvolvimento
Requisitos Arquitetura Código
![Page 12: Verificação, Validação e Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/12.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/13.jpg)
Validação
LeonardoMurta Verificação,ValidaçãoeTestes 13
?
![Page 14: Verificação, Validação e Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/14.jpg)
Validação
LeonardoMurta Verificação,ValidaçãoeTestes 14
Validação
Requisitos
Especificação
![Page 15: Verificação, Validação e Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/15.jpg)
Validação
LeonardoMurta Verificação,ValidaçãoeTestes 15
Validação
Requisitos
TestedeAceitação(homologação)
Especificação
![Page 16: Verificação, Validação e Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/16.jpg)
VerificaçãoxValidação
LeonardoMurta Verificação,ValidaçãoeTestes 16
Verificação
![Page 17: Verificação, Validação e Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/17.jpg)
Anatomiadetestes
LeonardoMurta Verificação,ValidaçãoeTestes 17
Sistemasendotestado
Casodeteste
Oráculo
DadosestansMcos
Sistemaslegados
Valoresdeexemplo Especialista
Resultado
Dadosdeteste
![Page 18: Verificação, Validação e Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/18.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/19.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/20.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/21.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/22.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/23.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/24.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/25.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/26.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/27.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/28.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/29.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/30.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/31.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/32.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/33.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/34.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/35.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/36.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/37.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/38.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/39.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/40.jpg)
Exemplo(resultadonoJUnit)
LeonardoMurta Verificação,ValidaçãoeTestes 40
![Page 41: Verificação, Validação e Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/41.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/42.jpg)
Exemplo(resultadonoJUnitcomdefeito)
LeonardoMurta Verificação,ValidaçãoeTestes 42
![Page 43: Verificação, Validação e Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/43.jpg)
Exemplo(coberturadostestescomEMMA)
LeonardoMurta Verificação,ValidaçãoeTestes 43
![Page 44: Verificação, Validação e Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/44.jpg)
Exemplo(coberturadostestescomEMMA)
LeonardoMurta Verificação,ValidaçãoeTestes 44
![Page 45: Verificação, Validação e Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/45.jpg)
Exemplo(coberturadoteste1comEMMA)
LeonardoMurta Verificação,ValidaçãoeTestes 45
![Page 46: Verificação, Validação e Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/46.jpg)
Exemplo(coberturadoteste1comEMMA)
LeonardoMurta Verificação,ValidaçãoeTestes 46
![Page 47: Verificação, Validação e Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/47.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/48.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/49.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/50.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/51.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/52.jpg)
Testesdeintegração• Focoemcombinaraspartesdoprodutoetestaraspartesemconjunto
• Visaanalisaroprodutoemtermosdeentradasesaídas(caixapreta)– Eventualmentetestatambémcaminhosespecíficosdegranderelevância
LeonardoMurta Verificação,ValidaçãoeTestes 52
![Page 53: Verificação, Validação e Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/53.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/54.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/55.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/56.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/57.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/58.jpg)
Exercício• Definaaestratégiaaseradotadapeloseugrupoparatestesdeintegraçãodotrabalhodocurso
LeonardoMurta Verificação,ValidaçãoeTestes 58
![Page 59: Verificação, Validação e Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/59.jpg)
Testedesistema• TranscendeosoJware• Ocorredepoisdosdemaisteste
• VisagaranMrqueosoJwarefuncionacorretamentecomosdemaiselementosdosistema
• Exemplo– Hardware-in-the-loop
LeonardoMurta Verificação,ValidaçãoeTestes 59
![Page 60: Verificação, Validação e Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/60.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/61.jpg)
Exemplo(Selenium–gravaçãoereprodução)
LeonardoMurta Verificação,ValidaçãoeTestes 61
![Page 62: Verificação, Validação e Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/62.jpg)
Exemplo(Selenium–exportação)
LeonardoMurta Verificação,ValidaçãoeTestes 62
![Page 63: Verificação, Validação e Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/63.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/64.jpg)
Exemplo(jMeter–configuraçãodacarga)
LeonardoMurta Verificação,ValidaçãoeTestes 64
![Page 65: Verificação, Validação e Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/65.jpg)
Exemplo(jMeter–adiçãodetestador)
LeonardoMurta Verificação,ValidaçãoeTestes 65
![Page 66: Verificação, Validação e Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/66.jpg)
Exemplo(jMeter–resultados)
LeonardoMurta Verificação,ValidaçãoeTestes 66
![Page 67: Verificação, Validação e Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/67.jpg)
Exemplo(profilingdeCPU)
LeonardoMurta Verificação,ValidaçãoeTestes 67
![Page 68: Verificação, Validação e Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/68.jpg)
Exemplo(profilingdememória)
LeonardoMurta Verificação,ValidaçãoeTestes 68
![Page 69: Verificação, Validação e Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/69.jpg)
Exercício• UMlizeSelenium,jMeteroualgumprofilersobreotrabalhodocursoeapresenteosresultadosobMdos
LeonardoMurta Verificação,ValidaçãoeTestes 69
![Page 70: Verificação, Validação e Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/70.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/71.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/72.jpg)
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 Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/73.jpg)
Testesalfa
LeonardoMurta Verificação,ValidaçãoeTestes 73
Sistemasendotestado
Usa
Ambientecontrolado(e.g.,localdodesenvolvimento)
Observa
(numeroreduzido)
![Page 74: Verificação, Validação e Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/74.jpg)
Testesbeta
LeonardoMurta Verificação,ValidaçãoeTestes 74
Sistemasendotestado
Usa
Ambientereal(e.g.,localdeprodução)
Reportaproblemas
SistemadeControledeSolicitações
![Page 75: Verificação, Validação e Testesleomurta/courses/es2/aula6.pdf · Vamos então fazer testes para todas as possibilidades existentes! • Infelizmente, isso é impossível •](https://reader033.vdocuments.mx/reader033/viewer/2022050608/5faf8f9c733f2355bb45e670/html5/thumbnails/75.jpg)
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