SlideShare ist ein Scribd-Unternehmen logo
1 von 37
Downloaden Sie, um offline zu lesen
TD D
Test-driven development
por que
testamos?
como
testamos?
TE S TE S
M ANUAIS
   :(
TE S TE S
AUTO M ATIZAD O S
       :)
Antes do TD D ...
código escrito
antes dos testes...
é difícil de testar...
é difícil de usar...
design
TD D é mais que testes,
é um método para design
de software.
Testes verificam a
usabilidade do código
Adição novas funcionalidades
em pequenos passos
Feedback rápido
das mudanças no código
Não quero usar TD D !!!
“Você não tem tempo para escrever
testes unitários, porque gasta
tempo demais debugando.”
M udança de hábito
R efactoring
Ferramentas
Selenium
S tubs
S tubs
//criar mock
LinkedList mockedList = mock(LinkedList.class);

//stubbing...
when(mockedList.get(0)).thenReturn(“first”);

//imprime “first”
System.out.prinlnt(mockedList.get(0));

//imprime “null” não criamos stub para get(999)
System.out.println(mockedList.get(999));
M ocks
import static org.mockito.Mockito.*;

//criar mock
List mockedList = mock(List.class);

//usando o objeto mock
mockedList.add(“one”);
mockedList.clear();

//verificando interação
verify(mockedList).add(“one”);
verify(mockedList).clear();




M ocks
S tubs testam o estado
dos objetos após
execução
M ocks testam a
interação entre
objetos durante
execução
M ão na massa
C alculadora

           - S omar dois números inteiros

          - S ubtrair dois números inteiros

         - M ultiplicar dois número inteiros

               - D ividir dois número inteiros
O problema com Test-D riven
D evelopment é a palavra “Teste”
BDD
B ehavior-D riven D evelopment
public class CalculadoraSpec {

    @Test
    public void deveSomarDoisInteiros() {
        ...
    }

    @Test
    public void deveSubtrairDoisInteiros() {
        ...
    }

    //outros métodos
}
E specificação
C onta C orrente
- Um depósito deve aumentar o saldo da
conta...
- Um saque deve diminuir o saldo da conta...
- Não deve permitir efetuar um saque
quando saldo é insuficiente...
- Um erro deve ocorrer caso um depósito
com valor negativo seja realizado...
- Um erro deve ocorrer em caso de saque de
valor negativo...
“E screva código novo apenas se
você primeiro tiver um teste
falhando.”
Kent B eck
insidecode.com.br
  blog.insidecode.com.br

leonardo@ insidecode.com.br

@ insidecode @ leonardom

Weitere ähnliche Inhalte

Was ist angesagt?

Introdução a Testes de Software
Introdução a Testes de SoftwareIntrodução a Testes de Software
Introdução a Testes de Software
Igor Takenami
 
Mock it with mockito
Mock it with mockitoMock it with mockito
Mock it with mockito
Renan Uchôa
 

Was ist angesagt? (19)

JUnit - Selenium
JUnit - SeleniumJUnit - Selenium
JUnit - Selenium
 
Testes de Sofware
Testes de SofwareTestes de Sofware
Testes de Sofware
 
Aula18 Teste Software
Aula18 Teste SoftwareAula18 Teste Software
Aula18 Teste Software
 
03 - Introdução a lógica de programação parte 3 - v1.1
03 - Introdução a lógica de programação parte 3 - v1.103 - Introdução a lógica de programação parte 3 - v1.1
03 - Introdução a lógica de programação parte 3 - v1.1
 
Apresentação BDD
Apresentação BDDApresentação BDD
Apresentação BDD
 
Curso de C# - Introdução
Curso de C# - IntroduçãoCurso de C# - Introdução
Curso de C# - Introdução
 
Programação Estruturada 2 - Curso Completo
Programação Estruturada 2 - Curso CompletoProgramação Estruturada 2 - Curso Completo
Programação Estruturada 2 - Curso Completo
 
Testes Unitários/Integrados
Testes Unitários/IntegradosTestes Unitários/Integrados
Testes Unitários/Integrados
 
Aexo TI - Boas práticas de testes tdd
Aexo TI - Boas práticas de testes tddAexo TI - Boas práticas de testes tdd
Aexo TI - Boas práticas de testes tdd
 
Introdução a Testes de Software
Introdução a Testes de SoftwareIntrodução a Testes de Software
Introdução a Testes de Software
 
Clean code
Clean codeClean code
Clean code
 
Mock it with mockito
Mock it with mockitoMock it with mockito
Mock it with mockito
 
JUnit Experience
JUnit ExperienceJUnit Experience
JUnit Experience
 
Codigo limpo
Codigo limpoCodigo limpo
Codigo limpo
 
Algoritmos e Visualg parte 1
Algoritmos e Visualg   parte 1Algoritmos e Visualg   parte 1
Algoritmos e Visualg parte 1
 
