SlideShare a Scribd company logo
1 of 87
Globalcode – open4educationVinicius Quaiato @vquaiato http://viniciusquaiato.com
Testes na plataforma .NET
Começando a desenvolver com confiança
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
Globalcode – open4educationVinicius Quaiato @vquaiato http://viniciusquaiato.com
Contact: me
• http://viniciusquaiato.com
• vinicius.quaiato@gmail.com
– msn e gtalk
• @vquaiato
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
• Difícil evoluir
• Bugs persistentes
• Correção gera outros bugs
• Medo mexer no código
• Perda de tempo
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 que o software:
– Atende aos propósitos de negócio
– Funciona como esperado
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.
Globalcode – open4education8 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Por que testar?
• Saber que algo funciona
Globalcode – open4education9 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Por que testar?
• Saber que algo terminou, ficou pronto
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 é testar!
• Apenas significa que o código atende ao
compilador, apenas isso!
Globalcode – open4education3 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
F5
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
“
”
Globalcode – open4education5 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Monkey
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!
Globalcode – open4education7 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Testers
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!
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?
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ã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.
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 de código
• Executa outro pedaço de código
• Verifica se tudo está correto
Globalcode – open4education9 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Unit Tests
• Escritos pelo desenvolvedor
• Rápidos de excutar
• Testam uma única unidade de código
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
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!
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
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 Microsoft
• Fornece ferramentas necessárias para
Unit Testing
• Ferramenta Command Line para executar
Unit Tests
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
Globalcode – open4education7 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demo
• Conhecendo os atributos e métodos de Assert
Globalcode – open4education8 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Framework e Runner
• O teste é diferente de quem executa o
teste
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.
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
Globalcode – open4education1 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demo
• Diferença entre framework e runner
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
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
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
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 SUT
– É a chamada para o método que está sendo
testado
– É a execução da operação a ser testada
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
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
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
Globalcode – open4education0 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demo
• Conhecendo a anatomia AAA de um teste
• setup e teardown
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
Globalcode – open4education2 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
NUnit
• Interfaces fluentes
• Asserções mais legíveis
• Mais opções de 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 exception?
• Exceptions podem ser regras de negócio
• Geralmente uma exception falha o teste
• Precisamos deixar claro que queremos
isto ou não
Globalcode – open4education5 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demos
• Exceptions no MSTest
• Exceptions no NUnit
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, green, refactor
• Escreva um teste que falhe
• Faça o teste passar
• Refatore/melhor o código
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
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
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 gerenciarmos dependências
nos testes
• Ambos são objetos fake, “imitam” objetos
reais
• São muito parecidos, mas têm propósitos
distintos
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
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ções com
o SUT
• Tem poder para falhar o teste
• Assert é realizado contra o mock
• Um mock por teste
– SRP até no teste!
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 eles testar é doloroso e custoso
• Criá-los na mão é doloroso e custoso
• Gera muito retrabalho
• Gasta-se muito tempo
• Testar fica chato!
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
Globalcode – open4education1 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Frameworks de isolamento
• Moq
• Rhino Mocks
• TypeMock/Isolator 2010
• JustMock
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
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/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/
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
Globalcode – open4education6 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Contact: me
• http://viniciusquaiato.com
• vinicius.quaiato@gmail.com
– msn e gtalk
• @vquaiato
Globalcode – open4education7 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
So...
• Thank you!

More Related Content

What's hot

Importância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsImportância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsSamanta Cicilia
 
TDC 2016 SP - Cobertura de código de procedures T-SQL com SQLCC
TDC 2016 SP - Cobertura de código de procedures T-SQL com SQLCCTDC 2016 SP - Cobertura de código de procedures T-SQL com SQLCC
TDC 2016 SP - Cobertura de código de procedures T-SQL com SQLCCStefan Teixeira
 
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...Samanta Cicilia
 
Alcançando qualidade de software através de entrega contínua
Alcançando qualidade de software através de entrega contínuaAlcançando qualidade de software através de entrega contínua
Alcançando qualidade de software através de entrega contínuaSamanta Cicilia
 
Continuous Delivery - versão estendida :)
Continuous Delivery - versão estendida :)Continuous Delivery - versão estendida :)
Continuous Delivery - versão estendida :)Samanta Cicilia
 
[Agile Brazil] Entrega Contínua na Infoglobo: gerando valor em 2 horas
[Agile Brazil] Entrega Contínua na Infoglobo:  gerando valor em 2 horas[Agile Brazil] Entrega Contínua na Infoglobo:  gerando valor em 2 horas
[Agile Brazil] Entrega Contínua na Infoglobo: gerando valor em 2 horasSamanta Cicilia
 
