SlideShare uma empresa Scribd logo
Mocking Test
TESTANDO O QUE PARECE IMPOSSÍVEL DE SER VERIFICADO
Renato Groffe
◦ Microsoft Most Valuable Professional (MVP)
◦ Multi-Plataform Technical Audience Contributor
◦ Mais de 15 anos de experiência na área de Tecnologia
◦ Articulista e Palestrante
Contatos
◦ Facebook ---> https://www.facebook.com/renatogroff
◦ Site ---> http://renatogroffe.net/
◦ Canal .NET ---> https://www.facebook.com/canaldotnet
◦ LinkedIn ---> http://br.linkedin.com/in/renatogroffe
◦ GitHub ---> https://github.com/renatogroffe
Agenda
◦ Cenários comuns dentro do desenvolvimento de software
◦ Testes automatizados: uma visão geral
◦ Dificuldades técnicas na implementação e execução de testes automatizados
◦ Mocking Test
◦ Exemplos no Visual Studio 2017
Desenvolvimento de Software – Cenários comuns
Desenvolvimento – Cenários comuns
◦ Pressões por uma rápida entrega, prazos
muito curtos
Desenvolvimento – Cenários comuns
◦ Equipes reduzidas
Desenvolvimento – Cenários comuns
◦ Mudanças frequentes em requisitos
Desenvolvimento – Cenários Comuns
◦ Áreas de Negócio e Técnica nem sempre falam a mesma língua
Desenvolvimento – Cenários comuns
◦ Testes não são levados tão a sério
como se deveria
Como contornar estes problemas?
Como contornar estes problemas?
Metodologias ágeis
◦ XP (Extreme Programming) e Scrum são os
exemplos mais famosos
Testes de unidade automatizados
◦ Validações em objetos e métodos (unidades)
◦ Alternativas na plataforma .NET:
◦ MS Test
◦ NUnit
◦ xUnit.net
Como contornar estes problemas?
TDD – Test-Driven Development
◦ Testes de unidade codificados antes
mesmo da implementação das partes que
serão submetidas a análises
◦ Evita-se assim a elaboração de testes
“viciados”
Como contornar estes problemas?
Ciclo de desenvolvimento em TDD → testes automatizados executados em
todos os estágios
Como contornar estes problemas?
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
Como contornar estes problemas?
BDD – Estrutura de
Uma User Story:
Como contornar estes problemas?
Teste de aceitação em BDD → User story que serve de base para a
implementação de uma funcionalidade e posterior validação da mesma
Sempre será fácil testar?
Dificuldades técnicas comuns
◦ 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
◦ O teste de determinados recursos precisa esperar
pela conclusão de uma ou mais funcionalidades
específicas
Como superar então estas dificuldades?
Simulando...
Imitando...
Algumas soluções para testes automatizados
Implementações fake
◦ Trechos de código ou classes stub para a geração dos objetos requeridos pelos
testes
◦ Estruturas normalmente descartadas em produção
Algumas soluções para testes automatizados
Mock Objects
◦ Estruturas que simulam objetos reais
◦ Enfatizam a interação entre objetos (comportamento),
prevendo inclusive possíveis falhas de execução
◦ Frameworks simplificam a utilização destas
construções
Mocking Test em .NET
Moq
◦ Framework open source
◦ Simplifica a utilização de Mocks 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
NSubstitute
◦ Framework também open source
◦ Alternativa ao uso do Moq, com um
funcionamento bastante semelhante ao deste
último
E como utilizar isso em .NET?
Combinando o uso do Moq ou Nsubstitute a frameworks como MS Test, NUnit, xUnit.net,
SpecFlow, Selenium, Fluent Assertions...
MS Test
Exemplos práticos
Caso de Estudo
◦ Consulta a um serviço de crédito (via CPF) – status possíveis:
◦ Parâmetro de envio inválido (retorno de pendências = null)
◦ Erro de comunicação (exceção retornada ao se invocar o serviço)
◦ Pessoa física sem Pendências (zero itens no retorno de pendências)
◦ Pessoa física inadimplente (ao menos uma pendência encontrada)
◦ 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
Caso de Estudo
Caso de Estudo
◦ Primeiro Exemplo → MS Test + Moq
◦ Segundo Exemplo → xUnit + NSubstitute
Dúvidas?
Obrigado!

Mais conteúdo relacionado

PPTX
Behavior-Driven Development (BDD) - Abril/2017
PPTX
TDD e BDD - Developers-SP - Abril/2017
PPTX
Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017
PPTX
.NET Core e Testes de Unidade - Visual Studio Summit 2017
PPTX
Testes de interfaces Web com Selenium
PPTX
Behavior-Driven Development (BDD) - DevOps Summit 2016
PPTX
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
PPTX
Automatizando Testes de Integração com Azure DevOps | DevOps Experience - Fev...
Behavior-Driven Development (BDD) - Abril/2017
TDD e BDD - Developers-SP - Abril/2017
Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017
.NET Core e Testes de Unidade - Visual Studio Summit 2017
Testes de interfaces Web com Selenium
Behavior-Driven Development (BDD) - DevOps Summit 2016
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Automatizando Testes de Integração com Azure DevOps | DevOps Experience - Fev...

