SlideShare une entreprise Scribd logo
1  sur  35
Télécharger pour lire hors ligne
DESMISTIFICANDO
TESTES
AURÉLIO BUARQUE
https://buarki.com
Aurélio Buarque
Software Engineer
https://www.github.com/buarki
https://www.linkedin.com/in/aurelio-buarque
Testando manualmente
APIUtils.cpp
APIUtils.h
main.cpp
Testes automatizados
Testando manualmente
APIUtils.cpp
APIUtils.h
APIUtilsTest.cpp
Testes automatizados
● Evita recriar arquivos mainS;
● Poupa tempo durante manutenção;
● Validar automaticamente que pequenos incrementos;
Teste unitários
● Garantem que sua aplicação continue funcionando após alguma alteração em sua
base de código;
● Funcionam através de comparação de resultados das funções a serem testadas com
valores esperados;
Testes unitários
Testes unitários
Testes unitários
Testes unitários
Testes unitários - questionamento...
● Os testes escritos estão testando tudo que deveriam?
● É possível saber isso?
Testes unitários - questionamento...
IAPOIS!
Para isso, basta medir a cobertura dos testes unitários com….
Testes de cobertura
● Testes de cobertura verificam a cobertura de testes unitários;
● Em termos práticos, acusam quais cenários do código fonte
estão e quais não estão sendo testados.
Testes de cobertura
Testes de cobertura
● Aplicando o teste de cobertura no exemplo, coletamos uma
métrica de 75%, ou seja, estamos esquecendo de algo…...
Testes de cobertura
Testes de cobertura
Testes de cobertura - questionamento...
● Temos uma suíte de testes unitários, ok!
● Verificamos que a cobertura dos mesmos é de 100%, ok!
● Mas, nossa suíte de testes realmente é boa?
Testes de cobertura - questionamento...
Testes de cobertura - questionamento...
Testes de cobertura - questionamento...
● Pequenas mudanças como essas podem passar em alguns testes e
em outros não;
● Por conta disso, é interessante rodar a suíte de testes com um código
similar ao código fonte, contendo pequenas falhas: Mutante
Testes de mutação
● Após criar o código fonte, os testes unitários para testar pequenas
unidades do código, o teste de cobertura para verificar o que está e
não sendo testado, ainda é possível testar a suíte de teste!
Testes de mutação
Testes de mutação - A ideia
● Você tem um programa original (P) e sua suíte de testes (TS);
● De P cria-se um conjunto de mutantes (MS) modificando pequenas
partes do código;
● Depois, você aplica-se cada mutante de MS em TS.
Testes de mutação - A ideia
● Você tem um programa original (P) e sua suíte de testes (TS);
● De P cria-se um conjunto de mutantes (MS) modificando pequenas
partes do código;
● Depois, você aplica-se cada mutante de MS em TS.
Testes de mutação - mutagênese
Testes de mutação - mutagênese
Testes de mutação - mutagênese
Testes de mutação - A ideia
● Pode acontecer de alguns mutantes passarem nos testes, ao invés de
serem mortos. Quando isso acontece existem duas implicações:
○ Ou a suíte de testes não é efetiva;
○ Ou o mutante gerado é equivalente ao código original;
Testes de mutação - Mutante equivalente
Aplicando teste de mutação
Aplicando teste de mutação
Resumindo
● Testes automatizados trazem um bom custo benefício no médio e longo prazo;
● Garantem qualidade ao software;
● Testes unitários servem para testar unidades básicas do sistema;
● Teste de cobertura servem para quantificar a cobertura dos testes;
● Testes de mutação testam a suíte de testes para avaliar seu comportamento
mediante códigos com bugs;
Referências e links
● Meu artigo no Medium sobre tests:
https://medium.com/@abuarquemf/how-can-you-ensure-the-suite-test-efficiency
-5fab9e54e78e;
● Códigos da palestra: https://github.com/ABuarque/TestsArticle;

Contenu connexe

Similaire à Demystifying Automated Tests - [ PT-BR ]

