palestra tdd - tdc - 2016

Post on 11-Apr-2017

31 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

TDDAutomatizando Testes com Java

TDC - POA - 2016

Bruno MaomehUm 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;

● Verifica se a correção funcionou.

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;

● Verifica se a correção funcionou.

● 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;

● Verifica se a correção funcionou.

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;

● Verifica se a correção funcionou.

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;

● Verifica se a correção funcionou.

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;

● Verifica se a correção funcionou.

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;

● Verifica se a correção funcionou.

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;

● Verifica se a correção funcionou.

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;

● Verifica se a correção funcionou;

● Faz alteração no código.

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çãoTeste 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çãoTeste 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 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.

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 para executá-los.

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 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 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 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 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

top related