Globalcode – open4educationVinicius Quaiato @vquaiato http://viniciusquaiato.com
Testes na plataforma .NET
Começando a des...
Globalcode – open4educationVinicius Quaiato @vquaiato http://viniciusquaiato.com
About: Vinicius Quaiato
• Arquitetura e d...
Globalcode – open4educationVinicius Quaiato @vquaiato http://viniciusquaiato.com
Contact: me
• http://viniciusquaiato.com
...
Globalcode – open4educationVinicius Quaiato @vquaiato http://viniciusquaiato.com
Lambda3
• Parceria
• http://lambda3.com.br
Globalcode – open4educationVinicius Quaiato @vquaiato http://viniciusquaiato.com
Objetivos
Globalcode – open4educationVinicius Quaiato @vquaiato http://viniciusquaiato.com
About: you
• Nome
• Expectativa
Globalcode – open4educationVinicius Quaiato @vquaiato http://viniciusquaiato.com
Globalcode – open4educationVinicius Quaiato @vquaiato http://viniciusquaiato.com
Fazer software dói
Globalcode – open4educationVinicius Quaiato @vquaiato http://viniciusquaiato.com
Fazer software cansa
Globalcode – open4education0 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Fazer software é difícil
Globalcode – open4education1 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Mas...
Globalcode – open4education2 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Precisa ser diferente!
Globalcode – open4education3 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Razões e problemas
• Difícil manter
• D...
Globalcode – open4education4 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
And the life becomes sad...
Globalcode – open4education5 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Mas...
Globalcode – open4education6 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
O que são testes?
• Forma de garantir q...
Globalcode – open4education7 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
O que são testes?
• Maneira verificável...
Globalcode – open4education8 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Por que testar?
• Saber que algo funcio...
Globalcode – open4education9 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Por que testar?
• Saber que algo termin...
Globalcode – open4education0 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Como testamos hoje?
Globalcode – open4education1 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Ctrl + Shift + B
Globalcode – open4education2 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Ctrl + Shift + B
• Compilar NÃO é testa...
Globalcode – open4education3 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
F5
Globalcode – open4education4 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
F5
• Executar a aplicação demora
• No g...
Globalcode – open4education5 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Monkey
Globalcode – open4education6 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Monkey
• Executar a aplicação demora
• ...
Globalcode – open4education7 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Testers
Globalcode – open4education8 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Testers
• São importantes!
• Executar a...
Globalcode – open4education9 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
O que são testes?
• Maneira verificável...
Globalcode – open4education0 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Por que não testar?
Globalcode – open4education1 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Por que não testar?
• Demora
Globalcode – open4education2 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Por que não testar?
• Eu sou senior!
Globalcode – open4education3 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Por que não testar?
• Estamos sem tempo
Globalcode – open4education4 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Bad news...
Mentir
!
Globalcode – open4education5 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Por que não testar?
• Acredite: você nã...
Globalcode – open4education6 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
É uma cilada Bino!
Globalcode – open4education7 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Vamos aproveitar a vida!
Globalcode – open4education8 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Unit Tests
• Testes unitários
• Pedaço ...
Globalcode – open4education9 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Unit Tests
• Escritos pelo desenvolvedo...
Globalcode – open4education0 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Unit Tests
• Testes de unidade!
– Unida...
Globalcode – open4education1 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Unit Tests
• Executam de forma automati...
Globalcode – open4education2 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Unit Tests
• Provém feedback quase inst...
Globalcode – open4education3 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Unit Tests
• E as desvantagens...
Globalcode – open4education4 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demo
• Nosso primeiro Unit Test
Globalcode – open4education5 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
MSTest
• Framework de Testes da Microso...
Globalcode – open4education6 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
MSTest
• Atributos para criação de test...
Globalcode – open4education7 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demo
• Conhecendo os atributos e método...
Globalcode – open4education8 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Framework e Runner
• O teste é diferent...
Globalcode – open4education9 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Framework e Runner
• Framework é um con...
Globalcode – open4education0 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Framework e Runner
• Runner, ou rodador...
Globalcode – open4education1 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demo
• Diferença entre framework e runn...
Globalcode – open4education2 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Anatomia AAA
• Testes no geral são curt...
Globalcode – open4education3 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Anatomia AAA
• Arrange
– Você prepara o...
Globalcode – open4education4 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Sobre o Arrange
• Em algumas situações ...
Globalcode – open4education5 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Arrange extenso
Globalcode – open4education6 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Anatomia AAA
• Act
– É a execução do SU...
Globalcode – open4education7 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Sobre o Act
• Um teste deve atuar indep...
Globalcode – open4education8 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Anatomia AAA
• Assert
– É a verificação...
Globalcode – open4education9 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Sobre o Assert
• Um teste no geral tem ...
Globalcode – open4education0 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demo
• Conhecendo a anatomia AAA de um ...
Globalcode – open4education1 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
NUnit
• Framework de unit testing
• Por...
Globalcode – open4education2 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
NUnit
• Interfaces fluentes
• Asserções...
Globalcode – open4education3 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demo
• Conhecendo o NUnit
Globalcode – open4education4 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Exceptions
• E quando queremos uma exce...
Globalcode – open4education5 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demos
• Exceptions no MSTest
• Exceptio...
Globalcode – open4education6 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
TDD
• Test Driven Development
Globalcode – open4education7 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Não é (só)sobre testes
Globalcode – open4education8 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
TDD
• Basicamente segue o mantra:
– Red...
Globalcode – open4education9 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
TDD
• Escrever os testes antes do códig...
Globalcode – open4education0 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
TDD
• Por que teste antes?
– O teste é ...
Globalcode – open4education1 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
TDD
Globalcode – open4education2 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
TDD
• Vicia!
Globalcode – open4education3 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demo
• Praticando um pouco de TDD
Globalcode – open4education4 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Stubs e Mocks
• Servem para gerenciarmo...
Globalcode – open4education5 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Stubs
• Substitui de forma controlável ...
Globalcode – open4education6 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demo
• Conhecendo um Stub
Globalcode – open4education7 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Mocks
• É um objeto que reage às intera...
Globalcode – open4education8 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demo
• Conhecendo um Mock
Globalcode – open4education9 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Stubs e Mocks
• Indispensáveis
• Sem el...
Globalcode – open4education0 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Frameworks de Mock
• Frameworks de isol...
Globalcode – open4education1 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Frameworks de isolamento
• Moq
• Rhino ...
Globalcode – open4education2 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Moq
• Fala-se: Mock you!
• API bastante...
Globalcode – open4education3 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demo
• Utilizando Moq com Stubs e Mocks
Globalcode – open4education4 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Links
• http://msdn.microsoft.com/en-us...
Globalcode – open4education5 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Books
• The Art of Unit Testing
• Test ...
Globalcode – open4education6 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Contact: me
• http://viniciusquaiato.co...
Globalcode – open4education7 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
So...
• Thank you!
Upcoming SlideShare
Loading in …5
×

