Verificação, Validação e Teste de Software

A qualidade de software é adquirida com a aplicação de técnicas de verificação e validação durante todo o processo de desenvolvimento de um software. São necessárias diversas técnicas para definir e medir a qualidade do software, como também é importante verificar a qualidade do processo de teste adotado. Quanto antes for aplicado um processo de teste no ciclo de desenvolvimento de um sistema, menor será o custo para corrigir os defeitos encontrados. Para isso o ideal é que haja um processo de teste independente, porém que seja altamente integrado ao processo de desenvolvimento.

Os casos de teste devem ser criados tomando o cuidado de verificar se todos os requisitos levantados foram abordados, pois sua finalidade é garantir que o software está fazendo o que ele deve fazer. As técnicas de teste de unidade e de cobertura geralmente são utilizadas na fase de codificação. Há também as técnicas “walk-through”, inspeções, revisões, prova de corretude e simulação. As técnicas de “walk-through” e inspeções verificam também as especificações a fim de detectar problemas até mesmo na fase de design. Os tipos de teste são divididos em testes de caixa-branca e caixa-preta. Para minimizar o número de entradas para os casos de teste, é necessário extrair algumas características do domínio, as quais irão representar o domínio como um todo, isso pode ser feito com a técnica de análise do valor limite.

Para verificar a qualidade dos casos de teste criados existem técnicas de análise estatística, análise de mutação, análise estática, análise de fluxo e análise dinâmica. A técnica de análise estatística utiliza testes de cobertura, que determinam o percentual de abrangência dos casos de teste ao executar o programa no momento do teste. Na técnica de mutação são gerados programas mutantes, onde neles são introduzidos diferentes defeitos, com a intenção de verificar se os casos de teste executados conseguem detectar tais falhas previamente conhecidas.

A aplicação de teste de software é importante durante todo o desenvolvimento do sistema. No entanto, a prática de testes nas indústrias de software ainda é imatura. Além disso, as ferramentas que poderiam auxiliar com testes automáticos, ainda não estão prontas para determinados tipos de sistemas. Outra problemática é que o custo para garantir que o sistema está de acordo com a especificação é muito alto e fica mais alto ainda quanto mais tarde os testes forem realizados. O que impossibilita para uma melhor qualidade do sistema é a falta de formalização das especificações. Segundo Dijkstra, o teste pode ser usado para mostrar a presença de defeitos, mas nunca para mostrar que eles não existem. Uma coisa é importante, quanto mais riscos aquele sistema apresentar para a sociedade, mais tem que se investir na sua qualidade.

Referências:

[1] ADRION, W. R; BRANSTAD, M. A and CHERNIAVSKY, J. C. Validation, Verification and Testing of Computer Software, published at ACM, p. 159-192, New York, 1982.
[2] HAILPERN, B. and SANTHANAM, P. Software debugging, testing, and verification at http://www.research.ibm.com/journal/sj/411/hailpern.html, wrote at 2002, accessed at Mar/08.
[3] WIKIPEDIA – Software Testing at http://en.wikipedia.org/wiki/Software_testing, accessed at Mar/08.