Ricardo A. Ramos. [Baseado na apresentação do LABS ICMC-USP ->

Documentos relacionados
Introdução ao Teste de Software

Introdução ao Teste de Software

Teste de Software. Teste Funcional Teste Estrutural. Teste Baseado em Erros (Análise de Mutantes)

Introdução à Verificação, Validação e Teste (VV&T)*

Teste de Software Parte 2. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1º semestre de 2015

Teste de Software Parte 2. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1º semestre de 2016

Teste de Software. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1º semestre de 2015

Introdução a Testes de Software. Ricardo Argenton Ramos

Introdução a Verificação, Validação e Teste de Software

Engenharia de Software I

Garantia de Qualidade

Teste de Software. Técnica de Teste Estrutural. Rosemary Silveira Filgueiras Melo

Teste de Software. Técnica de Teste Estrutural. Rosemary Silveira Filgueiras Melo

Teste de Software: conceitos, técnicas e benefícios

Teste Estrutural e de Mutação

SSC 0721 Teste e Validação de Software

Aula 20 Testes 3. Alessandro Garcia Leonardo da Silva Sousa OPUS Group/LES/DI/PUC-Rio Dezembro 2016

Teste de Software: Teste Funcional. Simone Senger Souza ICMC/USP

Desenvolvimento de Software. Testes de Software. Tópicos da Aula. Onde estamos... Verificação x Validação. Testes de Software

Organização para Realização de Teste de Software

Engenharia de Software

6. QUAIS AS TÉCNICAS E RESPECTIVOS CRITÉRIOS DE TESTE EXISTENTES?

Gerência de Projetos e Qualidade de Software. Prof. Walter Gima

Introdução a Teste de Software

Estágio II. Aula 02 Conceitos de Teste de Software. Prof. MSc. Fred Viana

UNIVERSIDADE ESTADUAL PAULISTA INSTITUTO DE BIOCIÊNCIAS, LETRAS E CIÊNCIAS EXATAS DEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÃO E ESTATÍSTICA

NOTAS DIDÁTICAS DO ICMC

1. A principal razão de dividir o processo de teste em tarefas distintas é:

Teste de Software. Competência: Entender as técnicas e estratégias de testes de Software

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas

TESTES DE SOFTWARE. Profa. Maria Auxiliadora

Introdução aos Testes de Software

Organização para Realização de Teste de Software Quando o teste se inicia há um conflito de interesses:

TESTES DE SOFTWARE Unidade 1 Importância do Teste de Software. Luiz Leão

Critérios de Teste Funcionais

Testes de software - Teste funcional

Teste de Software. Karen Frigo Busolin Novembro / 2010

Verificação e Validação (V & V)

Processos de software

INTRODUÇÃO A ENGENHARIA DE SOFTWARE

Teste de Software. Objetivo: Executar software para revelar erros/falhas ainda não descobertos. Pode gastar 40% do esforço de desenvolvimento

Teste de Software Orientado a Objeto. Ricardo Argenton Ramos

Teste de Software. Estratégias de Teste. Rosemary Silveira Filgueiras Melo

Minimização de Conjuntos de Casos de Teste para Máquinas de Estados Finitos. Lúcio Felippe de Mello Neto

Engenharia de Software. Teste de Software. Introdução. Profa. Dra. Lúcia V. L. Filgueiras Profa. Dra. Selma Shin Shimizu Melnikoff

Engenharia de Software

MUTAÇÃO DE INTERFACE (MI) JACKSON ANTONIO DO PRADO LIMA SILVIA REGINA VERGILIO

UNIVERSIDADE FEDERAL DO PARANÁ - UFPR Bacharelado em Ciência da Computação

ENGENHARIA DE SOFTWARE

Fundamentos de Teste de Software

Estratégias de Testes Parte I

Teste de Validação. ações visíveis ao usuário e entradas e saídas do sistema reconhecíveis pelo usuário

Falta Erro Falha. Motivação. Teste de Software. Falha, Falta e Erro. Falha, Falta e Erro. Falha, Falta e Erro. Falha, Falta e Erro 6/6/11

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Prof. Fabiano Papaiz IFRN

Engenharia de Software Aula 21. Revisão da Prova 2. Eduardo Figueiredo.

Processos de Software by Pearson Education Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 4 Slide 1

Verificação e Validação

Engenharia de Software

Verificação e Validação. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 22 Slide 1

Aula 23 Testes 3. Alessandro Garcia Leonardo da Silva Sousa OPUS Group/LES/DI/PUC-Rio Dezembro 2016

Princípios da Engenharia de Software aula 03

Qualidade de Software e Atividades de Verificação e Validação

Teste de Software. Planejamento de Teste. Rosemary Silveira Filgueiras Melo

Teste de Software. Introdução. Teste de SW -Introdução. Verificação e Validação

Manutenção de Software

Verificação e Validação

SSC 0721 Teste e Inspeção de Software

1. Quando algo visível para os usuário finais é um desvio em relação ao especificado ou um comportamento não esperado, isso é chamado de:

Engenharia de Software

Testes de Software. Prof. Edjandir C. Costa

Unidade VI. Técnicas de Teste de Software Teste Estrutural. Profa. Dra. Sandra Fabbri

Estágio II. Aula 01 Qualidade de Software. Prof. MSc. Fred Viana

VERIFICAÇÃO & VALIDAÇÃO

FATORES E MÉTRICAS DE QUALIDADE

Teste de Software. Prof. Camila. Pedro de Assis Sobreira Jr.

Perguntas da Aula 2. Respostas da Pergunta 2. Respostas da Pergunta 1. Respostas da Pergunta 4. Respostas da Pergunta 3. Processos de Software

TS03. Teste de Software ESTÁGIOS DO TESTE DE SOFTWARE. COTI Informática Escola de Nerds

TESTES DE SOFTWARE Lista de Exercício 01. Luiz Leão

Manutenção de Software. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1º semestre de 2016

Unidade 4 Teste na Implantação do Sistema

Manutenção de Software. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1º semestre de 2015

Unidade VI. Validação e Verificação de Software Teste de Software. Conteúdo. Técnicas de Teste. Estratégias de Teste

Teste de Software. Proj. Desenvolvimento de Software. Prof. Cleverton Hentz. 30 de agosto de Material Apresentado

Engenharia de Software

ENGENHARIA DE SOFTWARE O QUE SÃO TESTES? TESTES TESTES TESTES 26/08/2014. São pontuais; São previsíveis; São finitos;

Estudo do teste de mutação em programas funcionais SML

Desenho de casos de teste

Como Modelar com UML 2

3. Engenharia dos requisitos de software

ENGENHARIA DE SOFTWARE. Aula 12 Testes de software

SELEÇÃO E AVALIAÇÃO DE DADOS DE TESTE BASEADAS EM PROGRAMAÇÃO GENÉTICA

Aula 5 Introdução à Teste de Módulos. Alessandro Garcia LES/DI/PUC-Rio Agosto 2017

TESTES DE SOFTWARE 1. Fundamentos sobre testes de software

CAP. VI ANÁLISE SEMÂNTICA

Programação I Apresentação

Introdução à Programação

Teste de Software. Professor Maurício Archanjo Nunes Coelho

PDS. Aula 1.4 Modelos de Processo. Prof. Dr. Bruno Moreno

Transcrição:

Introdução ao Teste de Software Ricardo A. Ramos [Baseado na apresentação do LABS ICMC-USP -> http://www.labes.icmc.usp.br]

Organização Introdução Teste de Software Terminologia e Conceitos Básicos Técnicas e Critérios de Teste Automatização da Atividade de Teste Estudos Empíricos Perspectivas Introdução ao Teste de Software 2

Introdução Qualidade de Software Conformidade com requisitos funcionais e de desempenho, padrões de desenvolvimento documentados e características implícitas esperadas de todo software profissionalmente desenvolvido. Corretitude Confiabilidade Testabilidade Introdução ao Teste de Software 3

Introdução Garantia de Qualidade de Software Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento 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ção ao Teste de Software 4

Introdução Validação: Assegurar que o produto final corresponda aos requisitos do usuário Estamos construindo o produto certo? Verificação: Assegurar consistência, completitude e corretitude do produto em cada fase e entre fases consecutivas do ciclo de vida do software Estamos construindo corretamente o produto? Teste: Examina o comportamento do produto por meio de sua execução Introdução ao Teste de Software 5

Terminologia 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 execução inconsistente Falha: evento notável em que o sistema viola suas especificações Introdução ao Teste de Software 6

Defeitos no Processo de Desenvolvimento A maior parte é de origem humana São gerados na comunicação e na transformação de informações 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 Introdução ao Teste de Software 7

Defeitos no Processo de Desenvolvimento Principal causa: tradução incorreta de informações Quanto antes a presença do defeito for 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 Introdução ao Teste de Software 8

Teste 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 software desempenha as funções especificadas. Depuração Conseqüência não previsível do teste. Após revelada a presença do erro, este deve ser encontrado e corrigido. Introdução ao Teste de Software 9

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 do Modelo CMM/SEI Atividade relevante para avaliação da característica funcionalidade (ISO 9126,14598-5) Introdução ao Teste de Software 10

Teste de Software Objetivo: revelar a presença de erros D P? T X Inexistência de erro: Software é de alta qualidade? Conjunto de casos de teste T é de baixa qualidade? Introdução ao Teste de Software 11

Teste de Software Defeitos e erros não revelados Falhas se manifestam durante a utilização pelos usuários Erros devem ser corrigidos durante a manutenção Alto custo Introdução ao Teste de Software 12

Teste de Software Falhas graves Qualidade e confiabilidade suspeitas Modificação do projeto Novos testes 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 Introdução ao Teste de Software 13

Teste 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 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 Introdução ao Teste de Software 14

Teste de Software Configuração de Software Configuração de Teste Atividades de Teste Resultados de Teste Resultados Esperados Avaliação Dados da Taxa de Erros Erros Modelo de Confiabilidade Depuração Correções Confiabilidade Prevista Introdução ao Teste de Software 15

Teste de Software Fases de Teste Teste de Unidade Identificar erros de lógica e de implementação em cada módulo do software, separadamente 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 Introdução ao Teste de Software 16

Teste de Software Etapas do Teste Planejamento Projeto de casos de teste Execução do programa com os casos de teste Análise de resultados Introdução ao Teste de Software 17

Teste 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 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 Introdução ao Teste de Software 18

Teste 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 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 Introdução ao Teste de Software 19

Teste de Software Maneira sistemática e planejada para conduzir os testes Técnicas e Critérios de Teste Conjunto de Casos de Teste T Características desejáveis Deve ser finito Custo de aplicação deve ser razoável Introdução ao Teste de Software 20

Té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) 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 Introdução ao Teste de Software 21

Té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 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 Introdução ao Teste de Software 22

Técnicas e Critérios de Teste Técnica Funcional Requisitos funcionais do software Critério Particionamento em Classes de Equivalência Técnica Estrutural 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 Introdução ao Teste de Software 23

Automatizaçã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. 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 Introdução ao Teste de Software 24

Automatizaçã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 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 Introdução ao Teste de Software 25

Automatização da Atividade de Teste xsuds (Software Understanding & Diagnosis System) xatac: teste xslice: depuração xvue: manutenção xprof: melhoria de performance xdiff: comparação de código Estado da Arte X Estado da Prática Introdução ao Teste de Software 26

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 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 Introdução ao Teste de Software 27

Té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 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 Introdução ao Teste de Software 28

Té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) Os dados de teste são derivados a partir das classes de equivalência Introdução ao Teste de Software 29

