Você está na página 1de 49

Teste de Software

Técnica de Teste

Rosemary Silveira Filgueiras Melo


rosesfmelo@hotmail.com

1
Agenda
 Conceito de Técnica de Teste Funcional

 Critérios de Teste Funcional

2
Teste Funcional
 Programa considerado como caixa preta

 Fornece entradas e avalia se as saídas estão em


conformidade com os objetivos especificados

 Detalhes de implementação não são considerados

 Software avaliado segundo o ponto de vista do


usuário

3
Teste Funcional (2)
Em princípio pode detectar todos os defeitos submetendo o
sistema a todas as entradas possíveis(teste exaustivos)

No entanto, se o domínio de entrada for muito grande ...

... testar pode se tornar impraticável

 O Teste Funcional não permite afirmar que o sistema está correto

 O sucesso vai depender do critério de teste escolhido

 Quando bem sistematizado pode ter uma avaliação quantitativa

4
Teste Funcional
Critérios
 Particionamento de Equivalência

 Análise do valor limite

 Teste funcional sistemático

 Grafo causa-efeito

 Error-Guessing

 Sybtax Testing

 State Transition Testing

 Graph Matrix 5
Teste Funcional
Critérios (2)
 Todos os critérios baseiam-se na especificação do produto a
ser testado

 Depende da existência de uma boa especificação de


requisitos

 Critérios podem ser aplicados em todas as fases do teste e a


qualquer paradigma de desenvolvimento

 Não consideram detalhes de implementação

6
Teste Funcional
Critério de Particionamento em classes de equivalência
 Considerando que o teste exaustivo é impossível de ser
aplicado

 É preciso considerar um subconjunto com alta


probabilidade de encontrar defeitos

 Como encontrar esse subconjunto?

7
Teste Funcional
Critério de Particionamento em classes de equivalência (2)
 Dividir o domínio de entrada em classes de
equivalência tratadas da mesma meneira

 Qualquer elemento da classe pode representá-la no


teste, pois todos devem se comportar da mesma
maneira
 Se um elemento detectar defeito, todos detectam

 Se não detectar, outros também não detectam

8
Teste Funcional
Critério de Particionamento em classes de equivalência (3)

Observar a especificação e procurar termos como


“Intervalo”, “conjunto”, que indiquem dados
processados da mesma forma.

Classe de equivalência é o conjunto de estados válidos ou


inválidos para as condições de entrada

9
Teste Funcional
Critério de Particionamento em classes de equivalência (4)
 Diretrizes
 Se a condição de entrada especifica um conjunto de valores, são
definidas uma classe válida e duas inválidas

 Se a condição de entrada especifica uma quantidade de valores, são


definidas uma classe válida e duas inválidas

 Se a condição de entrada especifica um conjunto de valores


determinados e o programa pode manipulá-los de forma diferente é
definida uma classe válida para cada um desses valores e uma classe
inválida com outro valor qualquer

 Se a condição de entrada especifica uma situação do tipo “deve ser


de tal forma” são definidas uma classe válida e uma inválida

10
Teste Funcional
Critério de Particionamento em classes de equivalência (5)

 Após identificar as classes de equivalência

 Determinar os casos de teste escolhendo um elemento


de cada classe

11
Teste Funcional
Exemplo
Considere um programa que solicita do usuário um
inteiro positivo no intervalo entre 1 e 20 e então solicita
uma cadeia de caracteres desse comprimento. Após
isso, o programa solicita um caractere e retorna a
posição em que o caractere está presente na cadeia. O
usuário tem a opção de procurar vários caracteres.

12
Teste Funcional
Exemplo (2)

 Considerando as entradas

 T: tamanho da cadeia de caracteres


 CC: cadeia de caracteres
 C: caractere a ser procurado
 O: opção para procurar mais caracteres

13
Teste Funcional
Exemplo (3)

 Analisando o domínio de entradas:

 T: de 1 a 20
 CC: qualquer caractere (não possui classe de
equivalência)
 C : qualquer caractere
 O: sim / não

14
Teste Funcional
Exemplo (4)

 Analisando o domínio de saídas:

 Posição onde o domínio foi encontrado na cadeira de


caracteres
 Mensagem declarando que o caractere não foi
encontrado
 Mensagem informando para entrar com um valor válido

15
Teste Funcional
Exemplo (5)
 Classe de equivalência:

Variável Classes de Classes de equivalência


de equivalência válidas inválidas
entrada
T 1<=T<=20 T<1 e T>20

