Grafo de causa - efeito
Prof. Alysson Filgueira Milanez
alysson.milanez@academico.ifpb.edu.br
Teste de Software
Testes baseados em Lógica
2
Testes baseados em Lógica
São os métodos mais rigorosos em virtude de sua forte base lógica
3
Testes baseados em Lógica
O grafo de causa-efeito usa as dependências entre os valores de entrada para identificar casos de teste
4
Testes baseados em Lógica
Grafo de causa-efeito é uma técnica de teste de hardware adaptada para o software
5
Testes baseados em Lógica
É a única abordagem black-box que considera combinações de causas do comportamento do sistema
6
Testes baseados em Lógica
Os relacionamentos lógicos entre as causas e seus efeitos em um componente ou em um sistema são mostrados em um grafo chamado causa-efeito
7
Testes baseados em Lógica
A pré condição é que é possível encontrar as causas e efeitos a partir da especificação
8
Testes baseados em Lógica
Cada causa é descrita como uma condição que consiste de valores de entrada ou combinação deles
9
Testes baseados em Lógica
As condições são conectadas com operadores lógicos - AND, OR, NOT
10
Testes baseados em Lógica
A condição e sua causa podem ser verdadeiras ou falsas
11
Testes baseados em Lógica
Efeitos são tratados de modo similar e descritos no grafo
12
Testes baseados em Lógica
Uma causa representa uma condição de entrada distinta ou uma classe de equivalência das condições de entrada
13
Testes baseados em Lógica
Pode ser interpretada como uma entidade que surge de uma mudança interna do sistema
Em um grafo de causa-efeito, uma causa é sempre positiva e atômica
14
Testes baseados em Lógica
Um efeito representa uma condição de saída ou uma transformação do sistema que é observável
Um efeito pode ser um estado ou uma mensagem resultando de uma combinação de causas
15
Testes baseados em Lógica
Restrições representam restrições externas sobre o sistema
16
Testes baseados em Lógica
Exemplo: processo de saque de um terminal (ATM)
Condições que devem ser atendidas:
- O cartão é válido
- O PIN está correto
17
Testes baseados em Lógica
- O número máximo de tentativas do PIN é 3
- Há dinheiro na máquina e na conta
18
Testes baseados em Lógica
Ações possíveis da máquina
- Rejeitar o cartão
- Pedir por outro PIN
19
Testes baseados em Lógica
- "Engolir" o cartão
- Pedir outra quantidade de dinheiro
- Entregar o dinheiro solicitado
20
Testes baseados em Lógica
21
Testes baseados em Lógica
O grafo torna claras quais condições devem ser combinadas para alcançar os efeitos correspondentes
22
Testes baseados em Lógica
O grafo deve ser transformado em uma tabela de decisão da qual os casos de teste podem ser derivados
23
Testes baseados em Lógica
Os passos para transformar um grafo em uma tabela de decisão são os seguintes
24
Testes baseados em Lógica
1. Escolha um efeito
25
Testes baseados em Lógica
1. Escolha um efeito
Digamos o Reject card
26
Testes baseados em Lógica
27
Testes baseados em Lógica
2. Olhando para o grafo, encontre combinações de causas que têm este efeito e combinações que não têm
28
Testes baseados em Lógica
29
Testes baseados em Lógica
3. Adicione uma coluna na tabela para cada um destas combinações de causa e efeito. Inclua os estados causados dos efeitos restantes
30
Testes baseados em Lógica
4. Cheque se as entradas da tabela de decisão ocorrem diversas vezes, as delete em caso afirmativo
31
Testes baseados em Lógica
O objetivo de um teste baseado em tabelas de decisão é que execute combinações "interessantes" das entradas - que tenham potencial para revelar falhas
32
Testes baseados em Lógica
Além das causas e efeitos, resultados intermediários com seus valores verdade podem ser incluídos na tabela de decisão
33
Testes baseados em Lógica
Uma tabela de decisão tem duas partes
Na metade superior, as causas são listadas; a metade inferior contém os efeitos
34
Testes baseados em Lógica
Cada coluna define as situações de teste: combinação de condições e os efeitos esperados ou saídas
35
Testes baseados em Lógica
No caso mais simples, cada combinação de causas leva a um caso de teste
36
Testes baseados em Lógica
Contudo, condições podem influenciar ou excluir umas às outras de tal forma que nem todas as combinações fazem sentido
37
Testes baseados em Lógica
O preenchimento de cada causa e efeito é notado na tabela com um "sim" ou "não"
Cada causa e efeito deve ter ao menos uma vez os valores "sim" e "não" na tabela
38
39
Testes baseados em Lógica
De uma tabela de decisão, uma árvore de decisão pode ser derivada
Cada caminho da raiz da árvore até a folha corresponde a um caso de teste
40
Testes baseados em Lógica
Cada nó no caminho até uma folha contém uma condição que determina a continuação do caminho, dependendo do seu valor verdade
41
Testes baseados em Lógica
Cada coluna é um caso de teste
Precisamos alimentá-los com valores concretos para serem executados e as pré-condições e pós-condições devem ser definidas
42
Testes baseados em Lógica
Requisito mínimo: executar cada coluna na tabela de decisão por ao menos um caso de teste; isto verifica todas as combinações de condições e seus efeitos correspondentes
43
Testes baseados em Lógica
O grafo pode crescer indefinidamente quando o número de condições e ações dependentes aumenta
44
Testes baseados em Lógica
Algo importante advindo do grafo de causa-efeito é que se há um problema na saída, o caminho até as entradas que afetaram a saída podem ser retraçados
45
Testes baseados em Lógica
Grafo de causa-efeito pode ser usado como uma técnica de validação de requisitos
46
Testes baseados em Lógica
GCE é uma técnica de teste útil para testar a implementação de um sistema usando casos de teste derivados da especificação do sistema em linguagem natural
47
Testes baseados em Lógica
Para isso, precisamos validar a especificação
Uma forma de alcançar isto é com casos de uso
48
Testes baseados em Lógica
Um caso de uso representa um conjunto de causas presentes/ausentes que determinam a presença/ausência de um efeito
49
Testes baseados em Lógica
Podemos derivar os cenários de cada coluna da tabela de decisão
50
Referências
51
Referências
JORGENSEN, P. C. Software Testing: A Craftsman's Approach.
Cap. 7
SPILLNER, A.; LINZ, T.; SCHAEFER, H. Software Testing Foundations: A Study Guide for the Certified Tester Exam.
Cap. 5
52
Veja mais...
53
Veja mais
54
Grafo de causa - efeito
Prof. Alysson Filgueira Milanez
alysson.milanez@academico.ifpb.edu.br
Teste de Software