Conheça a Informant          RSS

Posts Tagged: tdd


08
Oct 13

Testes unitários qual a importância ?

O desenvolvimento de softwares é uma atividade nada simples. Além de envolver o trabalho de diversos profissionais, a preocupação com o desempenho e com o bom funcionamento do produto final exige ações efetivas ao longo da criação. E, como já diz uma velha máxima da programação: a qualidade de um software não pode ser avaliada em um produto já feito. Então, por que não adotar técnicas que vão aprimorar a sua produção já em seu desenvolvimento?

Com os testes unitários, isso é possível. Peça fundamental do método de Test-Driven Development – “Desenvolvimento Dirigido por Testes” em português, ou ainda, o famoso TDD – estas avaliações permitem que os desenvolvedores identifiquem as falhas no fluxo de informação do produto que está sendo criado para, dessa forma, reparar os erros básicos que podem interferir na qualidade do resultado final.

Ao adotar o TDD em suas produções, é preciso planejar bem os seus testes unitários. Dessa forma, o desenvolvedor que fará a avaliação deve sempre pensar em quais requisitos que aquela funcionalidade a ser testada tem que corresponder, qual deve ser entrada e saída de informações e, também, como funciona o processamento do fluxo daqueles dados. Além disso, a equipe toda também precisa estar comprometida a criar conjuntos enormes e exaustivos de testes unitários que resultarão num melhor desempenho do produto. Pois, se não houver certeza em suas conclusões, toda a técnica falhará.

Mas, não se assuste: apesar de serem um pouco trabalhosos, os testes unitários podem auxiliar muito em sua produção e trazer grandes benefícios a ela. Quer saber quais são eles? Então, vamos lá.

Por que fazer testes unitários?

A adoção de testes unitários em sua produção permite solucionar dois problemas bem recorrentes que prejudicam no bom desempenho de um software. Eles são:

  • a alta taxa de defeitos: resultado de erros frequentes no funcionamento, este índice faz com que, muitas vezes, o software deixe de ser utilizado.

  • deterioração do sistema: quando executado, o produto pode até ter um bom desempenho. Entretanto, ao longo do tempo, ele pode apresentar complicações que exigem a substituição de todo o sistema.

Dessa forma, a realização de pequenas avaliações pode identificar e resolver as principais causas para os obstáculos de um bom desempenho. No primeiro caso, os testes unitários aumentam a validação de todas as funções do programa final e diminui a probabilidade de erros futuros. E, no segundo, eles permitem a simplificação dos códigos utilizados, fazendo com que elementos desnecessários fiquem de fora e não resultem no mau funcionamento de todo o sistema.

A utilização de testes unitários traz, ainda, uma certeza em todo o trabalho da equipe. Assim, a segurança de apresentar um produto com todos os erros solucionados dá garantias de uma durabilidade maior, além de aprimorar a qualidade do novo software. E o melhor de tudo isso é que o cliente ficará satisfeito com o resultado que será apresentado.

Solução na hora certa

Entre os princípios do TDD, está aquele de resolver os principais problemas no momento mais adequado. E como não acreditar que o tempo mais apropriado é durante a criação de um software? Ao escrever e executar os testes unitários, a equipe consegue evitar que futuros erros danifiquem o funcionamento daquele produto, permitindo assim uma economia de tempo e de gastos com manutenções e readaptações de todo o sistema. Por isso, se você acredita que uma boa estratégia se baseia na prevenção, você deve, sim, adotar os testes unitários em sua empresa.

Além disso, essa solução preventiva também pode trazer resultados que facilitarão o desenvolvimento de outros softwares. Quanto mais a equipe inserir testes em sua produção, mais registros de erros ela terá. E, dessa forma, os desenvolvedores conseguirão reunir as principais falhas que eles estão cometendo. Logo, os testes unitários podem, também, se tornar uma grande ferramenta para melhorar não somente aquele software que está sendo desenvolvido, como também os próximos projetos que serão executados pelo grupo.

É inevitável: você só consegue descobrir seus erros se você testar. Por isso, não hesite em adotar métodos que podem avaliar o seu produto, identificar seus problemas, corrigi-los e trazer mais qualidade a ele. E, com os testes unitários, essas medidas podem se tornar mais rápidas e, também, mais baratas.

O que você achou dessa ideia? Comente sua opinião nos comentários abaixo!


04
Oct 13

TDD: Modismo ou necessidade?

tddTDD é a abreviação de test-triven development, em bom português “desenvolvimento dirigido por testes. É uma técnica para desenvolver software originada em métodos de desenvolvimento ágil, como o Extreme Programming (XP). Entretanto, o TDD ganhou popularidade e hoje é adotada independentemente do XP.

O que é?

O Desenvolvimento Dirigidos por Testes é formado por ciclos curtos, que são repetidos  para o desenvolvimento de uma nova funcionalidade. Começa pela implementação de um caso de teste, seguido pela escrita do código necessário para passar no teste, e finalmente pela refatoração do código com padrões aceitáveis.

O TDD não é entretanto um método para testar softwares, mas para construí-los. Usar o TDD significa escrever mais, mas também é sinal de um código limpo que performa bem. Além disso, o Test-Driven Development garante a existência de testes unitários completos e atualizados, que dá à equipe de programação e aos usuários um nível maior de confiança e diminui a quantidade de erros por linha de código. O teste precoce e frequente ajuda a capturar defeitos no início do ciclo de desenvolvimento, evitando que tornem-se problemas complexos ao final do processo.

Além de ser útil na validação e correção do código, o TDD gera software que funciona de maneira mais desacoplada. Como os testes devem ser isolados, o produto final acaba possuindo menos interdependências desnecessárias.

Como funciona?

O ciclo do desenvolvimento do TDD começa sempre com a criação de um teste. O desenvolvedor precisa estudar os requisitos e especificações da funcionalidade a ser desenvolvida. User stories (link para o texto sobre user stories efetiva) são uma maneira popular de fazer isto. É fundamental que antes de começar a escrever o código este cenário seja claro ao desenvolvedor.

É criado então um segundo teste, para validar o primeiro. Esta etapa garante que o primeiro teste está acertado, avaliando os quesitos corretos e que será eficaz.

É escrito então um código, uma versão cru, muitas vezes deselegante, que deve passar no primeiro teste. Se o código construído apresentar boas soluções, ele passará no teste. Isto indica que, mesmo não funcionando da maneira ideal, ele preenche todos os requisitos definidos no começo do ciclo.

Por fim, o código é refatorado. O novo código, desta vez de acordo com os padrões finais, deve ser capaz de passar nos testes definidos. Então o ciclo se repete, com a criação de um novo teste, que gerará novos códigos e assim por diante.

Modismo ou necessidade?

Com o uso do TDD, pode-se obter resultados de testes realmente automatizados, com redução dos defeitos na fase funcional do desenvolvimento, aumento da produtividade da equipe, aumento da frequência de testes em projetos. Além disso, agregagando valor ao produto final que será entregue ao cliente. Tudo depende da forma como o método é vendido para o cliente. Caso o comprador compreenda os benefícios que a implementação do TDD gera é possível estabelecer ganhos mútuos com um produto com mais qualidade e aumento da produtividade proporcionado pelo método.

Já experimentou o TDD? Como foi? Conte as suas experiências nos comentários!


30
Sep 13

3 razões para melhorar a cobertura de testes do seu software

softwareA qualidade de um software é fundamental num mercado tão variado e competitivo como o da tecnologia da informação. Todos os dias surgem novas empresas e desenvolvedores dispostos a fazer o seu trabalho por um custo menor, desprezando a qualidade da entrega.

Esse tipo de estratégia é prejudicial não apenas para o cliente, mas para o ecossistema como um todo. Dessa forma, é muito importante investir tempo e pessoas para melhorar a cobertura de testes de um novo software. Além de garantir um produto melhor, você estará criando um diferencial competitivo para a sua empresa.

Mas não apenas isso, há outras vantagens apoiadas nessas melhorias. Abaixo listamos 3 razões para você melhorar a cobertura de testes do seu software.

1. Cobertura de segurança e falhas

Muitos clientes temem serem invadidos por crackers quando lançarem seus novos produtos ou serviços no mercado. A verdade é que o risco é muito maior quando se diminui os testes à procura de falhas no sistema como brechas de segurança ou bugs.

A maioria das invasões são baseadas em falhas cometidas pelo criador do software e não por invasores. Aumentar a abrangência dos testes para limitar o número de brechas é fundamental para a segurança da aplicação. A mesma lógica se aplica a bugs: quanto melhores e mais variados forem os testes de uso, menores serão os bugs encontrados pelos usuários.

Além das vantagens de seguranças e menos falhas, há ainda um diferencial um pouco mais intrínseco: um software confiável ajuda a melhorar a imagem da marca ou do serviço diante dos clientes. Por outro lado, um software cheio de falhas afugenta novos usuários.

2. Sempre online, escalável e disponível

Poucas coisas são mais irritantes para usuários e clientes do que um sistema que fica indisponível por longos períodos, criando um serviço não confiável que hora funciona, hora não. Neste ponto os testes de software podem descobrir e prever futuras complicações com, por exemplo, o número de usuários simultâneos dentro do sistema.

Criar essa escalabilidade é fundamental num mercado concorrido e competitivo, onde os usuários estão cada vez mais exigentes. Se o seu serviço deixa de ser oferecido porque o software não aguentou o número de requisições, você corre o risco de perder esses usuários para a concorrência. Esse tipo de problema é facilmente contornado através de testes de desempenho do software focados em escalabilidade, formato ainda pouco utilizado em testes hoje em dia.

3. Melhora da equipe e qualidade do código

A maioria dos testes de software são direcionados para procurar falhas que serão exploradas por terceiros ou que impactarão na utilização do sistema pelo cliente. Essas razões já estão muito claras. Mas há outro motivo para melhorar esse tipo de cobertura: a qualidade do seu time de desenvolvimento.

Nenhuma equipe de desenvolvimento gosta de criar código ruim ou com muitas falhas. À medida que seus testadores começarem a apontar problemas e melhorias, seu time de desenvolvimento trabalhará mais focado em escrever código de qualidade, reduzindo o número de bugs e melhorando as entregas, contribuindo assim, para a imagem da empresa como um todo.

Como você cuida dos seus testes de software? Aproveite os comentários abaixo para nos contar.