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

Testes de Mutação - Testes para Testar seus Testes

Testes de Mutação - Testes para Testar seus Testes

Como podemos garantir que nossos testes realmente estão pegando possíveis falhas em nosso código?
100% de cobertura é suficiente?
Nesta palestra apresento o conceito de Testes de Mutação (tradução livre do termo Mutation Tests), que é uma técnica que permite detectar possíveis falhas em nosso código que não seriam cobertas por nossos testes.

Vinicius Dias

August 24, 2019
Tweet

More Decks by Vinicius Dias

Other Decks in Technology

Transcript

  1. Quem é Vinicius Dias? • Zend Certified (PHP) Engineer; •

    iMasters Certified PHP Professional; • Um dos administradores do PHP Rio; • Desenvolvedor Full Stack na TemboSocial; • Instrutor na Alura Cursos Online; • LinkedIn: https://linkedin.com/in/vinícius-dias/ • GitHub: https://github.com/CViniciusSDias • Twitter: @cviniciussdias • Dev.to: https://dev.to/cviniciussdias/ • YouTube: Programando com Vinicius Dias
  2. Dê feedback Os palestrantes gostam de saber como melhorar suas

    apresentações Nenhuma apresentação é perfeita e nós que criamos conteúdo sabemos disso. Nossa intenção é passar conteúdo da melhor forma possível e sua opinião é muito importante para isso.
  3. Mutações comuns • Mudar limite de condicional (< para <=

    ou > para >=); • Inverter condicional (< para > ou > para <); • Negar condicional (== para !=); • Remover condicional (mudar para if (true)); • Retirar chamada a algum método; • Mutação no retorno (trocar retorno por null); • Inteiros 0-1 1-0 (mudar 0 para 1 e 1 para 0); • Etc.
  4. Possíveis resultados 1. Se um código mutado (ou o mutante)

    passou em todos os testes; 2. Se um mutante fez algum teste quebrar; 3. Se a mutação deste mutante não foi executada por nenhum teste; 1. Significa que este código mutado (ou o mutante) escapou; 2. Significa que o mutante foi morto; 3. Significa que este mutante não está coberto por nenhum teste;
  5. Arquivos gerados pelo Infection PHP • Text log: Informações detalhadas

    sobre os mutantes e seus resultados • Summary: Breve resumo do resultado da execução • Per mutator: Resumo do resultado da execução separado por cada Mutator
  6. Suíte grande: Bota pra rodar e vai tomar um café,

    ou deixa pro servidor de CI. ;-)
  7. Referências • https://blog.caelum.com.br/testes-de-mutantes/ • https://infection.github.io/ • https://infection.github.io/guide/mutators.html • https://www.guru99.com/mutation-testing.html •

    https://twitter.com/infection_php • https://github.com/infection/infection/ • https://medium.com/@maks_rafalko/infection-mutation-testing-framework- c9ccf02eefd1