Buscar

Teste Software II

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 61 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 61 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 61 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Introdução aoIntrodução ao
Teste de SoftwareTeste de Software
Ricardo A. Ramos
[Baseado na apresentação do LABS –ICMC-USP -> http://www.labes.icmc.usp.br]
Organização Organização 
� Introdução
� Teste de Software
� Terminologia e Conceitos Básicos
Introdução ao Teste de Software 2
� Técnicas e Critérios de Teste
� Automatização da Atividade de Teste
� Estudos Empíricos
� Perspectivas
IntroduçãoIntrodução
� Qualidade de Software
Conformidade com requisitos funcionais
e de desempenho, padrões de desenvolvimento 
documentados e características
Introdução ao Teste de Software 3
� Corretitude
� Confiabilidade
� Testabilidade
documentados e características
implícitas esperadas de todo software
profissionalmente desenvolvido.
IntroduçãoIntrodução
� Garantia de Qualidade de Software
� Conjunto de atividades técnicas aplicadas 
durante todo o processo de desenvolvimento
Introdução ao Teste de Software 4
� Objetivo
�Garantir que tanto o processo de desenvolvimento 
quanto o produto de software atinjam os níveis de 
qualidade especificados
� VV&T – Verificação, Validação e Teste
IntroduçãoIntrodução
� Validação: Assegurar que o produto final corresponda 
aos requisitos do usuário
� Verificação: Assegurar consistência, completitude e 
Estamos construindo o produto certo?
Introdução ao Teste de Software 5
� Verificação: Assegurar consistência, completitude e 
corretitude do produto em cada fase e entre fases 
consecutivas do ciclo de vida do software
� Teste: Examina o comportamento do produto por meio 
de sua execução
Estamos construindo corretamente o produto?
TerminologiaTerminologia
� Defeito Erro Falha
� Defeito: deficiência mecânica ou algorítmica 
que, se ativada, pode levar a uma falha
Erro: item de informação ou estado de 
Introdução ao Teste de Software 6
� Erro: item de informação ou estado de 
execução inconsistente
� Falha: evento notável em que o sistema 
viola suas especificações
Defeitos no Processo de Defeitos no Processo de 
DesenvolvimentoDesenvolvimento
� A maior parte é de origem humana
� São gerados na comunicação e na 
transformação de informações
Introdução ao Teste de Software 7
� Continuam presentes nos diversos produtos de 
software produzidos e liberados (10 defeitos a 
cada 1000 linhas de código)
� A maioria encontra-se em partes do código 
raramente executadas
Defeitos no Processo de Defeitos no Processo de 
DesenvolvimentoDesenvolvimento
� Principal causa: tradução incorreta de 
informações
� Quanto antes a presença do defeito for 
revelada, menor o custo de correção do 
Introdução ao Teste de Software 8
revelada, menor o custo de correção do 
defeito e maior a probabilidade de corrigi-lo 
corretamente
� Solução: introduzir atividades de VV&T ao 
longo de todo o ciclo de desenvolvimento
Teste e DepuraçãoTeste e Depuração
� Teste
Processo de executacao de um programa com
o objetivo de revelar a presença de erros. 
Contribuem para aumentar a confiança de que o 
Introdução ao Teste de Software 9
� Depuração
Conseqüência não previsível do teste.
Após revelada a presença do erro, este
deve ser encontrado e corrigido.
Contribuem para aumentar a confiança de que o 
software desempenha as funções especificadas.
Teste de Software Teste de Software 
� Fundamental em todos os ramos de 
engenharia
�Software: produto da Engenharia de Software
� Atividade essencial para ascensão ao nível 3 
Introdução ao Teste de Software 10
� Atividade essencial para ascensão ao nível 3 
do Modelo CMM/SEI
� Atividade relevante para avaliação da 
característica funcionalidade
(ISO 9126,14598-5)
Teste de SoftwareTeste de Software
?
D P
X
Objetivo: revelar a presença de erros
Introdução ao Teste de Software 11
� Inexistência de erro:
� Software é de alta qualidade?
� Conjunto de casos de teste T é de baixa qualidade?
? XT
Teste de SoftwareTeste de Software
� Defeitos e erros não revelados
� Falhas se manifestam durante a utilização 
pelos usuários
�Erros devem ser corrigidos durante a 
Introdução ao Teste de Software 12
�Erros devem ser corrigidos durante a 
manutenção
� Alto custo
Teste de SoftwareTeste de Software
� Falhas graves
� Qualidade e confiabilidade suspeitas
� Modificação do projeto
� Novos testes
Introdução ao Teste de Software 13
� Erros de fácil correção
� Funções aparentemente funcionam bem
� Qualidade e confiabilidade aceitáveis
� Testes inadequados para revelar a presença de 
erros graves
� Novos testes
Teste de SoftwareTeste de Software
� Limitações
� Não existe um algoritmo de teste de propósito 
geral para provar a corretitude de um programa
� Em geral, é indecidível se dois caminhos de um 
mesmo programa ou de diferentes programas 
Introdução ao Teste de Software 14
mesmo programa ou de diferentes programas 
computam a mesma função
� É indecidível se existe um dado de entrada que 
leve à execução de um dado caminho de um 
programa; isto é, é indecidível se um dado 
caminho é executável ou não 
Teste de SoftwareTeste de Software
Atividades de
Teste
Configuração
de Software
Avaliação
Resultados
de Teste
Erros
Depuração
Introdução ao Teste de Software 15
Teste
Configuração
de Teste Resultados
Esperados
Dados 
da Taxa
de Erros
Modelo de
Confiabilidade
Depuração
Correções
Confiabilidade
Prevista
Teste de SoftwareTeste de Software
� Fases de Teste
� Teste de Unidade
� Identificar erros de lógica e de implementação
em cada módulo do software, separadamente
Introdução ao Teste de Software 16
� Teste de Integração
� Identificar erros associados às interfaces entre os 
módulos do software
� Teste de Sistema
� Verificar se as funções estão de acordo com a 
especificação e se todos os elementos do sistema 
combinam-se adequadamente
Teste de SoftwareTeste de Software
� Etapas do Teste
� Planejamento
� Projeto de casos de teste
� Execução do programa com os casos de teste
Introdução ao Teste de Software 17
� Execução do programa com os casos de teste
� Análise de resultados
Teste de SoftwareTeste de Software
� Caso de teste
� Especificação de uma entrada para o programa e 
a correspondente saída esperada
� Entrada: conjunto de dados necessários para uma 
execução do programa
Introdução ao Teste de Software 18
execução do programa
� Saída esperada: resultado de uma execução do 
programa
� Oráculo
� Um bom caso de teste tem alta probabilidade de 
revelar um erro ainda não descoberto
Teste de SoftwareTeste de Software
� Projeto de casos de teste
� O projeto de casos de teste pode ser tão difícil 
quanto o projeto do próprio produto a ser testado
� Poucos programadores/analistas gostam de teste 
Introdução ao Teste de Software 19
� Poucos programadores/analistas gostam de teste 
e, menos ainda, do projeto de casos de teste
� O projeto de casos de teste é um dos melhores 
mecanismos para a prevenção de defeitos
� O projeto de casos de teste é tão eficaz em 
identificar erros quanto a execução dos casos de 
teste projetados
Teste de SoftwareTeste de Software
� Maneira sistemática e planejada para 
conduzir os testes
� Técnicas e Critérios de Teste
� Conjunto de Casos de Teste T
Introdução ao Teste de Software 20
� Conjunto de Casos de Teste T
�Características desejáveis
� Deve ser finito
� Custo de aplicação deve ser razoável
Técnicas e Critérios de TesteTécnicas e Critérios de Teste
� Critério de Teste C
� Objetivo
� Obter, de maneira sistemática, um conjunto T de
casos de teste que seja efetivo quanto à meta principal 
de teste (revelar a presença de erros no programa)
Introdução ao Teste de Software 21
de teste(revelar a presença de erros no programa)
� Propriedades
i) incluir todos os desvios de fluxo de execução
ii) incluir pelo menos um uso de todo resultado
computacional
iii) T mínimo e finito
Técnicas e Critérios de TesteTécnicas e Critérios de Teste
� Critério de Seleção de Casos de Teste
�Procedimento para escolher casos de teste 
para o teste de P
� Critério de Adequação
Introdução ao Teste de Software 22
� Critério de Adequação
�Predicado para avaliar T no teste de P
� T é C-adequado ⇔ todo elemento requerido 
por C é exercitado por pelo menos por
um t, t ∈ T
Técnicas e Critérios de TesteTécnicas e Critérios de Teste
� Técnica Funcional
�Requisitos funcionais do software
� Critério Particionamento em Classes de Equivalência
� Técnica Estrutural
Introdução ao Teste de Software 23
�Estrutura interna do programa
� Critérios Baseados em Fluxo de Dados
� Técnica Baseada em Erros
�Erros mais freqüentes cometidos durante o 
processo de desenvolvimento de software
� Critério Análise de Mutantes
Automatização da Atividade de TesteAutomatização da Atividade de Teste
� Ferramentas de Teste
Para a aplicação efetiva de um critério de teste faz-se 
necessário o uso de ferramentas automatizadas que
apóiem a aplicação desse critério.
Introdução ao Teste de Software 24
� Contribuem para reduzir as falhas produzidas pela 
intervenção humana
� Aumento da qualidade e produtividade da atividade de 
teste
� Aumento da confiabilidade do software
� Facilitam a condução de estudos comparativos 
entre critérios
Automatização da Atividade de TesteAutomatização da Atividade de Teste
� Critérios Estruturais: Fluxo de Dados
�Asset, Proteste – programas em Pascal
� xSuds – programas em C, C++ e Cobol
�Poke-Tool – programas em C, Cobol e Fortran
Introdução ao Teste de Software 25
� Critérios Baseados em Mutação
�Mothra – programas em Fortran
�Proteum – programas em C (unidade)
�Proteum/IM – programas em C (integração)
�Proteum/RS – especificações
Automatização da Atividade de TesteAutomatização da Atividade de Teste
� xSuds (Software Understanding & 
Diagnosis System)
� xAtac: teste
� xSlice: depuração
Introdução ao Teste de Software 26
� xSlice: depuração
� xVue: manutenção
� xProf: melhoria de performance
� xDiff: comparação de código
Estado da Arte X Estado da Prática
Técnica Funcional (Caixa Preta)Técnica Funcional (Caixa Preta)
� Baseia-se na especificação do software 
para derivar os requisitos de teste
� Aborda o software de um ponto de vista 
macroscópico
Introdução ao Teste de Software 27
macroscópico
� Envolve dois passos principais:
� Identificar as funções que o software deve realizar 
(especificação dos requisitos)
� Criar casos de teste capazes de checar se essas 
funções estão sendo executadas corretamente
Técnica FuncionalTécnica Funcional
� Problema
� Dificuldade em quantificar a atividade de teste: 
não se pode garantir que partes essenciais ou 
críticas do software foram executadas
Introdução ao Teste de Software 28
� Dificuldade de automatização
� Critérios da Técnica Funcional
� Particionamento em Classes de Equivalência
� Análise do Valor Limite
� Grafo de Causa-Efeito
Técnica Funcional: ExemploTécnica Funcional: Exemplo
� Particionamento em Classes de 
Equivalência
�Divide o domínio de entrada do programa em 
classes de dados (classes de equivalências)
Introdução ao Teste de Software 29
classes de dados (classes de equivalências)
� Os dados de teste são derivados a partir das classes 
de equivalência
Técnica Funcional: ExemploTécnica Funcional: Exemplo
� Passos
� Identificar classes de equivalência
� Condições de entrada
� Classes válidas e inválidas
Introdução ao Teste de Software 30
�Definir os casos de teste
� Enumeram-se as classes de equivalência
� Casos de teste para as classes válidas
� Casos de teste para as classes inválidas
Técnica Funcional: ExemploTécnica Funcional: Exemplo
� Especificação do programa Identifier
O programa deve determinar se um identificador é válido ou não 
em Silly Pascal (uma variante do Pascal). Um identificador
válido deve começar com uma letra e conter apenas letras ou 
Introdução ao Teste de Software 31
válido deve começar com uma letra e conter apenas letras ou 
dígitos. Além disso, deve ter no mínimo um caractere e no 
máximo seis caracteres de comprimento. 
� Exemplo
abc12 (válido); 
cont*1 (inválido);
1soma (inválido);
a123456 (inválido) 
Técnica Funcional: ExemploTécnica Funcional: Exemplo
� Classes de equivalência
Tamanho t do identificador
Condições de Entrada Classes Válidas Classes Inválidas
1 ≤ t ≤ 6
(1)
t > 6
(2)
Introdução ao Teste de Software 32
Primeiro caractere c é uma letra
Só contém caracteres válidos
Sim
(3)
Não
(4)
Sim
(5)
Não
(6)
� Exemplo de Conjunto de Casos de Teste
� T0 = {(a1,Válido), (2B3, Inválido), (Z-12, Inválido), (A1b2C3d, Inválido)}
(1, 3, 5) (4) (6) (2)
Técnica Funcional: Análise de valorTécnica Funcional: Análise de valor--limitelimite
� Observações da prática profissional mostram que 
grande parte dos erros ocorre nas fronteiras do 
domínio de entrada
� Completa a técnica de classes de equivalência
Introdução ao Teste de Software 33
� Completa a técnica de classes de equivalência
� Casos de teste são selecionados nas bordas da 
classe.
� Também deriva casos de testes para a saída.
Técnica Funcional: Análise de valorTécnica Funcional: Análise de valor--limitelimite
� Se os limites da condição de entrada forem a e b, projetar 
c.t. para os valores imediatamente acima e abaixo de a e b.
� Se uma condição de entrada especifica vários valores , 
projetar casos de teste para os valores imediatamente 
acima e abaixo do valor mínimo e do valor máximo.
Introdução ao Teste de Software 34
� Aplicar as mesmas diretrizes para os valores de saída.
� Se as estruturas de dados internas do programa têm limites 
especificados, projeto um caso de teste para exercitar a 
estrutura de dados no seu limite.
Técnica Funcional: ExemploTécnica Funcional: Exemplo
� Classes de equivalência
Tamanho t do identificador
Condições de Entrada Classes Válidas Classes Inválidas
t =1, 6
(1)
t =0, 7
(2)
Introdução ao Teste de Software 35
(1)
Primeiro caractere c é uma letra
Só contém caracteres válidos
(2)
-- --
-- --
� Exemplo de Conjunto de Casos de Teste
� T0 = { (a, Válido), (Abcdef, Válido), ( , Inválido), (abcdefg, Inválido}
(1) (1) (2) (2)
Técnica Estrutural (Caixa Branca)Técnica Estrutural (Caixa Branca)
� Baseada no conhecimento da estrutura 
interna (implementação) do programa
� Teste dos detalhes procedimentais
� A maioria dos critérios dessa técnica utiliza 
Introdução ao Teste de Software 36
� A maioria dos critérios dessa técnica utiliza 
uma representação de programa 
conhecida como grafo de programa ou 
grafo de fluxo de controle
Técnica EstruturalTécnica Estrutural
� Grafo de Programa
� Nós: blocos “indivisíveis”
�Não existe desvio para o meio do bloco
�Uma vez que o primeiro comando do bloco é 
Introdução ao Teste de Software 37
�Uma vez que o primeiro comando do bloco é 
executado, os demais comandos são 
executados seqüencialmente
� Arestas ou Arcos: representam o fluxo de 
controle entre os nós 
/* 01 */ {
/* 01 */ char achar;
/* 01 */ int length, valid_id;
/* 01 */ length = 0;
/* 01 */ printf (“Identificador: “);
/* 01 */ achar = fgetc (stdin);
/* 01 */ valid_id = valid_s(achar);
/* 01 */ if (valid_id)
/* 02 */ length = 1;
/* 03 */ achar = fgetc (stdin);
Identifier.c (função main) 01
02
03
0405 08
Introdução ao Teste de Software 38
/* 03 */ achar = fgetc (stdin);
/* 04 */ while (achar != '\n')
/* 05 */ {
/* 05 */ if (!(valid_f(achar)))
/* 06 */ valid_id = 0;
/* 07 */ length++;
/* 07 */ achar = fgetc (stdin);
/* 07 */ }
/* 08 */ if (valid_id && (length >= 1) && (length < 6) )
/* 09 */ printf (“Valido\n“);
/* 10 */ else
/* 10 */ printf (“Invalido\n“);
/* 11 */ }
05
06
07
08
09 10
11
Técnica EstruturalTécnica Estrutural
Grafo de Programa
� Detalhes considerados
� nó
Introdução ao Teste de Software 39
� arco
� caminho
� simples (2,3,4,5,6,7) 
� completo 
(1,2,3,4,5,6,7,4,8,9,11)
� fluxo de controleGrafo de Programa do identifier
Gerado pela View-Graph
Técnica Baseada em ErrosTécnica Baseada em Erros
� Os requisitos de teste são derivados a partir 
dos erros mais freqüentes cometidos 
durante o processo de desenvolvimento do 
software
Introdução ao Teste de Software 40
software
� Critérios da Técnica Baseada em Erros
�Semeadura de Erros
� Teste de Mutação
� Análise de Mutantes (unidade)
� Mutação de Interface (integração)
� Hipótese do Programador Competente
Programadores experientes escrevem programas
corretos ou muito próximos do correto.
Teste de MutaçãoTeste de Mutação
Introdução ao Teste de Software 41
� Efeito de Acoplamento
Casos de teste capazes de revelar erros simples são
tão sensíveis que, implicitamente, também são 
capazes de revelar erros mais complexos.
Teste de MutaçãoTeste de Mutação
M...M...M02M01 M...M...M...
S(t) = P(t) ∧ P(t) ≠ Mi(t) ⇒
P não contém o erro modelado por Mi(t)
Introdução ao Teste de Software 42
M...
M...
P
M...
M...
M...
M...
M...
M...
M...
M...
M...
M...
Mn
M...
M...
M...
M...
M...
M...
M...M...M... M...M...M...
M...
M...
M...
M...
M...
M...
M...
M...
Φ(P)
Teste de MutaçãoTeste de Mutação
� Status após a execução de P e Mi
M...
P
M...
M...
M...
M...
M...
M02
M...
M01
M...
M...
M...
M...
M...
M...
M...
M...M...M...M...
M...
M...
M...
M...
M02
M...
M01
M...
M...
M...
M...
M...
M...
M...
Mutantes Mortos
∃ t / P(t) ≠ Mi(t)
M... M... M...M...M...M... M... M...M...
Introdução ao Teste de Software 43
M...
M...
P
M...
M...
M...
M...
M...
M...
M...
M...
M...
Mn
M...
M...
M...
M...
M...
M...
M...
M...
M...
M...
M...
M...
M...
M...
Φ(P)
M...
M...
M...
M...
M...
M...
M...
M...
M...
M...
M...
Mn
M...
M...
M...
M...
M...
M...
M...
M...
M...
M...
M...
M...
M...
M...Mutantes Vivos
∀ t ∈ T ⇒ P(t) = Mi(t)
Mutantes
Não-Equivalentes
Mutantes
Equivalentes
M...
M...
M...
M...
M...
M...
M...
Mn
M...
M...
M...
M...
Teste de MutaçãoTeste de Mutação
op2
op1
M01 M02 M03 M04 M05 M06
M07 M08 M09 M10 M11
Introdução ao Teste de Software 44
P
opn
op3
M12 M13 M14 M15 M16
M17 M18 M19 M20 M21 M22
Morto
Não-Equivalentes Equivalentes
Vivos
Análise de MutantesAnálise de Mutantes
� Passos da Análise de Mutantes
1- Geração de Mutantes
Para modelar os desvios sintáticos mais comuns,
operadores de mutação são aplicados a um programa, 
transformando-o em programas similares: mutantes.
Introdução ao Teste de Software 45
transformando-o em programas similares: mutantes.
Mutantes
P1
Pn
P3
P2
P4
Operadores
de MutaçãoP
Programa
em Teste
Análise de MutantesAnálise de Mutantes
� Seleção dos operadores de mutação
�Abrangente
� Capaz de modelar a maior parte dos erros
�Pequena cardinalidade
Introdução ao Teste de Software 46
�Pequena cardinalidade
� Problemas de custo
� Quanto maior o número de operadores 
utilizados, maior o número de mutantes gerados
Análise de MutantesAnálise de Mutantes
� Exemplo de Mutantes
Mutante Gerado pelo Operador OLAN
if (valid_id * (length >= 1) && (length < 6) )
printf ("Valido\n");
else
Introdução ao Teste de Software 47
Mutante Gerado pelo Operador ORRN
if (valid_id && (length >= 1) && (length <= 6) )
printf ("Valido\n");
else
printf ("Invalido\n");
else
printf ("Invalido\n");
Análise de MutantesAnálise de Mutantes
� Passos da Análise de Mutantes
2 - Execução do Programa
� Execução do programa com os casos de teste
3 - Execução dos Mutantes
Introdução ao Teste de Software 48
� Execução dos mutantes com os casos de teste
� Mutante morto
� Mutante vivo
4 - Análise dos Mutantes Vivos
� Mutante equivalente
� Inclusão de novos casos de teste
Escore de mutação: ms(P,T) =
M(P) - EM(P)
DM(P,T)
Análise de MutantesAnálise de Mutantes
� Ferramenta Proteum
� Critério Análise de Mutantes
� Linguagem C
� Outras Características
Introdução ao Teste de Software 49
� Importação de casos de teste
� Inserção e remoção de casos de teste dinamicamente
� Casos de teste podem ser habilitados ou desabilitados
� Seleção dos operadores a serem utilizados
� 71 operadores: comandos, operadores, variáveis e 
constantes
� Geração de relatórios
Análise de MutantesAnálise de Mutantes
� Ferramenta Proteum
� Interface gráfica
� Mais fácil
� Constante interação com o testador
Introdução ao Teste de Software 50
�Scripts
� Possibilitam a condução de uma sessão de teste de 
modo programado
� Domínio dos conceitos de mutação e dos programas 
que compõem as ferramentas
Análise de MutantesAnálise de Mutantes
� Proteum: Interface Gráfica 
Introdução ao Teste de Software 51
Análise de MutantesAnálise de Mutantes
� Proteum: Criando uma Sessão de Teste
Introdução ao Teste de Software 52
Análise de MutantesAnálise de Mutantes
� Proteum: Gerando Mutantes
Introdução ao Teste de Software 53
Análise de MutantesAnálise de Mutantes
� Status após T0 (a) e T2 (b)
Introdução ao Teste de Software 54
(a) (b)
� T0 = { (a1, Válido), (2B3, Inválido), (Z-12, Inválido), (A1b2C3d, Inválido)}
� T1 = T0 ∪ {(1#, Inválido), (%, Inválido), (c, Válido)}
� T2 = T1 ∪ {(#-%, Inválido)}
Análise de MutantesAnálise de Mutantes
� Proteum: Visualização de Mutantes
Introdução ao Teste de Software 55
Análise de MutantesAnálise de Mutantes
� Status após T3 (a) e T4 (b)
Introdução ao Teste de Software 56
(a) (b)
� T3 = T2 ∪ {(zzz, Válido), (aA, Válido), (A1234, Válido), (ZZZ, Válido),
(AAA, Válido), (aa09, Válido), ([, Inválido), ({, Inválido),
(x/, Inválido), (x:, Inválido), (x18, Válido), (x[[, Inválido), (x{{, Inválido)}
� T4 = T3 ∪ {(@, Inválido), (`, Inválido), (x@, Inválido), (x`, Inválido)}
Análise de MutantesAnálise de Mutantes
� Mutantes Vivos
Mutante Gerado pelo Operador VTWD
if (valid_id && (length >= 1) && (PRED(length) < 6) )
printf ("Valido\n");
else
printf ("Invalido\n");
Introdução ao Teste de Software 57
Mutante Gerado pelo Operador ORRN
if (valid_id && (length >= 1) && (length <= 6) )
printf ("Valido\n");
else
printf ("Invalido\n");
printf ("Invalido\n");
t = {(ABCDEF, Válido)} 
Saída obtida = Inválido
/* 01 */ {
/* 01 */ char achar;
/* 01 */ int length, valid_id;
/* 01 */ length = 0;
/* 01 */ printf ("Digite um possível identificador\n");
/* 01 */ printf ("seguido por <ENTER>: ");
/* 01 */ achar = fgetc (stdin);
/* 01 */ valid_id = valid_s(achar);
/* 01 */ if (valid_id)
/* 02 */ length = 1;
Identifier.c (função main)
Versão Corrigida
Introdução ao Teste de Software 58
/* 02 */ length = 1;
/* 03 */ achar = fgetc (stdin);
/* 04 */ while (achar != '\n')
/* 05 */ {
/* 05 */ if (!(valid_f(achar)))
/* 06 */ valid_id = 0;
/* 07 */ length++;
/* 07 */ achar = fgetc (stdin);
/* 07 */ }
/* 08*/ if (valid_id && (length >= 1) && (length <= 6) )
/* 09 */ printf ("Valido\n");
/* 10 */ else
/* 10 */ printf ("Invalido\n");
/* 11 */ }
Análise de MutantesAnálise de Mutantes
� Status após T5 no programa corrigido
Introdução ao Teste de Software 59
� T5 = T4 ∪ {(ABCDEF, Válido)}
ConclusõesConclusões
� A atividade de teste é fundamental no 
processo de desenvolvimento de software
�Qualidade do produto
� Alto custo da atividade de teste
Introdução ao Teste de Software 60
Alto custo da atividade de teste
� Desenvolvimento e aplicação de técnicas e 
critérios de teste
� Desenvolvimento e utilização de 
ferramentas de teste
� Estudos teóricos e empíricos para 
comparar os diversos critérios
PerspectivasPerspectivas
� Estratégias de Teste
� Teste de Integração
� Teste Orientado a Objeto
� Teste de Especificação
Introdução ao Teste de Software 61
� Teste de Especificação
� Teste de Sistemas Reativos
� Ambiente Integrado para Teste, Depuração e 
Manutenção de Software
� Teste de programas orientados a aspectos
� Teste com o apoio de orientação a aspectos

Outros materiais