TDD
Automatizando Testes com Java
TDC - POA - 2016
Bruno Maomeh
Um grande aficionado pelo conhecimento,
admirador do desenvolvimento de software
e metodologias ágeis. Trabalhando por mais
de 9 anos com desenvolvimento, eu
também sou entusiasta por comunidades de
desenvolvimento de sistemas, atuando
como coordenador do Grupo de Usuários
Java do Rio Grande do Sul (RSJug) e do
JavaSF International Group (JavaSF).
O que é um teste?
O que é um teste?
Um teste é tudo aquilo que
assegura que alguma coisa
está funcionando.
O que é um teste?
"Afirma-se que o teste de software é um
processo, ou uma série de processos, projetado
para se certificar a respeito do código de
computador, de fazer o que foi designado a
cumprir, e sem realizar nada que não seja
intencional.” (Myers - 2004)
Testes Manuais
● Faz alteração no código;
● Levanta o Tomcat;
● Abre o Chrome;
● Faz login na aplicação;
● Entra na página do formulário;
● Preenche um formulário;
● Envia o formulário;
Testes Manuais
● Faz alteração no código;
● Levanta o Tomcat;
● Abre o Chrome;
● Faz login na aplicação;
● Entra na página do formulário;
● Preenche um formulário;
● Envia o formulário;
● Faz alteração no código;
● Levanta o Tomcat;
● Abre o Chrome;
● Faz login na aplicação;
● Entra na página do formulário;
● Preenche um formulário;
● Envia o formulário;
Testes Manuais
● Faz alteração no código;
● Levanta o Tomcat;
● Abre o Chrome;
● Faz login na aplicação;
● Entra na página do formulário;
● Preenche um formulário;
● Envia o formulário;
Testes Manuais
● Faz alteração no código;
● Levanta o Tomcat;
● Abre o Chrome;
● Faz login na aplicação;
● Entra na página do formulário;
● Preenche um formulário;
● Envia o formulário;
Testes Manuais
● Faz alteração no código;
● Levanta o Tomcat;
● Abre o Chrome;
● Faz login na aplicação;
● Entra na página do formulário;
● Preenche um formulário;
● Envia o formulário;
Testes Manuais
● Faz alteração no código;
● Levanta o Tomcat;
● Abre o Chrome;
● Faz login na aplicação;
● Entra na página do formulário;
● Preenche um formulário;
● Envia o formulário;
Testes Manuais
● Faz alteração no código;
● Levanta o Tomcat;
● Abre o Chrome;
● Faz login na aplicação;
● Entra na página do formulário;
● Preenche um formulário;
● Envia o formulário;
Testes Manuais
Testes Manuais
● Faz alteração no código;
● Levanta o Tomcat;
● Abre o Chrome;
● Faz login na aplicação;
● Entra na página do formulário;
● Preenche um formulário;
● Envia o formulário;
Testes Manuais
Fazer testes manuais É LENTO!!
Uma hora você vai esquecer ou errar algum passo!!
Testes automatizados
Testes automatizados
Tipos de testes
Teste de unidade
Teste de integração
Teste de aceitação
Teste de segurança
Teste de performance
Teste de configuração
Teste de regressão
Tipos de testes
Teste de unidade
Teste de integração
Teste de aceitação
Teste de segurança
Teste de performance
Teste de configuração
Teste de regressão
Teste de Unidade
Teste de unidade
● Ajuda na rastreabilidade de
bugs no sistema;
● Previnem regressão do código;
● Incentivam a refatoração do
código;
● Servem como documentação do
código;
● Auxilia na criação do design do
sistema.
Teste de unidade
● Ajuda na rastreabilidade de bugs
no sistema;
● Previnem regressão do
código;
● Incentivam a refatoração do
código;
● Servem como documentação do
código;
● Auxilia na criação do design do
Teste de unidade
● Ajuda na rastreabilidade de bugs
no sistema;
● Previnem regressão do código;
● Incentivam a refatoração do
código;
● Servem como documentação do
código;
● Auxilia na criação do design do
sistema.
Teste de unidade
● Ajuda na rastreabilidade de bugs
no sistema;
● Previnem regressão do código;
● Incentivam a refatoração do
código;
● Servem como
documentação do código;
● Auxilia na criação do design do
sistema.
Teste de unidade
● Ajuda na rastreabilidade de bugs
no sistema;
● Previnem regressão do código;
● Incentivam a refatoração do
código;
● Servem como documentação do
código;
● Auxilia na criação do
design do sistema.
NÃO é Teste de Unidade
Se ele conversa com o banco de dados;
Se ele se comunica através da rede;
Se ele toca o sistema de arquivos;
Se ele não pode ser executado ao mesmo tempo de
outros testes de unidade;
Se for necessário configurar ou preparar o ambiente
Teste de Integração
Teste de integração
● Garante a comunicação
com outros módulos
ou sistema;
● Previnem regressão do
código;
● Incentivam a refatoração do
código;
● Servem como
documentação de código e
de api.
Teste de integração
● Garante a comunicação
com outros módulos ou
sistema;
● Previnem regressão do
código;
● Incentivam a refatoração do
código;
● Servem como
documentação de código e
de api.
Teste de integração
● Garante a comunicação
com outros módulos ou
sistema;
● Previnem regressão do
código;
● Incentivam a
refatoração do código;
● Servem como
documentação de código e
de api;
Teste de integração
● Garante a comunicação
com outros módulos ou
sistema;
● Previnem regressão do
código;
● Incentivam a refatoração do
código;
● Servem como
documentação de
código e de api.
Teste de Aceitação
Teste de aceitação
● Garante a funcionalidade
do sistema como um todo;
● Previnem regressão do código;
● Incentivam a refatoração do
código;
● Servem como documentação de
código e de api;
● Simula o teste com o usuário
final.
Teste de aceitação
● Garante a funcionalidade do
sistema como um todo;
● Previnem regressão do
código;
● Incentivam a refatoração do
código;
● Servem como documentação de
código e de api;
● Simula o teste com o usuário
Teste de aceitação
● Garante a funcionalidade do
sistema como um todo;
● Previnem regressão do código;
● Incentivam a refatoração do
código;
● Servem como documentação de
código e de api;
● Simula o teste com o usuário
final.
Teste de aceitação
● Garante a funcionalidade do
sistema como um todo;
● Previnem regressão do código;
● Incentivam a refatoração do
código;
● Servem como
documentação de código e
de api;
● Simula o teste com o usuário
Teste de aceitação
● Garante a funcionalidade do
sistema como um todo;
● Previnem regressão do código;
● Incentivam a refatoração do
código;
● Servem como documentação de
código e de api;
● Simula o teste com o
usuário final.
Testes automatizados
Qual tipo de teste usar?
Em regras gerais
(isso não é uma estatística,
apenas referência)
O que é TDD?
O que é TDD?
TDD é uma prática de
desenvolvimento de software
onde todo o código do sistema
é escrito depois de escrever
testes automatizados.
"We never have enough time for testing, so let's just write the test first." (Kent Beck)
O que é TDD?
Ciclo do TDD: Vermelho-Verde-Amarelo
O que é TDD?
Ciclo do TDD: Vermelho-Verde-Amarelo
O que é TDD?
Ciclo do TDD: Vermelho-Verde-Amarelo
O que é TDD?
Ciclo do TDD: Vermelho-Verde-Amarelo
O que é TDD?
Muito além de técnicas de "test-first"
Auxilia na detecção de falhas no design do sistema.
Também deve ter informações sobre o código testado.
Se um teste está ficando muito complicado, é um grande indício que
exista problema com o design.
É hora de refatorar!!
@brunomaomeh
brunomaomeh@gmail.com
https://github.com/brunomaomeh
https://slideshare.net/brunomaomeh
https://linkedin.com/in/brunomaomeh
Obrigado e

