SlideShare uma empresa Scribd logo
1 de 23
Criando Arquitetura
Testável
Do Back ao Front
Cleiton Felipe de Moraes
AGENDA
• QUEM SOU EU?
• O QUE É UMA ARQUITETURATESTÁVEL?
• TIPOS DETESTES
• TDD (TEST DRIVEN DEVELOPMENT)
• PIRÂMIDE DE AUTOMAÇÃO DETESTES
• PORQUE DEVEMOS FAZER ISSO?
Quem sou eu
• Cleiton Felipe de Moraes
• Software Engineer na GFT
• +|- 10 anos de experiência em
desenvolvimento de software
• Sou um pai do Pedro (anjo azul),
casado, sorocabano que mora em
Curitiba e torce para o Cruzeiro
• Sou nerd e já fui graffiteiro e
skatista...
• Trabalho com desenvolvimento
desde 2009 e já trabalhei com
várias tecnologias como Java, PHP,
ASP Clássico e hoje sou focado na
plataforma .Net
(Web/Desktop/Mobile/Server) e
Azure e estudando GCP e AWS..
O que é uma
arquitetura
testável?
S O
L I
D
T
DD
B D D
SOFTWARE
O
O
P
TIPOS DETESTES...
 Testes de Unidade
 Testes de
Integração
 Testes de
componentes
 Testes de Serviços
 Testes de
Interfaces
Teste Funcional
Teste de Aceitação
SmokeTests
Teste Exploratório
Testes de
Automatizados
Testes Semi-
Automatizados
Testes Manuais
TDD (Test Driven-Development)
TDD é o acrônimo deTest Driven-Development ou em português Desenvolvimento guiado pelos
testes.
Em um resumoTDD é o modelo de desenvolvimento onde primeiramente escrevemos os testes
antes mesmo de desenvolvermos a funcionalidade que vai ser testada.
Hã?
TDD (Test Driven-Development)
• Confuso neh?
• Vamos melhor isso....
• TDD é uma técnica de desenvolvimento onde constantemente verificamos e validamos
cada função, método ou parte do sistema que estamos fazendo, focando principalmente
em implementar cada funcionalidade com mais coesão e menos complexidade.
• Escrevemos um “teste” bem coeso e direto e implementamos a funcionalidade para
atender aquele teste.
TDD (Test Driven-Development)
• O fluxo doTDD segue o principio de Red-Green-Refactor
• Baby-Steps
TDD (Test Driven-Development)
• Funcionalidades fazendo aquilo que realmente ela deve fazer.
• Principio SOLID e OOP bem aplicados.
• Se enquadra muito bem com DevOps
• Desenvolvedores entendendo melhor o negócio
• Menor numero de bugs
• Menos vai e volta de tarefas
• Menor custo
• Mais qualidade nas entregas
MitosTDD
• Dobro de esforço
• Desenvolvimento mais lento
• Impossível escrever testes
sem saber o design da
aplicação
• Escrever toda a suíte de teste
antes de começar a codificar
PIRÂMIDE DE AUTOMAÇÃO DETESTES
UITEST
Service/Acceptance
Test
UnitTests
ManualTest
UITEST
Service/Acceptance
Test
UnitTests
ManualTest
Custo
Numerodetestes
UnitTest
 Verifica a unidade
 Dependências mockadas
 Testes isolados
ServiceTest
 Verifica a funcionalidade
 Cobertura dos serviços
 Testado isoladamente
UITest
 Verifica toda a funcionalidade
 Alto custo
 Fácil de quebrar
 Dever ser mínimo
ManualTest
 Testado a mão
 Muito caro
 Usar aonde achar apropriado
 Dever ser mínimo
AcceptanceTest
 Verifica a funcionalidade
 Usa a linguagem de negócio
 Critérios para completude
 Todos os testes são problematicos
Demo
Porque devemos fazer isso?
 Prós
 Fácil deTestar
 Melhora o design
 Elimina os medos
 Contras
 TDD requer disciplina
 Maior custo inicial
 O time precisa comprar a