[Lady talks]Continuous Delivery
[Lady talks]Continuous Delivery[Lady talks]Continuous Delivery
[Lady talks]Continuous DeliverySamanta Cicilia
 
Minas Testing Conference 2016 - Testes de Carga com Locust
Minas Testing Conference 2016 - Testes de Carga com LocustMinas Testing Conference 2016 - Testes de Carga com Locust
Minas Testing Conference 2016 - Testes de Carga com LocustStefan Teixeira
 
TDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps JavaTDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps Javatdc-globalcode
 
TDC 2016 Floripa - Criando APIs REST em minutos com Spark + Java 8
TDC 2016 Floripa - Criando APIs REST em minutos com Spark + Java 8TDC 2016 Floripa - Criando APIs REST em minutos com Spark + Java 8
TDC 2016 Floripa - Criando APIs REST em minutos com Spark + Java 8Stefan Teixeira
 
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a Serviços
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a ServiçosContinuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a Serviços
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a ServiçosSamanta Cicilia
 
[Uff] Continuous Delivery: Entrega Contínua de Software de Valor
[Uff] Continuous Delivery: Entrega Contínua de Software de Valor[Uff] Continuous Delivery: Entrega Contínua de Software de Valor
[Uff] Continuous Delivery: Entrega Contínua de Software de ValorSamanta Cicilia
 
TDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps JavaTDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps Javatdc-globalcode
 
Meetup DevOps Carioca - Testes de Carga com Locust
Meetup DevOps Carioca - Testes de Carga com LocustMeetup DevOps Carioca - Testes de Carga com Locust
Meetup DevOps Carioca - Testes de Carga com LocustStefan Teixeira
 
CNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous DeliveryCNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous DeliverySamanta Cicilia
 
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidade
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidadeTDC 2016 SP - Desmistificando cobertura de código como métrica de qualidade
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidadeStefan Teixeira
 
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...minastestingconference
 
[DevOps Carioca] Continuous Delivery
[DevOps Carioca]  Continuous Delivery[DevOps Carioca]  Continuous Delivery
[DevOps Carioca] Continuous DeliverySamanta Cicilia
 
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvem
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvemMinas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvem
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvemStefan Teixeira
 

What's hot (20)

Importância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsImportância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOps
 
TDC 2016 SP - Cobertura de código de procedures T-SQL com SQLCC
TDC 2016 SP - Cobertura de código de procedures T-SQL com SQLCCTDC 2016 SP - Cobertura de código de procedures T-SQL com SQLCC
TDC 2016 SP - Cobertura de código de procedures T-SQL com SQLCC
 
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
 
Alcançando qualidade de software através de entrega contínua
Alcançando qualidade de software através de entrega contínuaAlcançando qualidade de software através de entrega contínua
Alcançando qualidade de software através de entrega contínua
 
Continuous Delivery - versão estendida :)
Continuous Delivery - versão estendida :)Continuous Delivery - versão estendida :)
Continuous Delivery - versão estendida :)
 
[Agile Brazil] Entrega Contínua na Infoglobo: gerando valor em 2 horas
[Agile Brazil] Entrega Contínua na Infoglobo:  gerando valor em 2 horas[Agile Brazil] Entrega Contínua na Infoglobo:  gerando valor em 2 horas
[Agile Brazil] Entrega Contínua na Infoglobo: gerando valor em 2 horas
 
[Lady talks]Continuous Delivery
[Lady talks]Continuous Delivery[Lady talks]Continuous Delivery
[Lady talks]Continuous Delivery
 
Minas Testing Conference 2016 - Testes de Carga com Locust
Minas Testing Conference 2016 - Testes de Carga com LocustMinas Testing Conference 2016 - Testes de Carga com Locust
Minas Testing Conference 2016 - Testes de Carga com Locust
 
TDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps JavaTDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps Java
 
TDC 2016 Floripa - Criando APIs REST em minutos com Spark + Java 8
TDC 2016 Floripa - Criando APIs REST em minutos com Spark + Java 8TDC 2016 Floripa - Criando APIs REST em minutos com Spark + Java 8
TDC 2016 Floripa - Criando APIs REST em minutos com Spark + Java 8
 
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a Serviços
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a ServiçosContinuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a Serviços
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a Serviços
 