Mais procurados (20)

PPTX
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Hertz - Janeiro-2018
PPTX
Mocking Test - GDG-SP - Setembro/2016
PPTX
Dapper - Developers-SP - Junho/2017
PPTX
.NET Core 2.0, .NET Standard 2.0 e ASP.NET Core 2.0: uma visão geral
PPT
.NET + Microsserviços: alternativas open source para descomplicar a vida | TD...
PDF
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
PPT
MVC & Zend Framework
PDF
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
PDF
Depurando aplicações PHP like a BOSS
PPTX
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
PDF
Construção e provisionamento de ambientes de desenvolvimento virtualizados
PPTX
Impacto dos frameworks PHP
PPTX
Test-Driven Development (TDD) - MSP Coding Day
PDF
Testando uma aplicação AngularJS utilizando o Karma
PDF
Revisão de Código - Uma prática que depende da cultura
PDF
Como testar sua aplicação Android com Robotium
PDF
Zabbix, Grafana e os conteineres Docker
PDF
Devops CI/CD: Obtendo qualidade de vida para o time de desenvolvimento
PDF
TDC 2016 Trilha Testes - Floripa
PPTX
BDD com SpecFlow
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Hertz - Janeiro-2018
Mocking Test - GDG-SP - Setembro/2016
Dapper - Developers-SP - Junho/2017
.NET Core 2.0, .NET Standard 2.0 e ASP.NET Core 2.0: uma visão geral
.NET + Microsserviços: alternativas open source para descomplicar a vida | TD...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
MVC & Zend Framework
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
Depurando aplicações PHP like a BOSS
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
Construção e provisionamento de ambientes de desenvolvimento virtualizados
Impacto dos frameworks PHP
Test-Driven Development (TDD) - MSP Coding Day
Testando uma aplicação AngularJS utilizando o Karma
Revisão de Código - Uma prática que depende da cultura
Como testar sua aplicação Android com Robotium
Zabbix, Grafana e os conteineres Docker
Devops CI/CD: Obtendo qualidade de vida para o time de desenvolvimento
TDC 2016 Trilha Testes - Floripa
BDD com SpecFlow
Anúncio

Semelhante a Mocking Test - ThinkUp! - Abril/2017 (20)