Palestra TDD - TDC - 2016

  • 1.
    TDD Automatizando Testes comJava TDC - POA - 2016
  • 2.
    Bruno Maomeh Um grandeaficionado pelo conhecimento, admirador do desenvolvimento de software e metodologias ágeis. Trabalhando por mais de 9 anos com desenvolvimento, eu também sou entusiasta por comunidades de desenvolvimento de sistemas, atuando como coordenador do Grupo de Usuários Java do Rio Grande do Sul (RSJug) e do JavaSF International Group (JavaSF).
  • 3.
    O que éum teste?
  • 4.
    O que éum teste? Um teste é tudo aquilo que assegura que alguma coisa está funcionando.
  • 5.
    O que éum teste? "Afirma-se que o teste de software é um processo, ou uma série de processos, projetado para se certificar a respeito do código de computador, de fazer o que foi designado a cumprir, e sem realizar nada que não seja intencional.” (Myers - 2004)
  • 6.
    Testes Manuais ● Fazalteração no código; ● Levanta o Tomcat; ● Abre o Chrome; ● Faz login na aplicação; ● Entra na página do formulário; ● Preenche um formulário; ● Envia o formulário;
  • 7.
    Testes Manuais ● Fazalteração no código; ● Levanta o Tomcat; ● Abre o Chrome; ● Faz login na aplicação; ● Entra na página do formulário; ● Preenche um formulário; ● Envia o formulário;
  • 8.
    ● Faz alteraçãono código; ● Levanta o Tomcat; ● Abre o Chrome; ● Faz login na aplicação; ● Entra na página do formulário; ● Preenche um formulário; ● Envia o formulário; Testes Manuais
  • 9.
    ● Faz alteraçãono código; ● Levanta o Tomcat; ● Abre o Chrome; ● Faz login na aplicação; ● Entra na página do formulário; ● Preenche um formulário; ● Envia o formulário; Testes Manuais
  • 10.
    ● Faz alteraçãono código; ● Levanta o Tomcat; ● Abre o Chrome; ● Faz login na aplicação; ● Entra na página do formulário; ● Preenche um formulário; ● Envia o formulário; Testes Manuais
  • 11.
    ● Faz alteraçãono código; ● Levanta o Tomcat; ● Abre o Chrome; ● Faz login na aplicação; ● Entra na página do formulário; ● Preenche um formulário; ● Envia o formulário; Testes Manuais
  • 12.
    ● Faz alteraçãono código; ● Levanta o Tomcat; ● Abre o Chrome; ● Faz login na aplicação; ● Entra na página do formulário; ● Preenche um formulário; ● Envia o formulário; Testes Manuais
  • 13.
    ● Faz alteraçãono código; ● Levanta o Tomcat; ● Abre o Chrome; ● Faz login na aplicação; ● Entra na página do formulário; ● Preenche um formulário; ● Envia o formulário; Testes Manuais
  • 14.
    Testes Manuais ● Fazalteração no código; ● Levanta o Tomcat; ● Abre o Chrome; ● Faz login na aplicação; ● Entra na página do formulário; ● Preenche um formulário; ● Envia o formulário;
  • 15.
    Testes Manuais Fazer testesmanuais É LENTO!! Uma hora você vai esquecer ou errar algum passo!!
  • 16.
  • 17.
  • 18.
    Tipos de testes Testede unidade Teste de integração Teste de aceitação Teste de segurança Teste de performance Teste de configuração Teste de regressão
  • 19.
    Tipos de testes Testede unidade Teste de integração Teste de aceitação Teste de segurança Teste de performance Teste de configuração Teste de regressão
  • 20.
  • 21.
    Teste de unidade ●Ajuda na rastreabilidade de bugs no sistema; ● Previnem regressão do código; ● Incentivam a refatoração do código; ● Servem como documentação do código; ● Auxilia na criação do design do sistema.
  • 22.
    Teste de unidade ●Ajuda na rastreabilidade de bugs no sistema; ● Previnem regressão do código; ● Incentivam a refatoração do código; ● Servem como documentação do código; ● Auxilia na criação do design do
  • 23.
    Teste de unidade ●Ajuda na rastreabilidade de bugs no sistema; ● Previnem regressão do código; ● Incentivam a refatoração do código; ● Servem como documentação do código; ● Auxilia na criação do design do sistema.
  • 24.
    Teste de unidade ●Ajuda na rastreabilidade de bugs no sistema; ● Previnem regressão do código; ● Incentivam a refatoração do código; ● Servem como documentação do código; ● Auxilia na criação do design do sistema.
  • 25.
    Teste de unidade ●Ajuda na rastreabilidade de bugs no sistema; ● Previnem regressão do código; ● Incentivam a refatoração do código; ● Servem como documentação do código; ● Auxilia na criação do design do sistema.
  • 26.
    NÃO é Testede Unidade Se ele conversa com o banco de dados; Se ele se comunica através da rede; Se ele toca o sistema de arquivos; Se ele não pode ser executado ao mesmo tempo de outros testes de unidade; Se for necessário configurar ou preparar o ambiente
  • 27.
  • 28.
    Teste de integração ●Garante a comunicação com outros módulos ou sistema; ● Previnem regressão do código; ● Incentivam a refatoração do código; ● Servem como documentação de código e de api.
  • 29.
    Teste de integração ●Garante a comunicação com outros módulos ou sistema; ● Previnem regressão do código; ● Incentivam a refatoração do código; ● Servem como documentação de código e de api.
  • 30.
    Teste de integração ●Garante a comunicação com outros módulos ou sistema; ● Previnem regressão do código; ● Incentivam a refatoração do código; ● Servem como documentação de código e de api;
  • 31.
    Teste de integração ●Garante a comunicação com outros módulos ou sistema; ● Previnem regressão do código; ● Incentivam a refatoração do código; ● Servem como documentação de código e de api.
  • 32.
  • 33.
    Teste de aceitação ●Garante a funcionalidade do sistema como um todo; ● Previnem regressão do código; ● Incentivam a refatoração do código; ● Servem como documentação de código e de api; ● Simula o teste com o usuário final.
  • 34.
    Teste de aceitação ●Garante a funcionalidade do sistema como um todo; ● Previnem regressão do código; ● Incentivam a refatoração do código; ● Servem como documentação de código e de api; ● Simula o teste com o usuário
  • 35.
    Teste de aceitação ●Garante a funcionalidade do sistema como um todo; ● Previnem regressão do código; ● Incentivam a refatoração do código; ● Servem como documentação de código e de api; ● Simula o teste com o usuário final.
  • 36.
    Teste de aceitação ●Garante a funcionalidade do sistema como um todo; ● Previnem regressão do código; ● Incentivam a refatoração do código; ● Servem como documentação de código e de api; ● Simula o teste com o usuário
  • 37.
    Teste de aceitação ●Garante a funcionalidade do sistema como um todo; ● Previnem regressão do código; ● Incentivam a refatoração do código; ● Servem como documentação de código e de api; ● Simula o teste com o usuário final.
  • 38.
  • 39.
    Qual tipo deteste usar? Em regras gerais (isso não é uma estatística, apenas referência)
  • 40.
  • 41.
    O que éTDD? TDD é uma prática de desenvolvimento de software onde todo o código do sistema é escrito depois de escrever testes automatizados. "We never have enough time for testing, so let's just write the test first." (Kent Beck)
  • 42.
    O que éTDD? Ciclo do TDD: Vermelho-Verde-Amarelo
  • 43.
    O que éTDD? Ciclo do TDD: Vermelho-Verde-Amarelo
  • 44.
    O que éTDD? Ciclo do TDD: Vermelho-Verde-Amarelo
  • 45.
    O que éTDD? Ciclo do TDD: Vermelho-Verde-Amarelo
  • 46.
    O que éTDD? Muito além de técnicas de "test-first" Auxilia na detecção de falhas no design do sistema. Também deve ter informações sobre o código testado. Se um teste está ficando muito complicado, é um grande indício que exista problema com o design. É hora de refatorar!!
  • 47.
  • 48.