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

Testes de unidade - Conhecendo e aplicando

  • 1.
  • 2.
    Help  Aboutme... • 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
  • 3.
    Pra começo de conversa... Oque é testar mesmo?!
  • 4.
    Um processo feitode forma responsável precisa ser testado sempre, a fim de garantir que o resultado obtido confere com o resultado esperado
  • 5.
    Aqui entra oteste 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.
  • 6.
    Processo: “Pendurar quadrona parede” Qual seria o teste de unidade deste processo?
  • 7.
    Passou no Teste- OK!!! Resultado esperado = quadro na parede
  • 8.
    Qualquer outro processomanual também possui um resultado esperado passível de teste!
  • 9.
    Software: é aquique entramos...
  • 10.
    Construir um Softwaresignifica automatizar um processo que antes era feito manualmente Dados de Entrada Processamento Automático (métodos C#) Dados de Saída
  • 11.
    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
  • 12.
    Colocando a mãono código!!!
  • 13.
    Conclusão... Vocês acham queforam realizados os testes de unidade em nosso software? SIM
  • 14.
    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
  • 15.
    Além disso, outrosfatores que dificultam o teste manual...
  • 16.
    Pensando além do F5...se nós já automatizamos o processo, será que não conseguimos também automatizar o seu teste???
  • 17.
    um software testando... Aqui entrao Teste de Unidade Automatizado que nada mais é... ...outro software
  • 18.
    Quando rodamos umteste automatizado, fica sob responsabilidade dele nos informar quais testes passaram ou não
  • 19.
    Colocando a mãono código!!!
  • 20.
    Benefícios • Desenvolver testesencoraja 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.
  • 21.
    Benefícios • Encoraja oprogramador 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)
  • 22.
    Benefícios • Independente doprogramador (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;
  • 23.
    Benefícios • Em sistemascomplexos 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.
  • 24.
    Nem tudo sãoflores... • 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:
  • 25.
    Nem tudo sãoflores... • 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)
  • 26.
    Nem tudo sãoflores... • Como toda mudança, o primeiro passo é sairmos da zona de conforto
  • 27.
    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
  • 28.
    Lembretes importantes! • NÃOexiste 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.
  • 29.
    Referências Só imaturos nãotestam! 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