sexta-feira, 27 de junho de 2008

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


O artigo [1], escrito em 1982, apresenta diversos conceitos e técnicas sobre verificação, validação e teste de software. Segundo os autores deste artigo, 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, menos 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 tendo 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. As técnicas gerais descritas no artigo [1] foram “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.

Outra questão apresentada no artigo [1] foi com relação à qualidade dos casos de teste criados. Para verificar esta qualidade 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.

O artigo [2], foca na importância da aplicação de teste de software 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 erros, mas nunca para mostrar que eles não existem. Foram apresentadas as definições para os termos debug, verificação, teste, validação e defeito. Uma coisa é importante, quanto mais riscos aquele sistema apresentar para a sociedade, mais tem que se investir na sua qualidade.

Crítica:

O que pude perceber com relação ao artigo [1] é que apesar de ele ter sido escrito há 25 anos atrás, ele aborda assuntos e técnicas bem atuais referentes a testes de software. É interessante perceber que muitas das técnicas apresentadas no artigo não passam de modelos matemáticos, mas que atualmente muitas delas são bastante utilizadas e outras são aplicadas através de ferramentas automáticas. Isso indica que este artigo contribuiu bastante para a evolução da área de teste de software.

Concordo com o que foi apresentado no artigo [2] no que diz respeito às dificuldades enfrentadas pelas empresas de software com relação ao processo de teste. Com relação ao custo, ele é alto se adotar técnicas de qualidade e mais alto ainda se não adotar, existe uma preocupação por parte das empresas no que diz respeito à melhor forma de adotar estas técnicas, de modo que minimize os custos [3].

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.


fonte: Grupo de testadores de software

Um comentário:

Anne disse...

Olá Ricardo,

Tudo bem utilizar o meu post para contribuir com a comunidade de testes de software. :)

Muito obrigada por me avisar, é sempre bom ter um feedback do nosso trabalho.

Anne Caroline Oliveira
http://gtsw.blogspot.com