Your SlideShare is downloading. ×
Desenvolvimento Dirigido por Testes
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Desenvolvimento Dirigido por Testes

1,734
views

Published on

Palestra realizada para os alunos das áreas de comutação e sistemas do UNIBH, durante a Jornada Tecnológica de 2011

Palestra realizada para os alunos das áreas de comutação e sistemas do UNIBH, durante a Jornada Tecnológica de 2011

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,734
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Universidade de Belo Horizonte
    Desenvolvimento Dirigido por Testes
    Camilo Ribeiro
    camilo@camiloribeiro.com
    www.bugbang.com.br
  • 2. Camilo Ribeiro
    • Mais de cinco anos de experiência em Engenharia de Software
    • 3. Consultor em arquitetura de teste e qualidade de software
    • 4. Instrutor e professor de teste de software na Iterasys
    • 5. Graduado em Sistemas pela Internet pela Faculdade Pitágoras
    • 6. Pós graduado em Engenharia de Software pela UFMG
    • 7. Certificado pelo ISTQB, ALATS e ETS
    • 8. Mantedor do blog técnico The Bug BangTheory (www.bugbang.com.br)
    • 9. Palestrante e entusiasta de teste de software
    www.about.me/camiloribeiro
    www.twitter.com/camiloribeiro
    camilo@camiloribeiro.com
  • 10. Agenda
    • O que é teste de unidade
    • 11. Motivação para existência do teste de unidade
    • 12. Problemas dos testes de unidade
    • 13. Motivação para o TDD
    • 14. Como funciona o TDD
    • 15. Mitos sobre o TDD
    • 16. Exemplos em .net
    • 17. Framework Praxis em Java
    Fiquem à vontade para questionar qualquer assunto ou perguntar suas dúvidas.
    Ao final teremos alguns exemplos práticos e tempo para perguntas também.
  • 18. Não sou Desenvolvedor
    Sou um testador que aprendeu um pouco dos dois caminhos
  • 19. Conceito: Teste de Unidade
    Teste realizado com os componentes individuais de um software. [Subsequente ao IEEE 610] – Glóssário de termos do ISTQB
    Testes de unidade é um método pelo qual as unidades individuais do código-fonte são testados para determinar se eles estão aptos para o uso. A unidade é a menor parte testável de um aplicativo. Na programação procedural uma unidade pode ser uma função individual ou procedimento. Na programação orientada a objeto uma unidade é normalmente um método. Os testes unitários são criados por programadores ou ocasionalmente por testadores de caixa branca durante o processo de desenvolvimento. – Tradução Literal da Wikipedia Inglesa
  • 20. O Modelo V Tradicional
    Planeja >
    Teste de Aceite
    Requisitos
    Teste de Sistema
    Planeja >
    Análise
    Teste de Integração
    Planeja >
    Desenho
    Planeja >
    Código
    Teste de Unidade
  • 21. Problema de escrever testes depois
    Você escreverá testes para passarem.
    Testes não podem ser feitos para “passar”, devem ser feitos para avaliar o código de produção.
    Testes feitos para ter testes não tem valor.
  • 22. TDD vem pra resolver esse problema
  • 23. O modelo V aplicado ao TDD
    Planeja >
    Teste de Aceite
    Requisitos
    Teste de Sistema
    Planeja >
    Análise
    Teste de Integração
    Planeja >
    Desenho
    Gera >
    Código
    Teste de Unidade
  • 24. Framework de Teste de Unidade
    Código de produção
    Requisitos
    Gera
    É testado por
    Classe de Teste
    Acessa
    Acessa
    Implementa
    Dados(DB, XML, Excel)
    Framework
  • 25. Considerações sobre Teste de Unidade
    Teste de unidade valida uma unidade;
    Teste de unidade deve ser executável independente dos dados;
    O teste de unidade deve conter tudo o que o teste necessita;
    Teste de unidade não é teste de integração (Cuidado)
    Teste de unidade feito por fazer não tem valor;
    Teste de unidade sempre será usado como teste de regressão
  • 26. Outras Considerações Teste de Unidade
    Nunca use lógica em testes de unidade. Testes de unidade devem ser configurados (Não queremos mais bugs :p )
    Não altere ou exclua testes para ter um novo. Sempre adicione o novo. O teste só deve mudar quando a funcionalidade mudar;
    Quando todos os testes passarem, mude algum if, mude atribuições e retornos de lugar no seu código de produção para ver se os testes são efetivos;
    Code Review e Test Code Review tem a mesma importância;
    Teste de unidade deve testar o Contrato, não teste nada além do contrato;
    Testes de unidade devem ser isolados;
    Reuse o código de teste;
  • 27. Como o TDD Funciona?
  • 28. O que tem de teste de software?
    Uso de técnicas de teste como valores limites, partição de equivalência ou qualquer outra técnica usada para testes de sistema;
    Casos de teste (em forma de código);
    São requeridas as mesmas skills dos testes funcionais (criatividade, curiosidade, senso crítico, etc.)
    . . .
  • 29. O que tem de desenvolvimento?
    Orientação por Objetos;
    Acesso a bancos de dados e qualquer outro repositório usado em programação;
    Padrões de projeto como commanded, value object, imposter, factory method e composite ou qualquer outro usado em programação;
    Acesso irrestrito a todos os recursos da linguagem e IDE usada;
    . . .
  • 30. Como o TDD Funciona?
    Adicionar um teste: Incluir um teste, que pode por exemplo, ter o formato de um caso de teste.
    Executar o teste: Devemos ter certeza que o teste falha antes da implementação. Se necessário, desenvolva apenas o contrato ou mockspara isso;
    Desenvolva: Agora complete seu contrato com o código funcional, como sempre fez.
    Execute o teste: Agora o teste deve passar. Caso existam defeitos, o teste de unidade vai demonstrar erros;
    Correção e reteste: Agora mude o código fonte de produção até que o teste de unidade tenha um resultado positivo;
    *Se algo nos requisitos mudar, os testes mudam.
    http://www.agiledata.org/essays/tdd.html
  • 31. Tem pra Java?
    http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks
  • 32. Tem pra .Net?
    http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks
  • 33. Tem pra outras linguagens?
    2.41 Perl
    2.42 PHP
    2.43 PL/SQL
    2.44 PostgreSQL
    2.45 PowerBuilder
    2.46 Progress 4GL
    2.47 Prolog
    2.48 Python
    2.49 R programming language
    2.50 REALbasic
    2.51 Rebol
    2.52 RPG
    2.53 Ruby
    2.54 SAS
    2.55 Scala
    2.56 Scheme
    2.57 Shell
    2.58 Simulink
    2.59 Smalltalk
    2.60 SQL
    2.61 TargetLink
    2.62 Tcl
    2.63 TinyOS/nesC
    2.64 Transact-SQL
    2.65 Visual FoxPro
    2.66 Visual Basic (VB6)
    2.67 Visual Lisp
    2.68 XML
    2.69 XSLT
    2.70 Other
    Pyunit
    http://pyunit.sourceforge.net/pyunit.html
    PHPUnithttp://phpunit.sourceforge.net/
    CppTest
    http://cpptest.sourceforge.net/
    Test::Unit
    http://test-unit.rubyforge.org/
    http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks
  • 34. Classe de teste = Caso de Teste
  • 35. Pré-Condição
    Podem ser usados MOCKs, Stubs, fakes, procedures (Querys), importações, ou qualquer outro recurso computacional para preparar o ambiente para o teste.
    A pré-condição também pode ser a execução de outro teste (ou outros).
    O Visual Studio usa o atributteTestInitialize em um método para executar algo que prepara o ambiente.
    Aqui é onde configuramos o teste
  • 36. Passos ou Procedimentos de Teste
    São feitas as atribuições e executadas as funcionalidades.
    Aqui também são feitas conferências parciais se necessárias.
    Para finalizar é realizado ultimo procedimento que deve realizar a funcionalidade a ser testada.
    Aqui é onde configuramos o que será testado
  • 37. Resultados Esperados / Pós condições
    Aqui são realizadas a comparação (ou comparações se necessária mais de uma) entre o resultado esperado e o resultado atual.
    Normalmente o framework disponibiliza recursos para execução e registro automático do teste.
    Aqui é onde verificamos se o resultado esperado e atual são iguais
  • 38. Hello Word em JUnit
    Testa
  • 39. Hello Word em MS UnitTest Framework
    Testa
  • 40. Mitos sobre TDD
    Só TDD realiza todos os testes que meu projeto precisa;
    TDD deve ser realizado pelo Analista de Testes;
    TDD é uma prática exclusiva de métodos ágeis;
    Testes de Unidade e Testes Funcionais Automatizados são a mesma coisa;
    TDD faz o projeto ficar mais caro, porque meu programador desenvolve duas vezes;
    TDD não é escalável (não evolui com o projeto);
    TDD deve ser usado para 100% do meu código fonte*;
    TDD = Bala de prata. Se feitos corretamente, pegam todos os bugs;
  • 41. Quero saber mais!!!
    http://gustavoquezada.blogspot.com/2010/01/vsts-visual-studio-team-system-para.html (Exemplo prático)
    http://www.bugbang.com.br/?p=1661(Vídeo)
    http://www.bugbang.com.br/?p=839(Exemplo prático)
    http://www.agiledata.org/essays/tdd.html
    http://www.extremeprogramming.org/rules/unittests.html
    http://msdn.microsoft.com/en-us/library/aa292197(v=vs.71).aspx
    http://viniciusquaiato.com/blog/tag/unit-testing/
    http://social.msdn.microsoft.com/Forums/pt-BR/vsunittest/threads (Fórum)
    http://diveintopython.org/unit_testing/index.html
    http://artofunittesting.com/ (Vídeo)
  • 42. https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032486600&culture=pt-br
  • 43. Muito Obrigado
  • 44. Referências
    Modelo V descrevendo o paralelismo entre as atividades de desenvolvimento e teste de software (CRAIG e JASKIEL, 2002)
    http://www.agiledata.org/essays/tdd.html#Misconceptions (em 16/05/2011)
    http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks(em 18/05/2011)
    http://artofunittesting.com/ (em 16/05/2011)
    http://gustavoquezada.blogspot.com/2010/01/vsts-visual-studio-team-system-para.html (Exemplo prático) (em 16/05/2011)
    http://www.bugbang.com.br/?p=1661 (Vídeo) (em 16/05/2011)
    http://www.bugbang.com.br/?p=839 (Exemplo prático) (em 16/05/2011)
    http://www.agiledata.org/essays/tdd.html(em 16/05/2011)
    http://www.extremeprogramming.org/rules/unittests.html(em 16/05/2011)
    http://msdn.microsoft.com/en-us/library/aa292197(v=vs.71).aspx(em 16/05/2011)
    http://viniciusquaiato.com/blog/tag/unit-testing/(em 16/05/2011)
    http://social.msdn.microsoft.com/Forums/pt-BR/vsunittest/threads (Fórum) (em 16/05/2011)
    http://diveintopython.org/unit_testing/index.html (em 16/05/2011)
    http://artofunittesting.com/ (Vídeo) (em 16/05/2011)