SlideShare uma empresa Scribd logo
Renato Groffe
Outubro/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 5) / Visual Studio Community 2015
 Moq
 NSubstitute
 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
 Mocking Test
 Implementação de um exemplo prático em .NET
 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)
 Teste de aceitação → User story que serve de base para a
implementação de uma funcionalidade e posterior validação da
mesma
 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
 Fake objects → implementações para a geração de
objetos necessários, porém descartadas em
produção
 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 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
 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
 Representação esquemática das classes a serem utilizadas:
 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):
 Estruturas definidas no namespace NSubstitute
 Também importar no projeto de testes o package deste
framework que se encontra no NuGet
 Também empregado em conjunto com frameworks como
MS Test, Nunit, xUnit.net, SpecFlow
 Utilizar o método genérico For da classe Substitute em
conjunto com o tipo a ser simulado (normalmente uma
interface)
◦ Método Returns → retorno a ser devolvido pelo elemento que se está
simulando (valor ou exceção)
 O objeto retornado pelo método For será o mesmo que
servirá de base para a simulação de um comportamento
 Exemplo sobre como configurar um Mock Object (uma referência
mais completa pode ser encontra no site do NSubstitute):
 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
 NSubstitute: Docs and getting help
 http://nsubstitute.github.io/help.html
 Unit Testing with Mock Objects
https://msdn.microsoft.com/en-us/library/ff650441.aspx
Obrigado!!!

Mais conteúdo relacionado

Mais procurados

BDD (Behavior-Driven Development) - Setembro/2015
BDD (Behavior-Driven Development) - Setembro/2015BDD (Behavior-Driven Development) - Setembro/2015
BDD (Behavior-Driven Development) - Setembro/2015Renato Groff
 
Automatizando Testes de Integração com Azure DevOps | DevOps Experience - Fev...
Automatizando Testes de Integração com Azure DevOps | DevOps Experience - Fev...Automatizando Testes de Integração com Azure DevOps | DevOps Experience - Fev...
Automatizando Testes de Integração com Azure DevOps | DevOps Experience - Fev...Renato Groffe
 
Behavior-Driven Development (BDD) - QA Ninja Conf 2016
Behavior-Driven Development (BDD) - QA Ninja Conf 2016Behavior-Driven Development (BDD) - QA Ninja Conf 2016
Behavior-Driven Development (BDD) - QA Ninja Conf 2016Renato Groff
 
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018Renato Groff
 
Introducao a refatoracao
Introducao a refatoracaoIntroducao a refatoracao
Introducao a refatoracaoIvan Ricarte
 
Testes de Unidade - Unidade II
Testes de Unidade - Unidade IITestes de Unidade - Unidade II
Testes de Unidade - Unidade IIJoão Lourenço
 
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Hertz - Janeiro-2018
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Hertz - Janeiro-2018Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Hertz - Janeiro-2018
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Hertz - Janeiro-2018Renato Groff
 
Behavior-Driven Development (BDD) - Abril/2017
Behavior-Driven Development (BDD) - Abril/2017Behavior-Driven Development (BDD) - Abril/2017
Behavior-Driven Development (BDD) - Abril/2017Renato Groff
 
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Grupo Bandeirantes - ...
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Grupo Bandeirantes - ...Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Grupo Bandeirantes - ...
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Grupo Bandeirantes - ...Renato Groff
 
Introdução a testes unitários automatizados com JUnit e NUnit
Introdução a testes unitários automatizados com JUnit e NUnitIntrodução a testes unitários automatizados com JUnit e NUnit
Introdução a testes unitários automatizados com JUnit e NUnitelliando dias
 
Mocking Test - ThinkUp! - Abril/2017
Mocking Test - ThinkUp! - Abril/2017Mocking Test - ThinkUp! - Abril/2017
Mocking Test - ThinkUp! - Abril/2017Renato Groff
 
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Developers-SP - Janei...
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Developers-SP - Janei...Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Developers-SP - Janei...
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Developers-SP - Janei...Renato Groffe
 
Zend Framework Estrutura e TDD
Zend Framework Estrutura e TDDZend Framework Estrutura e TDD
Zend Framework Estrutura e TDDPHP Day Curitiba
 
QA Ninja Conf - Testes Exploratórios Orientados a Sessões
QA Ninja Conf - Testes Exploratórios Orientados a SessõesQA Ninja Conf - Testes Exploratórios Orientados a Sessões
QA Ninja Conf - Testes Exploratórios Orientados a SessõesThiago Boschese
 