Test-driven Development
Test-driven DevelopmentTest-driven Development
Test-driven Development
 
python.comandos
python.comandospython.comandos
python.comandos
 
1° Madrugada de Testes
1° Madrugada de Testes1° Madrugada de Testes
1° Madrugada de Testes
 
Property Based Testing
Property Based TestingProperty Based Testing
Property Based Testing
 

Andere mochten auch

Andere mochten auch (7)

Git e GitHub
Git e GitHubGit e GitHub
Git e GitHub
 
Android
AndroidAndroid
Android
 
EJB
EJBEJB
EJB
 
GDG Angular 2
GDG Angular 2GDG Angular 2
GDG Angular 2
 
Arquitetura de Software Na Pratica
Arquitetura de Software Na PraticaArquitetura de Software Na Pratica
Arquitetura de Software Na Pratica
 
Java EE 6 JPA 2.0, EJB 3.1 e CDI 1.0
Java EE 6 JPA 2.0, EJB 3.1 e CDI 1.0Java EE 6 JPA 2.0, EJB 3.1 e CDI 1.0
Java EE 6 JPA 2.0, EJB 3.1 e CDI 1.0
 
The Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post FormatsThe Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post Formats
 

Ähnlich wie TDD - Test Driven Development

Por que você não escreve Testes Unitários?
Por que você não escreve Testes Unitários?Por que você não escreve Testes Unitários?
Por que você não escreve Testes Unitários?
Alex Tercete
 
Testes Unitários: Começando a escrever testes no seu dia-a-dia
Testes Unitários: Começando a escrever testes no seu dia-a-diaTestes Unitários: Começando a escrever testes no seu dia-a-dia
Testes Unitários: Começando a escrever testes no seu dia-a-dia
Alex Tercete
 

Ähnlich wie TDD - Test Driven Development (20)

Testes de software de A a Z
Testes de software de A a ZTestes de software de A a Z
Testes de software de A a Z
 
Por que você não escreve Testes Unitários?
Por que você não escreve Testes Unitários?Por que você não escreve Testes Unitários?
Por que você não escreve Testes Unitários?
 
Não existe feedback melhor do que o do seu código
Não existe feedback melhor do que o do seu códigoNão existe feedback melhor do que o do seu código
Não existe feedback melhor do que o do seu código
 
Tdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalTdd em django sem desculpas versao final
Tdd em django sem desculpas versao final
 
Testes Unitários: Começando a escrever testes no seu dia-a-dia
Testes Unitários: Começando a escrever testes no seu dia-a-diaTestes Unitários: Começando a escrever testes no seu dia-a-dia
Testes Unitários: Começando a escrever testes no seu dia-a-dia
 
TDD para "meros mortais"
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"
 
Teste sua aplicação antes que ela teste você
Teste sua aplicação antes que ela teste vocêTeste sua aplicação antes que ela teste você
Teste sua aplicação antes que ela teste você
 
Introdução ao C#
Introdução ao C#Introdução ao C#
Introdução ao C#
 
Unit test & TDD
Unit test & TDDUnit test & TDD
Unit test & TDD
 
Programação Orientada a Testes
Programação Orientada a TestesProgramação Orientada a Testes
Programação Orientada a Testes
 
O que você precisa saber sobre testes unitários
O que você precisa saber sobre testes unitáriosO que você precisa saber sobre testes unitários
O que você precisa saber sobre testes unitários
 
TDD com Python (Completo)
TDD com Python (Completo)TDD com Python (Completo)
TDD com Python (Completo)
 
Teste automatizados e tdd
Teste automatizados e tddTeste automatizados e tdd
Teste automatizados e tdd
 
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
 
Aula 3-lógica.pptx
Aula 3-lógica.pptxAula 3-lógica.pptx
Aula 3-lógica.pptx
 
Test-Driven Development with PHP
Test-Driven Development with PHPTest-Driven Development with PHP
Test-Driven Development with PHP
 
UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27
 
Desenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com JunitDesenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com Junit
 
TDD em 220V
TDD em 220VTDD em 220V
TDD em 220V
 
TDD em django sem desculpas versao fisl
TDD em django sem desculpas versao fislTDD em django sem desculpas versao fisl
TDD em django sem desculpas versao fisl
 

Kürzlich hochgeladen

Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
TailsonSantos1
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
HELENO FAVACHO
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
marlene54545
 

Kürzlich hochgeladen (20)

EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVAEDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
 
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéis
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*
 
LENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretaçãoLENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretação
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmico
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º ano
 
Seminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptxSeminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptx
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.ppt
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
 
GÊNERO CARTAZ - o que é, para que serve.pptx
GÊNERO CARTAZ - o que é, para que serve.pptxGÊNERO CARTAZ - o que é, para que serve.pptx
GÊNERO CARTAZ - o que é, para que serve.pptx
 

TDD - Test Driven Development