Técnica Funcional: Exemplo Passos Identificar classes de equivalência Condições de entrada Classes válidas e inválidas 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 Introdução ao Teste de Software 30

Té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 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) Introdução ao Teste de Software 31

Técnica Funcional: Exemplo Classes de equivalência Condições de Entrada Classes Válidas Classes Inválidas Tamanho t do identificador Primeiro caractere c é uma letra Só contém caracteres válidos 1 t 6 (1) Sim (3) Sim (5) t > 6 (2) Não (4) Não (6) Exemplo de Conjunto de Casos de Teste T 0 = {(a1,válido), (2B3, Inválido), (Z-12, Inválido), (A1b2C3d, Inválido)} (1, 3, 5) (4) (6) (2) Introdução ao Teste de Software 32

Té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 Casos de teste são selecionados nas bordas da classe. Também deriva casos de testes para a saída. Introdução ao Teste de Software 33

Té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. 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. Introdução ao Teste de Software 34

Técnica Funcional: Exemplo Classes de equivalência Condições de Entrada Classes Válidas Classes Inválidas Tamanho t do identificador Primeiro caractere c é uma letra t =1, 6 (1) t =0, 7 (2) -- -- Só contém caracteres válidos -- -- Exemplo de Conjunto de Casos de Teste T 0 = { (a, Válido), (Abcdef, Válido), (, Inválido), (abcdefg, Inválido} (1) (1) (2) (2) Introdução ao Teste de Software 35

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 uma representação de programa conhecida como grafo de programa ou grafo de fluxo de controle Introdução ao Teste de Software 36

Té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 é executado, os demais comandos são executados seqüencialmente Arestas ou Arcos: representam o fluxo de controle entre os nós Introdução ao Teste de Software 37

/* 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; Identifier.c (função main) 01 /* 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 */ } 02 03 04 05 08 /* 08 */ if (valid_id && (length >= 1) && (length < 6) ) /* 09 */ printf ( Valido\n ); /* 10 */ else /* 10 */ printf ( Invalido\n ); /* 11 */ } Introdução ao Teste de Software 38 06 07 09 10 11