PDC - Testes - Usando o Testlink
PDC - Testes - Usando o TestlinkPDC - Testes - Usando o Testlink
PDC - Testes - Usando o Testlinkslides_teltools
 
Realizando a gestão de testes e o controle de defeitos
Realizando a gestão de testes e o controle de defeitosRealizando a gestão de testes e o controle de defeitos
Realizando a gestão de testes e o controle de defeitosVIVIANE RANGEL
 
TDCPOA2018 - Trilha Python - Testes de Performance com Locust
TDCPOA2018 - Trilha Python - Testes de Performance com LocustTDCPOA2018 - Trilha Python - Testes de Performance com Locust
TDCPOA2018 - Trilha Python - Testes de Performance com LocustMayara Fernandes
 

Mais procurados (20)

BDD (Behavior-Driven Development) - Setembro/2015
BDD (Behavior-Driven Development) - Setembro/2015BDD (Behavior-Driven Development) - Setembro/2015
BDD (Behavior-Driven Development) - Setembro/2015
 
Automatizando Testes de Integração com Azure DevOps | DevOps Experience - Fev...
Automatizando Testes de Integração com Azure DevOps | DevOps Experience - Fev...Automatizando Testes de Integração com Azure DevOps | DevOps Experience - Fev...
Automatizando Testes de Integração com Azure DevOps | DevOps Experience - Fev...
 
Behavior-Driven Development (BDD) - QA Ninja Conf 2016
Behavior-Driven Development (BDD) - QA Ninja Conf 2016Behavior-Driven Development (BDD) - QA Ninja Conf 2016
Behavior-Driven Development (BDD) - QA Ninja Conf 2016
 
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018
 
Introducao a refatoracao
Introducao a refatoracaoIntroducao a refatoracao
Introducao a refatoracao
 
Testes de Unidade - Unidade II
Testes de Unidade - Unidade IITestes de Unidade - Unidade II
Testes de Unidade - Unidade II
 
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Hertz - Janeiro-2018
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Hertz - Janeiro-2018Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Hertz - Janeiro-2018
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Hertz - Janeiro-2018
 
Behavior-Driven Development (BDD) - Abril/2017
Behavior-Driven Development (BDD) - Abril/2017Behavior-Driven Development (BDD) - Abril/2017
Behavior-Driven Development (BDD) - Abril/2017
 
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Grupo Bandeirantes - ...
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Grupo Bandeirantes - ...Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Grupo Bandeirantes - ...
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Grupo Bandeirantes - ...
 
Introdução a testes unitários automatizados com JUnit e NUnit
Introdução a testes unitários automatizados com JUnit e NUnitIntrodução a testes unitários automatizados com JUnit e NUnit
Introdução a testes unitários automatizados com JUnit e NUnit
 
Mocking Test - ThinkUp! - Abril/2017
Mocking Test - ThinkUp! - Abril/2017Mocking Test - ThinkUp! - Abril/2017
Mocking Test - ThinkUp! - Abril/2017
 
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Developers-SP - Janei...
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Developers-SP - Janei...Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Developers-SP - Janei...
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Developers-SP - Janei...
 
Zend Framework Estrutura e TDD
Zend Framework Estrutura e TDDZend Framework Estrutura e TDD
Zend Framework Estrutura e TDD
 
QA Ninja Conf - Testes Exploratórios Orientados a Sessões
QA Ninja Conf - Testes Exploratórios Orientados a SessõesQA Ninja Conf - Testes Exploratórios Orientados a Sessões
QA Ninja Conf - Testes Exploratórios Orientados a Sessões
 
JUnit Sample
JUnit SampleJUnit Sample
JUnit Sample
 
Testlink apresentacao
Testlink apresentacaoTestlink apresentacao
Testlink apresentacao
 
PDC - Testes - Usando o Testlink
PDC - Testes - Usando o TestlinkPDC - Testes - Usando o Testlink
PDC - Testes - Usando o Testlink
 
Realizando a gestão de testes e o controle de defeitos
Realizando a gestão de testes e o controle de defeitosRealizando a gestão de testes e o controle de defeitos
Realizando a gestão de testes e o controle de defeitos
 
TDCPOA2018 - Trilha Python - Testes de Performance com Locust
TDCPOA2018 - Trilha Python - Testes de Performance com LocustTDCPOA2018 - Trilha Python - Testes de Performance com Locust
TDCPOA2018 - Trilha Python - Testes de Performance com Locust
 
Test link
Test linkTest link
Test link
 