[Uff] Continuous Delivery: Entrega Contínua de Software de Valor
[Uff] Continuous Delivery: Entrega Contínua de Software de Valor[Uff] Continuous Delivery: Entrega Contínua de Software de Valor
[Uff] Continuous Delivery: Entrega Contínua de Software de Valor
 
TDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps JavaTDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps Java
 
Meetup DevOps Carioca - Testes de Carga com Locust
Meetup DevOps Carioca - Testes de Carga com LocustMeetup DevOps Carioca - Testes de Carga com Locust
Meetup DevOps Carioca - Testes de Carga com Locust
 
CNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous DeliveryCNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous Delivery
 
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidade
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidadeTDC 2016 SP - Desmistificando cobertura de código como métrica de qualidade
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidade
 
Vamos falar de DevOps?
Vamos falar de DevOps?Vamos falar de DevOps?
Vamos falar de DevOps?
 
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
 
[DevOps Carioca] Continuous Delivery
[DevOps Carioca]  Continuous Delivery[DevOps Carioca]  Continuous Delivery
[DevOps Carioca] Continuous Delivery
 
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvem
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvemMinas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvem
Minas Testing Conference 2015 - Visual Regression Testing em ambientes na nuvem
 

Viewers also liked

TOTVS LINHA RM - FÓRMULAS - Lógica de construção de fórmulas
TOTVS LINHA RM - FÓRMULAS - Lógica de construção de fórmulasTOTVS LINHA RM - FÓRMULAS - Lógica de construção de fórmulas
TOTVS LINHA RM - FÓRMULAS - Lógica de construção de fórmulasFábio Delboni
 
Construindo Apps Com SignalR
Construindo Apps Com SignalRConstruindo Apps Com SignalR
Construindo Apps Com SignalRIvan Paulovich
 
Fundamentos do asp.net
Fundamentos do asp.netFundamentos do asp.net
Fundamentos do asp.netleojr_0
 
Asp julio battisti - criando sites dinamicos com asp 3.0
Asp   julio battisti - criando sites dinamicos com asp 3.0Asp   julio battisti - criando sites dinamicos com asp 3.0
Asp julio battisti - criando sites dinamicos com asp 3.0leojr_0
 
105 apostila asp net, c# e visual basic.net
105 apostila asp net, c# e visual basic.net105 apostila asp net, c# e visual basic.net
105 apostila asp net, c# e visual basic.netFernando Helen
 
Apostila desenvolvimento aplicações comerciais com C#
Apostila desenvolvimento aplicações comerciais com C#Apostila desenvolvimento aplicações comerciais com C#
Apostila desenvolvimento aplicações comerciais com C#Vinicius Vieira
 
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...Daniel Makiyama
 
C# 6.0 .net coders
C# 6.0   .net codersC# 6.0   .net coders
C# 6.0 .net codersRenato Groff
 
Reconstrução de pterossauros com poliestireno extrudido (24o. cbp)
Reconstrução de pterossauros com poliestireno extrudido (24o. cbp)Reconstrução de pterossauros com poliestireno extrudido (24o. cbp)
Reconstrução de pterossauros com poliestireno extrudido (24o. cbp)Helder da Rocha
 
TOTVS LINHA RM TREINAMENTO SQL
TOTVS LINHA RM TREINAMENTO SQLTOTVS LINHA RM TREINAMENTO SQL
TOTVS LINHA RM TREINAMENTO SQLFábio Delboni
 
C sharp feup10set2001
C sharp feup10set2001C sharp feup10set2001
C sharp feup10set2001leojr_0
 
Visão geral da segurança em Java EE
Visão geral da segurança em Java EEVisão geral da segurança em Java EE
Visão geral da segurança em Java EEHelder da Rocha
 
Curso desenvolvendo web sites (asp)
Curso desenvolvendo web sites (asp)Curso desenvolvendo web sites (asp)
Curso desenvolvendo web sites (asp)Feliz Bunguele
 
Cadastro de clientes em c#
Cadastro de clientes em c#Cadastro de clientes em c#
Cadastro de clientes em c#André Luiz
 
Programação c# - banco de dados
Programação   c# - banco de dadosProgramação   c# - banco de dados
Programação c# - banco de dadosdouglasschaefler
 

Viewers also liked (20)

TOTVS LINHA RM - FÓRMULAS - Lógica de construção de fórmulas
TOTVS LINHA RM - FÓRMULAS - Lógica de construção de fórmulasTOTVS LINHA RM - FÓRMULAS - Lógica de construção de fórmulas
TOTVS LINHA RM - FÓRMULAS - Lógica de construção de fórmulas
 
