introdução ao teste de software -...

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

Upload: doandien

Post on 08-Nov-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

Introdução aoIntrodução aoTeste de SoftwareTeste de Software

Ricardo A. Ramos

[Baseado na apresentação do LABS –ICMC-USP -> http://www.labes.icmc.usp.br]

Page 2: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

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

Page 3: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

IntroduçãoIntrodução

� Qualidade de Software

Conformidade com requisitos funcionaise de desempenho, padrões de desenvolvimento

documentados e características

Introdução ao Teste de Software 3

� Corretitude� Confiabilidade� Testabilidade

documentados e característicasimplícitas esperadas de todo software

profissionalmente desenvolvido.

Page 4: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

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

Page 5: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

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?

Page 6: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

TerminologiaTerminologia

� Defeito Erro Falha� Defeito: deficiência mecânica ou algorítmica

que, se ativada, pode levar a uma falhaErro: 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

Page 7: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

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

Page 8: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

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

Page 9: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

Teste e DepuraçãoTeste e Depuração

� TesteProcesso 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.

Page 10: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

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)

Page 11: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

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?

?X

T

Page 12: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

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

Page 13: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

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

Page 14: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

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

Page 15: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

Teste de SoftwareTeste de Software

Atividades deTeste

Configuraçãode Software

Avaliação

Resultadosde Teste

Erros

Depuração

Introdução ao Teste de Software 15

Teste

Configuraçãode Teste Resultados

Esperados

Dados da Taxade Erros

Modelo deConfiabilidade

Depuração

Correções

ConfiabilidadePrevista

Page 16: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

Teste de SoftwareTeste de Software

� Fases de Teste� Teste de Unidade

� Identificar erros de lógica e de implementaçãoem 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

Page 17: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

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

Page 18: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

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

Page 19: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

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

Page 20: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

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

Page 21: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

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 decasos 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)

� Propriedadesi) incluir todos os desvios de fluxo de execuçãoii) incluir pelo menos um uso de todo resultado

computacionaliii) T mínimo e finito

Page 22: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

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 porum t, t ∈ T

Page 23: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

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

Page 24: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

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

Page 25: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

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

Page 26: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

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

Page 27: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

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

Page 28: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

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

Page 29: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

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

Page 30: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

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

Page 31: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

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)

Page 32: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

Técnica Funcional: ExemploTécnica Funcional: Exemplo

� Classes de equivalência

Tamanho t do identificador

Condições de Entrada Classes Válidas Classes Inválida s

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)

Page 33: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

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.

Page 34: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

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.

Page 35: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

Técnica Funcional: ExemploTécnica Funcional: Exemplo

� Classes de equivalência

Tamanho t do identificador

Condições de Entrada Classes Válidas Classes Inválida s

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)

Page 36: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

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

Page 37: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

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

Page 38: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

/* 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

04

05 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

Page 39: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

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

Page 40: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

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)

Page 41: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

� Hipótese do Programador Competente

Programadores experientes escrevem programascorretos 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ãotão sensíveis que, implicitamente, também são

capazes de revelar erros mais complexos.

Page 42: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

Análise de MutantesAnálise de Mutantes

� Passos da Análise de Mutantes1- 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 42

transformando-o em programas similares: mutantes .

Mutantes

P1

Pn

P3P2

P4

Operadoresde MutaçãoP

Programaem Teste

Page 43: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

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 43

� Pequena cardinalidade� Problemas de custo

� Quanto maior o número de operadores utilizados, maior o número de mutantes gerados

Page 44: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

Análise de MutantesAnálise de Mutantes

� Exemplo de MutantesMutante Gerado pelo Operador OLAN

if (valid_id * (length >= 1) && (length < 6) )printf ("Valido\n");

else

Introdução ao Teste de Software 44

Mutante Gerado pelo Operador ORRN

if (valid_id && (length >= 1) && (length <= 6) )printf ("Valido\n");

elseprintf ("Invalido\n");

elseprintf ("Invalido\n");

Page 45: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

Análise de MutantesAnálise de Mutantes

� Passos da Análise de Mutantes2 - Execução do Programa

� Execução do programa com os casos de teste

3 - Execução dos Mutantes

Introdução ao Teste de Software 45

� 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)

Page 46: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

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 46

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

Page 47: Introdução ao Teste de Software - univasf.edu.brricardo.aramos/disciplinas/ES_I_2011_2/Teste... · Poke-Tool – programas em C, Cobol e Fortran Introdução ao Teste de Software

PerspectivasPerspectivas

� Estratégias de Teste� Teste de Integração� Teste Orientado a Objeto� Teste de Especificação

Introdução ao Teste de Software 47

� 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