•   

Lean IT

 
  • Login
  • Cadastre-se
  • Receba nossos informativos

(11) 2528-2354

contato@leanti.com.br

  •   
  • A Empresa
    • Sobre Nós
    • Sistema Toyota de Produção
    • Saiba mais sobre Lean
    • O que é Lean IT?
    • Framework Lean TI
  • CONSULTORIA
    • Assessment (diagnóstico)
    • Consultoria Lean
    • Consultoria em Value Stream
    • Consultoria Business Agility
    • Consultoria Lean Agile
    • Consultoria Lean Healthcare
    • Consultoria Lean BIM
    • Consultoria em Planejameto Estratégico
    • Consultoria LGPD
    • Consultoria em ESG
    • Consultoria em Transformação Digital
    • Gestão de Crise
    • Body Shop em TI e Agilidade  Body Shop em TI e Agilidade
    • Plano de continuidade de negócios
    • Palestras sobre lean
  • LGPD
  • TREINAMENTOS
  • CERTIFICAÇÃO LEAN
    • Certificação Lean IT
    • Certificação Value Stream Manager
    • Certificação Agile Kata Professional
  • Conteúdo
    • Artigos (todos)
    •   De conceitos gerais
    •   De estratégia
    •   De desenvolvimento
    •   De cotidiano
    •   De melhoria contínua
    • Lean IT na mídia
    • Videos
  • Clientes
  • Softwares
    • ESG Score (Gestão em ESG)
    • Software de OKR
    • Desenvolvimento de Software
  • Contato

Desenvolvimento Orientado a Testes, vale a pena praticar?

  • Você está aqui: 
  • Artigos  
 

Por: Sebastião Júnior     17412 visualizações     Tempo leitura: 5 min

Muito dos programadores que nunca praticaram o TDD (Test Driven Development) sempre perguntam: Será que realmente diminui erros? Aumenta a confiabilidade do código? Aumenta ou diminui a produtividade?

Toda e qualquer prática em engenharia de software é muito difícil de avaliar e chegar a uma conclusão exata sobre seus ganhos e benefícios. Nos últimos anos, a comunidade acadêmica vem rodando diversos experimentos para tentar mostrar, de maneira empírica, que TDD realmente ajuda no processo de desenvolvimento de software.

O que é TDD?

O Desenvolvimento Orientado a Testes ou TDD (Test Driven Development) é uma prática da engenharia de softwares que pode ser utilizada durante a produção de softwares. Ela consiste em um ciclo curto de repetições onde o desenvolvedor escreve casos de testes automatizados que possam tanto validar um requisito quanto implementar uma nova funcionalidade.

Utilizando TDD durante o desenvolvimento de um software a rotina adotada pela maioria dos programadores muda um pouco. Estamos acostumados a codificar e depois criar processos de testes. Já usando TDD, os testes devem ser feitos primeiro, só após a escrita dos testes que o código que implementa o requisito deve ser escrito.

O processo é bem simples de entender:

TDD Desenvolvimento Orientado a Testes
Imagem 1: Test Drive Development

  1. Escreva um teste que falhe: Analise um dos requisitos do sistema, pense nas verificações que o teste deve fazer para que sua funcionalidade seja validada. Escreva um teste que falhe. Caso a funcionalidade passe pelo teste, sua permanência é opcional, pois indica que esta já foi satisfeita pelo sistema.
  2. Faça o teste passar: Com uso de baby steps codifique o mínimo possível para que ele passe pelo teste mesmo que seu método retorne apenas o valor esperado pelo teste. O objetivo aqui e passar o teste. Seja Simples.
  3. Refatore o seu código de teste: Deve-se refatorar o código de teste desenvolvendo novos testes de modo que cubra mais possibilidades de erros. O Código deve continuar atendendo ao requisito e passando pelo testes.