O Sim Não

C Caractere que pertence Caractere que não pertence a


a cadeia cadeia
16
Teste Funcional
Exemplo (6)
 Casos de teste para o critério de Particionamento de
Equivalência:
Variáveis de entrada Saída esperada
T CC C O
34 Entre com um inteiro entre 1 e 20
0 Entre com um inteiro entre 1 e 20
3 abc c O caracter c aparece na posição 3
da cadeia
S
k O caracter K não aparece na cadeia
N
17
Teste Funcional
Avaliação do critério de Particionamento em classes de equivalência

 Reduz o tamanho do domínio de entrada

 Adequado para aplicações onde variáveis de


entrada podem ser identificadas com facilidade e
assumem valores específicos

 Não indicado para domínio de entrada simples,


mas processamento complexo, nem sempre as
variáveis se comportam de maneira similar
18
Teste Funcional
Exercício Proposto
O RH de uma certa empresa deseja desenvolver um
sistema que receba como entrada o número de horas
trabalhada do funcionário e informe o percentual de
horas extras realizadas pelo funcionário no mês.
Considerando que o número de horas padrão é 40
horas mensais, o RH deseja saber se existe
funcionários que faz mais de 25% de horas extra no
mês.

19
Teste Funcional
Critério de Análise do valor limite
 A experiência mostra que testar valores limites tem
maior probabilidade de achar defeitos

 Idéia

Usar o critério de particionamento e em vez de escolher


dados aleatoriamente explorar os limites de cada classe.

20
Teste Funcional
Critério de Análise do valor limite - Exemplo
 Casos de teste para o critério de Análise do valor limite

Variáveis de entrada Saída esperada


T CC C O
21 Entre com um inteiro entre 1 e 20
0 Entre com um inteiro entre 1 e 20
1 a a O caracter a aparece na posição 1 da cadeia
S
x O caracter x não aparece na cadeia
N
20 Abcdefghijklmnopqrst c O caracter c aparece na posição 3 da cadeia
S
t O caracter t aparece na posição 20 da cadeia

n
21
Teste Funcional
Critério de Teste funcional sistemático
 Combinação dos critérios de Particionamento por
equivalência e Análise do valor limite

 Particionar os domínios de entrada e saída

 Estabelecer o uso de pelo menos 2 casos de teste por


partição
 Minimiza o problema de defeitos coincidentes mascararem
falhas
 Requer a avaliação do limite de cada partição e
subsequente a ele
22
Teste Funcional
Critério de Teste funcional sistemático
Diretrizes para facilitar a identificação dos casos de teste

 Valores numéricos

 Para o domínio de entrada selecionar os valores da seguinte


forma:
 Valores discretos: testar todos os valores
 Intervalos de valores: testar extremos e um valor no interior do
intervalo

 Para o domínio de saída selecionar valores de entrada que


resultem em saídas a serem geradas pelo software
 Tipos de saída podem não coincidir com tipos de entrada
 Valores discretos: gerar cada um deles
 Intervalo de valores: gerar cada um dos extremos e ao menos um
valor no interior do intervalo
23
Teste Funcional
Critério de Teste funcional sistemático
Diretrizes para facilitar a identificação dos casos de teste (2)

 Tipos de valores diferentes e casos especiais

 Ex. espaço em branco


 podem ser interpretados de várias formas
 Zero, sempre devem ser selecionados
 Valores nos limites de representação binária de dados
 Ex. interior de 16 de bits (-32768 a +32767)

24
Teste Funcional
Critério de Teste funcional sistemático
Diretrizes para facilitar a identificação dos casos de teste (3)

 Valores ilegais

 Valores que correspondem a entradas ilegais


 Assegurar que o software os rejeita

 Valores imediatamente fora dos limites

 Valores imediatamente subsequentes ao intervalo

25
Teste Funcional
Critério de Teste funcional sistemático
Diretrizes para facilitar a identificação dos casos de teste (4)

 Números reais

 Em geral tem mais problemas


 São armazenados de forma binária e convertidos na saída

 Selecionar zero
 Selecionar números bem pequenos

26
Teste Funcional
Critério de Teste funcional sistemático
Diretrizes para facilitar a identificação dos casos de teste (6)

 Arranjos

 Considerar arranjos de tamanho variáveis

 Testar tamanho com valores mínimo, máximo e variável

