Testes de unidade - Conhecendo e aplicando
-
Upload
apbertoletti -
Category
Technology
-
view
124 -
download
1
description
Transcript of Testes de unidade - Conhecendo e aplicando
![Page 1: Testes de unidade - Conhecendo e aplicando](https://reader030.fdocumentos.tips/reader030/viewer/2022013115/55799bedd8b42ae72b8b5334/html5/thumbnails/1.jpg)
Testes de Unidade Conhecendo e aplicando
![Page 2: Testes de unidade - Conhecendo e aplicando](https://reader030.fdocumentos.tips/reader030/viewer/2022013115/55799bedd8b42ae72b8b5334/html5/thumbnails/2.jpg)
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
/apbertoletti
/apbertoletti
![Page 3: Testes de unidade - Conhecendo e aplicando](https://reader030.fdocumentos.tips/reader030/viewer/2022013115/55799bedd8b42ae72b8b5334/html5/thumbnails/3.jpg)
Pra começo de conversa...
O que é testar mesmo?!
![Page 4: Testes de unidade - Conhecendo e aplicando](https://reader030.fdocumentos.tips/reader030/viewer/2022013115/55799bedd8b42ae72b8b5334/html5/thumbnails/4.jpg)
Um processo feito de forma
responsável precisa ser
testado sempre, a fim de
garantir que o resultado obtido confere com o
resultado esperado
![Page 5: Testes de unidade - Conhecendo e aplicando](https://reader030.fdocumentos.tips/reader030/viewer/2022013115/55799bedd8b42ae72b8b5334/html5/thumbnails/5.jpg)
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.
![Page 6: Testes de unidade - Conhecendo e aplicando](https://reader030.fdocumentos.tips/reader030/viewer/2022013115/55799bedd8b42ae72b8b5334/html5/thumbnails/6.jpg)
Processo: “Pendurar quadro na parede”
Qual seria o teste de unidade deste processo?
![Page 7: Testes de unidade - Conhecendo e aplicando](https://reader030.fdocumentos.tips/reader030/viewer/2022013115/55799bedd8b42ae72b8b5334/html5/thumbnails/7.jpg)
Passou no Teste - OK!!!
Resultado esperado = quadro na parede
![Page 8: Testes de unidade - Conhecendo e aplicando](https://reader030.fdocumentos.tips/reader030/viewer/2022013115/55799bedd8b42ae72b8b5334/html5/thumbnails/8.jpg)
Qualquer outro processo manual também possui um
resultado esperado
passível de teste!
![Page 9: Testes de unidade - Conhecendo e aplicando](https://reader030.fdocumentos.tips/reader030/viewer/2022013115/55799bedd8b42ae72b8b5334/html5/thumbnails/9.jpg)
Software: é aqui que entramos...
![Page 10: Testes de unidade - Conhecendo e aplicando](https://reader030.fdocumentos.tips/reader030/viewer/2022013115/55799bedd8b42ae72b8b5334/html5/thumbnails/10.jpg)
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
![Page 11: Testes de unidade - Conhecendo e aplicando](https://reader030.fdocumentos.tips/reader030/viewer/2022013115/55799bedd8b42ae72b8b5334/html5/thumbnails/11.jpg)
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
![Page 12: Testes de unidade - Conhecendo e aplicando](https://reader030.fdocumentos.tips/reader030/viewer/2022013115/55799bedd8b42ae72b8b5334/html5/thumbnails/12.jpg)
Colocando a mão no código!!!
![Page 13: Testes de unidade - Conhecendo e aplicando](https://reader030.fdocumentos.tips/reader030/viewer/2022013115/55799bedd8b42ae72b8b5334/html5/thumbnails/13.jpg)
Conclusão...
Vocês acham que foram realizados os testes de unidade em nosso software?
SIM
![Page 14: Testes de unidade - Conhecendo e aplicando](https://reader030.fdocumentos.tips/reader030/viewer/2022013115/55799bedd8b42ae72b8b5334/html5/thumbnails/14.jpg)
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
![Page 15: Testes de unidade - Conhecendo e aplicando](https://reader030.fdocumentos.tips/reader030/viewer/2022013115/55799bedd8b42ae72b8b5334/html5/thumbnails/15.jpg)
Além disso, outros fatores que
dificultam o teste manual...
![Page 16: Testes de unidade - Conhecendo e aplicando](https://reader030.fdocumentos.tips/reader030/viewer/2022013115/55799bedd8b42ae72b8b5334/html5/thumbnails/16.jpg)
Pensando além do F5... se nós já automatizamos o
processo, será que não conseguimos
também
automatizar o seu
teste???
![Page 17: Testes de unidade - Conhecendo e aplicando](https://reader030.fdocumentos.tips/reader030/viewer/2022013115/55799bedd8b42ae72b8b5334/html5/thumbnails/17.jpg)
um software testando...
Aqui entra o Teste de Unidade
Automatizado que nada mais é...
...outro software
![Page 18: Testes de unidade - Conhecendo e aplicando](https://reader030.fdocumentos.tips/reader030/viewer/2022013115/55799bedd8b42ae72b8b5334/html5/thumbnails/18.jpg)
Quando rodamos um teste automatizado, fica sob
responsabilidade dele nos informar
quais testes passaram ou não
![Page 19: Testes de unidade - Conhecendo e aplicando](https://reader030.fdocumentos.tips/reader030/viewer/2022013115/55799bedd8b42ae72b8b5334/html5/thumbnails/19.jpg)
Colocando a mão no código!!!
![Page 20: Testes de unidade - Conhecendo e aplicando](https://reader030.fdocumentos.tips/reader030/viewer/2022013115/55799bedd8b42ae72b8b5334/html5/thumbnails/20.jpg)
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.
![Page 21: Testes de unidade - Conhecendo e aplicando](https://reader030.fdocumentos.tips/reader030/viewer/2022013115/55799bedd8b42ae72b8b5334/html5/thumbnails/21.jpg)
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)
![Page 22: Testes de unidade - Conhecendo e aplicando](https://reader030.fdocumentos.tips/reader030/viewer/2022013115/55799bedd8b42ae72b8b5334/html5/thumbnails/22.jpg)
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;
![Page 23: Testes de unidade - Conhecendo e aplicando](https://reader030.fdocumentos.tips/reader030/viewer/2022013115/55799bedd8b42ae72b8b5334/html5/thumbnails/23.jpg)
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.
![Page 24: Testes de unidade - Conhecendo e aplicando](https://reader030.fdocumentos.tips/reader030/viewer/2022013115/55799bedd8b42ae72b8b5334/html5/thumbnails/24.jpg)
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:
![Page 25: Testes de unidade - Conhecendo e aplicando](https://reader030.fdocumentos.tips/reader030/viewer/2022013115/55799bedd8b42ae72b8b5334/html5/thumbnails/25.jpg)
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)
![Page 26: Testes de unidade - Conhecendo e aplicando](https://reader030.fdocumentos.tips/reader030/viewer/2022013115/55799bedd8b42ae72b8b5334/html5/thumbnails/26.jpg)
Nem tudo são flores...
• Como toda mudança, o primeiro passo é sairmos da zona de conforto
![Page 27: Testes de unidade - Conhecendo e aplicando](https://reader030.fdocumentos.tips/reader030/viewer/2022013115/55799bedd8b42ae72b8b5334/html5/thumbnails/27.jpg)
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
![Page 28: Testes de unidade - Conhecendo e aplicando](https://reader030.fdocumentos.tips/reader030/viewer/2022013115/55799bedd8b42ae72b8b5334/html5/thumbnails/28.jpg)
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.
![Page 29: Testes de unidade - Conhecendo e aplicando](https://reader030.fdocumentos.tips/reader030/viewer/2022013115/55799bedd8b42ae72b8b5334/html5/thumbnails/29.jpg)
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