You are on page 1of 36

Fabrício Dias

facisa-teste-de-software@googlegroups.com
http://groups.google.com.br/group/facisa-teste-de-software

 Introdução
 Histórico
 Critérios
 Técnicas para
identificação de casos de
teste caixa-preta
 Classes de equivalência

31/07/2014 2
 Testes Caixa-preta
 Detalhes de implementação não são
considerados
 O Software é avaliado segundo o ponto de
vista do usuário
 Em princípio pode detectar todos os defeitos
(teste exaustivo)
31/07/2014 3
 Deve-se estabelecer partições do domínio, de
forma que o conjunto de testes resultantes é
uma boa representação de todo o domínio
(teste de partição)
 Definir de alguma forma, um domínio de
entradas para um programa e então testá-lo
com dados de teste que são selecionados
randomicamente desse domínio (teste
randômico)
31/07/2014 4
 Origem nos anos 70
 Análise estruturada
 Tabelas de decisão
 Grafos causa-efeito
 Particionamento de equivalência
 Teste funcional sistemático
31/07/2014 5
 Destaca-se:
◦ Particionamento de Equivalência
◦ Análise do valor limite
◦ Grafo causa-efeito

 Todos os critérios da técnica funcional
baseiam-se apenas nas especificações do
produto testado
 Portanto a qualidade dos critérios dependem
fortemente da existência de uma boa
especificação de requisitos.


31/07/2014 6
 Especificações ausentes ou incompletas
tornarão difícil a aplicação dos critérios
funcionais
31/07/2014 7
 Identificar casos de teste
 Definir estratégias de teste
 Definir recursos
 Definir prioridades dos testes
 Elaborar cronograma
31/07/2014 8
 Requisitos a serem testados devem ser
passíveis de verificação
 Tipos de requisitos:
◦ Requisitos funcionais (casos de uso);
◦ Requisitos não-funcionais:
 Performance
 Configuração
 Instalação
 Gui
31/07/2014 9
 Determinismo
 Não-ambigüidade
 Corretude
 Completude
 Não-redundância
 Rastreabilidade
 Legibilidade
 Consistência
 Definição explícita
 Reusabilidade
 Viabilidade
31/07/2014 10
 O desafio
◦ O número máximo de combinações e permutações
de dados da maioria dos sistemas excedo a
quantidade de moléculas no universo! Ou seja:
10^80.
◦ Ex. Se o sistema tem 266 variáveis e elas possuem
apenas 2 estados cada uma, então:
◦ 2^266 = 1,19 * 10^80 combinações, ou ainda:
◦ 1,10600454435^86 combinações
31/07/2014 11
 O número de CT pode ser estimado pela
fórmula:
◦ NCT = FP^1,2

 Por outro lado, o número de potenciais
defeitos introduzidos nas etapas de
requisitos, análise, projeto, codificação,
documentação e manutenção pode ser dado
por:
◦ NPT= FP^1,25
31/07/2014 12
 Identificar casos de uso críticos
◦ Associados a RNF de desempenho
◦ Executados por mais de um ator
◦ Alta freqüência de uso no sistema
◦ Requerem recursos significativos do sistema
 Identificar casos de uso significativos
◦ São os que requerem mais recursos do sistema;
◦ Podem ser executados antes, durante ou depois
dos casos de uso críticos
31/07/2014 13
31/07/2014 14
 Classes de equivalência
 Pares ortogonais
 Análise causa-efeito

31/07/2014 15
 Motivação
◦ Noção de completude de testes
◦ Evitar redundâncias nos casos de testes






31/07/2014 16
 Definição
◦ Uma classe de equivalência é um sub-conjunto
onde seus elementos obedecem a uma determinada
propriedade
◦ Duas classes de equivalências distintas são
disjuntas
 Um mesmo elemento não existe em mais de uma
classe de equivalência
◦ Classes de equivalência são similares a partições
sobre um conjunto

31/07/2014 17
31/07/2014 18
Classe de
equivalência 3
Classe de
equivalência 1
Classe de
equivalência 2
Classe de
equivalência 4
Conjunto qualquer
 Com classes de equivalência consegue-se
cobrir todos os elementos do conjunto
(completude dos testes)
 Evita-se redundâncias
 O domínio de entrada (ou saída) do programa
é dividido em um número finito de partições
de equivalência
◦ Supõe-se que dados pertencentes a uma partição
revelam as mesmas falhas
◦ Partições válidas e inválidas são consideradas
31/07/2014 19
 Geração de testes: selecionar um ou mais