Destaque

Lorraine Hawkins: Payment reforms in Europe:Is it time to re-think "Payment b...
Lorraine Hawkins: Payment reforms in Europe:Is it time to re-think "Payment b...Lorraine Hawkins: Payment reforms in Europe:Is it time to re-think "Payment b...
Lorraine Hawkins: Payment reforms in Europe:Is it time to re-think "Payment b...Nuffield Trust
 
Tecnologia na Aprendizagem
Tecnologia na AprendizagemTecnologia na Aprendizagem
Tecnologia na Aprendizagemgi35
 
Fire and Ice - SNOMED CT expo 2016 is go - Liara Tutina
Fire and Ice - SNOMED CT expo 2016 is go - Liara TutinaFire and Ice - SNOMED CT expo 2016 is go - Liara Tutina
Fire and Ice - SNOMED CT expo 2016 is go - Liara TutinaHL7 New Zealand
 
Apresentação1
Apresentação1Apresentação1
Apresentação1cosmovest
 
Localização de uma Central Nuclear em Portugal Continental
Localização de uma Central Nuclear em Portugal ContinentalLocalização de uma Central Nuclear em Portugal Continental
Localização de uma Central Nuclear em Portugal ContinentalNimble Portal Consulting
 
Pacie bloque 0
Pacie   bloque 0Pacie   bloque 0
Pacie bloque 0xioma2002
 
Fire and Ice - New Zealand Formulary - Bryan Simpson, Sarah Homan)
Fire and Ice - New Zealand Formulary - Bryan Simpson, Sarah Homan)Fire and Ice - New Zealand Formulary - Bryan Simpson, Sarah Homan)
Fire and Ice - New Zealand Formulary - Bryan Simpson, Sarah Homan)HL7 New Zealand
 
Bloque pacie
Bloque pacieBloque pacie
Bloque paciexioma2002
 
Dia mundial sem carro Joinville/SC - Brasil - 2011
Dia mundial sem carro Joinville/SC - Brasil - 2011Dia mundial sem carro Joinville/SC - Brasil - 2011
Dia mundial sem carro Joinville/SC - Brasil - 2011ippuj
 
Comarcas de aragón
Comarcas  de  aragónComarcas  de  aragón
Comarcas de aragónmtellom
 
Perfil profesional
Perfil profesionalPerfil profesional
Perfil profesionalguty077
 
Manajemen mutu terpadu_pendidikan
Manajemen mutu terpadu_pendidikanManajemen mutu terpadu_pendidikan
Manajemen mutu terpadu_pendidikanJalaludin Zulkifli
 
Modelo apresentação formação profissional versão final
Modelo apresentação  formação profissional versão finalModelo apresentação  formação profissional versão final
Modelo apresentação formação profissional versão finalConsulges
 
A história dos Massuia do Paraná - terceira edição
A história dos Massuia do Paraná - terceira ediçãoA história dos Massuia do Paraná - terceira edição
A história dos Massuia do Paraná - terceira ediçãoWings Design & Comunicação
 

Destaque (20)

Lorraine Hawkins: Payment reforms in Europe:Is it time to re-think "Payment b...
Lorraine Hawkins: Payment reforms in Europe:Is it time to re-think "Payment b...Lorraine Hawkins: Payment reforms in Europe:Is it time to re-think "Payment b...
Lorraine Hawkins: Payment reforms in Europe:Is it time to re-think "Payment b...
 
Tecnologia na Aprendizagem
Tecnologia na AprendizagemTecnologia na Aprendizagem
Tecnologia na Aprendizagem
 
Fire and Ice - SNOMED CT expo 2016 is go - Liara Tutina
Fire and Ice - SNOMED CT expo 2016 is go - Liara TutinaFire and Ice - SNOMED CT expo 2016 is go - Liara Tutina
Fire and Ice - SNOMED CT expo 2016 is go - Liara Tutina
 
Apresentação1
Apresentação1Apresentação1
Apresentação1
 
Localização de uma Central Nuclear em Portugal Continental
Localização de uma Central Nuclear em Portugal ContinentalLocalização de uma Central Nuclear em Portugal Continental
Localização de uma Central Nuclear em Portugal Continental
 
Iam u 728837
Iam u 728837Iam u 728837
Iam u 728837
 
Pacie bloque 0
Pacie   bloque 0Pacie   bloque 0
Pacie bloque 0
 