Técnica Estrutural Grafo de Programa do identifier Gerado pela View-Graph Grafo de Programa Detalhes considerados nó arco caminho simples (2,3,4,5,6,7) completo (1,2,3,4,5,6,7,4,8,9,11) fluxo de controle Introdução ao Teste de Software 39

Té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 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) Introdução ao Teste de Software 40

Teste de Mutação Hipótese do Programador Competente Programadores experientes escrevem programas corretos ou muito próximos do correto. 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. Introdução ao Teste de Software 41

Teste de Mutação S(t) = P(t) P(t) M i (t) P não contém o erro modelado por M i (t) M 01 M 02 P Φ(P) M n Introdução ao Teste de Software 42

Teste de Mutação Status após a execução de P e M i Mutantes Mortos t / P(t) M i (t) M 01 M 02 Mutantes Vivos t T P(t) = M i (t) P Φ(P) M n Mutantes Não-Equivalentes Mutantes Equivalentes Introdução ao Teste de Software 43

Teste de Mutação op 1 M 01 M 02 M 03 M 04 M 05 M 06 op 2 M 07 M 08 M 09 M 10 M 11 P op 3 M 12 M 13 M 14 M 15 M 16 op n Não-Equivalentes Equivalentes M 17 M 18 M 19 M 20 M 21 M 22 Morto Vivos Introdução ao Teste de Software 44

