introdução a testes automatizados

28
Thiago Ghisi (@thiagoghisi) Introdução a Testes Automatizados

Upload: thiago-ghisi

Post on 14-Jan-2015

8.066 views

Category:

Technology


5 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Introdução a testes automatizados

Thiago Ghisi (@thiagoghisi)

Introdução a Testes Automatizados

Page 2: Introdução a testes automatizados

2003 - SENAI e o Poder da Programação Pascal. 2005 - Técnico em Informática com Habilitação em Redes de Computadores 2006/1 - Ciência da Computação (Unisul) 2006/2 - Técnico de Informática (Tractebel Energia/Consult System) 2007/1 - PUIC: Testes, CMMI e Extreme Programming 2007/2 – Nexxera Techpeople 2008 - Testes Automatizados (Techpeople) 2009/1 - SCJP 6.0 2009/2 - Ágiles 2009 (1º Coding Dojo) 2010/1 - TCC: Shell para desenvolvimento de Sistemas Especialistas na Web.

0% de cobertura de Testes Automatizados == Estou até hoje para disponibilizar o fonte.

2010/2 - MPS.BR Nível F (Techpeople) 2011/1 - CMMI ML2 (Techpeople) 2011/2 - Bacharel em Ciência da Computação (Unisul) 2011/3 – DojoTuba 2011/4 - Consultor MPS.BR 2011/5 – Fork In Tuba

Quem?

Page 3: Introdução a testes automatizados

1. Quem já ouviu falar e sabe o que são Testes Automatizados?

2. Quem já usou algum tipo de Teste Automatizado em alguma aplicação que desenvolveu profissionalmente?

3. Quem FREQUENTEMENTE faz Testes Automatizados?

4. Quem SEMPRE faz Testes Automatizados?5. Quem faz TDD do início ao fim?

Enquete 1:

Page 4: Introdução a testes automatizados

Com que linguagem de programação você trabalha?

Enquete 2:

Page 5: Introdução a testes automatizados

Em uma palavra: Feedback

Em uma frase: “Executar o programa com

alguma(s) entrada(s) e conferir visualmente os resultados obtidos” AgilCoop/USP

Teste de Software

Page 6: Introdução a testes automatizados

“É o processo de escrita de uma programa de computador para realizar o teste de software.” Wikipédia

Automação de Testes

Page 7: Introdução a testes automatizados

“Uso de software para a controlar a execução do teste de software, comparando RESULTADOS ESPERADOS com os RESULTADOS REAIS.” Wikipédia

Testes Automatizados

Page 8: Introdução a testes automatizados

Porque fazer Testes Automatizados?

Page 9: Introdução a testes automatizados

Porque fazer Testes Automatizados?

Page 10: Introdução a testes automatizados

Projeto sem Testes Automatizados = Medo de Refatorar o Código e a Arquitetura = Código Imundo = Baixa Produtividade e Alta Taxa de retrabalho (BUGs) = Pessoas desmotivadas = Go Horse Process

Projeto com Testes Automatizados = Segurança ao Refatorar o Código e a Arquitetura = Código Limpo = Alta Produtividade e Baixa Taxa de retrabalho (BUGs) = Pessoas motivadas = $$$

Porque fazer Testes Automatizados?

Page 11: Introdução a testes automatizados

“São os testes de unidade que mantêm seus códigos flexíveis, reutilizáveis e passíveis de manutenção.”

“Sem testes, cada modificação pode gerar um bug e você ficará relutante em fazer mudanças.”

“Quanto maior a cobertura dos seus testes menor o medo.” “Ter uma coleção de testes de unidade automatizados que

cubram o código de produção é o segredo para manter seu projeto e arquitetura os mais limpos possíveis.”

“Se não mantiver os testes limpos, irá perdê-los.”

Porque fazer Testes Automatizados?

Page 12: Introdução a testes automatizados

Importância dos Testes Automatizados em Linguagens Dinâmicas X Importância dos Testes Automatizados em Linguagens Compiladas?

Enquete 3:

Page 13: Introdução a testes automatizados

O teste é modelado conhecendo-se a estrutura interna do sistema

Aplicável somente quando se conhece o algoritmo

O calculo da Cobertura de Testes é totalmente baseada em princípios Caixa Branca

Teoricamente, cada caminho possível ao longo do código deve ser testado

Teste Estrutural

Abordagem de Teste caixa branca

Page 14: Introdução a testes automatizados

O teste é modelado sem o conhecimento da estrutura interna do sistema

Aplicável em todas as fases/tipos de Testes.Se concentram e se baseiam na entrada e