Minicurso Testes em .NET - Globalcode Vinicius Quaiato

2,998 views

Published on

Slides do minicursos de Testes na plataforma .NET ministrado por Vinicius Quaiato na Globalcode em São Paulo.

Published in: Technology, Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,998
On SlideShare
0
From Embeds
0
Number of Embeds
1,172
Actions
Shares
0
Downloads
69
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Minicurso Testes em .NET - Globalcode Vinicius Quaiato

  1. 1. Globalcode – open4educationVinicius Quaiato @vquaiato http://viniciusquaiato.com Testes na plataforma .NET Começando a desenvolver com confiança
  2. 2. Globalcode – open4educationVinicius Quaiato @vquaiato http://viniciusquaiato.com About: Vinicius Quaiato • Arquitetura e desenvolvimento • Apaixonado pelo que faz • Apaixonado por testes • .NET Architects • .NET Magazine • Vegetariano • Pai • Santista • Geek
  3. 3. Globalcode – open4educationVinicius Quaiato @vquaiato http://viniciusquaiato.com Contact: me • http://viniciusquaiato.com • vinicius.quaiato@gmail.com – msn e gtalk • @vquaiato
  4. 4. Globalcode – open4educationVinicius Quaiato @vquaiato http://viniciusquaiato.com Lambda3 • Parceria • http://lambda3.com.br
  5. 5. Globalcode – open4educationVinicius Quaiato @vquaiato http://viniciusquaiato.com Objetivos
  6. 6. Globalcode – open4educationVinicius Quaiato @vquaiato http://viniciusquaiato.com About: you • Nome • Expectativa
  7. 7. Globalcode – open4educationVinicius Quaiato @vquaiato http://viniciusquaiato.com
  8. 8. Globalcode – open4educationVinicius Quaiato @vquaiato http://viniciusquaiato.com Fazer software dói
  9. 9. Globalcode – open4educationVinicius Quaiato @vquaiato http://viniciusquaiato.com Fazer software cansa
  10. 10. Globalcode – open4education0 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Fazer software é difícil
  11. 11. Globalcode – open4education1 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Mas...
  12. 12. Globalcode – open4education2 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Precisa ser diferente!
  13. 13. Globalcode – open4education3 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Razões e problemas • Difícil manter • Difícil evoluir • Bugs persistentes • Correção gera outros bugs • Medo mexer no código • Perda de tempo
  14. 14. Globalcode – open4education4 Vinicius Quaiato @vquaiato http://viniciusquaiato.com And the life becomes sad...
  15. 15. Globalcode – open4education5 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Mas...
  16. 16. Globalcode – open4education6 Vinicius Quaiato @vquaiato http://viniciusquaiato.com O que são testes? • Forma de garantir que o software: – Atende aos propósitos de negócio – Funciona como esperado
  17. 17. Globalcode – open4education7 Vinicius Quaiato @vquaiato http://viniciusquaiato.com O que são testes? • Maneira verificável de garantir que o software atende às necessidades de negócio e que funciona como esperado.
  18. 18. Globalcode – open4education8 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Por que testar? • Saber que algo funciona
  19. 19. Globalcode – open4education9 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Por que testar? • Saber que algo terminou, ficou pronto
  20. 20. Globalcode – open4education0 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Como testamos hoje?
  21. 21. Globalcode – open4education1 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Ctrl + Shift + B
  22. 22. Globalcode – open4education2 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Ctrl + Shift + B • Compilar NÃO é testar! • Apenas significa que o código atende ao compilador, apenas isso!
  23. 23. Globalcode – open4education3 Vinicius Quaiato @vquaiato http://viniciusquaiato.com F5
  24. 24. Globalcode – open4education4 Vinicius Quaiato @vquaiato http://viniciusquaiato.com F5 • Executar a aplicação demora • No geral testa-se apenas o que você pensa que alterou O bater de asas de uma borboleta em Tóquio pode provocar um furacão em Nova Iorque “ ”
  25. 25. Globalcode – open4education5 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Monkey
  26. 26. Globalcode – open4education6 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Monkey • Executar a aplicação demora • É bom para encontrar alguns bugs • Testes não são apenas sobre bugs!
  27. 27. Globalcode – open4education7 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Testers
  28. 28. Globalcode – open4education8 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Testers • São importantes! • Executar a aplicação demora! • Feedback demora! • Bom para encontrar bugs • Código construído sobre bug gera mais bugs!
  29. 29. Globalcode – open4education9 Vinicius Quaiato @vquaiato http://viniciusquaiato.com O que são testes? • Maneira verificável de garantir que o software atende às necessidades de negócio e que funciona como esperado. • Temos isso?
  30. 30. Globalcode – open4education0 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Por que não testar?
  31. 31. Globalcode – open4education1 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Por que não testar? • Demora
  32. 32. Globalcode – open4education2 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Por que não testar? • Eu sou senior!
  33. 33. Globalcode – open4education3 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Por que não testar? • Estamos sem tempo
  34. 34. Globalcode – open4education4 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Bad news... Mentir !
  35. 35. Globalcode – open4education5 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Por que não testar? • Acredite: você não é bom o bastante! • Testar pode consumir algum tempo, mas é necessário! • Deixar de testar não te faz mais rápido, dá apenas uma falsa sensação de velocidade.
  36. 36. Globalcode – open4education6 Vinicius Quaiato @vquaiato http://viniciusquaiato.com É uma cilada Bino!
  37. 37. Globalcode – open4education7 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Vamos aproveitar a vida!
  38. 38. Globalcode – open4education8 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Unit Tests • Testes unitários • Pedaço de código • Executa outro pedaço de código • Verifica se tudo está correto
  39. 39. Globalcode – open4education9 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Unit Tests • Escritos pelo desenvolvedor • Rápidos de excutar • Testam uma única unidade de código
  40. 40. Globalcode – open4education0 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Unit Tests • Testes de unidade! – Unidade é um método ou função, uma operação • SUT – System Under Test • Class • Method • Code
  41. 41. Globalcode – open4education1 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Unit Tests • Executam de forma automatizada • São repetíveis • Qualquer um pode executar • One click execution!
  42. 42. Globalcode – open4education2 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Unit Tests • Provém feedback quase instantâneo • Auxiliam o design da funcionalidade – Escrever testes tem de ser fácil – Está difícil? Refatore! • Ajudam a realizar alterações • Ajudam com regressões – Algo que funcionava e não funciona mais
  43. 43. Globalcode – open4education3 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Unit Tests • E as desvantagens...
  44. 44. Globalcode – open4education4 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Demo • Nosso primeiro Unit Test
  45. 45. Globalcode – open4education5 Vinicius Quaiato @vquaiato http://viniciusquaiato.com MSTest • Framework de Testes da Microsoft • Fornece ferramentas necessárias para Unit Testing • Ferramenta Command Line para executar Unit Tests
  46. 46. Globalcode – open4education6 Vinicius Quaiato @vquaiato http://viniciusquaiato.com MSTest • Atributos para criação de testes – [TestClass] – [TestMethod] • Métodos para asserção dos testes – Assert methods • Rodador de testes integrado com Visual Studio
  47. 47. Globalcode – open4education7 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Demo • Conhecendo os atributos e métodos de Assert
  48. 48. Globalcode – open4education8 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Framework e Runner • O teste é diferente de quem executa o teste
  49. 49. Globalcode – open4education9 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Framework e Runner • Framework é um conjunto de bibliotecas • Contém métodos de assert, atributos, helpers, define estrutura dos testes • MSTest, NUnit, MbUnit, etc.
  50. 50. Globalcode – open4education0 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Framework e Runner • Runner, ou rodador, é quem de fato executa os testes • Um runner pode executar testes de vários frameworks • Pode ser integrado a IDE, ser um command line ou um .exe
  51. 51. Globalcode – open4education1 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Demo • Diferença entre framework e runner
  52. 52. Globalcode – open4education2 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Anatomia AAA • Testes no geral são curtos • Basicamente seguem o padrão AAA • Arrange • Act • Assert
  53. 53. Globalcode – open4education3 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Anatomia AAA • Arrange – Você prepara o ambiente para o teste – Configura variáveis, objetos, monta relações – Prepara tudo que for necessário para que o teste execute
  54. 54. Globalcode – open4education4 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Sobre o Arrange • Em algumas situações o Arrange pode ser reaproveitado – [Setup] – [TestInitialize] – [FixtureSetup] • O Arrange pode ser extenso
  55. 55. Globalcode – open4education5 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Arrange extenso
  56. 56. Globalcode – open4education6 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Anatomia AAA • Act – É a execução do SUT – É a chamada para o método que está sendo testado – É a execução da operação a ser testada
  57. 57. Globalcode – open4education7 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Sobre o Act • Um teste deve atuar independente dos outros • Um Act com muitos métodos é sinal de problema
  58. 58. Globalcode – open4education8 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Anatomia AAA • Assert – É a verificação do resultado – Neste ponto faz-se a análise do resultado do Act com o que era esperado
  59. 59. Globalcode – open4education9 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Sobre o Assert • Um teste no geral tem apenas um Assert • Mais de um Assert no teste mascara erros
  60. 60. Globalcode – open4education0 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Demo • Conhecendo a anatomia AAA de um teste • setup e teardown
  61. 61. Globalcode – open4education1 Vinicius Quaiato @vquaiato http://viniciusquaiato.com NUnit • Framework de unit testing • Portado do JUnit • Hoje é 100% escrito em C# • Um dos frameworks mais utilizados
  62. 62. Globalcode – open4education2 Vinicius Quaiato @vquaiato http://viniciusquaiato.com NUnit • Interfaces fluentes • Asserções mais legíveis • Mais opções de asserções
  63. 63. Globalcode – open4education3 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Demo • Conhecendo o NUnit
  64. 64. Globalcode – open4education4 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Exceptions • E quando queremos uma exception? • Exceptions podem ser regras de negócio • Geralmente uma exception falha o teste • Precisamos deixar claro que queremos isto ou não
  65. 65. Globalcode – open4education5 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Demos • Exceptions no MSTest • Exceptions no NUnit
  66. 66. Globalcode – open4education6 Vinicius Quaiato @vquaiato http://viniciusquaiato.com TDD • Test Driven Development
  67. 67. Globalcode – open4education7 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Não é (só)sobre testes
  68. 68. Globalcode – open4education8 Vinicius Quaiato @vquaiato http://viniciusquaiato.com TDD • Basicamente segue o mantra: – Red, green, refactor • Escreva um teste que falhe • Faça o teste passar • Refatore/melhor o código
  69. 69. Globalcode – open4education9 Vinicius Quaiato @vquaiato http://viniciusquaiato.com TDD • Escrever os testes antes do código de produção • Escrever código que o teste pediu • Resultados: – Testes – Melhor design • Menos acoplamento (acoplamento estável) • Classes e métodos coesos • Clareza no código
  70. 70. Globalcode – open4education0 Vinicius Quaiato @vquaiato http://viniciusquaiato.com TDD • Por que teste antes? – O teste é o primeiro cliente do seu código – Faça como você gostaria que fosse – Ficou difícil? Talvez seja melhor pensar mais
  71. 71. Globalcode – open4education1 Vinicius Quaiato @vquaiato http://viniciusquaiato.com TDD
  72. 72. Globalcode – open4education2 Vinicius Quaiato @vquaiato http://viniciusquaiato.com TDD • Vicia!
  73. 73. Globalcode – open4education3 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Demo • Praticando um pouco de TDD
  74. 74. Globalcode – open4education4 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Stubs e Mocks • Servem para gerenciarmos dependências nos testes • Ambos são objetos fake, “imitam” objetos reais • São muito parecidos, mas têm propósitos distintos
  75. 75. Globalcode – open4education5 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Stubs • Substitui de forma controlável uma dependência externa • Mantém o teste em nossas mãos – Repetível – Rápido – Isolado • Um Stub não fará o teste falhar • Asserts não são feitos contra os Stubs • Fornecem algum estado para o SUT
  76. 76. Globalcode – open4education6 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Demo • Conhecendo um Stub
  77. 77. Globalcode – open4education7 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Mocks • É um objeto que reage às interações com o SUT • Tem poder para falhar o teste • Assert é realizado contra o mock • Um mock por teste – SRP até no teste!
  78. 78. Globalcode – open4education8 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Demo • Conhecendo um Mock
  79. 79. Globalcode – open4education9 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Stubs e Mocks • Indispensáveis • Sem eles testar é doloroso e custoso • Criá-los na mão é doloroso e custoso • Gera muito retrabalho • Gasta-se muito tempo • Testar fica chato!
  80. 80. Globalcode – open4education0 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Frameworks de Mock • Frameworks de isolamento • Criam Mocks e Stubs de forma simples • Não há retrabalho • Lidam com vários tipos de configuração, sem causar dores
  81. 81. Globalcode – open4education1 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Frameworks de isolamento • Moq • Rhino Mocks • TypeMock/Isolator 2010 • JustMock
  82. 82. Globalcode – open4education2 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Moq • Fala-se: Mock you! • API bastante simples • Usa .NET 3.5 – Lambdas e Linq • Cria Stubs e Mocks
  83. 83. Globalcode – open4education3 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Demo • Utilizando Moq com Stubs e Mocks
  84. 84. Globalcode – open4education4 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Links • http://msdn.microsoft.com/en-us/library/ms182489%28VS.80%29.aspx • http://code.google.com/p/moq/ • http://www.nunit.org/ • http://www.ayende.com/projects/rhino-mocks.aspx • http://www.testdriven.net/ • http://martinfowler.com/articles/mocksArentStubs.html • http://vimeo.com/user3553347/videos • http://viniciusquaiato.com/blog/category/tdd/ • http://www.aniche.com.br/
  85. 85. Globalcode – open4education5 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Books • The Art of Unit Testing • Test Driven Development by example • Growing Object-Oriented Software Guided by Tests
  86. 86. Globalcode – open4education6 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Contact: me • http://viniciusquaiato.com • vinicius.quaiato@gmail.com – msn e gtalk • @vquaiato
  87. 87. Globalcode – open4education7 Vinicius Quaiato @vquaiato http://viniciusquaiato.com So... • Thank you!

×