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

Melhorando a qualidade derrotando um mutante por vez

Melhorando a qualidade derrotando um mutante por vez

Talk apresentada no TDC SP 2017 em São Paulo.

http://www.thedevelopersconference.com.br/tdc/2017/saopaulo/trilha-devtest

Você sabe o que significa teste de mutação? É uma técnica que garante a REAL cobertura de testes em sua aplicação contra falhas de implementação.

Essa abordagem é melhor do que uma cobertura por linhas, pois observa se os testes estão cobrindo totalmente todos os cenários possíveis e não apenas se os testes executaram todas as linhas de código implementadas.

Descubra como testes de mutação podem te defender de bugs e defeitos em produção. Nessa palestra você entenderá o conceito e como aplicá-lo em Ruby.

Repositório de exemplo para entender testes de mutação e usado na demonstração da apresentação.

https://github.com/lucasalencar/xmen-danger-room

Lucas André de Alencar

July 20, 2017
Tweet

More Decks by Lucas André de Alencar

Other Decks in Programming

Transcript

  1. Você confia que os testes da sua
    aplicação vão garantir a qualidade do
    seu projeto?

    View Slide

  2. 100% de cobertura de código já é
    suficiente?

    View Slide

  3. 100% de cobertura é uma mentira!

    View Slide

  4. Melhorando a
    qualidade
    derrotando um
    mutante
    por vez

    View Slide

  5. LUCAS ALENCAR
    RESULTADOS DIGITAIS
    FULL STACK RUBY ENGINEER

    View Slide

  6. O que é
    teste de mutação?

    View Slide

  7. Testes unitários
    garantem que o
    código está correto

    View Slide

  8. Testes de mutação
    garantem que os
    testes estão corretos

    View Slide

  9. O que é uma mutação?
    Original Mutação
    Condicional x >= 20 x > 20

    View Slide

  10. O que é uma mutação?
    Original Mutação
    Condicional x >= 20 x > 20
    Operações 2 + 40 2 - 40

    View Slide

  11. O que é uma mutação?
    Original Mutação
    Condicional x >= 20 x > 20
    Operações 2 + 40 2 - 40
    Parâmetros func(name = 'hello') func(name = nil)

    View Slide

  12. Teste
    Original
    Código
    Original

    View Slide

  13. Teste
    Original
    Teste
    Falha
    Teste
    Passa
    Código
    Original
    !
    "

    View Slide

  14. Teste
    Original
    Teste
    Falha
    Teste
    Passa
    Código
    Mutante
    Código
    Original
    !
    "

    View Slide

  15. Teste
    Original
    Teste
    Falha
    Teste
    Passa
    Código
    Mutante
    ! "
    Código
    Original

    View Slide

  16. Por que usar
    teste de mutação?

    View Slide

  17. Código tem bugs
    Testes são código
    Testes tem bugs

    View Slide

  18. Demo

    View Slide

  19. https://github.com/lucasalencar/xmen-danger-room

    View Slide

  20. Ruby : Mutest
    Java : PIT
    Python : Cosmic Ray
    Javascript : Stryker

    View Slide

  21. Identificação de cenários não cobertos
    Fortalece cobertura da aplicação
    Melhora o código da aplicação
    Ajuda a encontrar código não utilizado

    View Slide

  22. Melhorando a
    qualidade
    derrotando um
    mutante
    por vez

    View Slide

  23. LUCAS ALENCAR
    RESULTADOS DIGITAIS
    FULL STACK RUBY ENGINEER
    [email protected]
    @LUCASALENCAR
    RESULTADOS DIGITAIS TEM VAGAS!

    View Slide