1 of 55

Grafo de causa - efeito

Prof. Alysson Filgueira Milanez

alysson.milanez@academico.ifpb.edu.br

Teste de Software

2 of 55

Testes baseados em Lógica

2

3 of 55

Testes baseados em Lógica

São os métodos mais rigorosos em virtude de sua forte base lógica

3

4 of 55

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

5 of 55

Testes baseados em Lógica

Grafo de causa-efeito é uma técnica de teste de hardware adaptada para o software

5

6 of 55

Testes baseados em Lógica

É a única abordagem black-box que considera combinações de causas do comportamento do sistema

6

7 of 55

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

8 of 55

Testes baseados em Lógica

A pré condição é que é possível encontrar as causas e efeitos a partir da especificação

8

9 of 55

Testes baseados em Lógica

Cada causa é descrita como uma condição que consiste de valores de entrada ou combinação deles

9

10 of 55

Testes baseados em Lógica

As condições são conectadas com operadores lógicos - AND, OR, NOT

10

11 of 55

Testes baseados em Lógica

A condição e sua causa podem ser verdadeiras ou falsas

11

12 of 55

Testes baseados em Lógica

Efeitos são tratados de modo similar e descritos no grafo

12

13 of 55

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

14 of 55

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

15 of 55

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

16 of 55

Testes baseados em Lógica

Restrições representam restrições externas sobre o sistema

16

17 of 55

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

18 of 55

Testes baseados em Lógica

- O número máximo de tentativas do PIN é 3

- Há dinheiro na máquina e na conta

18

19 of 55

Testes baseados em Lógica

Ações possíveis da máquina

- Rejeitar o cartão

- Pedir por outro PIN

19

20 of 55

Testes baseados em Lógica

- "Engolir" o cartão

- Pedir outra quantidade de dinheiro

- Entregar o dinheiro solicitado

20

21 of 55

Testes baseados em Lógica

21

22 of 55

Testes baseados em Lógica

O grafo torna claras quais condições devem ser combinadas para alcançar os efeitos correspondentes

22

23 of 55

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

24 of 55

Testes baseados em Lógica

Os passos para transformar um grafo em uma tabela de decisão são os seguintes

24

25 of 55

Testes baseados em Lógica

1. Escolha um efeito

25

26 of 55

Testes baseados em Lógica

1. Escolha um efeito

Digamos o Reject card

26

27 of 55

Testes baseados em Lógica

27

28 of 55

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

29 of 55

Testes baseados em Lógica

29

30 of 55

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

31 of 55

Testes baseados em Lógica

4. Cheque se as entradas da tabela de decisão ocorrem diversas vezes, as delete em caso afirmativo

31

32 of 55

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

33 of 55

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

34 of 55

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

35 of 55

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

36 of 55

Testes baseados em Lógica

No caso mais simples, cada combinação de causas leva a um caso de teste

36

37 of 55

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

38 of 55

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 of 55

39

40 of 55

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

41 of 55

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

42 of 55

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

43 of 55

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

44 of 55

Testes baseados em Lógica

O grafo pode crescer indefinidamente quando o número de condições e ações dependentes aumenta

44

45 of 55

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

46 of 55

Testes baseados em Lógica

Grafo de causa-efeito pode ser usado como uma técnica de validação de requisitos

46

47 of 55

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

48 of 55

Testes baseados em Lógica

Para isso, precisamos validar a especificação

Uma forma de alcançar isto é com casos de uso

48

49 of 55

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

50 of 55

Testes baseados em Lógica

Podemos derivar os cenários de cada coluna da tabela de decisão

50

51 of 55

Referências

51

52 of 55

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

53 of 55

Veja mais...

53

54 of 55

Veja mais

54

55 of 55

Grafo de causa - efeito

Prof. Alysson Filgueira Milanez

alysson.milanez@academico.ifpb.edu.br

Teste de Software