sábado, 5 de dezembro de 2009

O que é Teste de Software?

Apesar da pergunta parecer elementar para os profissionais da área de testes, muitas pessoas não têm uma visão consolidada sobre o tema, principalmente quem não trabalha diretamente com testes de software.

Por isso, vamos discutir neste post alguns conceitos que nos auxiliarão a construir essa visão.

Segundo o QAI - Quality Assurance Institute, teste é o processo de avaliar um entregável com a intenção de encontrar defeitos. De fato, esse talvez seja o principal objetivo dos testes. Mas outros objetivos podem ser considerados, como adquirir confiança na qualidade do software através das informações que o teste provê, ou prevenir a ocorrência de falhas do software em produção, pela detecção antecipada dos defeitos. De qualquer forma, estaremos sempre buscando pelos defeitos.

Nesse ponto é importante fazermos uma distinção entre erro, defeito e falha.
Resumidamente, podemos dizer que um erro é uma ação humana equivocada, que pode introduzir algum tipo de vício ou problema (defeito) em um documento ou no próprio software, que quando executado pode apresentar um comportamento anormal, ou seja, uma falha.

Definições semelhantes encontramos no Syllabus - Base de Conhecimento em Teste do ISTQB, que nos diz que um ser humano está sujeito a cometer um erro (engano), que produz um defeito (dano, bug), no código, em um software ou sistema ou em um documento. Se um defeito no código for executado, o sistema falhará ao tentar fazer o que deveria (ou, em algumas vezes, o que não deveria), causando uma falha. Defeitos no software, sistemas ou documentos resultam em falhas, mas nem todos os defeitos causam falhas.

É certo que falhas podem ocorrer também por problemas de ambiente ou provocadas por fatores externos ao software, não sendo necessariamente consequência de um defeito. Mas a definição apresentada acima, apesar de simplificada, nos permite entender que erro, defeito e falha não são sinônimos.

Além dos objetivos já descritos para o teste de software, um outro aspecto importante é a contribuição dos testes para a melhoria do processo de desenvolvimento. Quando identificado um defeito, a análise da sua causa pode revelar fragilidades do processo de desenvolvimento, que podem então ser corrigidas, num processo contínuo de melhoria. Assim, os benefícios dos testes vão além da retirada dos defeitos e do consequente aumento da qualidade do software, pois permitem também que a organização direcione seus esforços para a prevenção dos defeitos.

Assim, podemos definir teste de software como um conjunto de atividades direcionadas para a detecção de defeitos em documentações e no próprio código-fonte do software, evitando que tais defeitos acarretem falhas quando o software for utilizado em ambiente de produção. Essa é uma visão que considera o teste como uma importante ferramenta para o controle da qualidade. Mas podemos ampliar essa visão, se avaliarmos a importância dos testes também para a garantia da qualidade, com a utilização das informações geradas pelos testadores para a prevenção de defeitos e melhoria de processos. Discutiremos esses temas em nossas próximas postagens.