Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
Copyright©2019,Oracleand/oritsaffiliates.Allrightsreserved.| 2
ConstruatestesefetivosatravésdoprincípioF.I.R.S.T
ElderMoraes|@elderjavaDeveloperAdvocateAbril,2019
Copyright©2019,Oracleand/oritsaffiliates.Allrightsreserved.|
SafeHarborStatement
Thefollowingisintendedtooutlineourgeneralproductdirection.Itisintendedforinformationpurposesonly,andmaynotbeincorporatedintoanycontract.Itisnotacommitmenttodeliveranymaterial,code,orfunctionality,andshouldnotberelieduponinmakingpurchasingdecisions.Thedevelopment,release,timing,andpricingofanyfeaturesorfunctionalitydescribedforOracle’sproductsmaychangeandremainsatthesolediscretionofOracleCorporation.
Copyright©2019,Oracleand/oritsaffiliates.Allrightsreserved.| 4
Copyright©2019,Oracleand/oritsaffiliates.Allrightsreserved.| 5
FIRST
ASTNDEPENDENTEPEATABLEELF-VALIDATINGIMELY
Copyright©2019,Oracleand/oritsaffiliates.Allrightsreserved.|
• Seostestesforemlentos,vocênãovaiquererexecutá-loscomfrequência
• Sevocênãoosexecutacomfrequência,nãoencontraráproblemascedoosuficienteparacorrigí-losfacilmente
6
FAST
Copyright©2019,Oracleand/oritsaffiliates.Allrightsreserved.|
Oquepodefazerumtesteserlento
7
FAST
Execuçãomanual
Validaçãomanual
Aprópriaexecuçãodoteste
Copyright©2019,Oracleand/oritsaffiliates.Allrightsreserved.|
• Eliminandoaexecuçãomanual– Frameworks:JUnit,Arquillian,Selenium,Mockito,Wiremock
– Automações:Maven,Gradle,Jenkins,Vagrant,Ansible,DockerCompose
– Monitoramento:Grafana,Prometheus,Jaeger
8
FAST
Copyright©2019,Oracleand/oritsaffiliates.Allrightsreserved.|
• Eliminandoavalidaçãomanual– VideSELF-VALIDATING
9
FAST
Copyright©2019,Oracleand/oritsaffiliates.Allrightsreserved.|
• Eliminandolentidãonopróprioteste– Identificaçãodospontosdelentidão(bancodedados,integração,rede,etc)– Refatoraçãodecódigo– Mocking
10
FAST
Copyright©2019,Oracleand/oritsaffiliates.Allrightsreserved.|
• Umtestenãodevedependerdooutro
• Umtestenãodevecriarascondiçõesparaopróximoteste
• Vocêdevesercapazdeexecutarcadatesteindividualmenteeexecutartodosostestesemqualquerordem
• Quandoostestesdependeunsdosoutros,oprimeiroafalharcausaumareaçãoemcadeia,dificultandoodiagnósticoeescondendodefeitosquepossamestaradiante
11
I NDEPENDENT
Copyright©2019,Oracleand/oritsaffiliates.Allrightsreserved.|
• Comoeliminardependênciaentretestes– Altacoesão– DRY(Don’tRepeatYourself)
12
I NDEPENDENT
“Wewanttodesigncomponentsthatareself-contained:independent,andwithasingle,well-definedpurpose”
-ThePragmaticProgrammer
Copyright©2019,Oracleand/oritsaffiliates.Allrightsreserved.|
• Comoeliminardependênciaentretestes– Baixoacoplamento
13
I NDEPENDENT
VS
Copyright©2019,Oracleand/oritsaffiliates.Allrightsreserved.| 14
Copyright©2019,Oracleand/oritsaffiliates.Allrightsreserved.|
• Testesdeveserreproduzíveisemqualquerambiente
• Produção,QA,laptop(mesmosemrede)
• Docontrário,vocêsempreteráumadesculpaparanãoexecutá-los
• Alémdisso,nãoconseguiráexecutá-losquandooambientenãoestiverdisponível
15
REPEATABLE
Copyright©2019,Oracleand/oritsaffiliates.Allrightsreserved.|
• Eliminandoadependênciadeambientes
16
REPEATABLE
BancodeDados SistemaOperacional DeployeExecução
Copyright©2019,Oracleand/oritsaffiliates.Allrightsreserved.|
• Eliminandoadependênciadeambientes
17
REPEATABLE
Copyright©2019,Oracleand/oritsaffiliates.Allrightsreserved.|
Vagrantfile
18
Copyright©2019,Oracleand/oritsaffiliates.Allrightsreserved.|
• Testesdevemserauto-explicativos:passou/falhou• Otestenãodeveexigirque*você*:– Leiaumlog
– Comparedoisarquivos
– Vejaumatela
– Etc…
• Senãoforemauto-explicativos,entãoafalhapodesersubjetiva
• Levaàdemoranavalidação(efalhanoprincípioFAST)
19
SELF-VALIDATING
Copyright©2019,Oracleand/oritsaffiliates.Allrightsreserved.| 20
Copyright©2019,Oracleand/oritsaffiliates.Allrightsreserved.| 21
Copyright©2019,Oracleand/oritsaffiliates.Allrightsreserved.|
• Testesdevemserescritosoquantoantes
• Sevocêesperaumcódigoentraremproduçãoparaescreveroteste,podeacabardescobrindoqueédifíciltestá-lo
• Aofazerissocontinuamente,logovocêterátodoseucódigodeproduçãoimpossíveldesertestado
22
TIMELY
Copyright©2019,Oracleand/oritsaffiliates.Allrightsreserved.|
“Testsareasimportant… astheproductioncodeis.Perhapstheyareevenmoreimportant,becausetestspreserveandenhancetheflexibility,maintainability,andreusabilityoftheproductioncode.”
– RoberC.Martin,“CleanCode”
Confidential–OracleInternal/Restricted/HighlyRestricted 23
Copyright©2019,Oracleand/oritsaffiliates.Allrightsreserved.|
@elderjavabook.eldermoraes.com
Copyright©2019,Oracleand/oritsaffiliates.Allrightsreserved.|
Java@CloudAge
bit.ly/javacloudage
Copyright©2019,Oracleand/oritsaffiliates.Allrightsreserved.| 26
Visiteonossoestande
Façaumtrial
Ganheumbrinde!
Façaumhandson
Ganheoutrobrinde!
Copyright©2019,Oracleand/oritsaffiliates.Allrightsreserved.| 27