Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[QA LADIES - 2021] Reactor + Junit : Escrevendo testes unitários com Spring Webflux

[QA LADIES - 2021] Reactor + Junit : Escrevendo testes unitários com Spring Webflux

Tweet

Transcript

  1. Reactor + Junit : Escrevendo testes unitários com Spring Webflux

    Kamila Santos
  2. @kamila_code Quem sou eu KAMILA SANTOS Dev Backend @Ame Digital

    Microsoft MVP em Developer Technologies Community organizer Creator no experts club da @rocketseat Content Creator no instagram @kamila_code e no youtube Kamila code
  3. @Kamila_code Agenda PIRÂMIDE DE TESTE TESTES UNITÁRIOS WEBFLUX REACTOR

  4. Agenda PRINICIPIOS FIRST TEST SMELLS COBERTURA DE TESTES TESTABILIDADE @Kamila_code

  5. Agenda MOCK EXEMPLO @Kamila_code

  6. @kamila_code Pirâmide de testes TESTE DE UNIDADE TESTE DE INTEGRAÇÃO

    TESTE DE SISTEMA MAIOR GRANULARIDADE MENOR QUANTIDADE MAIS LENTOS MAIOR CUSTO MENOR GRANULARIDADE MAIOR QUANTIDADE MAIS RÁPIDOS MENOR CUSTO
  7. @kamila_code Teste de unidade VERIFICAM PEQUENAS UNIDADES FUNCIONAIS DA SUA

    APLICAÇÃO, FAZENDO OS TESTES DE MODO INDIVIDUAL É MAIS FÁCIL ENCONTRAR ERROS, SÃO MAIS SIMPLES DE IMPLEMENTAR.
  8. @kamila_code Testes de integração VERIFICAM UMA FUNCIONALIDADE (UMA TRANSAÇÃO COMPLETA,

    UM FLUXO) DO SISTEMA, EXIGEM MAIS ESFORÇO PARA SEREM IMPLEMENTADOS E SUA EXEUÇÃO É MAIS LENTA.
  9. @kamila_code Teste de sistema SIMULAM DA FORMA MAIS REALISTA POSSÍVEL,

    COMO SERIA A INTERAÇÃO DO USUÁRIO FINAL COM A APLICAÇÃO, SÃO MAIS CAROS/CUSTOSOS, MAIS LENTOS E MAIS FRÁGEIS (SE MUDAR UM BOTÃO PODE QUEBRAR)
  10. @kamila_code Testes unitários

  11. @kamila_code Testes unitários SÃO RESPONSÁVEIS POR CHAMAR MÉTODOS DE UMA

    CLASSE PARA EXECUTAR UMA DETERMINADA FUNÇÃO. (PODENDO COBRIR CASO DE SUCESSO E CASO DE ERRO)
  12. @kamila_code Testes unitários GERALMENTE SÃO IMPLEMENTADOS UTILIZANDO UM FRAMEWORK DE

    TESTE, GRANDE PARTE DELES POSSUINDO O NOME XUNIT (X-> LINGUAGEM A SER TESTADA), POR EXEMPLO NO JAVA, O MAIS FAMOSO É O JUNIT.
  13. Algumas convenções -> CLASSES DE TESTE DEVEM POSSUIR O SUFIXO

    +TEST -> MÉTODOS DE TESTES DEVEM SER PUBLICOS -> NÃO DEVEM RECEBER PARÂMETROS > DEVEM POSSUIR A ANOTAÇÃO @TEST @kamila_code
  14. @kamila_code Algumas convenções

  15. @kamila_code Estrutura básica

  16. @kamila_code Estrutura básica

  17. @kamila_code Estrutura básica

  18. @kamila_code Webflux TRABALHO HÁ QUASE 2 ANOS COM ESSA TECNOLOGIA,

    É A VERSÃO REATIVA, ASSÍNCRONA E NÃO BLOQUEANTE DO FAMOSO E MUITO UTILIZADO SPRING MVC. EM VEZ DE UTILIZAR O TOMCAT COMO SERVIDOR PADRÃO UTILIZA O NETTY PALESTRA EM QUE FALEI MAIS SOBRE ESSA PARTE TEÓRICA DO WBEFLUX: HTTPS://SPEAKERDECK.COM/KAMILAHSANTOS/THEDEVCONF- 2020-PARADIGMA-REATIVO-POR-DENTRO-DA-PROGRAMACAO-REATIVA-COM-SPRING-WEBFLUX-E-PROJETO-REACTOR-TRILHA-DESIGN-DE- CODIGO-E-XP
  19. @kamila_code Reactor BIBLIOTECA MAIS UTILIZADA QUANDO TRABALHAMOS COM SPRING WEBFLUX

    , IMPLEMENTA AS REACTIVE STREAMS, E USA O CONCEITO DE FLUX E MONO: FLUX: TRABALHA COM FLUXOS DE 0 A N (VÁRIOS) MONO: TRABALHA COM FLUXOS DE 0 A 1 PALESTRA EM QUE FALEI MAIS SOBRE ESSA PARTE TEÓRICA : HTTPS://SPEAKERDECK.COM/KAMILAHSANTOS/THEDEVCONF-2020- PARADIGMA-REATIVO-POR-DENTRO-DA-PROGRAMACAO-REATIVA-COM-SPRING-WEBFLUX-E-PROJETO-REACTOR-TRILHA-DESIGN-DE- CODIGO-E-XP
  20. @kamila_code Princípios FIRST F: FAST (RÁPIDOS) I:INDEPENDENT (INDEPENDENTES) R: REPEATABLE

    (DETERMINÍSTICOS S: SELF-CHECKING (AUTO-VERIFICÁVEIS) T: TIMELY (ESCRITOS O QUANTO ANTES)
  21. @kamila_code F - FAST - RÁPIDOS DEVEM SER EXECUTADOS RÁPIDAMENTE

    (SEGUNDOS OU MILISEGUNDOS) FORNECENDO UM FEEDBACK CLARO E RÁPIDO DAQUELE TESTE.
  22. @kamila_code i - INDEPENDENT - INDEPENDENTES A EXECUÇÃO DE UM

    TESTE NÃO DEVE INTERFERIR NA EXECUÃO DE OUTRO. A ORDEM QUE OS TESTES FOR EXECUTADA NÃO DEVE MUDAR SEU RESULTADO
  23. @kamila_code R - REPEATABLE - DETERMINÍSTICOS UM TESTE QUE COBRE

    UM CASO DE SUCESSO DEVE SEMPRE RESULTAR EM SUCESSO, BEM COMO ALGUM QUE CUBRA CASO DE ERRO SEMPRE DEVE RESULTAR EM ALGUMA EXCEPTION O RESULTADO NÃO PODE SER ALGO QUE VARIA A CADA EXECUÇÃO, CASO ISSO OCORRA PROVAVEL QUE EXISTA UM BUG
  24. @kamila_code S - Self-checking (Auto-verificáveis) O RESULTADO DE UM TESTE

    DEVE SERM FACILMENTE COMPREENDIDO , GRANDE PARTE DAS IDES ADOTAM A CONVENÇÃO DE: VERDE: TESTE PASSOU VERMELHO: TESTE FALHOU EM CASO DE FALHA É BOM QUE O TESTE POSSUA UMA ESTRUTURA QUE FACILITE A COMPREENSÃO DE QUAL ASSERT/EXPECT/VERIFY QUE DEU ERRADO.
  25. @kamila_code TEST SMELLS

  26. @kamila_code Teste obscuro TESTE COMPLEXO, LONGO E DIFICIL DE ENTENDER.

  27. @kamila_code Cobertura de teste MÉTRICA QUE AJUDA A DEFINIR O

    NÚMERO DE TESTES QUE PRECISAMOS ESCREVER PARA UMA APLICAÇÃO. MEDE O PERCENTUAL DE "AÇÕES" QUE SÃO COBERTAS POR TESTES.
  28. @kamila_code Testabilidade MEDIDA DE QUÃO DIFÍCIL É IMPLEMENTAR TESTES PARA

    UMA APLICAÇÃO. -> SEGUE OS PRINCIPIOS FIRST -> TENHAM POUCOS ASSERTS (MAIS DE UMA VERIFICAÇÃO NO MESMO TESTE)
  29. @kamila_code Mocks SIMULAM UM OBJETO REAL PARA SER UTILIZADO DURANTE

    O TESTE, TENDO OS MESMOS ATRIBUTOS E USANDO VALORES QUE SERIAM PASSADOS EM SITUAÇÕES REAIS. EXISTEM DIVERSOS FRAMEWORKS PARA CRIAÇÃO DE MOCKS, O MAIS UTILIZADO NO JAVA É O MOCKITO.
  30. @kamila_code Hora da demo:

  31. @kamila_code Referências e onde saber mais sobre o tema: Cap

    8 testes - https://engsoftmoderna.info/cap8.html Effective Unit Testing - https://www.youtube.com/watch?v=fr1E9aVnBxw Write awesome tests - https://www.youtube.com/watch?v=F8Gc8Nwf0yk Software Testing Tutorial - https://www.youtube.com/watch?v=Geq60OVyBPg webflux essentials - devdojo - https://www.youtube.com/results? search_query=devdojo+webflux Google Testing blog - https://testing.googleblog.com/ Testing guide marting fowler - https://martinfowler.com/testing/
  32. @kamila_code Obrigada :) https://beacons.page/kamila_code https://github.com/Kamilahsantos/qaladies-2021-unit-test- webflux-reactor-junit