Fire and Ice - New Zealand Formulary - Bryan Simpson, Sarah Homan)
Fire and Ice - New Zealand Formulary - Bryan Simpson, Sarah Homan)Fire and Ice - New Zealand Formulary - Bryan Simpson, Sarah Homan)
Fire and Ice - New Zealand Formulary - Bryan Simpson, Sarah Homan)
 
San xose cancion_levantate
San xose cancion_levantateSan xose cancion_levantate
San xose cancion_levantate
 
Bloque pacie
Bloque pacieBloque pacie
Bloque pacie
 
Paginas web cadena y cesar (1)
Paginas web cadena y cesar (1)Paginas web cadena y cesar (1)
Paginas web cadena y cesar (1)
 
Tribus urbanas ppp
Tribus urbanas pppTribus urbanas ppp
Tribus urbanas ppp
 
Dia mundial sem carro Joinville/SC - Brasil - 2011
Dia mundial sem carro Joinville/SC - Brasil - 2011Dia mundial sem carro Joinville/SC - Brasil - 2011
Dia mundial sem carro Joinville/SC - Brasil - 2011
 
Comarcas de aragón
Comarcas  de  aragónComarcas  de  aragón
Comarcas de aragón
 
Fotos 25.08
Fotos 25.08Fotos 25.08
Fotos 25.08
 
Arquitectura Gaudí
Arquitectura GaudíArquitectura Gaudí
Arquitectura Gaudí
 
Perfil profesional
Perfil profesionalPerfil profesional
Perfil profesional
 
Manajemen mutu terpadu_pendidikan
Manajemen mutu terpadu_pendidikanManajemen mutu terpadu_pendidikan
Manajemen mutu terpadu_pendidikan
 
Modelo apresentação formação profissional versão final
Modelo apresentação  formação profissional versão finalModelo apresentação  formação profissional versão final
Modelo apresentação formação profissional versão final
 
A história dos Massuia do Paraná - terceira edição
A história dos Massuia do Paraná - terceira ediçãoA história dos Massuia do Paraná - terceira edição
A história dos Massuia do Paraná - terceira edição
 

Semelhante a Mocking Test - Outubro/2015

BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)Renato Groff
 
Mocking Test - GDG-SP - Setembro/2016
Mocking Test - GDG-SP - Setembro/2016Mocking Test - GDG-SP - Setembro/2016
Mocking Test - GDG-SP - Setembro/2016Renato Groff
 
Test-Driven Development (TDD) - MSP Coding Day
Test-Driven Development (TDD) - MSP Coding DayTest-Driven Development (TDD) - MSP Coding Day
Test-Driven Development (TDD) - MSP Coding DayRenato Groff
 
TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)Renato Groff
 
BDD (Behavior-Driven Development) - GDG-SP - Julho/2016
BDD (Behavior-Driven Development) - GDG-SP - Julho/2016BDD (Behavior-Driven Development) - GDG-SP - Julho/2016
BDD (Behavior-Driven Development) - GDG-SP - Julho/2016Renato Groff
 
Paralelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidosParalelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidosElias Nogueira
 
Mock objects - Teste de código com dependências
Mock objects - Teste de código com dependênciasMock objects - Teste de código com dependências
Mock objects - Teste de código com dependênciasDenis L Presciliano
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesCamilo Ribeiro
 
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NETASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NETRenato Groff
 
TechEd Brasil 2010 - Novidades e razões para migrar para o microsoft .net fra...
TechEd Brasil 2010 - Novidades e razões para migrar para o microsoft .net fra...TechEd Brasil 2010 - Novidades e razões para migrar para o microsoft .net fra...
TechEd Brasil 2010 - Novidades e razões para migrar para o microsoft .net fra...JP Clementi
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysDr. Spock
 
C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)Renato Groff
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e djangoIgor Sobreira
 
Testando aplicações DataSnap
Testando aplicações DataSnapTestando aplicações DataSnap
Testando aplicações DataSnapAndreano Lanusse
 
ASP.Net MVC 3 - o que há de novo (TechEd)
ASP.Net MVC 3 - o que há de novo (TechEd)ASP.Net MVC 3 - o que há de novo (TechEd)
ASP.Net MVC 3 - o que há de novo (TechEd)Giovanni Bassi
 
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET (Agosto/2015)
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET (Agosto/2015)ASP.NET 5 - Novidades do Desenvolvimento Web em .NET (Agosto/2015)
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET (Agosto/2015)Renato Groff
 

Semelhante a Mocking Test - Outubro/2015 (20)

BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)
 
