SlideShare uma empresa Scribd logo
1 de 27
Os benefícios dos testes
no desenvolvimento de
software
MÁRCIO ROGÉRIO NIZZOLA
Apresentação
Proc. De Dados - 1989
Técnico em Proc. de Dados – 91-92
Análise de Sistemas – 94-98
MBA em Gestão de Projetos – 2013
Licenciatura para docência- 2016
Dev Sênior - Dextra
E Professor na Etec Itu
Principais Tecnologias aprendidas:
DBase, Basic, Clipper, C,
Pascal, Cobol, Visual Basic, Delphi,
Asp, C#, PHP, Java, Javascript, ASP.NET,
ASP.NET MVC, Visual Basic .NET.
Como era
desenvolver
software há
um tempo
atrás ?
Como se aprendia
desenvolver
software?
Após cumprir todas as
etapas é que o cliente
teria contato com o
produto, e nem sempre
este atendia à todas as
expectativas iniciais.
Os testes eram feitos
depois de realizada a
programação !
Quando eram feitos !
Como era a
entrega
destes
softwares?
 Requisitos elaborados
nem sempre eram o
que se precisava.
 Havia muitos bugs.
 Era comum ter que
modificar muitos itens
após a entrega e lançar
novas versões.
 O famoso "ah, mas na
minha máquina isso deu
certo"
Havia muito planejamento
Alguma coisa
estava errada
naquele modelo !
Eis que surgem as
metodologias
ágeis !
Tudo mudou no
desenvolvimento
a partir daí
Entregas mais rápidas
Software mais flexível
Melhor qualidade
Maior aderência aos processos
Gerenciamento de riscos
Maior flexibilidade e resposta rápida à
mudanças
Como garantir a
qualidade em
meio à mudança
contínua no
software?
Afinal o que
é TDD ?
Uma técnica para
construção de
software que guia
o desenvolvimento
de software através
da escrita de
testes.
Kent Beck
As 3 leis do TDD
1) Você não pode escrever nenhum código até ter escrito
um teste que detecte uma possível falha.
Não devemos sair escrevendo o que vem à cabeça, nem
devemos escrever algo somente para que passe nos testes.
Por isso os testes vêm primeiro !
As 3 leis do TDD
2) Você não pode escrever mais testes de unidade do que o
suficiente para detectar a falha.
Devemos pensar com clareza sobre o que deve ser escrito,
testes também são código.
Se escrevermos testes errados, faremos códigos errados, se
escrevermos testes demais, acabaremos escrevendo código
demais.
As 3 leis do TDD
Os testes devem vir sempre antes do código, quando
escrevemos mais código do que o necessário, acabamos
por escrever códigos que não serão testados ou pior,
escreveremos testes para passar no nosso código.
3) Você não pode escrever mais código do que o
suficiente para passar nos testes.
Trata-se mais de
mudança na forma que
resolvemos um
problema
Fomos educados a
desenvolver software
com o pensamento
design-codificação-
testes.
Mas o TDD inverte esse
ciclo para testes-
codificação-design.
Principal
conceito
do TDD
TFD – Test First Development
Agora é hora de ver alguns exemplos
Para nossos testes utilizamos:
.NET CORE
XUnit.Net
Fluent Validation
NBuilder
O que é xUnit.Net
Ferramenta gratuita e de código aberto construída para o .NET .
Serve para auxiliar na construção e execução de testes unitários.
Os métodos criados nas classes de teste devem possuir um dos dois atributos:
[Fact] = um método de teste que não tem parâmetros.
[Theory] = espera que haja um ou mais parâmetros que forneçam os valores para
rodar o teste com valores diferentes.
O que é Fluent Validation
Biblioteca de validação para .NET que usa uma interface
fluente e expressões lambdas para criar regras de
validação.
https://fluentvalidation.net
O que é NBuilder
Uma biblioteca que permite criar dados reais para teste,
de forma fluente.
Propriedades e campos públicos são preenchidos com
valores automaticamente.
Além disso, permite mudar o conteúdo de campos
específicos facilmente de forma manual.
https://www.nuget.org/packages/NBuilder/
Benefícios e Desvantagens
Vantagens:
- qualidade de codigo
- melhor lógica
- menos bugs
- segurança
- documentação
Desvantagens:
- tempo
- curva de aprendizado
- mais testes
- percepção de menor
produção
O que dizem as pesquisas :
Em um experimento da Microsoft com 2 equipes diferentes, o uso de
TDD proporcionou 100% de aumento na qualidade do projeto em
relação ao TDD realizado depois.
O aumento no tempo de escrita no TDD first foi de 15%.
Em um estudo de 1 ano realizado pela IBM houve 40% menos defeitos
nos produtos desenvolvidos com o uso de TDD.
O que dizem as pesquisas :
O tempo de desenvolvimento da equipe
que faz testes normalmente é maior!
Isto é, ocorre uma aparente “queda” na
produtividade.
Mas em longo prazo, gasta-
se menos tempo com bugs, testes
e implementação de novas funcionali
dades !
Vantagens na utilização do Test First
 melhor compreensão do problema: criação de cenários prévios
 foco na tarefa: concentração em resolver pequenas partes do
