SlideShare uma empresa Scribd logo
1 de 47
Baixar para ler offline
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
                                     X


           ?   T




        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               Resultados
                           de Teste
                                       Avaliação      Erros
           Atividades de
               Teste                                           Depuração
                                        Dados
                                       da Taxa
                                       de Erros
Configuração
  de Teste                Resultados          Modelo de
                          Esperados          Confiabilidade              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);           1soma (inválido);
         cont*1 (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
                                             1≤t≤6                    t>6
Tamanho t do identificador                      (1)                    (2)
                                               Sim                    Não
Primeiro caractere c é uma letra
                                                (3)                    (4)
                                               Sim                    Não
Só contém caracteres válidos                    (5)                    (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)

  Introdução ao Teste de Software                                              32
Técnica Funcional: Análise de valor-limite


        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-limite


        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
                                                t =1, 6                 t =0, 7
Tamanho t do identificador                        (1)                     (2)
                                                  --                      --
Primeiro caractere c é uma letra

                                                  --                      --
Só contém caracteres válidos

    Exemplo de Conjunto de Casos de Teste
         T0 = { (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
Identifier.c (função main)        01

/*   01   */    {                                                   02
/*   01   */            char achar;
/*   01   */            int   length, valid_id;
/*   01   */            length = 0;                                  03
/*   01   */            printf (“Identificador: “);
/*   01   */            achar = fgetc (stdin);
/*   01   */            valid_id = valid_s(achar);                   04
/*   01   */            if (valid_id)
/*   02   */                   length = 1;
/*   03   */            achar = fgetc (stdin);                   05       08
/*   04   */            while (achar != 'n')
/*   05   */            {
/*   05   */                   if (!(valid_f(achar)))            06 09          10
/*   06   */                           valid_id = 0;
/*   07   */                   length++;
/*   07   */                   achar = fgetc (stdin);            07       11
/*   07   */            }
/*   08   */            if (valid_id && (length >= 1) && (length < 6) )
/*   09   */                   printf (“Validon“);
/*   10   */            else
/*   10   */                   printf (“Invalidon“);
/*   11   */        }
          Introdução ao Teste de Software                                  38
Técnica Estrutural


                                  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)

Grafo de Programa do identifier
                                     fluxo de controle
   Gerado pela View-Graph


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

                                                     P1

                                                          P2
                                  Operadores   P3
                      P           de Mutação




                                                    ...
                 Programa
                                                          P4
                 em Teste                           Pn

Introdução ao Teste de Software
                                               Mutantes        42
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                                    43
Análise de Mutantes

    Exemplo de Mutantes
     Mutante Gerado pelo Operador OLAN

                if (valid_id * (length >= 1) && (length < 6) )
                    printf ("Validon");
                else
                    printf ("Invalidon");


     Mutante Gerado pelo Operador ORRN

                if (valid_id && (length >= 1) && (length <= 6) )
                    printf ("Validon");
                else
                    printf ("Invalidon");



Introdução ao Teste de Software                                    44
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
                                                     DM(P,T)
        Escore de mutação:             ms(P,T) =
                                                   M(P) - EM(P)
Introdução ao Teste de Software                                   45
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                46
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                      47

Mais conteúdo relacionado

Mais procurados

Validação e Testes de software
Validação e Testes de softwareValidação e Testes de software
Validação e Testes de softwareRondinelli Mesquita
 
Uma Metodologia Para Teste De Software No Contexto Da Melhoria De Processo
Uma Metodologia Para Teste De Software No Contexto Da Melhoria De ProcessoUma Metodologia Para Teste De Software No Contexto Da Melhoria De Processo
Uma Metodologia Para Teste De Software No Contexto Da Melhoria De Processocrc1404
 
Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade Camilo Ribeiro
 
Introdução a Automação de Teste de Software
Introdução a Automação de Teste de SoftwareIntrodução a Automação de Teste de Software
Introdução a Automação de Teste de SoftwareCamilo Ribeiro
 
Engenharia de Testes
Engenharia de TestesEngenharia de Testes
Engenharia de TestesUFPA
 
Minicurso - Teste de software (CACSI 2015)
Minicurso - Teste de software (CACSI 2015)Minicurso - Teste de software (CACSI 2015)
Minicurso - Teste de software (CACSI 2015)Vanilton Pinheiro
 
Testes De Software - Uma Visão Geral
Testes De Software - Uma Visão GeralTestes De Software - Uma Visão Geral
Testes De Software - Uma Visão Geralpaulo peres
 
Verificação e validação de software
Verificação e validação de softwareVerificação e validação de software
Verificação e validação de softwareLeonardo Melo Santos
 
Introdução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem práticaIntrodução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem práticaFabrício Campos
 
Testes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de TestesTestes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de TestesPaulo César M Jeveaux
 
Revisao inspecao artefatos testes estaticos
Revisao inspecao artefatos testes estaticosRevisao inspecao artefatos testes estaticos
Revisao inspecao artefatos testes estaticosCristiano Caetano
 
Palestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreiraPalestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreiraTaís Dall'Oca
 
Papéis em Teste e Qualidade de Software
Papéis em Teste e Qualidade de SoftwarePapéis em Teste e Qualidade de Software
Papéis em Teste e Qualidade de SoftwareCamilo Ribeiro
 
Testes Funcionais - Unidade IV
Testes Funcionais - Unidade IVTestes Funcionais - Unidade IV
Testes Funcionais - Unidade IVJoão Lourenço
 

Mais procurados (20)

Validação e Testes de software
Validação e Testes de softwareValidação e Testes de software
Validação e Testes de software
 
Uma Metodologia Para Teste De Software No Contexto Da Melhoria De Processo
Uma Metodologia Para Teste De Software No Contexto Da Melhoria De ProcessoUma Metodologia Para Teste De Software No Contexto Da Melhoria De Processo
Uma Metodologia Para Teste De Software No Contexto Da Melhoria De Processo
 
Fundamentos de Testes de Software
Fundamentos de Testes de SoftwareFundamentos de Testes de Software
Fundamentos de Testes de Software
 
Ctai Teste De Software Aula 1
Ctai Teste De Software Aula 1Ctai Teste De Software Aula 1
Ctai Teste De Software Aula 1
 
Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade
 
Testes Funcionais
Testes FuncionaisTestes Funcionais
Testes Funcionais
 
Introdução a Automação de Teste de Software
Introdução a Automação de Teste de SoftwareIntrodução a Automação de Teste de Software
Introdução a Automação de Teste de Software
 
Engenharia de Testes
Engenharia de TestesEngenharia de Testes
Engenharia de Testes
 
Minicurso - Teste de software (CACSI 2015)
Minicurso - Teste de software (CACSI 2015)Minicurso - Teste de software (CACSI 2015)
Minicurso - Teste de software (CACSI 2015)
 
Testes De Software - Uma Visão Geral
Testes De Software - Uma Visão GeralTestes De Software - Uma Visão Geral
Testes De Software - Uma Visão Geral
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Testes de software
Testes de softwareTestes de software
Testes de software
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Verificação e validação de software
Verificação e validação de softwareVerificação e validação de software
Verificação e validação de software
 
Introdução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem práticaIntrodução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem prática
 
Testes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de TestesTestes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de Testes
 
Revisao inspecao artefatos testes estaticos
Revisao inspecao artefatos testes estaticosRevisao inspecao artefatos testes estaticos
Revisao inspecao artefatos testes estaticos
 
Palestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreiraPalestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreira
 
Papéis em Teste e Qualidade de Software
Papéis em Teste e Qualidade de SoftwarePapéis em Teste e Qualidade de Software
Papéis em Teste e Qualidade de Software
 
Testes Funcionais - Unidade IV
Testes Funcionais - Unidade IVTestes Funcionais - Unidade IV
Testes Funcionais - Unidade IV
 

Semelhante a Introdução ao Teste de Software em

Aula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdfAula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdfMichaelArrais1
 
Gerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxRoberto Nunes
 
Aula07_TesteSoftware_Parte1_semResposta.pdf
Aula07_TesteSoftware_Parte1_semResposta.pdfAula07_TesteSoftware_Parte1_semResposta.pdf
Aula07_TesteSoftware_Parte1_semResposta.pdfHoctairBernardino
 
3 engenharia de software
3   engenharia de software3   engenharia de software
3 engenharia de softwareFelipe Bugov
 
Implantação de um Processo de Teste de Software - Randerson Melville
Implantação de um Processo de Teste de Software - Randerson Melville Implantação de um Processo de Teste de Software - Randerson Melville
Implantação de um Processo de Teste de Software - Randerson Melville minastestingconference
 
Visão de Testes de Software segundo o SWEBOK
Visão de Testes de Software segundo o SWEBOKVisão de Testes de Software segundo o SWEBOK
Visão de Testes de Software segundo o SWEBOKMário Pravato Junior
 
Introdução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareIntrodução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareCloves da Rocha
 
INTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdf
INTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdfINTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdf
INTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdfRonaldAlves15
 
Qualidade de Software - Desenvolvimento dirigido por testes
Qualidade de Software - Desenvolvimento dirigido por testesQualidade de Software - Desenvolvimento dirigido por testes
Qualidade de Software - Desenvolvimento dirigido por testesJoaquim Lopes Júnior
 
Teste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e ValidaçãoTeste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e ValidaçãoJoeldson Costa Damasceno
 
Introdução as Técnicas de Testes e Documentação
Introdução as Técnicas de Testes e DocumentaçãoIntrodução as Técnicas de Testes e Documentação
Introdução as Técnicas de Testes e DocumentaçãoGTS-CE
 
01 UNIDADE I - Princípios, pilares e modelos de teste de software.pptx
01 UNIDADE I -  Princípios, pilares e modelos de teste de software.pptx01 UNIDADE I -  Princípios, pilares e modelos de teste de software.pptx
01 UNIDADE I - Princípios, pilares e modelos de teste de software.pptxAnaKlyssia1
 

Semelhante a Introdução ao Teste de Software em (20)

Aula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdfAula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdf
 
Gerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptx
 
Aula07_TesteSoftware_Parte1_semResposta.pdf
Aula07_TesteSoftware_Parte1_semResposta.pdfAula07_TesteSoftware_Parte1_semResposta.pdf
Aula07_TesteSoftware_Parte1_semResposta.pdf
 
Eng de testes
Eng de testesEng de testes
Eng de testes
 
3 engenharia de software
3   engenharia de software3   engenharia de software
3 engenharia de software
 
Implantação de um Processo de Teste de Software - Randerson Melville
Implantação de um Processo de Teste de Software - Randerson Melville Implantação de um Processo de Teste de Software - Randerson Melville
Implantação de um Processo de Teste de Software - Randerson Melville
 
Implantação de um Processo de Teste de Software
Implantação de um Processo de Teste de SoftwareImplantação de um Processo de Teste de Software
Implantação de um Processo de Teste de Software
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
O que é Teste de Software?
O que é Teste de Software?O que é Teste de Software?
O que é Teste de Software?
 
Visão de Testes de Software segundo o SWEBOK
Visão de Testes de Software segundo o SWEBOKVisão de Testes de Software segundo o SWEBOK
Visão de Testes de Software segundo o SWEBOK
 
SLIDEPRELIMINAR.pptx
SLIDEPRELIMINAR.pptxSLIDEPRELIMINAR.pptx
SLIDEPRELIMINAR.pptx
 
Teste de Software
Teste de SoftwareTeste de Software
Teste de Software
 
Introdução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareIntrodução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de Software
 
Mini aula de teste de software
Mini aula de teste de softwareMini aula de teste de software
Mini aula de teste de software
 
Teste de Software - Introdução
Teste de Software - IntroduçãoTeste de Software - Introdução
Teste de Software - Introdução
 
INTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdf
INTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdfINTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdf
INTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdf
 
Qualidade de Software - Desenvolvimento dirigido por testes
Qualidade de Software - Desenvolvimento dirigido por testesQualidade de Software - Desenvolvimento dirigido por testes
Qualidade de Software - Desenvolvimento dirigido por testes
 
Teste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e ValidaçãoTeste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e Validação
 
Introdução as Técnicas de Testes e Documentação
Introdução as Técnicas de Testes e DocumentaçãoIntrodução as Técnicas de Testes e Documentação
Introdução as Técnicas de Testes e Documentação
 
01 UNIDADE I - Princípios, pilares e modelos de teste de software.pptx
01 UNIDADE I -  Princípios, pilares e modelos de teste de software.pptx01 UNIDADE I -  Princípios, pilares e modelos de teste de software.pptx
01 UNIDADE I - Princípios, pilares e modelos de teste de software.pptx
 

Mais de Fernando Palma

CRM Gerenciamento Do Relacionamento Com Clientes | Prof. Francisco Alves | C...
CRM Gerenciamento Do Relacionamento Com Clientes | Prof. Francisco Alves |  C...CRM Gerenciamento Do Relacionamento Com Clientes | Prof. Francisco Alves |  C...
CRM Gerenciamento Do Relacionamento Com Clientes | Prof. Francisco Alves | C...Fernando Palma
 
Formação em ciência de dados
Formação em ciência de dadosFormação em ciência de dados
Formação em ciência de dadosFernando Palma
 
Apostila de Introdução ao Arduino
Apostila de Introdução ao ArduinoApostila de Introdução ao Arduino
Apostila de Introdução ao ArduinoFernando Palma
 
Apostila Arduino Basico
Apostila Arduino BasicoApostila Arduino Basico
Apostila Arduino BasicoFernando Palma
 
Cartilha Segurança na Internet - CERT.br
Cartilha Segurança na Internet - CERT.brCartilha Segurança na Internet - CERT.br
Cartilha Segurança na Internet - CERT.brFernando Palma
 
Ebook Apache Server: Guia Introdutório
Ebook Apache Server: Guia IntrodutórioEbook Apache Server: Guia Introdutório
Ebook Apache Server: Guia IntrodutórioFernando Palma
 
Apostila Zend Framework
Apostila Zend FrameworkApostila Zend Framework
Apostila Zend FrameworkFernando Palma
 
Ebook Governança de TI na Prática
Ebook Governança de TI na PráticaEbook Governança de TI na Prática
Ebook Governança de TI na PráticaFernando Palma
 
Simulado ITIL Foundation - Questões Comentadas
Simulado ITIL Foundation - Questões ComentadasSimulado ITIL Foundation - Questões Comentadas
Simulado ITIL Foundation - Questões ComentadasFernando Palma
 
Introdução à Aprendizagem de Máquina
Introdução à Aprendizagem de MáquinaIntrodução à Aprendizagem de Máquina
Introdução à Aprendizagem de MáquinaFernando Palma
 
PDTI - Plano Diretor de Tecnologia da Informação (modelo)
PDTI - Plano Diretor de Tecnologia da Informação (modelo)PDTI - Plano Diretor de Tecnologia da Informação (modelo)
PDTI - Plano Diretor de Tecnologia da Informação (modelo)Fernando Palma
 
Guia Salarial 2017 Robert Half Brasil
Guia Salarial 2017 Robert Half BrasilGuia Salarial 2017 Robert Half Brasil
Guia Salarial 2017 Robert Half BrasilFernando Palma
 
Gerenciamento na nuvem e System Center
Gerenciamento na nuvem e System CenterGerenciamento na nuvem e System Center
Gerenciamento na nuvem e System CenterFernando Palma
 
SAN: Storage Area Network
SAN: Storage Area NetworkSAN: Storage Area Network
SAN: Storage Area NetworkFernando Palma
 
Ebook ITIL Na Prática
Ebook ITIL Na PráticaEbook ITIL Na Prática
Ebook ITIL Na PráticaFernando Palma
 
Exemplo de Plano Estratégico de TI - MEC
Exemplo de Plano Estratégico de TI - MECExemplo de Plano Estratégico de TI - MEC
Exemplo de Plano Estratégico de TI - MECFernando Palma
 
Apostila Tutorial CakePHP
Apostila Tutorial CakePHPApostila Tutorial CakePHP
Apostila Tutorial CakePHPFernando Palma
 

Mais de Fernando Palma (20)

CRM Gerenciamento Do Relacionamento Com Clientes | Prof. Francisco Alves | C...
CRM Gerenciamento Do Relacionamento Com Clientes | Prof. Francisco Alves |  C...CRM Gerenciamento Do Relacionamento Com Clientes | Prof. Francisco Alves |  C...
CRM Gerenciamento Do Relacionamento Com Clientes | Prof. Francisco Alves | C...
 
Formação em ciência de dados
Formação em ciência de dadosFormação em ciência de dados
Formação em ciência de dados
 
Apostila de Introdução ao Arduino
Apostila de Introdução ao ArduinoApostila de Introdução ao Arduino
Apostila de Introdução ao Arduino
 
Apostila Arduino Basico
Apostila Arduino BasicoApostila Arduino Basico
Apostila Arduino Basico
 
Cartilha Segurança na Internet - CERT.br
Cartilha Segurança na Internet - CERT.brCartilha Segurança na Internet - CERT.br
Cartilha Segurança na Internet - CERT.br
 
Ebook Apache Server: Guia Introdutório
Ebook Apache Server: Guia IntrodutórioEbook Apache Server: Guia Introdutório
Ebook Apache Server: Guia Introdutório
 
Apostila Zend Framework
Apostila Zend FrameworkApostila Zend Framework
Apostila Zend Framework
 
Hacker Ético
Hacker ÉticoHacker Ético
Hacker Ético
 
Ebook Governança de TI na Prática
Ebook Governança de TI na PráticaEbook Governança de TI na Prática
Ebook Governança de TI na Prática
 
Simulado ITIL Foundation - Questões Comentadas
Simulado ITIL Foundation - Questões ComentadasSimulado ITIL Foundation - Questões Comentadas
Simulado ITIL Foundation - Questões Comentadas
 
Introdução à Aprendizagem de Máquina
Introdução à Aprendizagem de MáquinaIntrodução à Aprendizagem de Máquina
Introdução à Aprendizagem de Máquina
 
PDTI - Plano Diretor de Tecnologia da Informação (modelo)
PDTI - Plano Diretor de Tecnologia da Informação (modelo)PDTI - Plano Diretor de Tecnologia da Informação (modelo)
PDTI - Plano Diretor de Tecnologia da Informação (modelo)
 
Guia Salarial 2017 Robert Half Brasil
Guia Salarial 2017 Robert Half BrasilGuia Salarial 2017 Robert Half Brasil
Guia Salarial 2017 Robert Half Brasil
 
Tutorial memcached
Tutorial memcachedTutorial memcached
Tutorial memcached
 
Gerenciamento na nuvem e System Center
Gerenciamento na nuvem e System CenterGerenciamento na nuvem e System Center
Gerenciamento na nuvem e System Center
 
SAN: Storage Area Network
SAN: Storage Area NetworkSAN: Storage Area Network
SAN: Storage Area Network
 
Linguagem ABAP
Linguagem ABAPLinguagem ABAP
Linguagem ABAP
 
Ebook ITIL Na Prática
Ebook ITIL Na PráticaEbook ITIL Na Prática
Ebook ITIL Na Prática
 
Exemplo de Plano Estratégico de TI - MEC
Exemplo de Plano Estratégico de TI - MECExemplo de Plano Estratégico de TI - MEC
Exemplo de Plano Estratégico de TI - MEC
 
Apostila Tutorial CakePHP
Apostila Tutorial CakePHPApostila Tutorial CakePHP
Apostila Tutorial CakePHP
 

Introdução ao Teste de Software em

  • 1. Introdução ao Teste de Software Ricardo A. Ramos [Baseado na apresentação do LABS –ICMC-USP -> http://www.labes.icmc.usp.br]
  • 2. 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
  • 3. 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
  • 4. 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
  • 5. 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
  • 6. 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
  • 7. 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
  • 8. 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
  • 9. 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
  • 10. 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
  • 11. Teste de Software Objetivo: revelar a presença de erros D P X ? T Inexistência de erro: Software é de alta qualidade? Conjunto de casos de teste T é de baixa qualidade? Introdução ao Teste de Software 11
  • 12. 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
  • 13. 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
  • 14. 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
  • 15. Teste de Software Configuração de Software Resultados de Teste Avaliação Erros Atividades de Teste Depuração Dados da Taxa de Erros Configuração de Teste Resultados Modelo de Esperados Confiabilidade Correções Confiabilidade Prevista Introdução ao Teste de Software 15
  • 16. 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
  • 17. 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
  • 18. 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
  • 19. 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
  • 20. 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
  • 21. 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
  • 22. 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
  • 23. 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
  • 24. 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
  • 25. 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
  • 26. 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
  • 27. 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
  • 28. 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
  • 29. 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
  • 30. 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
  • 31. 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); 1soma (inválido); cont*1 (inválido); a123456 (inválido) Introdução ao Teste de Software 31
  • 32. Técnica Funcional: Exemplo Classes de equivalência Condições de Entrada Classes Válidas Classes Inválidas 1≤t≤6 t>6 Tamanho t do identificador (1) (2) Sim Não Primeiro caractere c é uma letra (3) (4) Sim Não Só contém caracteres válidos (5) (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) Introdução ao Teste de Software 32
  • 33. Técnica Funcional: Análise de valor-limite 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
  • 34. Técnica Funcional: Análise de valor-limite 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
  • 35. Técnica Funcional: Exemplo Classes de equivalência Condições de Entrada Classes Válidas Classes Inválidas t =1, 6 t =0, 7 Tamanho t do identificador (1) (2) -- -- Primeiro caractere c é uma letra -- -- Só contém caracteres válidos Exemplo de Conjunto de Casos de Teste T0 = { (a, Válido), (Abcdef, Válido), ( , Inválido), (abcdefg, Inválido} (1) (1) (2) (2) Introdução ao Teste de Software 35
  • 36. 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
  • 37. 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
  • 38. Identifier.c (função main) 01 /* 01 */ { 02 /* 01 */ char achar; /* 01 */ int length, valid_id; /* 01 */ length = 0; 03 /* 01 */ printf (“Identificador: “); /* 01 */ achar = fgetc (stdin); /* 01 */ valid_id = valid_s(achar); 04 /* 01 */ if (valid_id) /* 02 */ length = 1; /* 03 */ achar = fgetc (stdin); 05 08 /* 04 */ while (achar != 'n') /* 05 */ { /* 05 */ if (!(valid_f(achar))) 06 09 10 /* 06 */ valid_id = 0; /* 07 */ length++; /* 07 */ achar = fgetc (stdin); 07 11 /* 07 */ } /* 08 */ if (valid_id && (length >= 1) && (length < 6) ) /* 09 */ printf (“Validon“); /* 10 */ else /* 10 */ printf (“Invalidon“); /* 11 */ } Introdução ao Teste de Software 38
  • 39. Técnica Estrutural 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) Grafo de Programa do identifier fluxo de controle Gerado pela View-Graph Introdução ao Teste de Software 39
  • 40. 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
  • 41. 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
  • 42. 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. P1 P2 Operadores P3 P de Mutação ... Programa P4 em Teste Pn Introdução ao Teste de Software Mutantes 42
  • 43. 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 43
  • 44. Análise de Mutantes Exemplo de Mutantes Mutante Gerado pelo Operador OLAN if (valid_id * (length >= 1) && (length < 6) ) printf ("Validon"); else printf ("Invalidon"); Mutante Gerado pelo Operador ORRN if (valid_id && (length >= 1) && (length <= 6) ) printf ("Validon"); else printf ("Invalidon"); Introdução ao Teste de Software 44
  • 45. 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 DM(P,T) Escore de mutação: ms(P,T) = M(P) - EM(P) Introdução ao Teste de Software 45
  • 46. 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 46
  • 47. 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 47