Esse processo é repedido várias vezes até que o código que está sendo testado seja menos propenso a erros. É importante lembrar que a cada refatoração do código os testes devem ser rodados novamente para que eles possam estar sempre atualizados com seu código de produção. Esta etapa é muito importante, pois testes desatualizados podem causar mais dores de cabeça do que contribuírem.

Onde devo criar os testes?

Atualmente a maioria das linguagens possuem bibliotecas e frameworks próprios para a realização de testes. Por exemplo: Java possui JUnit, Python possui o unittest e outras linguagens também possuem seus respectivos módulos de testes.

Vantagens da utilização

  • Incentiva a Simplicidade: Ao utilizar baby steps na criação do código faz com que ele fique mais limpo e simples. Como a solução vai surgindo incrementalmente, a tendência é não perdemos tempo com códigos desnecessários.
  • Aumento da confiabilidade: Por estar passando por testes de validação frequentemente, o código se torna mais confiável e menos propenso a bugs.
  • Ajudam como documentação: Quando bem definidos, servem como documentação para o entendimento sobre alguma funcionalidade do sistema.
  • Facilita Refactorings: A cada refatoração os testes são rodados novamente, dificilmente uma refactoring que tem um erro passará pelos testes. Ou seja, se algum método foi alterado e esta alteração inseriu algum erro no código, este erro será detectado por algum teste criado.

Dicas para iniciar com TDD

Verificar em quais pontos aplicar: Para começar, verifique quais métodos são mais interessantes de serem testados. Escolha os métodos mais relevantes no sistema ao invés de sair aplicando TDD em todo o projeto.

Não faz sentido aplicar sempre: Não se sinta obrigado aplicar testes em todos os métodos. Alguns métodos nativos da linguagem já foram bem testados pelos seus desenvolvedores e não a necessidades de testá-los.

Uso de baby steps: Não tenha pressa, codifique passo a passo e aumente o ritmo conforme você se sinta à-vontade, evite códigos muito complexos.

É pouco provável que os testes cubram todo o sistema: Se seu sistema não tem 100% de cobertura de código não quer dizer que ele não está bem testado.

Resultado de pesquisa

Um estudo feito por George e Williams mostrou que, apesar de TDD poder reduzir inicialmente a produtividade dos desenvolvedores mais inexperientes, o código produzido passou entre 18% a 50% mais em testes caixa-preta do que códigos produzidos por grupos que não utilizavam TDD. Esse código também apresentou uma cobertura entre 92% a 98%. Uma análise qualitativa mostrou que 87.5% dos programadores acreditam que TDD facilitou o entendimento dos requisitos e 95.8% acreditam que TDD reduziu o tempo gasto com debug. 78% também acreditam que TDD aumentou a produtividade da equipe. Entretanto, apenas 50% acreditam que TDD ajuda a diminuir o tempo de desenvolvimento. Sobre qualidade, 92% acreditam que TDD ajuda a manter um código de maior qualidade e 79% acreditam que ele promove um design mais simples.

Conclusão

Utilizando TDD podemos ver uma melhora significativa no processo de desenvolvimento. Principais pontos a serem destacados: confiabilidade, simplicidade na codificação, facilidade de refatoração e identificação de bugs.

O processo de implantação requer um tempo de adaptação para os programadores, a idéia de escrever teste antes do código de produção pode demorar um pouco a ser digerida por programadores que não tem esse habito.

Bibliografia

- CUNHA C.; BASSI G.; CAVALCANTE V. Podcast 14: Test Driven Development. http://podcast.dotnetarchitects.net/2010/07/podcast-14-test-driven-development/ .Acesso em:03 de Julho. 2013
- BASSI G.; TDD não existe. http://blog.lambda3.com.br/2009/10/tdd-nao-existe/ .Acesso em:03 de Julho. 2013
- ANICHE , M. TDD realmente ajuda?. Disponivel em: http://www.aniche.com.br/2010/04/tdd-realmente-ajuda/. Acesso em: 03 de Julho. 2013.
- Beck, K. Test-Driven Development by Example, Addison Wesley – Vaseem, 2003
- George, B., Williams, L., An Initial Investigation of Test- Driven Development in Industry. ACM Symposium on Applied Computing. Melbourne, Florida, USA, 2003.

