testes de unidade - conhecendo e aplicando
Post on 11-Jun-2015
123 Views
Preview:
DESCRIPTION
TRANSCRIPT
Testes de Unidade Conhecendo e aplicando
Help About me... • André P. Bertoletti
• Pai “júnior” :D
• Analista de Sistemas (2003)
• Desenvolvedor (C#)
• Sistemas ERP (ITSA SOL)
• Professor (Pronatec/Unimep)
• Entusiasta das Boas Práticas e Métodos Ágeis
• Curto também: violão, políticas públicas, café, espiritualidade, etc...
apbertoletti@gmail.com
@apbertoletti
/apbertoletti
/apbertoletti
Pra começo de conversa...
O que é testar mesmo?!
Um processo feito de forma
responsável precisa ser
testado sempre, a fim de
garantir que o resultado obtido confere com o
resultado esperado
Aqui entra o teste de unidade
É a verificação da menor unidade de um processo (ou das unidades
mais importantes), afim de validar se os resultados de
entrada/saída conferem com o esperado.
Processo: “Pendurar quadro na parede”
Qual seria o teste de unidade deste processo?
Passou no Teste - OK!!!
Resultado esperado = quadro na parede
Qualquer outro processo manual também possui um
resultado esperado
passível de teste!
Software: é aqui que entramos...
Construir um Software significa
automatizar um processo que antes era feito manualmente
Dados de Entrada
Processamento Automático
(métodos C#)
Dados de Saída
Da mesma forma, os processos automáticos também precisam ser testados
REQUISITO: Desenvolver um software que calcule as quatro operações aritméticas básicas entre dois valores e mostre o resultado na tela.
RESULTADO ESPERADO: (operação de adição) • Valor1 = 100 • Valor2 = 200
• Soma = 300
Colocando a mão no código!!!
Conclusão...
Vocês acham que foram realizados os testes de unidade em nosso software?
SIM
O problema é que os testes não foram automáticos
... e tarefas complexas feitas de forma manual
chatas... e tornando-se chatas,
uma hora ou outra, nós deixamos de fazê-las.
e repetitiva tornam-se
Além disso, outros fatores que
dificultam o teste manual...
Pensando além do F5... se nós já automatizamos o
processo, será que não conseguimos
também
automatizar o seu
teste???
um software testando...
Aqui entra o Teste de Unidade
Automatizado que nada mais é...
...outro software
Quando rodamos um teste automatizado, fica sob
responsabilidade dele nos informar
quais testes passaram ou não
Colocando a mão no código!!!
Benefícios
• Desenvolver testes encoraja o programador a
fazer um bom design do seu código,
afim de facilitar o seu teste automatizado.
• Exemplo: separação dos métodos de regras de negócio, da camada apresentação.
Benefícios
• Encoraja o programador a desenvolver
código limpo. Pois, se o método estiver
coberto com testes automatizados, é garantida a sua refatoração. E isso é feito de forma segura, garantindo que o mesmo continuará funcionando.
• Exemplo: (mostrar no código)
Benefícios
• Independente do programador (iniciante ou experiente) que esteja mexendo no código, o
produto final continuará funcionando como era esperado. Por isso, o teste de unidade automatizado, pode ser considerado
um “Ativo Fixo” de uma empresa de
software;
Benefícios
• Em sistemas complexos como um ERP, onde há métodos reutilizáveis e com alto grau de dependência entre eles, os testes automatizados garantem que uma simples
manutenção não “quebre” aquilo que já estava funcionando.
• Exemplo: Implementação da última Nota Técnica da NFe.
Nem tudo são flores... • Mais código para escrever, pois além do
próprio método original, haverá também o(s) método(s) de testes que irá cobri-lo.
• Exemplo:
Nem tudo são flores...
• Mais código para manter, pois caso haja alguma alteração nos resultados esperados dos métodos já cobertos, os seus respectivos testes também deverão ser reajustados.
• Exemplo: (mostrar no código)
Nem tudo são flores...
• Como toda mudança, o primeiro passo é sairmos da zona de conforto
Técnicas diferentes, mas relacionadas
• Teste de unidade manual – Já fazemos no dia-a-dia (ou pelo menos,
deveríamos)
• Teste de unidade automatizado – Automatizar aquilo que é repetitivo e crítico
• TDD: Test Driven Development – Criar o teste antes do código
• BDD: Behavior Driven Development – Pensar em cenários de teste
Lembretes importantes! • NÃO existe software sem Bug! A ideia do teste
de unidade é MINIMIZAR AO MÁXIMO a existência deles.
• Métodos de testes também são software! Portanto cuidado: testes mal escritos podem retornar falsos positivos ou falsos negativos!
• O alto número de testes automatizados pode trazer uma falsa sensação de segurança. Pois a garantia de qualidade exige também a prática de outros testes, como integração, stress e aceitação.
Referências Só imaturos não testam! http://nomedojogo.com/2009/04/08/so-os-imaturos-nao-testam-o-video/
Programadores profissionais escrevem testes, e ponto final! http://blog.fragmental.com.br/2007/10/31/programadores-profissionais-escrevem-testes-ponto-final/
Tudo o que você precisa saber sobre testes no Visual Studio (parte 1) http://www.youtube.com/watch?v=kGnlItZyOzY
(parte 2) http://www.youtube.com/watch?v=UgPMmR2LaZo
(parte 3) http://www.youtube.com/watch?v=oLFBPGuIqGk
Você testa o seu Software? Como? http://luizcorrea.blogspot.com.br/2009/10/voce-testa-o-seu-software-como.html
top related