27
Teste Funcional
Critério de Teste funcional sistemático
Diretrizes para facilitar a identificação dos casos de teste (7)

 String ou texto

 Explorar comprimento de variáveis

 Validar os caracteres (alfabéticos, alfanuméricos,


caracteres especiais)

28
Teste Funcional (lembrete)
Exemplo
 Analisando o domínio de entradas:

 T: de 1 a 20
 CC: qualquer caractere (não possui classe de
equivalência)
 C : qualquer caractere
 O: sim / não

29
Teste Funcional (lembrete)
Exemplo
 Analisando o domínio de saídas:

 Posição onde o domínio foi encontrado na cadeira de


caracteres
 Mensagem declarando que o caractere não foi
encontrado
 Mensagem informando para entrar com um valor válido

30
Teste Funcional (lembrete)
Exemplo
 Classe de equivalência:
Variável Classes de Classes de equivalência
de equivalência válidas inválidas
entrada
T 1<=T<=20 T<1 e T>20

O Sim Não

C Caractere que pertence Caractere que não pertence a


a cadeia cadeia

31
Teste Funcional
Critério de Teste funcional sistemático
Exemplo
Entradas Saída esperada
T CC C O
a Entre com um inteiro entre 1 e 20
1.0 Entre com um inteiro entre 1 e 20
1 ! ‘ ‘ n O caractere ‘ ‘ não pertence a cadeia
1 } ~ n O caractere ~ não pertence a cadeia
20 !”#$%&()*+’/01234567 ! s O caractere ! Aparece na posição 1
“ s O caractere “ aparece na posição 2
+ s O caractere + aparece na posição 10
6 s O caractere 6 aparece na posição 19
7 n O caracter 7 aparece na posição 20
2 ab B Não O caractere b aparece na posição 2
3 a2b 2 n O caractere 2 aparece na posição 2 32
Teste Funcional
Critério de Teste funcional sistemático
Avaliação do critério

 Fornece diretrizes para enfatizar a seleção de casos de


testes

 Aumenta as chances de revelar defeitos sensíveis a


dados

 Probabilidade de obter maior cobertura do código do


produto que está sendo testado

33
Teste Funcional
Critério Grafo Causa-Efeito
 Critérios anteriores não exploram combinações de
dados de entrada

 Causa-Efeito ajuda na definição de um conjunto de


casos de teste que exploram ambigüidades e
incompletude nas especificações

34
Teste Funcional
Critério Grafo Causa-Efeito (2)
 Passos para derivar casos de teste:
 Dividir a especificação em partes
 grafos grandes são complexos
 Identificar causas e efeitos na especificação e atribui-los um número
 Causas: estímulos que provoquem uma resposta do sistema

 Efeitos: saídas, mudanças no estado do sistema, resposta

 Analisar a semântica da aplicação e transformar em um grafo


booleano
 Adicionar anotações ao grafo
 Combinações das causas e efeitos impossíveis devido a restrições

 Converter o grafo em uma tabela de decisão


 Converter as colunas em casos de teste 35
Teste Funcional
Critério Grafo Causa-Efeito (3)
 Cada nó do grafo pode assumir valores 0 (ausência) ou 1 (presença) do estado
 A notação do grafo contém os seguintes operadores

NOT
Identidade
1 2 1 2

Se nó “1” é 1, então nó “2” é 1; senão nó “2” é 0 Se nó “1” é 1, então nó “2” é 0; senão nó “2” é 1

1 1
OR AND

2 4 3

3 2

Se nó “1” ou “2” ou “3” é 1, então nó “4” é 1; senão nó Se ambos nós “1” e “2” são 1, então nó “3” é 1; senão
“4” é 0 nó “3” é 0
36
Teste Funcional
Critério Grafo Causa-Efeito
Exemplo
 Programa para “imprimir mensagens”
 Ler 2 caracteres e imprimir mensagens da seguinte forma
 Se o primeiro caractere for “A” ou “B” o segundo caractere deve ser um digito (situação correta)
 Se o primeiro caractere for incorreto, enviar mensagem X
 Se o segundo caractere for incorreto, enviar mensagem Y
 Causas:
 1 - Caractere da coluna 1 é “A”
 2 - Caractere da coluna 1 é “B”
 3 - Caractere da coluna 2 é um dígito
 Efeitos:
 70 - Situação correta
 71 - A mensagem X é enviada
 72 - A mensagem Y é enviada

37
Teste Funcional
Critério Grafo Causa-Efeito
Exemplo (2)

1 71

E
11
2 70

3 72

38
Teste Funcional
Critério Grafo Causa-Efeito
Restrições 1
1 I
2
E

2 2

1 1 1
O M
R
2 2 2

Restrições:
E: no máximo 1 entre 1 e 2 pode ser igual a 1(1 e 2 não podem ser 1 simultaneamente
I: no mínimo 1 entre 1, 2 e 3 deve ser igual a 1(1, 2 e 3 não podem ser 0 simultaneamente
O: um e somente 1 entre 1 e 2 deve ser igual a 1
R: para que 1 seja igual a 1, 2 deve ser igual a 1
M: se o efeito 1 é 1 o efeito 2 é forçado a ser 0
39
Teste Funcional
Critério Grafo Causa-Efeito
Exemplo (3)
 Construir tabela de decisão
 Efeitos (ações ) que ocorrem para todas as combinações de causas
(condições)
 Se pode ocorrer n causas a tabela terá 2n entradas
 Passos:
 Selecionar um efeito para estar no estado presente, isto é, com valor 1.
 Rastrear o grafo para trás encontrando combinações de causas que fazem o efeito 1
 Quando nó for OR e a saída deva ser 1 nunca atribuir mais de uma entrada com o
valor 1 simultaneamente
 Quando o nó for AND e a saída deva ser 0 todas as combinações de entrada que
levem a saída 0 devem ser enumeradas
 Quando o nó for AND e a saída deva ser 0 somente uma condição em que todas
as entradas sejam 0 precisa ser enumerada
 Criar uma coluna na tabela de decisão para cada combinação
 Determinar para cada combinação os estados de todos os outros efeitos e colocar na
tabela 40
Teste Funcional
Critério Grafo Causa-Efeito
Exemplo (4)
 Construir tabela de decisão

1 0 0 1 0 1
2 0 0 0 1 0
3 0 1 1 1 0
70 0 0 1 1 0
71 1 1 0 0 0
72 1 0 0 0 1

41
Teste Funcional
Critério Grafo Causa-Efeito
Exemplo (5)
 Converter cada coluna para um caso de teste

42
Teste Funcional
Critério Grafo Causa-Efeito
Outro Exemplo
 Exemplo do Programa de Cadeia de Caracteres

 Causas
 1 - Inteiro positivo no intervalo de 1 a 20

 2 - Caractere a ser procurado na cadeia

 3 - Procurar outro caractere

 Efeitos
 20 – Inteiro fora do intervalo

 21 – Posição do caractere na cadeia

 22 – Caractere não encontrado

 23 – Término do programa

43
Teste Funcional
Critério Grafo Causa-Efeito
Outro Exemplo (2)
 Grafo causa efeito para a Cadeia de Caracteres

1 20

21

2
22

3 23

44
Teste Funcional
Critério Grafo Causa-Efeito
Outro Exemplo (3)
 Tabela de decisão para Cadeia de Caracteres

1 0 1 1 -
2 - 1 0 -
3 - 1 1 0
20 1 0 0 0
21 0 1 0 0
22 0 0 1 0
23 0 0 0 1

45
Teste Funcional
Critério Grafo Causa-Efeito
Outro Exemplo (4)
 Dados de teste para o grafo
Entrada Saída Esperada
T CC C O
23 Entre com um inteiro entre 1
e 20
3 abc c O caractere c aparece na
posição 3
s
x O caractere x não pertence à
cadeia
k O caractere k não pertence à
cadeia
n
46
Teste Funcional
Critério Grafo Causa-Efeito
Avaliação
 Critério exercita combinações de dados de teste que possivelmente não
seriam considerados
 Os resultados esperados fazem parte da tabela de decisão
 Complexidade em se desenvolver grafo booleano
 Quando o número de causas e efeitos é muito grande
 Complexidade na conversão do grafo para a tabela de decisão
 Solução: identificar subproblemas e desenvolver subgrafos

Eficiência depende da qualidade da especificação

47
Teste Funcional
Critério Error Guessing
 Abordagem ad-hoc

 Supor por intuição e experiênccia alguns tipos prováveis de erros

 A partir destas suposições definir casos de teste que poderiam detectá-


los

48
Teste funcional
Considerações finais
 Requer apenas a especificação do produto

 Pode ser aplicado a qualquer programa, em qualquer


paradigma

 Não podem assegurar que as partes críticas do código foram


cobertas (baseado na especificação)

 Os critérios se baseiam em premissas


 Elementos da mesma classe de equivalência se comportam de forma
similar...
49

Você também pode gostar