problema
 rapidez no aprendizado: código confiável pronto mais cedo
 menor retrabalho: criar testes depois exige as vezes desacoplar
elementos e alterá-los
Problemas do Test Last
 over engineering - escrever código para coisas que não serão
necessárias.
 risco de não escrever os testes ao final, já que tudo "funciona"
 a cobertura para falhas fica menor, portanto será necessário
cobertura por outras ferramentas de QA.
Qual foi a minha experiência
 Alinhamento com PO e QA para conhecimento de todas as
regras de testes antes de desenvolver foi essencial.
 Menor tempo para correção de erros.
 Simplificação do código.
 Impactos das mudanças posteriores no código foram
validadas simplesmente rodando os testes.
 Testes falhos impediram o deploy e publicação de versão
através de validação dos testes no processo de entrega
contínua.
Perguntas ?
Vamos começar a usar os testes ?
Não vamos parar por aí
Vamos manter contato !
 www.linkedin.com/in/nizzola
 github.com/nizzola
 medium.com/@marcionizzola
 marcio@nizzola.com.br
Obrigado pela
participação !

Mais conteúdo relacionado

Mais procurados

Porque você precisa de uma estratégia de QA e precisa disso AGORA!
Porque você precisa de uma estratégia de QA e precisa disso AGORA!Porque você precisa de uma estratégia de QA e precisa disso AGORA!
Porque você precisa de uma estratégia de QA e precisa disso AGORA!Daniel Carvalhinho
 
TDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao testeTDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao testeRafaela Prado
 
Desenvolvimento de software mundo ideal x mundo real
Desenvolvimento de software  mundo ideal x mundo realDesenvolvimento de software  mundo ideal x mundo real
Desenvolvimento de software mundo ideal x mundo realWilly Salazar
 
Desenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realDesenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realHenrique Schmidt
 
XP Programming
XP ProgrammingXP Programming
XP ProgrammingCJR, UnB
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do MantraDionatan default
 
TDD para "meros mortais"
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"thiagobapt
 
1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de softwareHeider Lopes
 
Programe a eficácia do seu código
Programe a eficácia do seu códigoPrograme a eficácia do seu código
Programe a eficácia do seu códigoAna Claudia Nogueira
 
Desenvolvimento Orientado a Testes
Desenvolvimento Orientado a TestesDesenvolvimento Orientado a Testes
Desenvolvimento Orientado a TestesAndre Carlucci
 
Facilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHPFacilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHPPedro Chaves
 
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Developer Academy
 
Gerenciando Testes Com Qualidade V2a
Gerenciando Testes Com Qualidade V2aGerenciando Testes Com Qualidade V2a
Gerenciando Testes Com Qualidade V2aLeonardo Molinari
 
Como TDD pode influenciar na construção do seu Produto?
Como TDD pode influenciar na construção do seu Produto?Como TDD pode influenciar na construção do seu Produto?
Como TDD pode influenciar na construção do seu Produto?Raphael Paiva
 

Mais procurados (20)

Porque você precisa de uma estratégia de QA e precisa disso AGORA!
Porque você precisa de uma estratégia de QA e precisa disso AGORA!Porque você precisa de uma estratégia de QA e precisa disso AGORA!
Porque você precisa de uma estratégia de QA e precisa disso AGORA!
 
TDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao testeTDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao teste
 
Desenvolvimento de software mundo ideal x mundo real
Desenvolvimento de software  mundo ideal x mundo realDesenvolvimento de software  mundo ideal x mundo real
Desenvolvimento de software mundo ideal x mundo real
 
Desenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realDesenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo real
 