Construindo Apps Com SignalR
Construindo Apps Com SignalRConstruindo Apps Com SignalR
Construindo Apps Com SignalR
 
Fundamentos do asp.net
Fundamentos do asp.netFundamentos do asp.net
Fundamentos do asp.net
 
Asp julio battisti - criando sites dinamicos com asp 3.0
Asp   julio battisti - criando sites dinamicos com asp 3.0Asp   julio battisti - criando sites dinamicos com asp 3.0
Asp julio battisti - criando sites dinamicos com asp 3.0
 
105 apostila asp net, c# e visual basic.net
105 apostila asp net, c# e visual basic.net105 apostila asp net, c# e visual basic.net
105 apostila asp net, c# e visual basic.net
 
Curso asp - intermediario
Curso   asp - intermediarioCurso   asp - intermediario
Curso asp - intermediario
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Tutorial EJB 3.0 (2009)
Tutorial EJB 3.0 (2009)Tutorial EJB 3.0 (2009)
Tutorial EJB 3.0 (2009)
 
Apostila de C# & Asp.Net
Apostila de C# & Asp.NetApostila de C# & Asp.Net
Apostila de C# & Asp.Net
 
Apostila desenvolvimento aplicações comerciais com C#
Apostila desenvolvimento aplicações comerciais com C#Apostila desenvolvimento aplicações comerciais com C#
Apostila desenvolvimento aplicações comerciais com C#
 
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
 
C# 6.0 .net coders
C# 6.0   .net codersC# 6.0   .net coders
C# 6.0 .net coders
 
Reconstrução de pterossauros com poliestireno extrudido (24o. cbp)
Reconstrução de pterossauros com poliestireno extrudido (24o. cbp)Reconstrução de pterossauros com poliestireno extrudido (24o. cbp)
Reconstrução de pterossauros com poliestireno extrudido (24o. cbp)
 
Curso de xml
Curso de xmlCurso de xml
Curso de xml
 
TOTVS LINHA RM TREINAMENTO SQL
TOTVS LINHA RM TREINAMENTO SQLTOTVS LINHA RM TREINAMENTO SQL
TOTVS LINHA RM TREINAMENTO SQL
 
C sharp feup10set2001
C sharp feup10set2001C sharp feup10set2001
C sharp feup10set2001
 
Visão geral da segurança em Java EE
Visão geral da segurança em Java EEVisão geral da segurança em Java EE
Visão geral da segurança em Java EE
 
Curso desenvolvendo web sites (asp)
Curso desenvolvendo web sites (asp)Curso desenvolvendo web sites (asp)
Curso desenvolvendo web sites (asp)
 
Cadastro de clientes em c#
Cadastro de clientes em c#Cadastro de clientes em c#
Cadastro de clientes em c#
 
Programação c# - banco de dados
Programação   c# - banco de dadosProgramação   c# - banco de dados
Programação c# - banco de dados
 

Similar to Minicurso Testes em .NET - Globalcode Vinicius Quaiato

Curso ASP.NET MVC 3 - Vinicius Quaiato
Curso ASP.NET MVC 3 - Vinicius QuaiatoCurso ASP.NET MVC 3 - Vinicius Quaiato
Curso ASP.NET MVC 3 - Vinicius QuaiatoVinicius Quaiato
 
Gerando aplicações Spring Boot e AngularJS com gerador de código JHipster
Gerando aplicações Spring Boot e AngularJS com gerador de código JHipsterGerando aplicações Spring Boot e AngularJS com gerador de código JHipster
Gerando aplicações Spring Boot e AngularJS com gerador de código JHipsterEdlaine Zamora
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
Implementando uma Device Farm Android
Implementando uma Device Farm AndroidImplementando uma Device Farm Android
Implementando uma Device Farm AndroidThialison Souza
 
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Edlaine Zamora
 
Alcançando Qualidade de Software: Entrega Contínua - Samanta Cicilia
Alcançando Qualidade de Software: Entrega Contínua - Samanta Cicilia Alcançando Qualidade de Software: Entrega Contínua - Samanta Cicilia
Alcançando Qualidade de Software: Entrega Contínua - Samanta Cicilia minastestingconference
 
QConRio 2014 - Tutorial Iniciando Com Continuous Delivery
QConRio 2014 - Tutorial Iniciando Com Continuous DeliveryQConRio 2014 - Tutorial Iniciando Com Continuous Delivery
QConRio 2014 - Tutorial Iniciando Com Continuous DeliveryRodrigo Russo
 
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...tdc-globalcode
 
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...Bruno Tanoue
 
