O documento apresenta uma palestra sobre testes na plataforma .NET. Aborda os conceitos de testes de unidade, as vantagens de se testar o código, frameworks como MSTest e NUnit, e a metodologia de desenvolvimento guiada por testes (TDD).
Da Integração Contínua à Entrega Contínua apenas com ferramentas open-sourceRaphael Paiva
Apresentado no Scrum Gathering Rio 2015.
Nesta apresentação falo sobre os princípios de Continuous Delivery e como implementar um release pipeline apenas com ferramentas gratuitas e de código aberto, como Docker, Fabric e Jenkins.
Entregar software que atenda as objetivos do negócio, em pouco tempo e com um alto padrão de qualidade ainda é um desafio para muitas empresas já que processos de desenvolvimento são muitas vezes burocráticos Nessa palestra vamos mostrar como estamos implementando Entrega Contínua na Infoglobo. Serão abordados os seguintes temas:Introdução à Entrega Contínua de software - Pipeline de Entrega - Estágio de Commit - Deploys nos ambientes de teste - Smoke Tests -Testes de Performance Automatizados - Análise de Log - Promoção dos pacotes para cada ambiente - Testes Regressivos (Automatizados/Manuais) - Deploy em Produção - Desafios Culturais -Próximos Passos
Da Integração Contínua à Entrega Contínua apenas com ferramentas open-sourceRaphael Paiva
Apresentado no Scrum Gathering Rio 2015.
Nesta apresentação falo sobre os princípios de Continuous Delivery e como implementar um release pipeline apenas com ferramentas gratuitas e de código aberto, como Docker, Fabric e Jenkins.
Entregar software que atenda as objetivos do negócio, em pouco tempo e com um alto padrão de qualidade ainda é um desafio para muitas empresas já que processos de desenvolvimento são muitas vezes burocráticos Nessa palestra vamos mostrar como estamos implementando Entrega Contínua na Infoglobo. Serão abordados os seguintes temas:Introdução à Entrega Contínua de software - Pipeline de Entrega - Estágio de Commit - Deploys nos ambientes de teste - Smoke Tests -Testes de Performance Automatizados - Análise de Log - Promoção dos pacotes para cada ambiente - Testes Regressivos (Automatizados/Manuais) - Deploy em Produção - Desafios Culturais -Próximos Passos
Importância de Testes Automatizados para Continuous Delivery & DevOpsSamanta Cicilia
O mercado tem exigido cada vez mais rapidez nas entregas dos times de desenvolvimento, para atender as demandas de negócio e manter a competitividade. Para garantir que essas entregas aconteçam no tempo esperado e com qualidade, é muito importante investir em todos os níveis de teste automatizados. Vamos ver quais são esses níveis de teste e alguns exemplos práticos usando Python de testes unitários, integração, funcionais, performance e mutação.
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...Samanta Cicilia
O mercado tem exigido cada vez mais rapidez nas entregas dos times de desenvolvimento, para atender as demandas de negócio e manter a competitividade. Para garantir que essas entregas aconteçam no tempo esperado e com qualidade, é muito importante investir em todos os níveis de teste automatizados. Vamos ver quais são esses níveis de teste e alguns exemplos práticos usando Python de testes unitários, integração, funcionais, performance e mutação.
Alcançando qualidade de software através de entrega contínuaSamanta Cicilia
Entregar software que atenda as objetivos do negócio, em pouco tempo e com um alto padrão de qualidade ainda é um desafio para muitas empresas. Processos de desenvolvimento são muitas vezes burocráticos. O desenvolvimento ágil veio para nos mostrar que a forma que pensávamos em software podia ser melhorada. A Entrega Contínua veio para potencializar a entrega desde a primeira linha de código até produção. Nessa palestra vamos mostrar como estamos implementando Entrega Contínua na Infoglobo. Serão abordados os seguintes temas: Introdução à Entrega Contínua de software - Pipeline de Entrega - Estágio de Commit - Deploys nos ambientes de teste - Smoke Tests -Testes de Performance Automatizados - Análise de Log - Promoção dos pacotes para cada ambiente - Testes Regressivos (Automatizados/Manuais) - Deploy em Produção - Desafios Culturais -Próximos Passos
- Antipadrões de Entrega de Software;
- Princípios de Continuous Delivery
- Gerência de Configuração
- Integração Contínua
- Estratégias de Teste
- Pipeline de Implantação
- Case da Infoglobo
- Gerência de Dados
- Estratégias de Implantação
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a ServiçosSamanta Cicilia
Nessa apresentação você irá conhecer os desafios, os benefícios e as lições aprendidas pela Infoglobo durante a implantação de Continuous Delivery no ciclo de desenvolvimento de integrações entre aplicações através de um Barramento Corporativo de Serviços.
Importância de Testes Automatizados para Continuous Delivery & DevOpsSamanta Cicilia
O mercado tem exigido cada vez mais rapidez nas entregas dos times de desenvolvimento, para atender as demandas de negócio e manter a competitividade. Para garantir que essas entregas aconteçam no tempo esperado e com qualidade, é muito importante investir em todos os níveis de teste automatizados. Vamos ver quais são esses níveis de teste e alguns exemplos práticos usando Python de testes unitários, integração, funcionais, performance e mutação.
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...Samanta Cicilia
O mercado tem exigido cada vez mais rapidez nas entregas dos times de desenvolvimento, para atender as demandas de negócio e manter a competitividade. Para garantir que essas entregas aconteçam no tempo esperado e com qualidade, é muito importante investir em todos os níveis de teste automatizados. Vamos ver quais são esses níveis de teste e alguns exemplos práticos usando Python de testes unitários, integração, funcionais, performance e mutação.
Alcançando qualidade de software através de entrega contínuaSamanta Cicilia
Entregar software que atenda as objetivos do negócio, em pouco tempo e com um alto padrão de qualidade ainda é um desafio para muitas empresas. Processos de desenvolvimento são muitas vezes burocráticos. O desenvolvimento ágil veio para nos mostrar que a forma que pensávamos em software podia ser melhorada. A Entrega Contínua veio para potencializar a entrega desde a primeira linha de código até produção. Nessa palestra vamos mostrar como estamos implementando Entrega Contínua na Infoglobo. Serão abordados os seguintes temas: Introdução à Entrega Contínua de software - Pipeline de Entrega - Estágio de Commit - Deploys nos ambientes de teste - Smoke Tests -Testes de Performance Automatizados - Análise de Log - Promoção dos pacotes para cada ambiente - Testes Regressivos (Automatizados/Manuais) - Deploy em Produção - Desafios Culturais -Próximos Passos
- Antipadrões de Entrega de Software;
- Princípios de Continuous Delivery
- Gerência de Configuração
- Integração Contínua
- Estratégias de Teste
- Pipeline de Implantação
- Case da Infoglobo
- Gerência de Dados
- Estratégias de Implantação
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a ServiçosSamanta Cicilia
Nessa apresentação você irá conhecer os desafios, os benefícios e as lições aprendidas pela Infoglobo durante a implantação de Continuous Delivery no ciclo de desenvolvimento de integrações entre aplicações através de um Barramento Corporativo de Serviços.
Apostila desenvolvimento aplicações comerciais com C#Vinicius Vieira
Para mais artigos acesse: http://helpdev.com.br/
Essa é uma apostila que montei para a ministração de um curso, tentei escrever de uma forma simples os principais conceitos envolvidos no desenvolvimento de aplicações com .net framework e Microsoft C#, passando desde tópico mais básicos até de forma introdutória alguns recursos mais avançados. Também é comentado sobre o paradigma da orientação a objetos e os principais recursos da IDE Microsoft Visual Studio 2010.
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...Daniel Makiyama
Slides de curso de Férias ministrado na FEI em 07/2014. 20 horas de pura introdução ao mundo do entity framework code first e Asp.Net MVC 5 com o Visual Studio Express 2013
Palestra sobre C# 6.0 e o Visual Studio 2015 realizada em 21/02/2015.
Tópicos apresentados:
- Visual Studio 2015 e C# 6.0
- Using Static
- O operador nameof
- Um novo tipo de atalho no VS 2015
- Auto-Property Initializers
- Inicialização de propriedades somente leitura a partir de um construtor
- Expression-bodied Members
- Debug de expressões lambda
- Inicialização de instâncias do tipo Dictionary
- Exception Filters
- A nova versão do utilitário NuGet
- Implementação de construtores sem parâmetros em structs
- String Interpolation
- Chamadas assíncronas em blocos catch e finally
- Null-conditional operator
- Null-conditional operator e delegates
Slides do minicurso de ASP.NET MVC 3 ministrado por Vinicius Quaiato na GlobalCode.
O ninicurso mostra as novidades do ASP.NET MVC: Razor, WebHelpers, IDependencyResolver, dynamic ViewModel, Global Filters, Output cache, etc.
Gerando aplicações Spring Boot e AngularJS com gerador de código JHipsterEdlaine Zamora
Palestra apresentada no TDC Florianópolis 2017.
Fazer o startup de aplicações Web com Java Stack tem custado muitas horas de engenheiros experientes. Quem nunca sofreu ou gastou muito tempo com configurações de frameworks, bibliotecas, gerenciador de dependências, entre outros ao criar um projeto Java web? Aprenda a gerar toda sua arquitetura com JHipster com apenas alguns comandos e economizar seu tempo.
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Edlaine Zamora
Palestra apresentada no TDC Florianópolis de 2017.
Não perca cliente por causa da lentidão ou da instabilidade de sua aplicação. Aprenda a analisar tempo de resposta, identificar melhorias de segurança e descobrir a capacidade de seu software. Não deixe que um eventual pico de usuários simultâneos acabe com a reputação de seu software.
Alcançando Qualidade de Software: Entrega Contínua - Samanta Cicilia minastestingconference
Entregar software que atenda as objetivos do negócio, em pouco tempo e com um alto padrão de qualidade ainda é um desafio para muitas empresas já que processos de desenvolvimento são muitas vezes burocráticos Nessa palestra vamos mostrar como estamos implementando Entrega Contínua na Infoglobo. Serão abordados os seguintes temas:Introdução à Entrega Contínua de software - Pipeline de Entrega - Estágio de Commit - Deploys nos ambientes de teste - Smoke Tests -Testes de Performance Automatizados - Análise de Log - Promoção dos pacotes para cada ambiente - Testes Regressivos (Automatizados/Manuais) - Deploy em Produção - Desafios Culturais -Próximos Passos
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...Bruno Tanoue
O profissional de QA certamente é necessário dentro de uma empresa. Mas em muitos casos, infelizmente, existem empresas que não aderem a cultura deste profissional. Isto se torna um grande desafio para as equipes de desenvolvimento, aumentar a qualidade de seus códigos. Esta apresentação visa dar dicas aprendidas com erros desta tentativa de tentar melhorar a qualidade de código e o tempo de execução de testes para um feedback rápido.
TDC POA 2015 - Já automatizei meu projeto. E agora? - Samuel LucasSamuel Lucas
Conhecemos as técnicas, linguagens, ferramentas... diversos recursos para automatizar o nosso projeto. Mas, e quando concluímos a automação de nosso projeto, o que fazemos? Vamos falar um pouco sobre as ações que podem ser tomadas após e durante a automação de testes dentro de um projeto de testes, abordando boas práticas e focando na entrega de valor para o produto e para o cliente.
TDC Florianópolis 2019. Trilha Java - Arquitetura de TestesSandro Giacomozzi
Aprenda a montar uma arquitetura de testes para facilitar a vida dos desenvolvedores da sua equipe. Monte uma biblioteca de testes utilizando Junit, mockito, assertj, rest-assured e testContainers. Teste suas APIs rest de forma fácil e rápida. Aplique plugins de cobertura e mutação.
Esta palestra, ministrada no The Developers Conference 2015 edição Porto Alegre em 25 de setembro de 2015, visa apresentar os diferentes níveis de teste dentro de uma app Android onde há exemplos de testes unitários locais e instrumentados, teste de serviços e teste na interface gráfica.
Nesta apresentação explico os conceitos base do ecossistema Xamarin: Xamarin.iOS, Xamarin.Android, Xamarin.Forms, Xamarin.UITest, Xamarin Test Cloud, HockeyApp, Mobile Center
Throughput, escalabilidade e distribuição global com Cosmos DBVinicius Quaiato
Nesta apresentação faço uma introdução ao Cosmos DB, explicando features como Throughput, Disponibilidade, Escalabilidade, Modelos de Consistência, Multi-Modelo, etc.
Nesta palestra (slides feitos pela Xamarin) apresento a plataforma de desenvolvimento Xamarin de ponta a ponta: Dev, Tests, Build/Release. Desde Xamarin Tradicional, passando por Xamarin Forms, Test Cloud, HockeyApp/Mobile Center.
Meetup Delivering Software - Microsoft Build 2017Vinicius Quaiato
Spotlights do MS Build 2017 sobre Xamarin e Visual Studio for Mac. Nesta apresentação falo sobre os novos recursos da IDE (VS for Mac), Xamarin Live Player, Provisioning, Xamarin Forms. ASP.NET CORE
Nesta palestra falo um pouco sobre o alinhamento Open Source da Microsoft. Explico por que não faz nenhuma sentido usar o termo "Micro$oft" de forma pejorativa. Apresento as contas da Microsoft no github, Bash no Windows e muito mais!
Meetup Delivering Software
Nesta palestra Vinicius Quaiato e Wennder Wantos falam sobre os motivos pelos quais desenvolvedores costumam não testar suas aplicações, os motivos pelos quais deveriam testar, e mostram os principais tipos de testes (Unit Test, Integration Test, Acceptance Test) no mundo real.
Slides da palestra no Meetup Brasil.NET. Explico alguns cenários onde o uso de um servidor de autenticação/autorização OAuth2 e OpenID Connect são necessários e como o IdentityServer4 resolve esta necessidade.
Soluções escaláveis com Microsoft Orleans e Windows AzureVinicius Quaiato
Nesta palestra apresentamos técnicas para a resolução de gargalos em aplicações distirbuídas com o uso de Actor Models com Microsoft Orleans e Microsoft Azure
A short lunch talk (not intended to be a lecture) about Functional Programming, aiming to demystify its concepts and help others to experiment and enjoy the functional paradigm.
Arquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius QuaiatoVinicius Quaiato
Palestra explicando a o que é e a importância da arquitetura de software. Mostrando além disso as características, habilidades e skills do arquiteto de software e os motivos das brigas entre arquiteto x desenvolvedores.
Arquitetura de Software e o Arquiteto - Secomp Londrina - Vinicius QuaiatoVinicius Quaiato
Palestra explicando a o que é e a importância da arquitetura de software. Mostrando além disso as características, habilidades e skills do arquiteto de software e os motivos das brigas entre arquiteto x desenvolvedores.
Orientacao a objetos e design patterns - Secomp LondrinaVinicius Quaiato
Palestra sobre Orientação a Objetos e Design Patterns apresentada na VIII Secompa Londrina por Vinicius Quaiato.
Nesta palestra explico oa conceitos e idéias da orientação a objetos e como de fato tirar proveito dele entendendo e conhecendo Design Patterns.
Palestra mostrando novidades da plataforma .NET/Microsoft que possibilitam a criação de arquiteturas modernas resolvendo problemas antigos e frequentes. Panorama sobre a utilização de Cloud Computing, computação paralela, computação assíncrona, mobilidade, nosql e muito mais.
Palestra explicando o que é Cloud Computing e motivações para utilização de cloud. Além disso são mostrados alguns patterns como map/reduce e queue polling no Windows Azure.
Slides da palestra sobre testes e TDD de Vinicius Quaiato para o MSTechDay de São Paulo, 2011.
Esta palestra mostra os motivos pelos quais deveríamos escrever testes de unidade e automatizados e o por que deveríamos nos preocupar com isso.
Apresentação de Vinicius Quaiato no TDC2011 mostrando como criar aplicações Windows Phone 7 utilizando o Windows Azure para processamento e serviços.
Esta apresentação mostra os motivos pelos quais devemos considerar ser
Palestra de Vinicius Quaiato no Openweek da UNIFEI apresentando o Projeto Mono e mostrando como criar aplicações com a implementação aberta das especificações ECMA 334 e ECMA 335: o Mono.
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...Faga1939
Este artigo tem por objetivo apresentar como ocorreu a evolução do consumo e da produção de energia desde a pré-história até os tempos atuais, bem como propor o futuro da energia requerido para o mundo. Da pré-história até o século XVIII predominou o uso de fontes renováveis de energia como a madeira, o vento e a energia hidráulica. Do século XVIII até a era contemporânea, os combustíveis fósseis predominaram com o carvão e o petróleo, mas seu uso chegará ao fim provavelmente a partir do século XXI para evitar a mudança climática catastrófica global resultante de sua utilização ao emitir gases do efeito estufa responsáveis pelo aquecimento global. Com o fim da era dos combustíveis fósseis virá a era das fontes renováveis de energia quando prevalecerá a utilização da energia hidrelétrica, energia solar, energia eólica, energia das marés, energia das ondas, energia geotérmica, energia da biomassa e energia do hidrogênio. Não existem dúvidas de que as atividades humanas sobre a Terra provocam alterações no meio ambiente em que vivemos. Muitos destes impactos ambientais são provenientes da geração, manuseio e uso da energia com o uso de combustíveis fósseis. A principal razão para a existência desses impactos ambientais reside no fato de que o consumo mundial de energia primária proveniente de fontes não renováveis (petróleo, carvão, gás natural e nuclear) corresponde a aproximadamente 88% do total, cabendo apenas 12% às fontes renováveis. Independentemente das várias soluções que venham a ser adotadas para eliminar ou mitigar as causas do efeito estufa, a mais importante ação é, sem dúvidas, a adoção de medidas que contribuam para a eliminação ou redução do consumo de combustíveis fósseis na produção de energia, bem como para seu uso mais eficiente nos transportes, na indústria, na agropecuária e nas cidades (residências e comércio), haja vista que o uso e a produção de energia são responsáveis por 57% dos gases de estufa emitidos pela atividade humana. Neste sentido, é imprescindível a implantação de um sistema de energia sustentável no mundo. Em um sistema de energia sustentável, a matriz energética mundial só deveria contar com fontes de energia limpa e renováveis (hidroelétrica, solar, eólica, hidrogênio, geotérmica, das marés, das ondas e biomassa), não devendo contar, portanto, com o uso dos combustíveis fósseis (petróleo, carvão e gás natural).
Este certificado confirma que Gabriel de Mattos Faustino concluiu com sucesso um curso de 42 horas de Gestão Estratégica de TI - ITIL na Escola Virtual entre 19 de fevereiro de 2014 a 20 de fevereiro de 2014.
As classes de modelagem podem ser comparadas a moldes ou
formas que definem as características e os comportamentos dos
objetos criados a partir delas. Vale traçar um paralelo com o projeto de
um automóvel. Os engenheiros definem as medidas, a quantidade de
portas, a potência do motor, a localização do estepe, dentre outras
descrições necessárias para a fabricação de um veículo
Em um mundo cada vez mais digital, a segurança da informação tornou-se essencial para proteger dados pessoais e empresariais contra ameaças cibernéticas. Nesta apresentação, abordaremos os principais conceitos e práticas de segurança digital, incluindo o reconhecimento de ameaças comuns, como malware e phishing, e a implementação de medidas de proteção e mitigação para vazamento de senhas.
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
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!
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
“
”
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!
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?
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.
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
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
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
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
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
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!
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
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