Mocking Test - GDG-SP - Setembro/2016
Mocking Test - GDG-SP - Setembro/2016Mocking Test - GDG-SP - Setembro/2016
Mocking Test - GDG-SP - Setembro/2016
 
Test-Driven Development (TDD) - MSP Coding Day
Test-Driven Development (TDD) - MSP Coding DayTest-Driven Development (TDD) - MSP Coding Day
Test-Driven Development (TDD) - MSP Coding Day
 
TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)
 
BDD (Behavior-Driven Development) - GDG-SP - Julho/2016
BDD (Behavior-Driven Development) - GDG-SP - Julho/2016BDD (Behavior-Driven Development) - GDG-SP - Julho/2016
BDD (Behavior-Driven Development) - GDG-SP - Julho/2016
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
BDD com SpecFlow
BDD com SpecFlowBDD com SpecFlow
BDD com SpecFlow
 
Paralelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidosParalelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidos
 
Testes: Por onde Começar?
Testes: Por onde Começar?Testes: Por onde Começar?
Testes: Por onde Começar?
 
Mock objects - Teste de código com dependências
Mock objects - Teste de código com dependênciasMock objects - Teste de código com dependências
Mock objects - Teste de código com dependências
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por Testes
 
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NETASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET
 
TechEd Brasil 2010 - Novidades e razões para migrar para o microsoft .net fra...
TechEd Brasil 2010 - Novidades e razões para migrar para o microsoft .net fra...TechEd Brasil 2010 - Novidades e razões para migrar para o microsoft .net fra...
TechEd Brasil 2010 - Novidades e razões para migrar para o microsoft .net fra...
 
Gof design patterns
Gof design patternsGof design patterns
Gof design patterns
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToys
 
C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e django
 
Testando aplicações DataSnap
Testando aplicações DataSnapTestando aplicações DataSnap
Testando aplicações DataSnap
 
ASP.Net MVC 3 - o que há de novo (TechEd)
ASP.Net MVC 3 - o que há de novo (TechEd)ASP.Net MVC 3 - o que há de novo (TechEd)
ASP.Net MVC 3 - o que há de novo (TechEd)
 
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET (Agosto/2015)
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET (Agosto/2015)ASP.NET 5 - Novidades do Desenvolvimento Web em .NET (Agosto/2015)
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET (Agosto/2015)
 

Mais de Renato Groff

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

Mais de Renato Groff (20)

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

Mocking Test - Outubro/2015

  • 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 5) / Visual Studio Community 2015  Moq  NSubstitute  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  Mocking Test  Implementação de um exemplo prático em .NET
  • 6.
  • 7.
  • 8.
  • 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)
  • 14.
  • 15.  Teste de aceitação → User story que serve de base para a implementação de uma funcionalidade e posterior validação da mesma
  • 16.
  • 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
  • 18.
  • 19.
  • 20.  Fake objects → implementações para a geração de objetos necessários, porém descartadas em produção  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 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.  NSubstitute ◦ Framework também open source ◦ Alternativa ao uso do Moq, com um funcionamento bastante semelhante ao deste último
  • 23.  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
  • 24.  Representação esquemática das classes a serem utilizadas:
  • 25.  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
  • 26.  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
  • 27.  Alguns exemplos sobre como configurar um Mock Object (uma referência mais completa pode ser encontra no site do Moq):
  • 28.  Estruturas definidas no namespace NSubstitute  Também importar no projeto de testes o package deste framework que se encontra no NuGet  Também empregado em conjunto com frameworks como MS Test, Nunit, xUnit.net, SpecFlow
  • 29.  Utilizar o método genérico For da classe Substitute em conjunto com o tipo a ser simulado (normalmente uma interface) ◦ Método Returns → retorno a ser devolvido pelo elemento que se está simulando (valor ou exceção)  O objeto retornado pelo método For será o mesmo que servirá de base para a simulação de um comportamento
  • 30.  Exemplo sobre como configurar um Mock Object (uma referência mais completa pode ser encontra no site do NSubstitute):
  • 31.  Link para download da solução de exemplo: https://gallery.technet.microsoft.com/Exemplo-de-utilizao-dos-9537c977
  • 33.  Mocks não são Stubs http://www.infoq.com/br/articles/mocks-Arent-Stubs  Moq – Quickstart https://github.com/Moq/moq4/wiki/Quickstart  NSubstitute: Docs and getting help  http://nsubstitute.github.io/help.html  Unit Testing with Mock Objects https://msdn.microsoft.com/en-us/library/ff650441.aspx