Gerando casos de teste a partir de casos de uso

Em muitas organizações, o custo com teste de software é de 30 a 50% do custo de desenvolvimento do software. Ainda assim, a maioria das pessoas acredita que o software não é bem testado. Esta contradição é causada por dois fatores: primeiro, teste de software é uma tarefa difícil; segundo, testes são feitos sem nenhuma metodologia clara. Neste artigo, discutiremos como usar casos de uso para gerar casos de teste, e como estes podem ser utilizados para iniciar os procedimentos de teste mais cedo no ciclo de vida de desenvolvimento.

Casos de uso, de uma forma geral, dizem ao cliente o que esperar, ao desenvolvedor o que deve ser codificado, ao escritor técnico o que documentar e ao testador o que testar.
Casos de teste são a chave do processo de teste, pois identificam e comunicam as condições que serão implementadas nos testes e são necessárias para verificar se a implementação dos requisitos do produto são aceitáveis e corretas.

A parte mais importante dos casos de uso para se gerar os casos de teste são os fluxos de eventos. As duas partes mais significativas do fluxo de eventos são o fluxo de eventos básico e os fluxos de eventos alternativos. O fluxo de eventos básico deve cobrir o que normalmente acontece quando o caso de uso é executado (o famoso caminho feliz). Os fluxos alternativos cobrem comportamentos opcionais e excepcionais relativos ao fluxo básico, e também variações do fluxo básico. Você pode pensar em fluxos alternativos como “desvios” do fluxo básico.
Os fluxos, tanto o básico quanto os alternativos, devem ser escritos como “diálogos” entre o sistema e os atores. Cada passo deve ser numerado e deve descrever o que o ator faz e o que o sistema faz em resposta. Fluxos alternativos sempre especificam onde eles iniciam no fluxo básico e para onde eles voltam quando terminam.

Um cenário de caso de uso é a instância de um caso de uso, ou um caminho completo pelo caso de uso. Usuários finais podem cair em vários caminhos quando executam a funcionalidade especificada no caso de uso. Seguir o fluxo básico deve ser um dos cenários. Seguir o fluxo básico e alternar para o fluxo alternativo um deve ser outro cenário. Seguir o fluxo básico e alternar para o fluxo alternativo dois deve ser outro cenário, e assim por diante. Cenários são importantes, pois serão usados como base para a criação de casos de teste.

Gerando casos de teste
Um caso de teste é um conjunto de entradas de teste, condições de execução, e resultados esperados desenvolvido para um objetivo particular: exercitar um dos possíveis caminhos ou verificar aderência com um requisito específico.

Existe um processo de três passos para se gerar casos de teste a partir de casos de uso bem detalhados:
1. Para cada caso de uso, gere um conjunto completo de cenários do caso de uso.
Leia a descrição textual dos casos de uso e identifique as possíveis combinações de fluxo básicos e alternativos (os cenários). A criação de uma matriz de cenários pode ajudar nesta tarefa.
2. Para cada cenário, identifique pelo menos um caso de teste e as condições que farão isto “executar”.
Analise os cenários e releia as descrições textuais dos casos de uso. Deve haver pelo menos um caso de teste para cada cenário, mas provavelmente haverá mais.
3. Para cada caso de teste, identifique os valores de dados com os quis o teste deve ser executado.
Sem os dados de teste, os casos de teste não podem ser codificados ou executados. Eles são apenas descrições de condições, cenários e caminhos. Portanto, é necessário identificar os valores que devem ser usados para a codificação dos testes.

Colocando tudo isso junto…
Utilizar os casos de uso para gerar os casos de teste ajuda a antecipar a atuação dos times de teste no ciclo de vida de desenvolvimento do software. Utilizar uma metodologia de desenvolvimento clara para se gerar casos de teste pode simplificar o processo de teste, aumentar a eficiência dos testes e garantir uma altíssima cobertura dos cenários que o sistema deve atender.