SlideShare uma empresa Scribd logo
Renato Groffe
Julho/2015
 Mais de 15 anos de experiência na área de Tecnologia
 Pós-graduação em Engenharia de Software – ênfase em
SOA
 Cursando MBA em Business Intelligence (FIAP)
 Graduação em Sistemas de Informação
 Técnico em Processamento de Dados
 MTAC (Microsoft Technical Audience Contributor), MCP,
Microsoft Specialist, MCTS, OCA, ITIL, COBIT
 Página no Facebook
https://www.facebook.com/RenatoGroffeSW
 Canal .NET
https://www.facebook.com/canaldotnet
 Perfil no Facebook
https://www.facebook.com/renatogroff
 LinkedIn
http://br.linkedin.com/in/renatogroffe
 Visual Studio 2013 (preferencialmente com o
Update 4)
 Moq
 Visual Studio Unit Testing Framework
(também conhecido como MS Test)
 Cenários comuns dentro do desenvolvimento de
software
 Testes unitários, TDD, BDD: uma visão geral
 Dificuldades técnicas na implementação e
execução de testes unitários
 Dummy objects, fake, stubs e mocks
 Implementação de um exemplo prático em .NET
Mocking Test
Mocking Test
Mocking Test
 Pressões por rápida entrega
 Prazos muito curtos
 Equipes reduzidas
 Mudanças frequentes em requisitos
 Áreas de Negócio e Técnica não falam mesma língua
 Testes não são levados tão a sério como se deveria
 Metodologias ágeis
◦ XP (Extreme Programming) e Scrum são os exemplos mais
famosos
 Testes unitários automatizados