XP Programming
XP ProgrammingXP Programming
XP Programming
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do Mantra
 
Tdd na veia
Tdd na veiaTdd na veia
Tdd na veia
 
Teste automatizados e tdd
Teste automatizados e tddTeste automatizados e tdd
Teste automatizados e tdd
 
TDD para "meros mortais"
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software
 
Programe a eficácia do seu código
Programe a eficácia do seu códigoPrograme a eficácia do seu código
Programe a eficácia do seu código
 
Desenvolvimento Orientado a Testes
Desenvolvimento Orientado a TestesDesenvolvimento Orientado a Testes
Desenvolvimento Orientado a Testes
 
Facilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHPFacilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHP
 
Instituto Stela S&T#001, Projeto de software com testes unitários
Instituto Stela S&T#001, Projeto de software com testes unitáriosInstituto Stela S&T#001, Projeto de software com testes unitários
Instituto Stela S&T#001, Projeto de software com testes unitários
 
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
 
eXtreme Programming
eXtreme ProgrammingeXtreme Programming
eXtreme Programming
 
Gerenciando Testes Com Qualidade V2a
Gerenciando Testes Com Qualidade V2aGerenciando Testes Com Qualidade V2a
Gerenciando Testes Com Qualidade V2a
 
BDD em Ação
BDD em AçãoBDD em Ação
BDD em Ação
 
Como TDD pode influenciar na construção do seu Produto?
Como TDD pode influenciar na construção do seu Produto?Como TDD pode influenciar na construção do seu Produto?
Como TDD pode influenciar na construção do seu Produto?
 

Semelhante a Os benefícios do TDD

UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27Hélio Medeiros
 
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ândiaRogerio Fontes
 
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de SoftwarePesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de SoftwareAdolfo Neto
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme ProgrammingRodrigo Branas
 
Tdd not sure if testing or developing
Tdd  not sure if testing or developingTdd  not sure if testing or developing
Tdd not sure if testing or developingRenato Oliveira
 
Desenvolvimento Guiado por Testes
Desenvolvimento Guiado por TestesDesenvolvimento Guiado por Testes
Desenvolvimento Guiado por Testeselliando dias
 
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 PHPUnitDomingos Teruel
 
Greenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresaGreenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresaRafael Ponte
 
Desenvolvimento dirigido por comportamento e por teste
Desenvolvimento dirigido por comportamento e por testeDesenvolvimento dirigido por comportamento e por teste
Desenvolvimento dirigido por comportamento e por testeUniversidade Tiradentes
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 

Semelhante a Os benefícios do TDD (20)

UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27
 
Tdd x testes unidades
Tdd x testes unidadesTdd x testes unidades
Tdd x testes unidades
 
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
 
TDD
TDDTDD
TDD
 
Aula 4- Engenharia de Software
Aula 4- Engenharia de SoftwareAula 4- Engenharia de Software
Aula 4- Engenharia de Software
 
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de SoftwarePesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme Programming
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 
Tdd not sure if testing or developing
Tdd  not sure if testing or developingTdd  not sure if testing or developing
Tdd not sure if testing or developing
 
Desenvolvimento Guiado por Testes
Desenvolvimento Guiado por TestesDesenvolvimento Guiado por Testes
Desenvolvimento Guiado por Testes
 
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
 
Desenvolvimento Guiado Por Testes
Desenvolvimento Guiado Por TestesDesenvolvimento Guiado Por Testes
Desenvolvimento Guiado Por Testes
 
Dba Testes Gerentes B2
Dba Testes Gerentes B2Dba Testes Gerentes B2
Dba Testes Gerentes B2
 
Teste Driven Development
Teste Driven DevelopmentTeste Driven Development
Teste Driven Development
 
Greenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresaGreenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresa
 
Subm_SamuelPereira_FINAL
Subm_SamuelPereira_FINALSubm_SamuelPereira_FINAL
Subm_SamuelPereira_FINAL
 
Qualidade e Testes de Software
Qualidade e Testes de SoftwareQualidade e Testes de Software
Qualidade e Testes de Software
 
Desenvolvimento dirigido por comportamento e por teste
Desenvolvimento dirigido por comportamento e por testeDesenvolvimento dirigido por comportamento e por teste
Desenvolvimento dirigido por comportamento e por teste
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 

Mais de Dextra Sistemas / Etec Itu

Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu DevelopersDesenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu DevelopersDextra Sistemas / Etec Itu
 
VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET ...
VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET ...VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET ...
VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET ...Dextra Sistemas / Etec Itu
 
Tdc - Criando uma Minimal API para serviços de Geolocalização com SQL + C#
Tdc - Criando uma Minimal API para serviços de Geolocalização com SQL + C#Tdc - Criando uma Minimal API para serviços de Geolocalização com SQL + C#
Tdc - Criando uma Minimal API para serviços de Geolocalização com SQL + C#Dextra Sistemas / Etec Itu
 
Tdc Future 2021 - simples soluções grandes resultados - Márcio Rogério Nizzola
Tdc Future 2021 - simples soluções grandes resultados - Márcio Rogério NizzolaTdc Future 2021 - simples soluções grandes resultados - Márcio Rogério Nizzola
Tdc Future 2021 - simples soluções grandes resultados - Márcio Rogério NizzolaDextra Sistemas / Etec Itu
 
Mvp conf 2021 - Criando uma Minimal API para serviços de Geolocalização com S...
Mvp conf 2021 - Criando uma Minimal API para serviços de Geolocalização com S...Mvp conf 2021 - Criando uma Minimal API para serviços de Geolocalização com S...
Mvp conf 2021 - Criando uma Minimal API para serviços de Geolocalização com S...Dextra Sistemas / Etec Itu
 

Mais de Dextra Sistemas / Etec Itu (6)

Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu DevelopersDesenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
 
VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET ...
VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET ...VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET ...
VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET ...
 
Usando Docker no desenvolvimento .NET
Usando Docker no desenvolvimento .NETUsando Docker no desenvolvimento .NET
Usando Docker no desenvolvimento .NET
 
Tdc - Criando uma Minimal API para serviços de Geolocalização com SQL + C#
Tdc - Criando uma Minimal API para serviços de Geolocalização com SQL + C#Tdc - Criando uma Minimal API para serviços de Geolocalização com SQL + C#
Tdc - Criando uma Minimal API para serviços de Geolocalização com SQL + C#
 
Tdc Future 2021 - simples soluções grandes resultados - Márcio Rogério Nizzola
Tdc Future 2021 - simples soluções grandes resultados - Márcio Rogério NizzolaTdc Future 2021 - simples soluções grandes resultados - Márcio Rogério Nizzola
Tdc Future 2021 - simples soluções grandes resultados - Márcio Rogério Nizzola
 
Mvp conf 2021 - Criando uma Minimal API para serviços de Geolocalização com S...
Mvp conf 2021 - Criando uma Minimal API para serviços de Geolocalização com S...Mvp conf 2021 - Criando uma Minimal API para serviços de Geolocalização com S...
Mvp conf 2021 - Criando uma Minimal API para serviços de Geolocalização com S...
 

