Testes de Software - Por que precisamos.
tags [Testes, software, qualidade]
Data criação 2010-05-22 02:01:05 UTC
A necessidade de se testar softwares é, de alguma forma, aumentar a qualidade final do produto reduzindo a quantidade de bugs por LOC (line of code). Existem diversas práticas de teste, dentre elas as mais usadas: Unitário, Integração, Funcional e Aceitação. Além dos testes de Streess e de Performance.
Eu tentei procurar na internet alguma porcentagem de erros por LOC, e não achei nada. Então baseando-se em minha experiência, eu vou assumir que a cada 5 linhas de código, existe pelo menos um bug. Eu cheguei a este resultado com o seguinte pensamento, quando eu escrevo um método ou uma função, a quantidade de linhas internas é de aproximadamente de 3 a 10 linhas. Assim que eu inicio a técnica de teste unitário para garantir que este trecho do sistema esta aderente ao que é esperado dele, sempre encontro ao menos um bug não previsto durante a codifificação do método testado.
Seguindo esta linha de pensamento podemos dizer quem um sistema com 100.000 LOC possui ao menos 20.000 bugs, aproximadamente 1/4 do total do sistema, alguns críticos outros moderados. Embora possa parecer uma afirmação absurda, a verdade é que softwares são no máximo 99% corretos nunca atingiremos a margem dos 100%. E esse número diminui ainda dependendo do tipo de software que estamos falando, dos canais de comunicação das camadas físicas, lógicas, das máquinas clientes e diversos outros fatores.
Se pensarmos numa visão mais macro, um sistema um pouco maior, como um e-commerce para ser usado na web, depende de outros vários recrusos que nem sempre cabem a nós resolvermos. Podem ocorrer quedas constantes do servidor, lentidão de banco de dados, querys mal escritas, estouro de memória, incompatiblidade de browser. Não consigo expressar aqui quais são os inúmeros erros que podem aparecer diante, durante a após o desenvolvimento de um software devido a quantidade de variantes que nos cercam. Ninguém conhece todos os possíveis erros que podem aparecer, e para aqueles possíveis erros que nós já conhecemos, escrevemos o documento de gerenciamento de riscos de software, que geram planos de ação para riscos potenciais identificados.
Então se estamos expostos a tantos fatores contra nosso trabalho, precisamos ser o mais competente possível para evitar que quando todos os recursos estiverem funcionando em sintonia não ocorram erros por falhas de código.
Testes de software precisam ser feitos. Não importa se estes testes são feitos de forma manual, o importante é fazer. O problema é que testes manuais são menos efetivos do que os testes automatizados. Para ser sincero, testes manuais podem vir a atrapalhar a qualidade do trabalho do desenvolvedor que precisa acreditar no trabalho do testador. E muitas empresas brasileiras investem muito pouco em profissionais capacitados em teste. Normalmente o que se encontra são profissinais recém formados sem qualquer tipo de conceituaçáo de testes de software. E estas pessoas tendem a prejudicar o produto e o trabalho do desenvolvedor.