saída da unidade.Teste Funcional

Abordagem de Teste caixa preta

Page 15: Introdução a testes automatizados

O primeiro tipo de teste que se deve fazerUma unidade pode ser entendida como o

menor trecho de código de um sistema que pode ser testado. Normalmente um método.

Focado em um trecho específico do código, desta forma os erros encontrados são facilmente localizados, diminuindo o tempo gasto com depuração.

Exemplo da Engenharia aeronáutica

Testes de Unidade

Page 16: Introdução a testes automatizados

Teste de Unidade - TDD

Page 17: Introdução a testes automatizados

Quer aprender a fazer TDD?

Page 18: Introdução a testes automatizados

xUnit (API)JUnit com EclEmmaMock Objects?

Teste de Unidade - Demo

Page 19: Introdução a testes automatizados

Sucede o Teste de UnidadeMódulos são combinados e testados em grupoOnde vários Mock Objects são removidosAntecede o Testes de Aceitação, ou os testes

onde o sistema está completamente integrado

Testes de Integração

Page 20: Introdução a testes automatizados

Sistema completamente integrado“Última ação de teste antes da implantação do

software. A meta do teste de aceitação é verificar se o software está pronto e pode ser usado pelos usuários finais para executar as funções e as tarefas para as quais foi criado.” RUP

Testes caixa preta que são realizados através da interface de usuário, que pode ser, por exemplo, um console textual, uma interface de uma aplicação local ou uma interface Web

Validação do sistema do ponto de vista do Cliente, do negócio.

Testes de Aceitação

Page 21: Introdução a testes automatizados

Selenium Server o interpretador, é um server em java, um JARZÃO

Selenium IDE (FIREFOX) grava e exporta testes para todos os clients

Selenium Client (Várias Linguagens: Java, PHP, Ruby, Python) Não tem desculpas para não usar!

Teste de Aceitação - Demo

Page 22: Introdução a testes automatizados

Testes de Stress e Desempenho - Dica

Page 23: Introdução a testes automatizados

Fast – Quando os testes rodam devagar, você não desejará executá-los com frequência.

Idenpendent – Quando os testes dependem um dos outro, se o primeiro falhar causará um efeito dominó de falhas, dificultando o diagnóstico.

Repeatable – Caso os testes não p0ssam ser repetidos em qualquer ambiente, você sempre terá uma desculpa para não manter os testes VERDES.

Self-validating – Asserts TRUE ou FALSE, sempre! Evita comparações manuais.

Timely – Escrever os testes na hora certa, que é em 99% das vezes antes. Se criá-los depois, o teste de código de produção poderá fica mais difícil.

Características de bons Testes Automatizados (de Unidade)

Page 24: Introdução a testes automatizados

Atuar como especificação das funcionalidadesAtuar como repelente de bugsAjudar a achar defeitos no sistema em testeAtuar como documentação executávelAtuar como rede de segurança para

mudançasNão fazer mal ao sistema em teste

Referência: AgilCoop/USP

Testes Automatizados devem...

Page 25: Introdução a testes automatizados

Seja Professional! - Vídeo Uncle Bob

Link Vídeo: http://www.youtube.com/watch?v=9XwiUKXZm-o

Page 26: Introdução a testes automatizados

Reconhecimento que Desenvolvimento de software é uma tarefa complexa.

A automação dos testes dá segurança à equipe para fazer alterações no código, seja por manutenção, refatoração ou até mesmo para adição de novas funcionalidades.

No começo e por muito tempo vai doer fazer, vai ser difícil, é uma mudança de paradigma. Pratique!

Fazer testes automatizados está relacionado com ser ou não profissional!

Precisamos convencer nossos superiores que testes automatizados são importantes e que são eles que vão ganhar com isso!

Conclusões

Page 27: Introdução a testes automatizados

Livro Código Limpo: Habilidades Práticas do Agile Software – Capítulo 9: Testes de Unidadehttp://

ccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao08-Testes.pdfhttp://

ccsl.ime.usp.br/agilcoop/files/TestesAutomatizados-1-2-Introducao-AgilCoop-Verao2010.pdf

http://www.agilcoop.org.br/files/AgilCoop-Verao2010-TestesAutomatizados.pdf

https://github.com/thiagoghisi/DojoTuba/tree/master/dojoCaixaEletronicoEconomico

https://github.com/thiagoghisi/DojoTuba/tree/master/dojoCalculoDeNumerosRomanos

https://github.com/rodrigoy/beckanos-javahttp://seleniumhq.org/

Referências e Links: