KISS - Keep it simple, stupid!

3 benefícios da Automação de Testes

postado por João José Pedrini em 28/04/2009 04:43:48
Não há tags para este post

Recentemente encontrei um site muito interessante de desenvolvimento de testes automatizados, o site dispõe de diversos assuntos importantíssimos para quem quer aprender e se aperfeiçoar em desenvolvimento de teste. Lendo alguns textos, fiquei com vontade de comentar aqui o “Goals of Test Automation”. O capítulo enumera 6 grandes objetivos para se ter sucesso no desenvolvimento de testes unitários e testes de aceitação, não explicando como alcançá-los.

Tive a idéia de escrever aqui uma releitura do texto utilizando os 3 primeiros grandes objetivos como motivações, benefícios que os testes podem trazer para o projeto. A idéia é plantar uma semente naqueles que ainda não acreditam nos testes, tentar mostrar que, quando bem implantado, os testes são valiosos.

1- Melhoria da qualidade

Antes de falar sobre como o teste pode ajudar na melhoria da qualidade, temos que entender o que significa qualidade de software. O autor foi muito feliz quando dividiu o definição de qualidade em dois tópicos: o software foi desenvolvido corretamente? desenvolvemos o software certo?

Quando desenvolvemos testes, buscamos sempre pensar em qual o comportamento que nosso código deverá ter em diversas situações.  Se conseguirmos escolher corretamente as situações que correspondem o que o cliente precisa e reproduzirmos estas situações nos testes automatizados, teremos certeza que os comportamentos serão atendidos e que estamos no caminho certo. As ferramentas de testes de aceitação são ótimas para atingirmos este objetivo.

Desenvolvendo que é realmente necessário, devemos garantir que o software realize corretamente os comportamentos. Nosso código deve estar livre de qualquer Bug. Testes unitários são ótimos para encontrar Bugs e prevenir que eles retornem. Quando um teste falha, a suíte nos indica precisamente o local que ocorreu o erro, nos dando informações valiosíssimas para concertamos o problema. Isto em questões de segundos.

As vezes, o Bug é descoberto quando o sistema está em produção, nestes casos o estrago provavelmente já deve ter ocorrido. Mas a automação ainda pode ser útil, temos a possibilidade de criar a reprodução do problema com um teste (Regression Test) e, assim prevenir,que o Bug retorne em futuras modificações.

Vale comentar que desenvolver teste é como desenvolver código, da mesma maneira que podemos cometer alguns enganos na programação de uma função, os testes também sofrem este problema. A diferença é que sem testes, o tempo e custo para encontrar estes enganos seriam muito maior.

2- Entendimento do Sistema

Quem estuda metodologia ágil deve conhecer o manifesto que prega, entre outros,  “código funcionando mais que documentação”. É com esta filosofia que digo: Uma suíte de testes é ‘n’ vezes mais valiosa para o entendimento que qualquer documentação.

O primeiro benefício é que os testes não ficam “desatualizados”, eles correspondem fielmente o que o código realiza. A documentação de um sistema é um custo para o projeto que, quando o prazo está curto, o sistema está com bug e o orçamento está no fim, a primeira atitude dos desenvolvedores é cortar esse peso. Uma documentação desatualizada é pior que não ter documentação. Testes e código não mentem, eles são, até certo ponto, exatos.

Temos que lembrar também que testes são códigos, e nós somos autores de códigos. Nós sabemos ler e escrever código, não documentação. Isto leva àquela velha história de comunicação, onde um desenvolvedor, ao escrever a documentação, não consegue expressar o que o código reproduz e escreve algo que não condiz com o sistema, seu colega, como muitos analfabetos funcionais, não interpreta corretamente o que o primeiro escreveu e entende algo totalmente diferente que realmente o código está fazendo. Resumindo, uma grande piada, que para o cliente é de extremo mal gosto.

3- Redução de Riscos

Uma das grandes vantagem dos testes é a criação de uma rede de proteção. Esta rede te dá liberdade para evoluir o sistema sem medo de ser feliz. Já comentei sobre desenvolvimento confiante aqui no blog. Com uma rede de proteção podemos nos prevenir de bugs já conhecidos, mexer em códigos legados e adicionar novas funcionalidades sem medo, pois sabemos que tudo que fazemos, temos os testes para verificar se estragamos algo. É isto que chamamos de Risco Calculado.

Os outros 3 grandes objetivos citado pela fonte diz mais a respeito dos testes em si, algo que deixarei para comentar em uma outra oportunidade. Meu foco foi trazer para vocês os que os testes podem fazer pelo sistema, os benefícios que recebemos quando desenvolvemos testes automatizados de forma correta. Fica o convite a todos para lerem o texto original, tenho certeza que não se arrependerão.

No tags for this post.

Trackback

Faça seu comentário

Topo

Sem comentários

Creative Commons License
Sou Ágil: KISS em http://kiss.souagil.com.br está licenciado sobre
Creative Commons Attribution-Share Alike 2.5 Brazil License.

souÁgil