Os benefícios do TDD

  • 1. Os benefícios dos testes no desenvolvimento de software MÁRCIO ROGÉRIO NIZZOLA
  • 2. Apresentação Proc. De Dados - 1989 Técnico em Proc. de Dados – 91-92 Análise de Sistemas – 94-98 MBA em Gestão de Projetos – 2013 Licenciatura para docência- 2016 Dev Sênior - Dextra E Professor na Etec Itu Principais Tecnologias aprendidas: DBase, Basic, Clipper, C, Pascal, Cobol, Visual Basic, Delphi, Asp, C#, PHP, Java, Javascript, ASP.NET, ASP.NET MVC, Visual Basic .NET.
  • 4. Como se aprendia desenvolver software? Após cumprir todas as etapas é que o cliente teria contato com o produto, e nem sempre este atendia à todas as expectativas iniciais. Os testes eram feitos depois de realizada a programação ! Quando eram feitos !
  • 5. Como era a entrega destes softwares?  Requisitos elaborados nem sempre eram o que se precisava.  Havia muitos bugs.  Era comum ter que modificar muitos itens após a entrega e lançar novas versões.  O famoso "ah, mas na minha máquina isso deu certo" Havia muito planejamento
  • 6. Alguma coisa estava errada naquele modelo ! Eis que surgem as metodologias ágeis !
  • 7. Tudo mudou no desenvolvimento a partir daí Entregas mais rápidas Software mais flexível Melhor qualidade Maior aderência aos processos Gerenciamento de riscos Maior flexibilidade e resposta rápida à mudanças Como garantir a qualidade em meio à mudança contínua no software?
  • 8. Afinal o que é TDD ? Uma técnica para construção de software que guia o desenvolvimento de software através da escrita de testes. Kent Beck
  • 9. As 3 leis do TDD 1) Você não pode escrever nenhum código até ter escrito um teste que detecte uma possível falha. Não devemos sair escrevendo o que vem à cabeça, nem devemos escrever algo somente para que passe nos testes. Por isso os testes vêm primeiro !
  • 10. As 3 leis do TDD 2) Você não pode escrever mais testes de unidade do que o suficiente para detectar a falha. Devemos pensar com clareza sobre o que deve ser escrito, testes também são código. Se escrevermos testes errados, faremos códigos errados, se escrevermos testes demais, acabaremos escrevendo código demais.
  • 11. As 3 leis do TDD Os testes devem vir sempre antes do código, quando escrevemos mais código do que o necessário, acabamos por escrever códigos que não serão testados ou pior, escreveremos testes para passar no nosso código. 3) Você não pode escrever mais código do que o suficiente para passar nos testes.
  • 12. Trata-se mais de mudança na forma que resolvemos um problema Fomos educados a desenvolver software com o pensamento design-codificação- testes. Mas o TDD inverte esse ciclo para testes- codificação-design.
  • 14. TFD – Test First Development
  • 15. Agora é hora de ver alguns exemplos Para nossos testes utilizamos: .NET CORE XUnit.Net Fluent Validation NBuilder
  • 16. O que é xUnit.Net Ferramenta gratuita e de código aberto construída para o .NET . Serve para auxiliar na construção e execução de testes unitários. Os métodos criados nas classes de teste devem possuir um dos dois atributos: [Fact] = um método de teste que não tem parâmetros. [Theory] = espera que haja um ou mais parâmetros que forneçam os valores para rodar o teste com valores diferentes.
  • 17. O que é Fluent Validation Biblioteca de validação para .NET que usa uma interface fluente e expressões lambdas para criar regras de validação. https://fluentvalidation.net
  • 18. O que é NBuilder Uma biblioteca que permite criar dados reais para teste, de forma fluente. Propriedades e campos públicos são preenchidos com valores automaticamente. Além disso, permite mudar o conteúdo de campos específicos facilmente de forma manual. https://www.nuget.org/packages/NBuilder/
  • 19. Benefícios e Desvantagens Vantagens: - qualidade de codigo - melhor lógica - menos bugs - segurança - documentação Desvantagens: - tempo - curva de aprendizado - mais testes - percepção de menor produção
  • 20. O que dizem as pesquisas : Em um experimento da Microsoft com 2 equipes diferentes, o uso de TDD proporcionou 100% de aumento na qualidade do projeto em relação ao TDD realizado depois. O aumento no tempo de escrita no TDD first foi de 15%. Em um estudo de 1 ano realizado pela IBM houve 40% menos defeitos nos produtos desenvolvidos com o uso de TDD.
  • 21. O que dizem as pesquisas : O tempo de desenvolvimento da equipe que faz testes normalmente é maior! Isto é, ocorre uma aparente “queda” na produtividade. Mas em longo prazo, gasta- se menos tempo com bugs, testes e implementação de novas funcionali dades !
  • 22. Vantagens na utilização do Test First  melhor compreensão do problema: criação de cenários prévios  foco na tarefa: concentração em resolver pequenas partes do problema  rapidez no aprendizado: código confiável pronto mais cedo  menor retrabalho: criar testes depois exige as vezes desacoplar elementos e alterá-los
  • 23. Problemas do Test Last  over engineering - escrever código para coisas que não serão necessárias.  risco de não escrever os testes ao final, já que tudo "funciona"  a cobertura para falhas fica menor, portanto será necessário cobertura por outras ferramentas de QA.
  • 24. Qual foi a minha experiência  Alinhamento com PO e QA para conhecimento de todas as regras de testes antes de desenvolver foi essencial.  Menor tempo para correção de erros.  Simplificação do código.  Impactos das mudanças posteriores no código foram validadas simplesmente rodando os testes.  Testes falhos impediram o deploy e publicação de versão através de validação dos testes no processo de entrega contínua.
  • 26. Vamos começar a usar os testes ?
  • 27. Não vamos parar por aí Vamos manter contato !  www.linkedin.com/in/nizzola  github.com/nizzola  medium.com/@marcionizzola  marcio@nizzola.com.br Obrigado pela participação !