TDC POA 2015 - Já automatizei meu projeto. E agora? - Samuel Lucas
TDC POA 2015 - Já automatizei meu projeto. E agora? - Samuel LucasTDC POA 2015 - Já automatizei meu projeto. E agora? - Samuel Lucas
TDC POA 2015 - Já automatizei meu projeto. E agora? - Samuel LucasSamuel Lucas
 
ArchUnit: testando a arquitetura de sua aplicação Java
ArchUnit: testando a arquitetura de sua aplicação JavaArchUnit: testando a arquitetura de sua aplicação Java
ArchUnit: testando a arquitetura de sua aplicação JavaFabio Domingues
 
TDC Florianópolis 2019. Trilha Java - Arquitetura de Testes
TDC Florianópolis 2019. Trilha Java - Arquitetura de TestesTDC Florianópolis 2019. Trilha Java - Arquitetura de Testes
TDC Florianópolis 2019. Trilha Java - Arquitetura de TestesSandro Giacomozzi
 
Automação de testes em projetos ágeis
Automação de testes em projetos ágeisAutomação de testes em projetos ágeis
Automação de testes em projetos ágeisCristiano Caetano
 
TDC 2014 Floripa - Melhorando sua Estratégia de Testes Automatizados
TDC 2014 Floripa - Melhorando sua Estratégia de Testes AutomatizadosTDC 2014 Floripa - Melhorando sua Estratégia de Testes Automatizados
TDC 2014 Floripa - Melhorando sua Estratégia de Testes AutomatizadosStefan Teixeira
 
Ferramentas e bibliotecas que você deveria estar utilizando - Desenvolvimento...
Ferramentas e bibliotecas que você deveria estar utilizando - Desenvolvimento...Ferramentas e bibliotecas que você deveria estar utilizando - Desenvolvimento...
Ferramentas e bibliotecas que você deveria estar utilizando - Desenvolvimento...Max Claus Nunes
 
Testes para Android de ponta a ponta
Testes para Android de ponta a pontaTestes para Android de ponta a ponta
Testes para Android de ponta a pontaElias Nogueira
 
Projeto de Sistemas - Aula002
Projeto de Sistemas - Aula002Projeto de Sistemas - Aula002
Projeto de Sistemas - Aula002Cláudio Amaral
 

Similar to Minicurso Testes em .NET - Globalcode Vinicius Quaiato (20)

Curso ASP.NET MVC 3 - Vinicius Quaiato
Curso ASP.NET MVC 3 - Vinicius QuaiatoCurso ASP.NET MVC 3 - Vinicius Quaiato
Curso ASP.NET MVC 3 - Vinicius Quaiato
 
TDC 2016 Trilha Testes - Floripa
TDC 2016 Trilha Testes - FloripaTDC 2016 Trilha Testes - Floripa
TDC 2016 Trilha Testes - Floripa
 
Gerando aplicações Spring Boot e AngularJS com gerador de código JHipster
Gerando aplicações Spring Boot e AngularJS com gerador de código JHipsterGerando aplicações Spring Boot e AngularJS com gerador de código JHipster
Gerando aplicações Spring Boot e AngularJS com gerador de código JHipster
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
Implementando uma Device Farm Android
Implementando uma Device Farm AndroidImplementando uma Device Farm Android
Implementando uma Device Farm Android
 
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
 
Alcançando Qualidade de Software: Entrega Contínua - Samanta Cicilia
Alcançando Qualidade de Software: Entrega Contínua - Samanta Cicilia Alcançando Qualidade de Software: Entrega Contínua - Samanta Cicilia
Alcançando Qualidade de Software: Entrega Contínua - Samanta Cicilia
 
QConRio 2014 - Tutorial Iniciando Com Continuous Delivery
QConRio 2014 - Tutorial Iniciando Com Continuous DeliveryQConRio 2014 - Tutorial Iniciando Com Continuous Delivery
QConRio 2014 - Tutorial Iniciando Com Continuous Delivery
 
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
 
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
 
TDC POA 2015 - Já automatizei meu projeto. E agora? - Samuel Lucas
TDC POA 2015 - Já automatizei meu projeto. E agora? - Samuel LucasTDC POA 2015 - Já automatizei meu projeto. E agora? - Samuel Lucas
TDC POA 2015 - Já automatizei meu projeto. E agora? - Samuel Lucas
 