Aná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. P 1 P Operadores de Mutação P 3 P 2 Programa em Teste P n P 4 Mutantes Introdução ao Teste de Software 45

Análise de Mutantes Seleção dos operadores de mutação Abrangente Capaz de modelar a maior parte dos erros Pequena cardinalidade Problemas de custo Quanto maior o número de operadores utilizados, maior o número de mutantes gerados Introdução ao Teste de Software 46

Análise de Mutantes Exemplo de Mutantes Mutante Gerado pelo Operador OLAN if (valid_id * (length >= 1) && (length < 6) ) printf ("Valido\n"); else printf ("Invalido\n"); Mutante Gerado pelo Operador ORRN if (valid_id && (length >= 1) && (length <= 6) ) printf ("Valido\n"); else printf ("Invalido\n"); Introdução ao Teste de Software 47

Aná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 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: DM(P,T) ms(p,t) = M(P) - EM(P) Introdução ao Teste de Software 48

Análise de Mutantes Ferramenta Proteum Critério Análise de Mutantes Linguagem C Outras Características 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 Introdução ao Teste de Software 49

Análise de Mutantes Ferramenta Proteum Interface gráfica Mais fácil Constante interação com o testador 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 Introdução ao Teste de Software 50

Análise de Mutantes Proteum: Interface Gráfica Introdução ao Teste de Software 51

Análise de Mutantes Proteum: Criando uma Sessão de Teste Introdução ao Teste de Software 52

Análise de Mutantes Proteum: Gerando Mutantes Introdução ao Teste de Software 53

Análise de Mutantes Status após T 0 (a) e T 2 (b) (a) (b) T 0 = { (a1, Válido), (2B3, Inválido), (Z-12, Inválido), (A1b2C3d, Inválido)} T 1 = T 0 {(1#, Inválido), (%, Inválido), (c, Válido)} T 2 = T 1 {(#-%, Inválido)} Introdução ao Teste de Software 54

Análise de Mutantes Proteum: Visualização de Mutantes Introdução ao Teste de Software 55

Análise de Mutantes Status após T 3 (a) e T 4 (b) (a) (b) T 3 = T 2 {(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)} T 4 = T 3 {(@, Inválido), (`, Inválido), (x@, Inválido), (x`, Inválido)} Introdução ao Teste de Software 56

Aná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"); Mutante Gerado pelo Operador ORRN if (valid_id && (length >= 1) && (length <= 6) ) printf ("Valido\n"); else printf ("Invalido\n"); t = {(ABCDEF, Válido)} Saída obtida = Inválido Introdução ao Teste de Software 57

Identifier.c (função main) Versão Corrigida /* 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; /* 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 Introdução */ } ao Teste de Software 58

Análise de Mutantes Status após T 5 no programa corrigido T 5 = T 4 {(ABCDEF, Válido)} Introdução ao Teste de Software 59

Conclusões A atividade de teste é fundamental no processo de desenvolvimento de software Qualidade do produto 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 Introdução ao Teste de Software 60

Perspectivas Estratégias de Teste Teste de Integração Teste Orientado a Objeto 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 Introdução ao Teste de Software 61