dados de cada partição
 Critério de cobertura: cada partição deve ser
considerada ao menos 1 vez.
31/07/2014 20
1. Decompor o programa em funções
2. Identificar as variáveis que determinam o
comportamento de cada função
3. Particionar os valores de cada variável em
classes de equivalência (válidas e inválias)
31/07/2014 21
4. Identificar os casos de testes:
1. Eliminar as classes impossíveis ou os casos
desinteressantes;
2. Selecionar CT cobrindo as classes válidas das
diferentes variáveis;
3. Para cada classe inválida escolher um CT que
cubra uma de cada vez.

31/07/2014 22
31/07/2014 23

 Classe de equivalência Normal Fraca
 Classe de equivalência Normal Forte
 Classe de equivalência Robusta Fraca
 Classe de equivalência Robusta Forte
31/07/2014 24
 Assume uma única variável de cada classe de
equivalência em um caso de teste;
 Assume o efeito de uma falta simples;
 Utiliza um único valor de cada classe de
equivalência;
 Sempre se tem o mesmo número de casos de
teste normais fracos na partição em relação
ao número de sub-conjuntos.
31/07/2014 25
 Assume o efeito de faltas múltiplas
 Utiliza CT de cada elemento do produto
cartesiano das classes de equivalência
 O produto cartesiano garante uma noção de
completude em dois sentidos:
◦ Cobrem-se todas as classes de equivalência
◦ Um elemento de cada combinação possível das
entradas.
31/07/2014 26
 Inclusão de dados inválidos;
 Entradas válidas, torna-se equivalente a
normal fraca;
 Entradas inválidas, caso de teste terá apenas
um dado inválido e demais serão válidos
 Desvantagem
◦ Especificação não informa saída pra entrada
inválida
31/07/2014 27
 União da proposta de empregar valores
inválidos (robusta) com a hipótese de faltas
múltiplas (forte)
31/07/2014 28
31/07/2014 29
 Para valores em um intervalo
◦ Selecionar um valor pertencente ao intervalo (ex.
Valor médio);
◦ Selecionar o maior valor;
◦ Selecionar o menor valor;
◦ Selecionar um valor maior que o maior valor válido;
◦ Selecionar um valor menor que o menor valor válido
 Ex.: Se as idades válidas são: 16<=
idade<=65, então devemos selecionar:
 {15,16, 40, 65, 66}
31/07/2014 30
 Para valores em uma lista
◦ Se a lista é muito pequena, deve-se selecionar cada
um dos membros e um não membro;
◦ Se a lista é muito grande, deve-se selecionar alguns
membros e um não membro
 Ex. Se os tipos de clientes podem ser: varejo,
empresa, governo:
◦ Selecionar cada um dos valores válidos;
◦ Selecionar um inválido (ex.: organizações sem fins
lucrativos).
31/07/2014 31
 Para um número específico de valores válidos
◦ Selecionar um número de valores igual ao número
previsto
◦ Selecionar o número de valores igual a zero;
◦ Selecionar um número de valores maior e menor
que o previsto.
 Ex. Se a senha de conter 8 dígitos
alfanuméricos:
◦ Selecione uma senha com 8 dígitos;
◦ Um senha vazia;
◦ Uma com menos de 8;
◦ Uma com mais de 8.
31/07/2014 32
 Para restrições
◦ Selecionar um objeto que satisfaz a restrição;
◦ Selecionar um objeto que não satisfaz.

 Ex. Se a operação é válida para todos os
funcionários do sexo feminino...
◦ Selecione um do sexo feminino;
◦ Selecione um do sexo masculino.
31/07/2014 33
 As propostas fracas não são tão
compreensíveis quanto as versões fortes;
 Se a linguagem é fortemente tipada não faz
sentido usar as propostas robustas;
 Se condições de erro têm alta prioridade
então as formas robustas devem ser usadas;
 Classes de equivalência é uma abordagem
interessante quando a entrada é definida em
termos de intervalos e sobre valores
discretos.
31/07/2014 34
 Classes de equivalência (CE) pode ser
melhorada quando usada em conjunto com
teste de fronteira;
 Classes de equivalência é indicada quando a
funcionalidade é complexa;
 Equivalência forte assume que variáveis são
independentes;
 Relação de equivalência nem sempre é
simples de determinar;
 Diferença entre formas fraca e forte ajuda na
distinção entre teste de progressão e
regressão.
31/07/2014 35



 Dúvidas?? Não?? Bom final de semana!
31/07/2014 36