ArchUnit: testando a arquitetura de sua aplicação Java
ArchUnit: testando a arquitetura de sua aplicação JavaArchUnit: testando a arquitetura de sua aplicação Java
ArchUnit: testando a arquitetura de sua aplicação Java
 
TDC Florianópolis 2019. Trilha Java - Arquitetura de Testes
TDC Florianópolis 2019. Trilha Java - Arquitetura de TestesTDC Florianópolis 2019. Trilha Java - Arquitetura de Testes
TDC Florianópolis 2019. Trilha Java - Arquitetura de Testes
 
TDC2008 Integração Contínua
TDC2008 Integração ContínuaTDC2008 Integração Contínua
TDC2008 Integração Contínua
 
Automação de testes em projetos ágeis
Automação de testes em projetos ágeisAutomação de testes em projetos ágeis
Automação de testes em projetos ágeis
 
TDC 2014 Floripa - Melhorando sua Estratégia de Testes Automatizados
TDC 2014 Floripa - Melhorando sua Estratégia de Testes AutomatizadosTDC 2014 Floripa - Melhorando sua Estratégia de Testes Automatizados
TDC 2014 Floripa - Melhorando sua Estratégia de Testes Automatizados
 
Ferramentas e bibliotecas que você deveria estar utilizando - Desenvolvimento...
Ferramentas e bibliotecas que você deveria estar utilizando - Desenvolvimento...Ferramentas e bibliotecas que você deveria estar utilizando - Desenvolvimento...
Ferramentas e bibliotecas que você deveria estar utilizando - Desenvolvimento...
 
Testes para Android de ponta a ponta
Testes para Android de ponta a pontaTestes para Android de ponta a ponta
Testes para Android de ponta a ponta
 
Treinamento neteye-v2-6
Treinamento neteye-v2-6Treinamento neteye-v2-6
Treinamento neteye-v2-6
 
Projeto de Sistemas - Aula002
Projeto de Sistemas - Aula002Projeto de Sistemas - Aula002
Projeto de Sistemas - Aula002
 

More from Vinicius Quaiato

Me interessei por Xamarin, e agora?
Me interessei por Xamarin, e agora?Me interessei por Xamarin, e agora?
Me interessei por Xamarin, e agora?Vinicius Quaiato
 
Throughput, escalabilidade e distribuição global com Cosmos DB
Throughput, escalabilidade e distribuição global com Cosmos DBThroughput, escalabilidade e distribuição global com Cosmos DB
Throughput, escalabilidade e distribuição global com Cosmos DBVinicius Quaiato
 
Meetup Delivering Software - Microsoft Build 2017
Meetup Delivering Software - Microsoft Build 2017Meetup Delivering Software - Microsoft Build 2017
Meetup Delivering Software - Microsoft Build 2017Vinicius Quaiato
 
Microsoft loves open source
Microsoft loves open sourceMicrosoft loves open source
Microsoft loves open sourceVinicius Quaiato
 
Testes de A a Z (em 30 minutos)
Testes de A a Z (em 30 minutos)Testes de A a Z (em 30 minutos)
Testes de A a Z (em 30 minutos)Vinicius Quaiato
 
Soluções escaláveis com Microsoft Orleans e Windows Azure
Soluções escaláveis com Microsoft Orleans e Windows AzureSoluções escaláveis com Microsoft Orleans e Windows Azure
Soluções escaláveis com Microsoft Orleans e Windows AzureVinicius Quaiato
 
Universos Paralelos (saindo da zona de conforto)
Universos Paralelos (saindo da zona de conforto)Universos Paralelos (saindo da zona de conforto)
Universos Paralelos (saindo da zona de conforto)Vinicius Quaiato
 
Arquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius Quaiato
Arquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius QuaiatoArquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius Quaiato
Arquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius QuaiatoVinicius Quaiato
 
Arquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius Quaiato
Arquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius QuaiatoArquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius Quaiato
Arquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius QuaiatoVinicius Quaiato
 
Orientacao a objetos e design patterns - Secomp Londrina
Orientacao a objetos e design patterns - Secomp LondrinaOrientacao a objetos e design patterns - Secomp Londrina
Orientacao a objetos e design patterns - Secomp LondrinaVinicius Quaiato
 
.Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato
.Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato.Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato
.Net e arquiteturas modernas - qconsp 2011 - vinicius quaiatoVinicius Quaiato
 