ideia
Dúvidas
Referências
• Test-Driven Development (Maurício Aniche – Casa do
Código)
• Test-Driven Development by Example – Kent Beck
• Site do Martin Fowler (https://martinfowler.com/)
• Site do Robert C.Martin “Uncle Bob”
(https://blog.cleancoder.com/)
• E muito mais...
• Pluralsight: CursoClean Architecture – Principle and
Practices
Contato
Cleiton Felipe de Moraes
Software Engineer
Cleiton.De-Moraes@gft.com
Omehe.Cleiton@Hotmail.com
https://github.com/cleitonfelipe /
https://medium.com/@cleiton_felipe

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

DevOps, NoOps...afinal que raios é isso?
DevOps, NoOps...afinal que raios é isso?DevOps, NoOps...afinal que raios é isso?
DevOps, NoOps...afinal que raios é isso?
 
DevOps Apresentação Encontro Rational 2013
DevOps Apresentação Encontro Rational 2013DevOps Apresentação Encontro Rational 2013
DevOps Apresentação Encontro Rational 2013
 
Da Integração à Entrega Contínua
Da Integração à Entrega ContínuaDa Integração à Entrega Contínua
Da Integração à Entrega Contínua
 
Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...
Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...
Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...
 
DrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian Ferrari
DrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian FerrariDrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian Ferrari
DrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian Ferrari
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
 
DevOps Days SP 2019
DevOps Days SP 2019DevOps Days SP 2019
DevOps Days SP 2019
 
Continuous delivery
Continuous deliveryContinuous delivery
Continuous delivery
 
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia IIDevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
 
Implementando Entrega Contínua
Implementando Entrega ContínuaImplementando Entrega Contínua
Implementando Entrega Contínua
 
Continuous delivery
Continuous deliveryContinuous delivery
Continuous delivery
 
DevOps: princípios e práticas para a Entrega Contínua
DevOps: princípios e práticas para a Entrega ContínuaDevOps: princípios e práticas para a Entrega Contínua
DevOps: princípios e práticas para a Entrega Contínua
 
Apresentacao dev ops
Apresentacao dev opsApresentacao dev ops
Apresentacao dev ops
 
9 Válvulas da produtividade de Software
9 Válvulas da produtividade de Software9 Válvulas da produtividade de Software
9 Válvulas da produtividade de Software
 
Entrega Contínua e Aplicações em Produção
Entrega Contínua e Aplicações em ProduçãoEntrega Contínua e Aplicações em Produção
Entrega Contínua e Aplicações em Produção
 
Workshop ietec Devops Testing
Workshop ietec Devops TestingWorkshop ietec Devops Testing
Workshop ietec Devops Testing
 
Agile Trends Gov 2017 - Do repositório à producao
Agile Trends Gov 2017 - Do repositório à producaoAgile Trends Gov 2017 - Do repositório à producao
Agile Trends Gov 2017 - Do repositório à producao
 
Introdução a DevOps e Continuous delivery agileday
Introdução a DevOps e Continuous delivery   agiledayIntrodução a DevOps e Continuous delivery   agileday
Introdução a DevOps e Continuous delivery agileday
 
AGILIDADE em TI - FATEC SP
AGILIDADE em TI - FATEC SPAGILIDADE em TI - FATEC SP
AGILIDADE em TI - FATEC SP
 
Continuous delivery principios e praticas - Knowledge21
Continuous delivery   principios e praticas - Knowledge21Continuous delivery   principios e praticas - Knowledge21
Continuous delivery principios e praticas - Knowledge21
 

Semelhante a Criando uma Arquitetura Testável

Como funciona uma empresa ágil de desenvolvimento de software
Como funciona uma empresa ágil de desenvolvimento de softwareComo funciona uma empresa ágil de desenvolvimento de software
Como funciona uma empresa ágil de desenvolvimento de software
Elvis Lima
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Domingos Teruel
 

Semelhante a Criando uma Arquitetura Testável (20)

Xamarin UI Test + BDD Specflow
Xamarin UI Test + BDD SpecflowXamarin UI Test + BDD Specflow
Xamarin UI Test + BDD Specflow
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
Como funciona uma empresa ágil de desenvolvimento de software
Como funciona uma empresa ágil de desenvolvimento de softwareComo funciona uma empresa ágil de desenvolvimento de software
Como funciona uma empresa ágil de desenvolvimento de software
 
BDD com Xamarin UI Test e Specflow
BDD com Xamarin UI Test e SpecflowBDD com Xamarin UI Test e Specflow
BDD com Xamarin UI Test e Specflow
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do Mantra
 
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
 
Sobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaSobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis Uberlândia
 
Pensando TDD
Pensando TDDPensando TDD
Pensando TDD
 
RealDay: Introduction to TDD
RealDay: Introduction to TDDRealDay: Introduction to TDD
RealDay: Introduction to TDD
 
Boas práticas de desenvolvimento Ágil
Boas práticas de desenvolvimento ÁgilBoas práticas de desenvolvimento Ágil
Boas práticas de desenvolvimento Ágil
 
Os Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de softwareOs Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de software
 
BDD e TDD na prática com SpecFlow e Visual Studio 2012
BDD e TDD na prática com SpecFlow e Visual Studio 2012BDD e TDD na prática com SpecFlow e Visual Studio 2012
BDD e TDD na prática com SpecFlow e Visual Studio 2012
 
UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por Testes
 
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOpsComo automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Engenharia Ágil
Engenharia ÁgilEngenharia Ágil
Engenharia Ágil
 
TDD e UnitTest em Java
TDD e UnitTest em JavaTDD e UnitTest em Java
TDD e UnitTest em Java
 
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnit
 

Mais de Cleiton Felipe Moraes

Mais de Cleiton Felipe Moraes (10)

Xamarin UI Test + Specflow TDC
Xamarin UI Test + Specflow TDCXamarin UI Test + Specflow TDC
Xamarin UI Test + Specflow TDC
 
Minha App com Analise de Sentimentos...Pode isso?
Minha App com Analise de Sentimentos...Pode isso?Minha App com Analise de Sentimentos...Pode isso?
Minha App com Analise de Sentimentos...Pode isso?
 
Utilizando BDD com Specflow e Selenium para testes Web MSP Tech Day Curitiba
Utilizando BDD com Specflow e Selenium para testes Web MSP Tech Day CuritibaUtilizando BDD com Specflow e Selenium para testes Web MSP Tech Day Curitiba
Utilizando BDD com Specflow e Selenium para testes Web MSP Tech Day Curitiba
 
Entendendo o que é o Xamarin e desenvolvendo sua primeira app - Meetup Xamari...
Entendendo o que é o Xamarin e desenvolvendo sua primeira app - Meetup Xamari...Entendendo o que é o Xamarin e desenvolvendo sua primeira app - Meetup Xamari...
Entendendo o que é o Xamarin e desenvolvendo sua primeira app - Meetup Xamari...
 
Xamarin UI Test e VS Mobile Center
Xamarin UI Test e VS Mobile CenterXamarin UI Test e VS Mobile Center
Xamarin UI Test e VS Mobile Center
 
Entendendo o Xamarin UiTest no TDC
Entendendo o Xamarin UiTest no TDCEntendendo o Xamarin UiTest no TDC
Entendendo o Xamarin UiTest no TDC
 
Bdd-Visual Studio Summit 2015
Bdd-Visual Studio Summit 2015Bdd-Visual Studio Summit 2015
Bdd-Visual Studio Summit 2015
 
Azure blob xamarin-tdc2016
Azure blob xamarin-tdc2016Azure blob xamarin-tdc2016
Azure blob xamarin-tdc2016
 
Reconhecimento de voz no Windows Phone
Reconhecimento de voz no Windows PhoneReconhecimento de voz no Windows Phone
Reconhecimento de voz no Windows Phone
 
Desenvolvimento para windows phone
Desenvolvimento para windows phoneDesenvolvimento para windows phone
Desenvolvimento para windows phone
 

Último

Último (8)

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 

Criando uma Arquitetura Testável

  • 1. Criando Arquitetura Testável Do Back ao Front Cleiton Felipe de Moraes
  • 2. AGENDA • QUEM SOU EU? • O QUE É UMA ARQUITETURATESTÁVEL? • TIPOS DETESTES • TDD (TEST DRIVEN DEVELOPMENT) • PIRÂMIDE DE AUTOMAÇÃO DETESTES • PORQUE DEVEMOS FAZER ISSO?
  • 3. Quem sou eu • Cleiton Felipe de Moraes • Software Engineer na GFT • +|- 10 anos de experiência em desenvolvimento de software • Sou um pai do Pedro (anjo azul), casado, sorocabano que mora em Curitiba e torce para o Cruzeiro • Sou nerd e já fui graffiteiro e skatista... • Trabalho com desenvolvimento desde 2009 e já trabalhei com várias tecnologias como Java, PHP, ASP Clássico e hoje sou focado na plataforma .Net (Web/Desktop/Mobile/Server) e Azure e estudando GCP e AWS..
  • 4. O que é uma arquitetura testável?
  • 5. S O L I D T DD B D D SOFTWARE O O P
  • 6. TIPOS DETESTES...  Testes de Unidade  Testes de Integração  Testes de componentes  Testes de Serviços  Testes de Interfaces Teste Funcional Teste de Aceitação SmokeTests Teste Exploratório Testes de Automatizados Testes Semi- Automatizados Testes Manuais
  • 7. TDD (Test Driven-Development) TDD é o acrônimo deTest Driven-Development ou em português Desenvolvimento guiado pelos testes. Em um resumoTDD é o modelo de desenvolvimento onde primeiramente escrevemos os testes antes mesmo de desenvolvermos a funcionalidade que vai ser testada. Hã?
  • 8. TDD (Test Driven-Development) • Confuso neh? • Vamos melhor isso.... • TDD é uma técnica de desenvolvimento onde constantemente verificamos e validamos cada função, método ou parte do sistema que estamos fazendo, focando principalmente em implementar cada funcionalidade com mais coesão e menos complexidade. • Escrevemos um “teste” bem coeso e direto e implementamos a funcionalidade para atender aquele teste.
  • 9. TDD (Test Driven-Development) • O fluxo doTDD segue o principio de Red-Green-Refactor • Baby-Steps
  • 10. TDD (Test Driven-Development) • Funcionalidades fazendo aquilo que realmente ela deve fazer. • Principio SOLID e OOP bem aplicados. • Se enquadra muito bem com DevOps • Desenvolvedores entendendo melhor o negócio • Menor numero de bugs • Menos vai e volta de tarefas • Menor custo • Mais qualidade nas entregas
  • 11. MitosTDD • Dobro de esforço • Desenvolvimento mais lento • Impossível escrever testes sem saber o design da aplicação • Escrever toda a suíte de teste antes de começar a codificar
  • 12. PIRÂMIDE DE AUTOMAÇÃO DETESTES UITEST Service/Acceptance Test UnitTests ManualTest
  • 14. UnitTest  Verifica a unidade  Dependências mockadas  Testes isolados
  • 15. ServiceTest  Verifica a funcionalidade  Cobertura dos serviços  Testado isoladamente
  • 16. UITest  Verifica toda a funcionalidade  Alto custo  Fácil de quebrar  Dever ser mínimo
  • 17. ManualTest  Testado a mão  Muito caro  Usar aonde achar apropriado  Dever ser mínimo
  • 18. AcceptanceTest  Verifica a funcionalidade  Usa a linguagem de negócio  Critérios para completude  Todos os testes são problematicos
  • 19. Demo
  • 20. Porque devemos fazer isso?  Prós  Fácil deTestar  Melhora o design  Elimina os medos  Contras  TDD requer disciplina  Maior custo inicial  O time precisa comprar a ideia
  • 22. Referências • Test-Driven Development (Maurício Aniche – Casa do Código) • Test-Driven Development by Example – Kent Beck • Site do Martin Fowler (https://martinfowler.com/) • Site do Robert C.Martin “Uncle Bob” (https://blog.cleancoder.com/) • E muito mais... • Pluralsight: CursoClean Architecture – Principle and Practices
  • 23. Contato Cleiton Felipe de Moraes Software Engineer Cleiton.De-Moraes@gft.com Omehe.Cleiton@Hotmail.com https://github.com/cleitonfelipe / https://medium.com/@cleiton_felipe