At Ma Qualidade Molinari V11 Final Version
At Ma Qualidade Molinari V11 Final VersionAt Ma Qualidade Molinari V11 Final Version
At Ma Qualidade Molinari V11 Final VersionLeonardo Molinari
 
At Ma Qualidade Molinari V11 Final Version
At Ma Qualidade Molinari V11 Final VersionAt Ma Qualidade Molinari V11 Final Version
At Ma Qualidade Molinari V11 Final VersionLeonardo Molinari
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesCamilo Ribeiro
 
Treinamento Testes Unitários - parte 2
Treinamento Testes Unitários - parte 2Treinamento Testes Unitários - parte 2
Treinamento Testes Unitários - parte 2Diego Pacheco
 
Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Diego Pacheco
 
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...Samanta Cicilia
 
Introdução a testes automatizados
Introdução a testes automatizadosIntrodução a testes automatizados
Introdução a testes automatizadosThiago Ghisi
 
Gerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxRoberto Nunes
 
[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes AutomatizadosSamanta Cicilia
 
Introdução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem práticaIntrodução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem práticaFabrício Campos
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitDomingos Teruel
 
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração ContínuaAutomação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração ContínuaGabriela Patuci
 
Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016Bruno Maomeh
 
Padrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por TestesPadrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por TestesEverton Rodrigues
 
Testes Funcionais - Unidade IV
Testes Funcionais - Unidade IVTestes Funcionais - Unidade IV
Testes Funcionais - Unidade IVJoão Lourenço
 
Mutant Testing: um mundo para um X-Tester participar.
Mutant Testing: um mundo para um X-Tester participar.Mutant Testing: um mundo para um X-Tester participar.
Mutant Testing: um mundo para um X-Tester participar.Robson Agapito Correa
 
A importância dos testes unitários: do código legado ao pipeline de testes em...
A importância dos testes unitários: do código legado ao pipeline de testes em...A importância dos testes unitários: do código legado ao pipeline de testes em...
A importância dos testes unitários: do código legado ao pipeline de testes em...Rodrigo Oliveira, Msc, PMP
 

Similaire à Demystifying Automated Tests - [ PT-BR ] (20)

At Ma Qualidade Molinari V11 Final Version
At Ma Qualidade Molinari V11 Final VersionAt Ma Qualidade Molinari V11 Final Version
At Ma Qualidade Molinari V11 Final Version
 
At Ma Qualidade Molinari V11 Final Version
At Ma Qualidade Molinari V11 Final VersionAt Ma Qualidade Molinari V11 Final Version
At Ma Qualidade Molinari V11 Final Version
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por Testes
 
Treinamento Testes Unitários - parte 2
Treinamento Testes Unitários - parte 2Treinamento Testes Unitários - parte 2
Treinamento Testes Unitários - parte 2
 
Automação de Testes
Automação de TestesAutomação de Testes
Automação de Testes
 
Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1
 
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
 
Introdução a testes automatizados
Introdução a testes automatizadosIntrodução a testes automatizados
Introdução a testes automatizados
 
Gerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptx
 
[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados
 
Python com TDD
Python com TDDPython com TDD
Python com TDD
 
Introdução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem práticaIntrodução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem prática
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnit
 
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração ContínuaAutomação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
 
Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016
 
Padrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por TestesPadrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por Testes
 
Testes Funcionais - Unidade IV
Testes Funcionais - Unidade IVTestes Funcionais - Unidade IV
Testes Funcionais - Unidade IV
 
Introdução a tdd
Introdução a tddIntrodução a tdd
Introdução a tdd
 
Mutant Testing: um mundo para um X-Tester participar.
Mutant Testing: um mundo para um X-Tester participar.Mutant Testing: um mundo para um X-Tester participar.
Mutant Testing: um mundo para um X-Tester participar.
 
A importância dos testes unitários: do código legado ao pipeline de testes em...
A importância dos testes unitários: do código legado ao pipeline de testes em...A importância dos testes unitários: do código legado ao pipeline de testes em...
A importância dos testes unitários: do código legado ao pipeline de testes em...
 

Demystifying Automated Tests - [ PT-BR ]