PPTX
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
PPTX
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018
PPTX
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Developers-SP - Janei...
PPTX
Mocking Test - QA Ninja Conf 2016
PPTX
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Grupo Bandeirantes - ...
PPTX
Mocking Test
PPTX
Mocking Test - Outubro/2015
PPTX
Cobertura de Código: Testes de Unidade
PDF
TDD - Pós Graduação em Engenharia de Software Ágil
PPTX
BDD (Behavior-Driven Development) - Setembro/2015
PPTX
InterCon 2017 - Indo além dos testes de classes com BDD (Behavior-Driven Deve...
PPTX
Testes e mocks: Em Visual Studio com .NET
PPTX
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
PPTX
Behavior-Driven Development (BDD) - QA Ninja Conf 2016
PPTX
Desenvolvimento dirigido por comportamento e por teste
PPTX
BDD (Behavior-Driven Development) - GDG-SP - Julho/2016
PPTX
BDD (Behavior-Driven Development)
PPTX
TDD (Test-Driven Development)
PPTX
Test-Driven Development (TDD) utilizando o framework xUnit.net
PPT
Gerenciando Testes Com Qualidade V2a
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Developers-SP - Janei...
Mocking Test - QA Ninja Conf 2016
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Grupo Bandeirantes - ...
Mocking Test
Mocking Test - Outubro/2015
Cobertura de Código: Testes de Unidade
TDD - Pós Graduação em Engenharia de Software Ágil
BDD (Behavior-Driven Development) - Setembro/2015
InterCon 2017 - Indo além dos testes de classes com BDD (Behavior-Driven Deve...
Testes e mocks: Em Visual Studio com .NET
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
Behavior-Driven Development (BDD) - QA Ninja Conf 2016
Desenvolvimento dirigido por comportamento e por teste
BDD (Behavior-Driven Development) - GDG-SP - Julho/2016
BDD (Behavior-Driven Development)
TDD (Test-Driven Development)
Test-Driven Development (TDD) utilizando o framework xUnit.net
Gerenciando Testes Com Qualidade V2a
Anúncio

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 (7)

PDF
apresentacao introducao computacao ead.pdf
PPTX
Mapeamento de Objeto para Tabela Relacional
PDF
Paper_A028_BR_Victor_Enrique_Cavero_Sori (1).pdf
PPTX
Curso de Windows 11 resumido na prática.pptx
PDF
Evolução em código: algoritmos genéticos com PHP
DOC
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
PDF
Dos requisitos ao código: como criar código rastreável em PHP
apresentacao introducao computacao ead.pdf
Mapeamento de Objeto para Tabela Relacional
Paper_A028_BR_Victor_Enrique_Cavero_Sori (1).pdf
Curso de Windows 11 resumido na prática.pptx
Evolução em código: algoritmos genéticos com PHP
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
Dos requisitos ao código: como criar código rastreável em PHP

Mocking Test - ThinkUp! - Abril/2017

  • 1. Mocking Test TESTANDO O QUE PARECE IMPOSSÍVEL DE SER VERIFICADO
  • 2. Renato Groffe ◦ Microsoft Most Valuable Professional (MVP) ◦ Multi-Plataform Technical Audience Contributor ◦ Mais de 15 anos de experiência na área de Tecnologia ◦ Articulista e Palestrante
  • 3. Contatos ◦ Facebook ---> https://www.facebook.com/renatogroff ◦ Site ---> http://renatogroffe.net/ ◦ Canal .NET ---> https://www.facebook.com/canaldotnet ◦ LinkedIn ---> http://br.linkedin.com/in/renatogroffe ◦ GitHub ---> https://github.com/renatogroffe
  • 4. Agenda ◦ Cenários comuns dentro do desenvolvimento de software ◦ Testes automatizados: uma visão geral ◦ Dificuldades técnicas na implementação e execução de testes automatizados ◦ Mocking Test ◦ Exemplos no Visual Studio 2017
  • 5. Desenvolvimento de Software – Cenários comuns
  • 6. Desenvolvimento – Cenários comuns ◦ Pressões por uma rápida entrega, prazos muito curtos
  • 7. Desenvolvimento – Cenários comuns ◦ Equipes reduzidas
  • 8. Desenvolvimento – Cenários comuns ◦ Mudanças frequentes em requisitos
  • 9. Desenvolvimento – Cenários Comuns ◦ Áreas de Negócio e Técnica nem sempre falam a mesma língua
  • 10. Desenvolvimento – Cenários comuns ◦ Testes não são levados tão a sério como se deveria
  • 11. Como contornar estes problemas?
  • 12. Como contornar estes problemas? Metodologias ágeis ◦ XP (Extreme Programming) e Scrum são os exemplos mais famosos Testes de unidade automatizados ◦ Validações em objetos e métodos (unidades) ◦ Alternativas na plataforma .NET: ◦ MS Test ◦ NUnit ◦ xUnit.net
  • 13. Como contornar estes problemas? TDD – Test-Driven Development ◦ Testes de unidade codificados antes mesmo da implementação das partes que serão submetidas a análises ◦ Evita-se assim a elaboração de testes “viciados”
  • 14. Como contornar estes problemas? Ciclo de desenvolvimento em TDD → testes automatizados executados em todos os estágios
  • 15. Como contornar estes problemas? 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
  • 16. Como contornar estes problemas? BDD – Estrutura de Uma User Story:
  • 17. Como contornar estes problemas? Teste de aceitação em BDD → User story que serve de base para a implementação de uma funcionalidade e posterior validação da mesma
  • 19. Dificuldades técnicas comuns ◦ 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 ◦ O teste de determinados recursos precisa esperar pela conclusão de uma ou mais funcionalidades específicas
  • 20. Como superar então estas dificuldades?
  • 23. Algumas soluções para testes automatizados Implementações fake ◦ Trechos de código ou classes stub para a geração dos objetos requeridos pelos testes ◦ Estruturas normalmente descartadas em produção
  • 24. Algumas soluções para testes automatizados Mock Objects ◦ Estruturas que simulam objetos reais ◦ Enfatizam a interação entre objetos (comportamento), prevendo inclusive possíveis falhas de execução ◦ Frameworks simplificam a utilização destas construções
  • 26. Moq ◦ Framework open source ◦ Simplifica a utilização de Mocks 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
  • 27. NSubstitute ◦ Framework também open source ◦ Alternativa ao uso do Moq, com um funcionamento bastante semelhante ao deste último
  • 28. E como utilizar isso em .NET? Combinando o uso do Moq ou Nsubstitute a frameworks como MS Test, NUnit, xUnit.net, SpecFlow, Selenium, Fluent Assertions... MS Test
  • 30. Caso de Estudo ◦ Consulta a um serviço de crédito (via CPF) – status possíveis: ◦ Parâmetro de envio inválido (retorno de pendências = null) ◦ Erro de comunicação (exceção retornada ao se invocar o serviço) ◦ Pessoa física sem Pendências (zero itens no retorno de pendências) ◦ Pessoa física inadimplente (ao menos uma pendência encontrada) ◦ 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
  • 32. Caso de Estudo ◦ Primeiro Exemplo → MS Test + Moq ◦ Segundo Exemplo → xUnit + NSubstitute