construa testes efetivos através do princípio f.i.r.s€¦ · copyright © 2019, oracle and/or...

Post on 26-Jun-2020

4 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related