Patterns para Windows Azure e Cloud Computing
Patterns para Windows Azure e Cloud ComputingPatterns para Windows Azure e Cloud Computing
Patterns para Windows Azure e Cloud ComputingVinicius Quaiato
 
Windows Phone 7 & Windows Azure
Windows Phone 7 & Windows AzureWindows Phone 7 & Windows Azure
Windows Phone 7 & Windows AzureVinicius Quaiato
 
Mono - .NET além do Windows
Mono - .NET além do WindowsMono - .NET além do Windows
Mono - .NET além do WindowsVinicius Quaiato
 
Mono - .NET além do Windows
Mono - .NET além do WindowsMono - .NET além do Windows
Mono - .NET além do WindowsVinicius Quaiato
 

More from Vinicius Quaiato (20)

Me interessei por Xamarin, e agora?
Me interessei por Xamarin, e agora?Me interessei por Xamarin, e agora?
Me interessei por Xamarin, e agora?
 
Throughput, escalabilidade e distribuição global com Cosmos DB
Throughput, escalabilidade e distribuição global com Cosmos DBThroughput, escalabilidade e distribuição global com Cosmos DB
Throughput, escalabilidade e distribuição global com Cosmos DB
 
Introduction to Xamarin
Introduction to XamarinIntroduction to Xamarin
Introduction to Xamarin
 
Meetup Delivering Software - Microsoft Build 2017
Meetup Delivering Software - Microsoft Build 2017Meetup Delivering Software - Microsoft Build 2017
Meetup Delivering Software - Microsoft Build 2017
 
Microsoft loves open source
Microsoft loves open sourceMicrosoft loves open source
Microsoft loves open source
 
Testes de A a Z (em 30 minutos)
Testes de A a Z (em 30 minutos)Testes de A a Z (em 30 minutos)
Testes de A a Z (em 30 minutos)
 
IdentityServer 4
IdentityServer 4IdentityServer 4
IdentityServer 4
 
Azure WebJobs
Azure WebJobsAzure WebJobs
Azure WebJobs
 
Soluções escaláveis com Microsoft Orleans e Windows Azure
Soluções escaláveis com Microsoft Orleans e Windows AzureSoluções escaláveis com Microsoft Orleans e Windows Azure
Soluções escaláveis com Microsoft Orleans e Windows Azure
 
Functional programming
Functional programmingFunctional programming
Functional programming
 
Universos Paralelos (saindo da zona de conforto)
Universos Paralelos (saindo da zona de conforto)Universos Paralelos (saindo da zona de conforto)
Universos Paralelos (saindo da zona de conforto)
 
Arquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius Quaiato
Arquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius QuaiatoArquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius Quaiato
Arquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius Quaiato
 
Arquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius Quaiato
Arquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius QuaiatoArquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius Quaiato
Arquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius Quaiato
 
Orientacao a objetos e design patterns - Secomp Londrina
Orientacao a objetos e design patterns - Secomp LondrinaOrientacao a objetos e design patterns - Secomp Londrina
Orientacao a objetos e design patterns - Secomp Londrina
 
.Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato
.Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato.Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato
.Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato
 
Patterns para Windows Azure e Cloud Computing
Patterns para Windows Azure e Cloud ComputingPatterns para Windows Azure e Cloud Computing
Patterns para Windows Azure e Cloud Computing
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Windows Phone 7 & Windows Azure
Windows Phone 7 & Windows AzureWindows Phone 7 & Windows Azure
Windows Phone 7 & Windows Azure
 
Mono - .NET além do Windows
Mono - .NET além do WindowsMono - .NET além do Windows
Mono - .NET além do Windows
 
Mono - .NET além do Windows
Mono - .NET além do WindowsMono - .NET além do Windows
Mono - .NET além do Windows
 

