minicurso testes em .net - globalcode vinicius quaiato
DESCRIPTION
Slides do minicursos de Testes na plataforma .NET ministrado por Vinicius Quaiato na Globalcode em São Paulo.TRANSCRIPT
![Page 1: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/1.jpg)
Globalcode – open4education1 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Testes na plataforma .NET
Começando a desenvolver com confiança
![Page 2: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/2.jpg)
Globalcode – open4education2 Vinicius 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
![Page 3: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/3.jpg)
Globalcode – open4education3 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Contact: me
• http://viniciusquaiato.com
• [email protected]– msn e gtalk
• @vquaiato
![Page 4: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/4.jpg)
Globalcode – open4education4 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Lambda3
• Parceria
• http://lambda3.com.br
![Page 5: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/5.jpg)
Globalcode – open4education5 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Objetivos
![Page 6: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/6.jpg)
Globalcode – open4education6 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
About: you
• Nome
• Expectativa
![Page 7: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/7.jpg)
Globalcode – open4education7 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
![Page 8: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/8.jpg)
Globalcode – open4education8 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Fazer software dói
![Page 9: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/9.jpg)
Globalcode – open4education9 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Fazer software cansa
![Page 10: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/10.jpg)
Globalcode – open4education10 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Fazer software é difícil
![Page 11: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/11.jpg)
Globalcode – open4education11 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Mas...
![Page 12: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/12.jpg)
Globalcode – open4education12 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Precisa ser diferente!
![Page 13: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/13.jpg)
Globalcode – open4education13 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
![Page 14: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/14.jpg)
Globalcode – open4education14 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
And the life becomes sad...
![Page 15: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/15.jpg)
Globalcode – open4education15 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Mas...
![Page 16: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/16.jpg)
Globalcode – open4education16 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
![Page 17: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/17.jpg)
Globalcode – open4education17 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.
![Page 18: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/18.jpg)
Globalcode – open4education18 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Por que testar?
• Saber que algo funciona
![Page 19: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/19.jpg)
Globalcode – open4education19 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Por que testar?
• Saber que algo terminou, ficou pronto
![Page 20: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/20.jpg)
Globalcode – open4education20 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Como testamos hoje??
![Page 21: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/21.jpg)
Globalcode – open4education21 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Ctrl + Shift + B
![Page 22: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/22.jpg)
Globalcode – open4education22 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Ctrl + Shift + B
• Compilar NÃO é testar!
• Apenas significa que o código atende ao compilador, apenas isso!
![Page 23: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/23.jpg)
Globalcode – open4education23 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
F5
![Page 24: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/24.jpg)
Globalcode – open4education24 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
“ ”
![Page 25: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/25.jpg)
Globalcode – open4education25 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Monkey
![Page 26: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/26.jpg)
Globalcode – open4education26 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!
![Page 27: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/27.jpg)
Globalcode – open4education27 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Testers
![Page 28: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/28.jpg)
Globalcode – open4education28 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!
![Page 29: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/29.jpg)
Globalcode – open4education29 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?
![Page 30: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/30.jpg)
Globalcode – open4education30 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Por que não testar?
?
![Page 31: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/31.jpg)
Globalcode – open4education31 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Por que não testar?
• Demora
![Page 32: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/32.jpg)
Globalcode – open4education32 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Por que não testar?
• Eu sou senior!
![Page 33: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/33.jpg)
Globalcode – open4education33 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Por que não testar?
• Estamos sem tempo
![Page 34: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/34.jpg)
Globalcode – open4education34 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Bad news...
Mentira!
![Page 35: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/35.jpg)
Globalcode – open4education35 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.
![Page 36: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/36.jpg)
Globalcode – open4education36 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
É uma cilada Bino!
![Page 37: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/37.jpg)
Globalcode – open4education37 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Vamos aproveitar a vida!
![Page 38: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/38.jpg)
Globalcode – open4education38 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
![Page 39: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/39.jpg)
Globalcode – open4education39 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Unit Tests
• Escritos pelo desenvolvedor
• Rápidos de excutar
• Testam uma única unidade de código
![Page 40: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/40.jpg)
Globalcode – open4education40 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
![Page 41: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/41.jpg)
Globalcode – open4education41 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Unit Tests
• Executam de forma automatizada
• São repetíveis
• Qualquer um pode executar
• One click execution!
![Page 42: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/42.jpg)
Globalcode – open4education42 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
![Page 43: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/43.jpg)
Globalcode – open4education43 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Unit Tests
• E as desvantagens...
![Page 44: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/44.jpg)
Globalcode – open4education44 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demo
• Nosso primeiro Unit Test
![Page 45: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/45.jpg)
Globalcode – open4education45 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
![Page 46: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/46.jpg)
Globalcode – open4education46 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
![Page 47: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/47.jpg)
Globalcode – open4education47 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demo
• Conhecendo os atributos e métodos de Assert
![Page 48: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/48.jpg)
Globalcode – open4education48 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Framework e Runner
• O teste é diferente de quem executa o teste
![Page 49: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/49.jpg)
Globalcode – open4education49 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.
![Page 50: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/50.jpg)
Globalcode – open4education50 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
![Page 51: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/51.jpg)
Globalcode – open4education51 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demo
• Diferença entre framework e runner
![Page 52: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/52.jpg)
Globalcode – open4education52 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Anatomia AAA
• Testes no geral são curtos
• Basicamente seguem o padrão AAA
• Arrange
• Act
• Assert
![Page 53: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/53.jpg)
Globalcode – open4education53 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
![Page 54: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/54.jpg)
Globalcode – open4education54 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
![Page 55: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/55.jpg)
Globalcode – open4education55 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Arrange extenso
![Page 56: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/56.jpg)
Globalcode – open4education56 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
![Page 57: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/57.jpg)
Globalcode – open4education57 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
![Page 58: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/58.jpg)
Globalcode – open4education58 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
![Page 59: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/59.jpg)
Globalcode – open4education59 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
![Page 60: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/60.jpg)
Globalcode – open4education60 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demo
• Conhecendo a anatomia AAA de um teste
• setup e teardown
![Page 61: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/61.jpg)
Globalcode – open4education61 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
NUnit
• Framework de unit testing
• Portado do JUnit
• Hoje é 100% escrito em C#
• Um dos frameworks mais utilizados
![Page 62: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/62.jpg)
Globalcode – open4education62 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
NUnit
• Interfaces fluentes
• Asserções mais legíveis
• Mais opções de asserções
![Page 63: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/63.jpg)
Globalcode – open4education63 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demo
• Conhecendo o NUnit
![Page 64: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/64.jpg)
Globalcode – open4education64 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
![Page 65: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/65.jpg)
Globalcode – open4education65 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demos
• Exceptions no MSTest
• Exceptions no NUnit
![Page 66: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/66.jpg)
Globalcode – open4education66 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
TDD
• Test Driven Development
![Page 67: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/67.jpg)
Globalcode – open4education67 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Não é (só)sobre testes
![Page 68: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/68.jpg)
Globalcode – open4education68 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
![Page 69: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/69.jpg)
Globalcode – open4education69 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
![Page 70: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/70.jpg)
Globalcode – open4education70 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
![Page 71: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/71.jpg)
Globalcode – open4education71 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
TDD
![Page 72: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/72.jpg)
Globalcode – open4education72 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
TDD
• Vicia!
![Page 73: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/73.jpg)
Globalcode – open4education73 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demo
• Praticando um pouco de TDD
![Page 74: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/74.jpg)
Globalcode – open4education74 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
![Page 75: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/75.jpg)
Globalcode – open4education75 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
![Page 76: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/76.jpg)
Globalcode – open4education76 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demo
• Conhecendo um Stub
![Page 77: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/77.jpg)
Globalcode – open4education77 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!
![Page 78: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/78.jpg)
Globalcode – open4education78 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demo
• Conhecendo um Mock
![Page 79: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/79.jpg)
Globalcode – open4education79 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!
![Page 80: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/80.jpg)
Globalcode – open4education80 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
![Page 81: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/81.jpg)
Globalcode – open4education81 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Frameworks de isolamento
• Moq
• Rhino Mocks
• TypeMock/Isolator 2010
• JustMock
![Page 82: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/82.jpg)
Globalcode – open4education82 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
![Page 83: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/83.jpg)
Globalcode – open4education83 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demo
• Utilizando Moq com Stubs e Mocks
![Page 84: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/84.jpg)
Globalcode – open4education84 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/
![Page 85: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/85.jpg)
Globalcode – open4education85 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Books
• The Art of Unit Testing
• Test Driven Development by example
• Growing Object-Oriented Software Guided by Tests
![Page 86: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/86.jpg)
Globalcode – open4education86 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Contact: me
• http://viniciusquaiato.com
• [email protected]– msn e gtalk
• @vquaiato
![Page 87: Minicurso Testes em .NET - Globalcode Vinicius Quaiato](https://reader033.vdocuments.pub/reader033/viewer/2022060111/5564b169d8b42a98268b4ef1/html5/thumbnails/87.jpg)
Globalcode – open4education87 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
So...
• Thank you!