Os Benefícios dos testes no desenvolvimento de software

Dextra Sistemas / Etec Itu
Dextra Sistemas / Etec ItuDesenvolvedor na Mega Sistemas Corporativos
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 !
1 de 27

Recomendados

TDD - Test Driven Development com JAVA por
TDD - Test Driven Development com JAVATDD - Test Driven Development com JAVA
TDD - Test Driven Development com JAVAPaulo Igor Alves Godinho
2.1K vistas53 diapositivas
TDD (Test-Driven Development) por
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)Renato Groff
3.8K vistas37 diapositivas
Introdução ao TDD (Test-Driven Development) - #guma10anos por
Introdução ao TDD (Test-Driven Development) - #guma10anosIntrodução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anosDionatan default
2.2K vistas83 diapositivas
Introdução ao TDD nas soluções Global AppCasting por
Introdução ao TDD nas soluções Global AppCastingIntrodução ao TDD nas soluções Global AppCasting
Introdução ao TDD nas soluções Global AppCastingPedro Pereira Martins
147 vistas23 diapositivas
Testando serviços aws localmente com Localstack e JUnit por
Testando serviços aws localmente com Localstack e JUnitTestando serviços aws localmente com Localstack e JUnit
Testando serviços aws localmente com Localstack e JUnitRodrigo Vieira
83 vistas18 diapositivas
TDD para Java EE por
TDD para Java EETDD para Java EE
TDD para Java EEDairton Bassi
1.7K vistas52 diapositivas

Más contenido relacionado

La actualidad más candente

Porque você precisa de uma estratégia de QA e precisa disso AGORA! por
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
409 vistas40 diapositivas
TDD Desenvolvimento orientado ao teste por
TDD Desenvolvimento orientado ao testeTDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao testeRafaela Prado
190 vistas13 diapositivas
Desenvolvimento de software mundo ideal x mundo real por
Desenvolvimento de software  mundo ideal x mundo realDesenvolvimento de software  mundo ideal x mundo real
Desenvolvimento de software mundo ideal x mundo realWilly Salazar
72 vistas51 diapositivas
Desenvolvimento de software: Mundo ideal x Mundo real por
Desenvolvimento de software: Mundo ideal x Mundo realDesenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realHenrique Schmidt
221 vistas51 diapositivas
XP Programming por
XP ProgrammingXP Programming
XP ProgrammingCJR, UnB
415 vistas20 diapositivas
TDD: A Essência do Mantra por
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do MantraDionatan default
1.4K vistas101 diapositivas

La actualidad más candente(20)

Porque você precisa de uma estratégia de QA e precisa disso AGORA! por Daniel Carvalhinho
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 Carvalhinho409 vistas
TDD Desenvolvimento orientado ao teste por Rafaela Prado
TDD Desenvolvimento orientado ao testeTDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao teste
Rafaela Prado190 vistas
Desenvolvimento de software mundo ideal x mundo real por Willy Salazar
Desenvolvimento de software  mundo ideal x mundo realDesenvolvimento de software  mundo ideal x mundo real
Desenvolvimento de software mundo ideal x mundo real
Willy Salazar72 vistas
Desenvolvimento de software: Mundo ideal x Mundo real por Henrique Schmidt
Desenvolvimento de software: Mundo ideal x Mundo realDesenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo real
Henrique Schmidt221 vistas
XP Programming por CJR, UnB
XP ProgrammingXP Programming
XP Programming
CJR, UnB415 vistas
TDD para "meros mortais" por thiagobapt
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"
thiagobapt1.1K vistas
1 2 3 - Testando - Automatizando os testes de software por Heider Lopes
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
Heider Lopes909 vistas
Desenvolvimento Orientado a Testes por Andre Carlucci
Desenvolvimento Orientado a TestesDesenvolvimento Orientado a Testes
Desenvolvimento Orientado a Testes
Andre Carlucci411 vistas
Facilitando o desenvolvimento orientado a testes em aplicações PHP por Pedro Chaves
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
Pedro Chaves591 vistas
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V... por Developer Academy
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 Academy140 vistas
Como TDD pode influenciar na construção do seu Produto? por Raphael Paiva
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 Paiva408 vistas

Similar a Os Benefícios dos testes no desenvolvimento de software

UnP Eng. Software - Aula 27 por
UnP Eng. Software - Aula 27UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27Hélio Medeiros
325 vistas30 diapositivas
Tdd x testes unidades por
Tdd x testes unidadesTdd x testes unidades
Tdd x testes unidadesSimone Pittner
545 vistas11 diapositivas
Sobre TDD - Tech Friday da Everis Uberlândia por
Sobre TDD - Tech Friday da Everis UberlândiaSobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaRogerio Fontes
66 vistas19 diapositivas
TDD por
TDDTDD
TDDJoão Victorino
392 vistas44 diapositivas
Aula 4- Engenharia de Software por
Aula 4- Engenharia de SoftwareAula 4- Engenharia de Software
Aula 4- Engenharia de SoftwareRudson Kiyoshi Souza Carvalho
827 vistas50 diapositivas
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software por
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
1.4K vistas93 diapositivas

Similar a Os Benefícios dos testes no desenvolvimento de software(20)

Sobre TDD - Tech Friday da Everis Uberlândia por Rogerio Fontes
Sobre TDD - Tech Friday da Everis UberlândiaSobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis Uberlândia
Rogerio Fontes66 vistas
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software por Adolfo Neto
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
Adolfo Neto1.4K vistas
Tdd not sure if testing or developing por Renato Oliveira
Tdd  not sure if testing or developingTdd  not sure if testing or developing
Tdd not sure if testing or developing
Renato Oliveira4.5K vistas
Desenvolvimento Guiado por Testes por elliando dias
Desenvolvimento Guiado por TestesDesenvolvimento Guiado por Testes
Desenvolvimento Guiado por Testes
elliando dias449 vistas
Qualidade no desenvolvimento de Software com TDD e PHPUnit por Domingos Teruel
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 Teruel2.1K vistas
Greenbar - Testes automatizados na sua empresa por Rafael Ponte
Greenbar - Testes automatizados na sua empresaGreenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresa
Rafael Ponte936 vistas
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ... por 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 ...
tdc-globalcode29 vistas
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ... por 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 ...
tdc-globalcode31 vistas

Más de Dextra Sistemas / Etec Itu

Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers por
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
26 vistas25 diapositivas
VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET ... por
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
41 vistas39 diapositivas
Usando Docker no desenvolvimento .NET por
Usando Docker no desenvolvimento .NETUsando Docker no desenvolvimento .NET
Usando Docker no desenvolvimento .NETDextra Sistemas / Etec Itu
198 vistas25 diapositivas
Tdc - Criando uma Minimal API para serviços de Geolocalização com SQL + C# por
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
88 vistas31 diapositivas
Tdc Future 2021 - simples soluções grandes resultados - Márcio Rogério Nizzola por
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
78 vistas42 diapositivas
Mvp conf 2021 - Criando uma Minimal API para serviços de Geolocalização com S... por
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
310 vistas38 diapositivas

Más de Dextra Sistemas / Etec Itu(6)

Os Benefícios dos testes no desenvolvimento de software

  • 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 !