terça-feira, 11 de dezembro de 2007

Os 10 princípios dos Testes de Software

Geralmente muitos dos princípios de teste de software parecem ser óbvios, mas na verdade conhecê-los ajudam bastante no momento de testar, pois criam uma barreira de consciência no testador, o qual se tornará mais crítico no momento de elaborar os casos de teste e de testar.

1º Princípio: Uma parte importante de um caso de teste é uma definição de resultado esperado.

Se o resultado esperado não tiver sido pré-definido, então resultados errados poderão ser considerados corretos. Devido ao fenômeno de que "os olhos vêem o que eles querem ver". Há um desejo no subconsciente de ver o resultado correto. Uma forma de tirar isso é fazer uma análise detalhada de todas saídas em busca de uma ortográfica perfeita, antes de verificar a saída esperada pelo programa.

2º Princípio: Um programador deve evitar tentar testar seu próprio programa.

Geralmente uma pessoa não gosta de encontrar erros no seu próprio trabalho ou programa. Se o programador se equivocou quando fez o código, é natural que ele se atrapalhe no momento de testar. Porém, no caso de realizar debugs é mais eficiente quando é feito pelo próprio programador.

3º Princípio: Os casos de teste não devem ser grandes e exaustivos.

Um bom roteiro de testes possui casos de teste que são facilmente executados pelo testador, os quais não são executados de maneira ambígua. Para isso, os casos de teste têm que ser bem escritos e objetivos, como também devem possuir o menor número de passos.

4º Princípio: Analisar abundantemente os resultados de cada teste.

É normal pessoas não detectarem certos erros, mesmos quando estes erros podem ser claramente observaods num checklist ou roteiro de teste.

5º Princípio: Casos de teste devem ser escritos com entradas que são inválidas e não esperadas, como também com entradas válidas e esperadas.

6º Princípio: Examinar um programa para ver se ele não faz que é proposto, é apenas metade da batalha; a outra metade é verificar se o programa faz o que não é proposto.

Este é um corolário para o princípio anterior. Os programas devem ser testados devido a problemas secundários indesejáveis. Por exemplo, um programa de folha de pagamento que faz corretos pagamentos está errado quando produz folha de pagamento para funcionários que não existem.

7º Princípio: Evite casos de teste descartáveis, a menos que o programa seja também descartável.

Muitas vezes o testador executa casos de teste aleatoriamente e quando precisa retestar aquele programa tem que gastar tempo novamente criando novos casos de teste. Um problema é que geralmente o reteste não é tão rigoroso quanto o teste original. Assim, se uma nova funcionalidade causar falha, ela provavelmente não será detectada. Ao armazenar os casos de teste em um documento e re-executá-los novamente a cada iteração é conhecido como teste de regressão.

8º Princípio: Nunca faça um teste assumindo que nenhum erro vai ser encontrado.

Este é um erro que os projetistas de teste geralmente cometem e é um sinal do uso incorreto da definição de teste. A definição correta é que teste é um processo de executar um programa com o intuito de encontrar erros.

9º Princípio: A probabilidade de encontrar mais erros numa seção de um programa é proporcional ao número de erros já encontrados naquela seção.

Apesar de fazer pouco sentido, isto acontece na maioria das vezes. Por exemplo, tem um programa com 2 módulos, A e B, onde em 'A' foram encontrados 5 erros e em 'B' foi encontrado apenas 1 erro. A probabilidade de encontrar mais erros em 'A' num segundo ciclo de teste é maior que a probabilidade de encontrar mais erros em 'B', porque como em 'A' havia mais erros que em 'B', ao corrigir os erros de 'A', há a possibilidade de surgir novos erros. Outra hipótese é que os erros vêm em aglomerados, ou seja, um erro desencadeia outro, e também algumas seções são mais propícias a erros que outras.

10º Princípio: Testar é uma tarefa extremamente criativa e intelectualmente desafiante.

Provavelmente é verdade que a criatividade requerida para testar um programa grande seja maior que a criatividade requerida para criar aquele programa. Sabemos que é impossível tirar 100% dos erros. Existem muitas metodologias para criar casos de teste, mas estas metodologias ainda precisam de muita criatividade.

Então, ao analisar todos os princípio podemos extrair os 3 principais princípios, que são eles:
  1. Testar é um processo de executar um programa com o intuito de encontrar erros.
  2. Um bom caso de teste é aquele que tem alta probabilidade de encontrar um erro ainda não descoberto.
  3. Um excelente caso de teste é aquele que encontra um erro ainda não descoberto.

Referência:

MYERS, G. J. The Arts of Software Testing - 2nd. ed. John Wiley & Sons, Inc.,USA, 2004, chap. 2 pag. 14-20.

Nenhum comentário: