Engenharia de Software 1
17 - Verifica¸c˜ao e Valida¸c˜ao: Testes funcionais
Alexandre de Andrade Barbosa
Objetivos
Objetivos
Descrever o Teste funcional como alternativa para gerar casos de teste
Verifica¸c˜
ao e Valida¸c˜
ao: Testes funcionais
Introdu¸c˜
ao
O teste funcional ´e uma t´ecnica de teste caixa-preta
Os casos de teste s˜ao gerados considerando-se um conjunto de
classes de entrada e sa´ıda
Verifica¸c˜
ao e Valida¸c˜
ao: Testes funcionais
Crit´erios para teste funcional
O teste funcional ´e um teste baseado em parti¸c˜oes
Verifica¸c˜
ao e Valida¸c˜
ao: Testes funcionais
Crit´erios para teste funcional
O teste funcional ´e um teste baseado em parti¸c˜oes
Crit´erio 1 - descrever que cada dado de teste poss´ıvel seja
considerado uma parti¸c˜ao unit´aria (Teste exaustivo)
Verifica¸c˜
ao e Valida¸c˜
ao: Testes funcionais
Crit´erios para teste funcional
O teste funcional ´e um teste baseado em parti¸c˜oes
Crit´erio 1 - Teste exaustivo (Impratic´avel)
Verifica¸c˜
ao e Valida¸c˜
ao: Testes funcionais
Crit´erios para teste funcional
Diferentes crit´erios de teste funcional podem ser utilizados
Ser˜ao descritos trˆes crit´erios de teste funcional:
Particionamento de equivalˆencia
An´alise de valor limite
Verifica¸c˜
ao e Valida¸c˜
ao: Testes funcionais
Programa de exemplo
O exemplo adotado ´e apresentado em (Delamaro:2007)
Seja P um programa que recebe um valor (T), uma cadeia de
caracteres (CC) de tamanho T, e em seguida informa se um
caractere (C) pertence a CC. O programa continua em execu¸c˜ao
enquanto o usu´ario digitar s (ou sim) e para sua execu¸c˜ao
quando o usu´ario digitar n (ou n˜ao). As cadeias fornecidas
Verifica¸c˜
ao e Valida¸c˜
ao: Testes funcionais
Particionamento de equivalˆencia
O objetivo do particionamento de equivalˆencia ´e dividir o
dom´ınio do programa em subconjuntos
Este particionamento pode ser aplicado aos elementos do
conjunto de entrada e de sa´ıda
Um elemento de um subconjunto ´e representativo para todo
aquele conjunto, ou seja, o comportamento dos elementos que
pertencem ao mesmo subconjunto ´e similar
O testador deve se basear nas especifica¸c˜oes do produto para
determinar quais s˜ao os subconjuntos de D(P)
Verifica¸c˜
ao e Valida¸c˜
ao: Testes funcionais
Particionamento de equivalˆencia - Exemplo
Para entrada:
CC e C n˜ao podem determinar classes de equivalˆencia (qualquer
caractere ´e permitido)
T determina parti¸c˜oes, pois 1
≤
T
≤
20
A op¸c˜ao do usu´ario continuar dever ser ”s”ou ”n”
Para sa´ıda:
Verifica¸c˜
ao e Valida¸c˜
ao: Testes funcionais
Particionamento de equivalˆencia - Exemplo
Classes de equivalˆencia
Vari´avel
Classes v´alidas
Classes inv´alidas
T
1
≤
T
≤
20
T
<
1 e
T
<
20
O
Sim
N˜ao
Verifica¸c˜
ao e Valida¸c˜
ao: Testes funcionais
Particionamento de equivalˆencia - Exemplo
Casos de teste ((T, CC, C, O), Sa´ıda)
Verifica¸c˜
ao e Valida¸c˜
ao: Testes funcionais
An´
alise de valor limite
De acordo com a experiˆencia, pode-se verificar que casos de teste
que com valores limites nos intervalos possuem maior
probabilidade em encontrar erros
A An´alise de Valor Limite (AVL) ´e uam especializa¸c˜ao do
Particionamento de Equivalˆencia (PE)
Verifica¸c˜
ao e Valida¸c˜
ao: Testes funcionais
An´
alise de valor limite
Segundo (Myers apud. Delamaro, 2007) devem ser selecionados
casos de teste levando em considera¸c˜ao as recomenda¸c˜oes a
seguir:
para intervalos (de entrada ou sa´ıda), deve-se definir valores para
os limites deste intervalo, bem como imediatamente acima e
abaixo dos limites;
para quantidades (de entrada ou sa´ıda), deve-se definir valores
para os limites desta quantidade, bem como imediatamente acima
e abaixo dos limites;
para conjuntos ordenados (de entrada ou sa´ıda), o primeiro e
´
Verifica¸c˜
ao e Valida¸c˜
ao: Testes funcionais
An´
alise de valor limite - Exemplo
Casos de teste ((T, CC, C, O), Sa´ıda)
((21,?,?,?), ”entre com um inteiro entre 1 e 20”)
((0,?,?,?), ”entre com um inteiro entre 1 e 20”)
((1,”a”,’a’,’s’), ”caractere encontrado na posi¸c˜ao 1”)
((1,”a”,’x’,’n’), ”caractere n˜ao foi encontrado na cadeia”)
((20,”abcdefghijklmnopqrst”,’a’,’s’), ”caractere encontrado na
posi¸c˜ao 1”)
Verifica¸c˜
ao e Valida¸c˜
ao: Testes funcionais
Teste funcional sistem´
atico
Teste funcional sistem´atico corresponde a uma uni˜ao do PE e da
AVL
Os elementos escolhidos na parti¸c˜ao:
correspondem aos valores limite;
Verifica¸c˜
ao e Valida¸c˜
ao: Testes funcionais
Teste funcional sistem´
atico
Para aplicar o crit´erio de teste funcional sistem´atico (TSF),
(Delamaro:2007) recomenda:
1
Valores num´ericos
1
valores discretos de entrada: testar todos os valores; e
2
intervalo de valores de entrada: testar os extremos e um valor no
interior do intervalo.
3
valores discretos de sa´ıda: gerar cada um deles; e
4
intervalo de valores de sa´ıda: gerar cada um dos extremos e ao
Verifica¸c˜
ao e Valida¸c˜
ao: Testes funcionais
Teste funcional sistem´
atico
Para aplicar o crit´erio de teste funcional sistem´atico (TSF),
(Delamaro:2007) recomenda:
1
Valores diferentes e casos especiais
casos especiais devem ser explorados (ex. espa¸co em branco, valor
zero, nulo, ...)
2
Tipos de valores ilegais
valores que n˜
ao sejam aceitso pelo prob=grama devem ser
utilizado nos casos de teste
3
N´
umeros reais
deve-se definir uma margem de aceita¸c˜
ao de erro
4
Intervalos vari´aveis
Verifica¸c˜
ao e Valida¸c˜
ao: Testes funcionais
Teste funcional sistem´
atico - Exemplo
Casos de teste ((T, CC, C, O), Sa´ıda)
((a,?,?,?), ”entre com um inteiro entre 1 e 20”)
((1.0,?,?,?), ”entre com um inteiro entre 1 e 20”)
((1,”!”,’ ’,’n’), ”caractere n˜ao foi encontrado na cadeia”)
((1,”)”,’ ’,’n’), ”caractere n˜ao foi encontrado na cadeia”)
((2,”ab”,’b’,’n˜ao’), ”caractere foi encontrado na posi¸c˜ao 2”)
Verifica¸c˜
ao e Valida¸c˜
ao: Testes funcionais
Teste funcional sistem´
atico - Exemplo
Casos de teste ((T, CC, C, O), Sa´ıda)
((20,”
!"# %&()*+’/01234567
Verifica¸c˜
ao e Valida¸c˜
ao: Testes funcionais
Exerc´ıcios
Exerc´ıcio
1