Fonte: http://dinnitec.dinnisoft.com.br


Data da publicação: 08/06/2014

  • Sebastião Júnior   
    DINNI Soluções em Sistemas
    Tecnólogo em Análise e Desenvolvimento de Sistemas pela FAFISM. Desenvolvedor de Software pela empresa Dinni Soluções em Sistemas.

Gostou do artigo? Para receber nossos informativos clique aqui.

Treinamentos abertos

JUL 21

Certificação Lean IT (online ao vivo)

19h às 21h

São Paulo - SP

Todos os treinamentos
Certificação Lean IT
Certificação Value Stream Manager

Depoimentos

O curso é uma ótima oportunidade de refletir sobre como melhorar os meus processos, simplificando e eliminando o que não gera valor para meus clientes. Gostei bastante de conhecer o histórico dessa jornada Lean na Manufatura e na indústria de Software.

Pierre Simon
IT Services Manager
Leroy Merlin

Fizeram um reconhecimento detalhado de minha necessidade em pontos cruciais e agregaram muito conhecimento. Levaria muito mais tempo para chegar lá sem a experiência e vivência proporcionados pelos treinamentos da Lean IT. Recomendo fortemente.

Júlio Calsinski
CEO
SCIA

Fazer o curso de Certificação Lean IT foi uma das melhores escolhas que fiz para aprender mais sobre agilidade, geração de valor e foco no cliente. É um treinamento dinâmico que traz situações reais do dia a dia, além de uma excelente didática.

Adriana Borba
Coordenadora Governança
Generali Seguros

As metodologias ágeis fazem parte deste meu “novo mundo, movido a uma pitada do novo normal”... Por isso, indico sempre que procurem a solução mais adequada para se capacitar.

Camila Saraval
Analista de Educação
Bradesco

O Curso de OKR traz uma perspectiva de extrema importância nesse momento em que muitas empresas estão descobrindo e construindo suas Transformações Digitais, se mostrando uma ferramenta poderosa na influência da cultura organizacional através do desdobramento de ideais (intangível) para a direcionamento prático dos times.

Brisa Lorena
Analista de processos
Unimed BH

A certificação é excelente. Recheado de exemplos que vão fazer você olhar os processos da sua empresa sob outra ótica. Recomendado a todos que buscam otimizar processos e eliminar desperdícios.

Filipe Machado
Scrum Master
Grupo GFT

Com a implantação do OKR na Viceri tivemos ganhos significativos no desempenho da empresa. Participei do curso de OKR da Lean TI e foi esclarecedor. Recomendo a todas as empresas!!!

Marcel Pratte
CEO
Viceri

Eu achei o curso de times ágeis muito bom. De todas as iniciativas de agilidade, foi a que mais fez sentido pra mim, a que mais me pareceu trazer real benefício, pois mudava o processo de desenvolvimento, e não de administração do processo.

Rodrigo Canellas
Software Developer

One Piece Flow


Veja mais vídeos

Conheça o A3 Ágil

A3 Ágil

ESG Score

ESG Score - Software para Gestão em ESG

Gerencie seus OKRs

Software OKR

Ao continuar utilizando o site www.leanti.com.br você concorda com nosso aviso de privacidade e cookies. Saiba mais

A Empresa

  • Sobre nós
  • Sistema Toyota de Produção
  • Saiba mais sobre Lean
  • O que é Lean IT?

Receba nossos informativos

Cadastre seu e-mail e receba nossas promoções

* *

Lean IT é uma empresa associada da ABES


Contato

(11) 2528-2354

contato@leanti.com.br

Rua Funchal, 538 - Conj 24
CEP: 04551-060
São Paulo - SP
CNPJ: 22.316.429/0001-25

2012 - 2025 Copyright - Todos os direitos reservados - Aviso de Privacidade e Cookies