Minicurso Testes em .NET - Globalcode Vinicius Quaiato

  • 1. Globalcode – open4educationVinicius Quaiato @vquaiato http://viniciusquaiato.com Testes na plataforma .NET Começando a desenvolver com confiança
  • 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. Globalcode – open4educationVinicius Quaiato @vquaiato http://viniciusquaiato.com Contact: me • http://viniciusquaiato.com • vinicius.quaiato@gmail.com – msn e gtalk • @vquaiato
  • 4. Globalcode – open4educationVinicius Quaiato @vquaiato http://viniciusquaiato.com Lambda3 • Parceria • http://lambda3.com.br
  • 5. Globalcode – open4educationVinicius Quaiato @vquaiato http://viniciusquaiato.com Objetivos
  • 6. Globalcode – open4educationVinicius Quaiato @vquaiato http://viniciusquaiato.com About: you • Nome • Expectativa
  • 7. Globalcode – open4educationVinicius Quaiato @vquaiato http://viniciusquaiato.com
  • 8. Globalcode – open4educationVinicius Quaiato @vquaiato http://viniciusquaiato.com Fazer software dói
  • 9. Globalcode – open4educationVinicius Quaiato @vquaiato http://viniciusquaiato.com Fazer software cansa
  • 10. Globalcode – open4education0 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Fazer software é difícil
  • 11. Globalcode – open4education1 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Mas...
  • 12. Globalcode – open4education2 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Precisa ser diferente!
  • 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. Globalcode – open4education4 Vinicius Quaiato @vquaiato http://viniciusquaiato.com And the life becomes sad...
  • 15. Globalcode – open4education5 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Mas...
  • 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. 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. Globalcode – open4education8 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Por que testar? • Saber que algo funciona
  • 19. Globalcode – open4education9 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Por que testar? • Saber que algo terminou, ficou pronto
  • 20. Globalcode – open4education0 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Como testamos hoje?
  • 21. Globalcode – open4education1 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Ctrl + Shift + B
  • 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. Globalcode – open4education3 Vinicius Quaiato @vquaiato http://viniciusquaiato.com F5
  • 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. Globalcode – open4education5 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Monkey
  • 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. Globalcode – open4education7 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Testers
  • 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. 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. Globalcode – open4education0 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Por que não testar?
  • 31. Globalcode – open4education1 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Por que não testar? • Demora
  • 32. Globalcode – open4education2 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Por que não testar? • Eu sou senior!
  • 33. Globalcode – open4education3 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Por que não testar? • Estamos sem tempo
  • 34. Globalcode – open4education4 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Bad news... Mentir !
  • 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. Globalcode – open4education6 Vinicius Quaiato @vquaiato http://viniciusquaiato.com É uma cilada Bino!
  • 37. Globalcode – open4education7 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Vamos aproveitar a vida!
  • 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. 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. 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. 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. 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. Globalcode – open4education3 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Unit Tests • E as desvantagens...
  • 44. Globalcode – open4education4 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Demo • Nosso primeiro Unit Test
  • 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. 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. Globalcode – open4education7 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Demo • Conhecendo os atributos e métodos de Assert
  • 48. Globalcode – open4education8 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Framework e Runner • O teste é diferente de quem executa o teste
  • 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. 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. Globalcode – open4education1 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Demo • Diferença entre framework e runner
  • 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. 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. 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. Globalcode – open4education5 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Arrange extenso
  • 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. 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. 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. 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. Globalcode – open4education0 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Demo • Conhecendo a anatomia AAA de um teste • setup e teardown
  • 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. Globalcode – open4education2 Vinicius Quaiato @vquaiato http://viniciusquaiato.com NUnit • Interfaces fluentes • Asserções mais legíveis • Mais opções de asserções
  • 63. Globalcode – open4education3 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Demo • Conhecendo o NUnit
  • 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. Globalcode – open4education5 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Demos • Exceptions no MSTest • Exceptions no NUnit
  • 66. Globalcode – open4education6 Vinicius Quaiato @vquaiato http://viniciusquaiato.com TDD • Test Driven Development
  • 67. Globalcode – open4education7 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Não é (só)sobre testes
  • 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. 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. 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. Globalcode – open4education1 Vinicius Quaiato @vquaiato http://viniciusquaiato.com TDD
  • 72. Globalcode – open4education2 Vinicius Quaiato @vquaiato http://viniciusquaiato.com TDD • Vicia!
  • 73. Globalcode – open4education3 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Demo • Praticando um pouco de TDD
  • 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. 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. Globalcode – open4education6 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Demo • Conhecendo um Stub
  • 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. Globalcode – open4education8 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Demo • Conhecendo um Mock
  • 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. 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. Globalcode – open4education1 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Frameworks de isolamento • Moq • Rhino Mocks • TypeMock/Isolator 2010 • JustMock
  • 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. Globalcode – open4education3 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Demo • Utilizando Moq com Stubs e Mocks
  • 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. 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. Globalcode – open4education6 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Contact: me • http://viniciusquaiato.com • vinicius.quaiato@gmail.com – msn e gtalk • @vquaiato
  • 87. Globalcode – open4education7 Vinicius Quaiato @vquaiato http://viniciusquaiato.com So... • Thank you!