mocking test - codificando night weekend 2016

Download Mocking Test - Codificando Night Weekend 2016

If you can't read please download the document

Post on 13-Apr-2017

282 views

Category:

Software

0 download

Embed Size (px)

TRANSCRIPT

Universal Windows Platform

Mocking TestTestando o que parece impossvel de ser verificado

Renato Groffe

Microsoft Technical Audience Contributor (MTAC), MCP, MCTS, OCA, ITIL, COBIT Mais de 15 anos de experincia na rea de TecnologiaArticulista e Palestrante (Devmedia, .NET Magazine, Canal .NET, TechNet Wiki, .NET Coders, TI Selvagem, DotNetBaixada)ContatosFacebook: https://www.facebook.com/renatogroffSite: http://renatogroffe.net/Canal .NET: https://www.facebook.com/canaldotnetLinkedIn: http://br.linkedin.com/in/renatogroffe

Agenda

Cenrios comuns dentro do desenvolvimento de software

Testes automatizados: uma viso geral

Dificuldades tcnicas na implementao e execuo de testes automatizados

Mocking Test

Exemplos no Visual Studio 2015

Desenvolvimento de Software Cenrios comuns

Desenvolvimento Cenrios comuns

Presses por uma rpida entrega, prazos muito curtos

Desenvolvimento Cenrios comuns

Equipes reduzidas

Desenvolvimento Cenrios comuns

Mudanas frequentes em requisitos

Desenvolvimento Cenrios Comunsreas de Negcio e Tcnica nem sempre falam a mesma lngua

Desenvolvimento Cenrios comuns

Testes no so levados to a srio como se deveria

Como contornar estes problemas?

Como contornar estes problemas?

Metodologias geisXP (Extreme Programming) e Scrum so os exemplos mais famosos

Testes de unidade automatizadosValidaes em objetos e mtodos (unidades)

Alternativas na plataforma .NET:Visual Studio Unit Testing Framework (MS Test)NUnitxUnit.net

Como contornar estes problemas?TDD Test-Driven Development

Testes de unidade codificados antes mesmo da implementao das partes que sero submetidas a anlises

Evita-se assim a elaborao de testes viciados

Como contornar estes problemas?Ciclo de desenvolvimento em TDD testes automatizados executados em todos os estgios

Como contornar estes problemas?BDD Behavior-Driven Development

Testes baseados em user stories (histrias)

Vocabulrio compartilhado entre reas de negcio e tcnica (linguagem ubqua)

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 deUma User Story:

Como contornar estes problemas?Teste de aceitao em BDD User story que serve de base para a implementao de uma funcionalidade e posterior validao da mesma

Sempre ser fcil testar?

Dificuldades tcnicas comunsDependncias entre diferentes partes de um software

Inexistncia de ambientes com configuraes especficas para testes

Integraes com parceiros que no disponibilizam condies adequadas para testes

O teste de determinados recursos precisa esperar pela concluso de uma ou mais funcionalidades especficas

Como superar ento estas dificuldades?

Simulando...

Imitando...

Algumas solues para testes automatizadosImplementaes fake

Trechos de cdigo ou classes stub para a gerao dos objetos requeridos pelos testes

Estruturas normalmente descartadas em produo

Algumas solues para testes automatizados

Mock Objects

Estruturas que simulam objetos reais

Enfatizam a interao entre objetos (comportamento), prevendo inclusive possveis falhas de execuo

Frameworks simplificam a utilizao destas construes

Mocking Test em .NET

Moq

Framework open source

Simplifica a utilizao de Mocks na validao de solues construdas em .NET

Permite definir o retorno de mtodos, propriedades e at a gerao de excees em tempo de execuo

Dispensa a criao de Fakes e outras estruturas que seriam descartadas posteriormente

NSubstitute

Framework tambm 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....

Exemplos prticos

Caso de Estudo

Consulta a um servio de crdito (via CPF) status possveis:Parmetro de envio invlido (retorno de pendncias = null)Erro de comunicao (exceo retornada ao se invocar o servio)Pessoa fsica sem Pendncias (zero itens no retorno de pendncias) Pessoa fsica inadimplente (ao menos uma pendncia encontrada)

A ideia por trs do uso de Mock Objects nesta situao evitar consultas a um tipo de servio que pago as empresas que fornecem os dados no costumam disponibilizar ambientes para testes

Caso de Estudo

Caso de Estudo

Primeiro Exemplo NUnit + Moq

Segundo Exemplo MS Test + NSubstitute

Dvidas?

Obrigado!