◦ Validações em objetos e métodos (unidades)
◦ Alternativas na plataforma .NET:
 Visual Studio Unit Testing Framework (MS Test)
 NUnit (http://www.nunit.org/)
 xUnit.net (https://github.com/xunit)
 TDD – Test-Driven Development
◦ Testes unitários codificados antes mesmo da implementação
das partes que serão submetidas a análises → evita-se assim
a elaboração de testes “viciados”
 BDD – Behavior-Driven Development
◦ Testes baseados em user stories (histórias)
◦ Vocabulário compartilhado entre áreas de negócio e técnica
(linguagem ubíqua)
◦ Frameworks permitem que as user stories sejam executadas
como testes automatizados → uma alternativa muito utilizada
em .NET é o SpecFlow
 A implementação de uma funcionalidade segue um ciclo
chamado Red-Green-Refactor (os testes unitários são
executados em todos os estágios)
Mocking Test
 Teste de aceitação → User story que serve de base para a
implementação de uma funcionalidade e posterior validação da
mesma
Mocking Test
 Dependências entre diferentes partes de um software
 Inexistência de ambientes com configurações específicas
para testes
 Integrações com parceiros que não disponibilizam
condições adequadas para testes
Mocking Test
Mocking Test
 Dummy objects → criação de objetos/parâmetros
obrigatórios, mas que não afetarão o andamento de um
teste
 Fake objects → implementações para a geração de
objetos necessários, porém descartadas em produção
 Stubs → foco na verificação de estados/valores, não
resultam em falhas nos testes
 Mocks → enfatizam a interação entre objetos
(comportamento), com possíveis falhas de execução
 Moq
◦ Framework open source
◦ Simplifica a utilização de Mocks e Stubs na validação de soluções
construídas em .NET
◦ Permite definir o retorno de métodos, propriedades e até a geração
de exceções em tempo de execução
◦ Dispensa a criação de Fakes e outras estruturas que seriam
descartadas posteriormente
 Estruturas definidas no namespace Moq
 Importar no projeto de testes o package deste framework
que se encontra no NuGet
 Empregado em conjunto com frameworks como MS Test,
Nunit, xUnit.net, SpecFlow
 Utilizar a classe genérica Mock em conjunto com o tipo a
ser simulado (normalmente uma interface)
◦ Método Setup → configura o método ou propriedade a ser simulado
◦ Método Returns → retorno a ser devolvido pelo elemento que se está
simulando
◦ Método Throws → exceção que ocorre ao se invocar um método ou
propriedade
 Acessar a propriedade Object da instância genérica do
tipo Mock, a fim de obter a referência que simula um
comportamento
 Alguns exemplos sobre como configurar um Mock Object (uma
referência mais completa pode ser encontra no site do Moq):
 Consulta a um serviço de crédito (via CPF) – status possíveis:
◦ Parâmetro de envio inválido
◦ Erro de comunicação
◦ Pessoa física sem Pendências
◦ Pessoa física inadimplente
 A ideia por trás do uso de Mock Objects nesta situação é evitar
consultas a um tipo de serviço que é pago → as empresas que
fornecem os dados não costumam disponibilizar ambientes
para testes
 Representação esquemática das classes a serem utilizadas:
 Link para download da solução de exemplo:
https://gallery.technet.microsoft.com/Exemplo-de-utilizao-dos-9537c977
Dúvidas, sugestões???
 Mocks não são Stubs
http://www.infoq.com/br/articles/mocks-Arent-Stubs
 Moq – Quickstart
https://github.com/Moq/moq4/wiki/Quickstart
 Unit Testing with Mock Objects
https://msdn.microsoft.com/en-us/library/ff650441.aspx
Obrigado!!!

Mais conteúdo relacionado

PPTX
Mocking Test - Outubro/2015
PPTX
Mocking Test - GDG-SP - Setembro/2016
PPTX
Mocking Test - QA Ninja Conf 2016
PPTX
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
PPTX
BDD (Behavior-Driven Development) - Setembro/2015
PPTX
Behavior-Driven Development (BDD) - QA Ninja Conf 2016
PPTX
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018
PPTX
Automatizando Testes de Integração com Azure DevOps | DevOps Experience - Fev...
Mocking Test - Outubro/2015
Mocking Test - GDG-SP - Setembro/2016
Mocking Test - QA Ninja Conf 2016
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
BDD (Behavior-Driven Development) - Setembro/2015
Behavior-Driven Development (BDD) - QA Ninja Conf 2016
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018
Automatizando Testes de Integração com Azure DevOps | DevOps Experience - Fev...

Mais procurados (20)

PPTX
TDD e BDD - Developers-SP - Abril/2017
PPTX
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Grupo Bandeirantes - ...
PPTX
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Developers-SP - Janei...
PPTX
.NET Core e Testes de Unidade - Visual Studio Summit 2017
PPTX
Behavior-Driven Development (BDD) - Abril/2017
PPT
Testes Automatizados No Cakephp
PPT
PHPHEDERAL - Desenvolvimento Orientado a Testes com PHP
PPTX
Testes de interfaces Web com Selenium
PPTX
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Hertz - Janeiro-2018
PPTX
BDD (Behavior-Driven Development)
PPTX
Bdd com spec flow
PPT
BDD JBehave
PPTX
Test-Driven Development (TDD) - MSP Coding Day
ODP
Padroes de Testes Automatizados com Django
PPTX
Behavior-Driven Development (BDD) - DevOps Summit 2016
PPTX
BDD (Behavior-Driven Development) - GDG-SP - Julho/2016
PPTX
Test-Driven Development (TDD) utilizando o framework xUnit.net
PPTX
Testes Unitários - 1 Sessão beiraJUG
TDD e BDD - Developers-SP - Abril/2017
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Grupo Bandeirantes - ...
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Developers-SP - Janei...
.NET Core e Testes de Unidade - Visual Studio Summit 2017
Behavior-Driven Development (BDD) - Abril/2017
Testes Automatizados No Cakephp
PHPHEDERAL - Desenvolvimento Orientado a Testes com PHP
Testes de interfaces Web com Selenium
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Hertz - Janeiro-2018
BDD (Behavior-Driven Development)
Bdd com spec flow
BDD JBehave
Test-Driven Development (TDD) - MSP Coding Day
Padroes de Testes Automatizados com Django
Behavior-Driven Development (BDD) - DevOps Summit 2016
BDD (Behavior-Driven Development) - GDG-SP - Julho/2016
Test-Driven Development (TDD) utilizando o framework xUnit.net
Testes Unitários - 1 Sessão beiraJUG
Anúncio

Destaque (6)

PPTX
Power mock
PDF
TDD com Python
PDF
Testes de Unidade com JUnit
PDF
Tdd Com Mock e Orientação a Objetos (PyNE 2015)
PDF
Testando Aplicações Django: Quando, Como e Onde?
PPTX
Testes Unitários
Power mock
TDD com Python
Testes de Unidade com JUnit
Tdd Com Mock e Orientação a Objetos (PyNE 2015)
Testando Aplicações Django: Quando, Como e Onde?
Testes Unitários
Anúncio

Semelhante a Mocking Test (20)

PPTX
Mocking Test - ThinkUp! - Abril/2017
PDF
Mock objects - Teste de código com dependências
PPT
Design Patterns
PPS
Automação de testes para equipes agile
PPTX
TDD (Test-Driven Development)
PPTX
Microsoft ALM = Produtividade
PPTX
Desenvolvimento Dirigido por Testes
PPT
Aula1
PPTX
BDD com SpecFlow
PPTX
TechEd Brasil 2010 - Novidades e razões para migrar para o microsoft .net fra...
PPT
F R A M E W O R K D J A N G O
PDF
Desenvolvimento web com python e django
PDF
Android DevConference - Automatizando testes sem sofrimento
PDF
Evolução das arquiteturas para aplicações Web
PPT
Modelagem de sistemas
PPTX
Domain-Driven Design
PPT
Arquitetura de sistemas web
PPT
ASP.NET MVC para desenvolvedores Web Forms (TechEd)
PDF
tdc-2022-poa-quem-tem-medo-low-code.pdf
PDF
Agile Brazil 2018
Mocking Test - ThinkUp! - Abril/2017
Mock objects - Teste de código com dependências
Design Patterns
Automação de testes para equipes agile
TDD (Test-Driven Development)
Microsoft ALM = Produtividade
Desenvolvimento Dirigido por Testes
Aula1
BDD com SpecFlow
TechEd Brasil 2010 - Novidades e razões para migrar para o microsoft .net fra...
F R A M E W O R K D J A N G O
Desenvolvimento web com python e django
Android DevConference - Automatizando testes sem sofrimento
Evolução das arquiteturas para aplicações Web
Modelagem de sistemas
Domain-Driven Design
Arquitetura de sistemas web
ASP.NET MVC para desenvolvedores Web Forms (TechEd)
tdc-2022-poa-quem-tem-medo-low-code.pdf
Agile Brazil 2018

Mais de Renato Groff (20)

PPTX
Microsoft Azure role-based certifications valem a pena? | Interop Day Edição ...
PPTX
Kubernetes: dicas e truques para o dia a dia | Azure Experts - Novembro-2020
PPTX
Como o Microsoft Azure pode melhorar o desenvolvimento de seu Back-End? | Dev...
PPTX
Como avançar na Power Platform com Azure Functions e Logic Apps | MVPConf Lat...
PPTX
GitHub Actions: descomplicando o build/deployment automatizados | MVPConf Lat...
PPTX
A evolução da plataforma .NET: passado, presente e futuro | Baixada NERD - No...
PPTX
Polly: aplicações .NET resilientes e um melhor tratamento de falhas | MVPConf...
PPTX
Containers no Azure: Docker, Kubernetes e suas diferentes possibilidades | MV...
PPTX
Docker: dicas e truques para o dia a dia | MVPConf Latam 2020
PPTX
Simplificando a montagem de ambientes de Dev+Testes com Docker | DEVDAY 2020
PPTX
.NET Core + Serverless: Desenvolvimento Multiplataforma com Azure Functions |...
PPTX
Aplicações Distribuídas com .NET | TDC Recife Online 2020
PPTX
Novidades do .NET 5 e ASP.NET 5 | Visual Studio Summit 2020
PPTX
Serverless + Integrações com BDs: Azure Functions e Logic Apps - SQLSaturday ...
PPTX
Boas práticas de segurança no acesso a dados em Web Apps - SQLSaturday #972 -...
PPTX
.NET: passado, presente e futuro | Semana FCI 2020 - Mackenzie
PPTX
Docker: visão geral e primeiros passos | Fatec Praia Grande - Semana Tecnológ...
PPTX
Kubernetes na Nuvem | Minicurso Gratuito - Azure na Prática
PPTX
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado | Setembro-2020
PPTX
Sobrevoando os serviços do Azure | TDC São Paulo Online 2020
Microsoft Azure role-based certifications valem a pena? | Interop Day Edição ...
Kubernetes: dicas e truques para o dia a dia | Azure Experts - Novembro-2020
Como o Microsoft Azure pode melhorar o desenvolvimento de seu Back-End? | Dev...
Como avançar na Power Platform com Azure Functions e Logic Apps | MVPConf Lat...
GitHub Actions: descomplicando o build/deployment automatizados | MVPConf Lat...
A evolução da plataforma .NET: passado, presente e futuro | Baixada NERD - No...
Polly: aplicações .NET resilientes e um melhor tratamento de falhas | MVPConf...
Containers no Azure: Docker, Kubernetes e suas diferentes possibilidades | MV...
Docker: dicas e truques para o dia a dia | MVPConf Latam 2020
Simplificando a montagem de ambientes de Dev+Testes com Docker | DEVDAY 2020
.NET Core + Serverless: Desenvolvimento Multiplataforma com Azure Functions |...
Aplicações Distribuídas com .NET | TDC Recife Online 2020
Novidades do .NET 5 e ASP.NET 5 | Visual Studio Summit 2020
Serverless + Integrações com BDs: Azure Functions e Logic Apps - SQLSaturday ...
Boas práticas de segurança no acesso a dados em Web Apps - SQLSaturday #972 -...
.NET: passado, presente e futuro | Semana FCI 2020 - Mackenzie
Docker: visão geral e primeiros passos | Fatec Praia Grande - Semana Tecnológ...
Kubernetes na Nuvem | Minicurso Gratuito - Azure na Prática
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado | Setembro-2020
Sobrevoando os serviços do Azure | TDC São Paulo Online 2020

Último (6)

PPTX
Curso de Windows 11 resumido na prática.pptx
PDF
apresentacao introducao computacao ead.pdf
PDF
Dos requisitos ao código: como criar código rastreável em PHP
DOC
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
DOC
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
PDF
Evolução em código: algoritmos genéticos com PHP
Curso de Windows 11 resumido na prática.pptx
apresentacao introducao computacao ead.pdf
Dos requisitos ao código: como criar código rastreável em PHP
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
Evolução em código: algoritmos genéticos com PHP

Mocking Test

  • 2.  Mais de 15 anos de experiência na área de Tecnologia  Pós-graduação em Engenharia de Software – ênfase em SOA  Cursando MBA em Business Intelligence (FIAP)  Graduação em Sistemas de Informação  Técnico em Processamento de Dados  MTAC (Microsoft Technical Audience Contributor), MCP, Microsoft Specialist, MCTS, OCA, ITIL, COBIT
  • 3.  Página no Facebook https://www.facebook.com/RenatoGroffeSW  Canal .NET https://www.facebook.com/canaldotnet  Perfil no Facebook https://www.facebook.com/renatogroff  LinkedIn http://br.linkedin.com/in/renatogroffe
  • 4.  Visual Studio 2013 (preferencialmente com o Update 4)  Moq  Visual Studio Unit Testing Framework (também conhecido como MS Test)
  • 5.  Cenários comuns dentro do desenvolvimento de software  Testes unitários, TDD, BDD: uma visão geral  Dificuldades técnicas na implementação e execução de testes unitários  Dummy objects, fake, stubs e mocks  Implementação de um exemplo prático em .NET
  • 9.  Pressões por rápida entrega  Prazos muito curtos  Equipes reduzidas  Mudanças frequentes em requisitos  Áreas de Negócio e Técnica não falam mesma língua  Testes não são levados tão a sério como se deveria
  • 10.  Metodologias ágeis ◦ XP (Extreme Programming) e Scrum são os exemplos mais famosos  Testes unitários automatizados ◦ Validações em objetos e métodos (unidades) ◦ Alternativas na plataforma .NET:  Visual Studio Unit Testing Framework (MS Test)  NUnit (http://www.nunit.org/)  xUnit.net (https://github.com/xunit)
  • 11.  TDD – Test-Driven Development ◦ Testes unitários codificados antes mesmo da implementação das partes que serão submetidas a análises → evita-se assim a elaboração de testes “viciados”
  • 12.  BDD – Behavior-Driven Development ◦ Testes baseados em user stories (histórias) ◦ Vocabulário compartilhado entre áreas de negócio e técnica (linguagem ubíqua) ◦ Frameworks permitem que as user stories sejam executadas como testes automatizados → uma alternativa muito utilizada em .NET é o SpecFlow
  • 13.  A implementação de uma funcionalidade segue um ciclo chamado Red-Green-Refactor (os testes unitários são executados em todos os estágios)
  • 15.  Teste de aceitação → User story que serve de base para a implementação de uma funcionalidade e posterior validação da mesma
  • 17.  Dependências entre diferentes partes de um software  Inexistência de ambientes com configurações específicas para testes  Integrações com parceiros que não disponibilizam condições adequadas para testes
  • 20.  Dummy objects → criação de objetos/parâmetros obrigatórios, mas que não afetarão o andamento de um teste  Fake objects → implementações para a geração de objetos necessários, porém descartadas em produção  Stubs → foco na verificação de estados/valores, não resultam em falhas nos testes  Mocks → enfatizam a interação entre objetos (comportamento), com possíveis falhas de execução
  • 21.  Moq ◦ Framework open source ◦ Simplifica a utilização de Mocks e Stubs na validação de soluções construídas em .NET ◦ Permite definir o retorno de métodos, propriedades e até a geração de exceções em tempo de execução ◦ Dispensa a criação de Fakes e outras estruturas que seriam descartadas posteriormente
  • 22.  Estruturas definidas no namespace Moq  Importar no projeto de testes o package deste framework que se encontra no NuGet  Empregado em conjunto com frameworks como MS Test, Nunit, xUnit.net, SpecFlow
  • 23.  Utilizar a classe genérica Mock em conjunto com o tipo a ser simulado (normalmente uma interface) ◦ Método Setup → configura o método ou propriedade a ser simulado ◦ Método Returns → retorno a ser devolvido pelo elemento que se está simulando ◦ Método Throws → exceção que ocorre ao se invocar um método ou propriedade  Acessar a propriedade Object da instância genérica do tipo Mock, a fim de obter a referência que simula um comportamento
  • 24.  Alguns exemplos sobre como configurar um Mock Object (uma referência mais completa pode ser encontra no site do Moq):
  • 25.  Consulta a um serviço de crédito (via CPF) – status possíveis: ◦ Parâmetro de envio inválido ◦ Erro de comunicação ◦ Pessoa física sem Pendências ◦ Pessoa física inadimplente  A ideia por trás do uso de Mock Objects nesta situação é evitar consultas a um tipo de serviço que é pago → as empresas que fornecem os dados não costumam disponibilizar ambientes para testes
  • 26.  Representação esquemática das classes a serem utilizadas:
  • 27.  Link para download da solução de exemplo: https://gallery.technet.microsoft.com/Exemplo-de-utilizao-dos-9537c977
  • 29.  Mocks não são Stubs http://www.infoq.com/br/articles/mocks-Arent-Stubs  Moq – Quickstart https://github.com/Moq/moq4/wiki/Quickstart  Unit Testing with Mock Objects https://msdn.microsoft.com/en-us/library/ff650441.aspx