•   

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 Lean com Inteligência Artificial
    • 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
    • Consultoria LGPD
    • LGPD Shop - Treinamento Online
  • 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     17666 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

FEV 2

Certificação Value Stream M. (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

Lean IT e Business Agility


Veja mais vídeos

Treinamento de baixo custo sobre LGPD

LGPD Shop

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

* *

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