Notas de Teste de Software

download Notas de Teste de Software

of 14

Transcript of Notas de Teste de Software

  • 7/30/2019 Notas de Teste de Software

    1/14

    Notas de Teste de software - Jaguaraci Silva - 14 de Dezembro de 2012

    Notas de Teste de Software

    Introduo ao Teste de Software

    Teste de Software uma forma de garantir que o produto de software atende os

    requisitos que foram definidos, ento executa-se o programa para revelar a presenade defeitos.

    D (Defeito), E (Erro) e F(Falha) O Defeito um passo, processo ou definio de dados

    incorretos. O Engano uma ao (humana) que produz um defeito, esses dois

    conceitos so estticos, portanto, no dependem da execuo do programa. A

    existncia de um defeito pode ocasionar um Erro durante a execuo do programa

    que o levar a um estado inconsistente, tal estado pode incorrer em Falha, que um

    resultado diferente do esperado.

    O domnio de entrada de um programa P pode ser denotado por D(P), que o

    conjunto de todos os valores possveis para execuo de P. Um dado de teste T um

    elemento do domnio de entrada de um programa P. Um caso de teste um par

    formado pelo dado de teste e uma sada esperada (T, O(P) ), onde a sada esperada

    forma por um domnio de sada O(P) e o conjunto de todos os testes so referenciados

    como Conjunto de Casos de Teste de um programa. O veredicto sobre o sucesso ou

    falha de um caso de teste dado por um Orculo utilizando a especificao S(P) e

    executando os casos de teste.

    Validao, Verificao e Teste - Validao estamos construindo o produto certo?.

    Verificao estamos fazendo da maneira certa?. Teste examina o comportamento do

    produto de software durante a sua execuo (Verificao Dinmica).

    Fases de Teste Teste de sistema, Teste de Unidade e Teste de Integrao.

  • 7/30/2019 Notas de Teste de Software

    2/14

    Notas de Teste de software - Jaguaraci Silva - 14 de Dezembro de 2012

    Teste Funcional

    Teste de Caixa Preta, tem objetivo de cobrir a especificao. Pode ser derivado

    a partir de um modelo com base na arquitetura e requisitos do software.

    Benefcio: No leva em conta detalhes de implementao, pode ser utilizado

    em qualquer paradigma e fase do desenvolvimento.

    Limitaes: No garante cobertura de cdigo e a deteco de defeitos

    depende da qualidade da especificao de requisitos.

    Teste Funcional Particionamento por Classe de Equivalncia

    O domnio de entrada e de sada do programa dividido em um nmero finito de

    parties (ou classes) de equivalncia.

    Os dados da mesma partio tem a capacidade de revelar os mesmos defeitos e so

    consideradas parties vlidas e invlidas.

    A gerao de teste deve selecionar um dado em cada partio e os casos de teste

    devem ter cobertura de ao menos cada partio.

    Intervalos ou conjuntos so possuem indicao de que os dados sero processados da

    mesma forma.

  • 7/30/2019 Notas de Teste de Software

    3/14

    Notas de Teste de software - Jaguaraci Silva - 14 de Dezembro de 2012

    Diretrizes:

    Condio de Entrada Definio das Classes de Equivalncia

    Se CE especifica intervalo de valores Um classe vlida e outra invlida

    Se CE especifica uma quantidade devalores

    Uma classe vlida e duas invlidas

    Se CE especifica um conjunto de valoresdeterminados que devem ser tratados demaneira diferente

    Uma vlida para um e uma invlida comvalor qualquer.

    Se CE especifica situao: deve serassim...

    Uma classe vlida e outra invlida

    Os casos de teste devem cobrir o maior nmero de classes vlidas possvel e deve

    haver um caso de teste para cada classe invlida. Benefcios: Reduo no tamanho do domnio de entrada e na criao de dados de

    teste. adequado para aplicaes com variveis de entrada facilmente identificadas e

    co valores especficos.

    Limitaes: O critrio no facilmente aplicvel quando o domnio de entrada

    simples mas o processamento complexo. Os dados podem no ser processados de

    forma idntica ao grupo de dados especificado nos testes. A tcnica no fornece

    diretrizes para combinao dos dados de teste.

    Exemplo:

    O programa deve determinar se um identificador vlido ou no em Silly Pascal (uma variantedo Pascal). Um identificador vlido deve comear com uma letra e conter apenas letras oudgitos. Alm disso, deve ter no mnimo um caractere e no mximo seis caracteres decomprimento.

    Entradas da aplicao:

    V Vetor de caracteres que representa o identificador. T Tamanho do vetor. L 1 caracteredo vetor uma letra.

    ID Varivel de

    Entrada

    Classes Vlidas Classes Invlidas

    1 V V[0..T-1] != vazio V[0..T-1] = vazio

    2 V Para cada elemento de V, ondeV[1]..V[T-1] pertence ao conjunto Z ||[a..z|A..Z]

    Para cada elemento de V, ondeV[1]..V[T-1] no pertencente aoconjunto Z || [a..z|A..Z]

    3 V Para cada elemento de V, ondeV[1]..V[T-1] pertence ao conjunto Z&& [a..z|A..Z]

    Para cada elemento de V, ondeV[1]..V[T-1] no pertencente aoconjunto Z && [a..z|A..Z]

    4 T 1

  • 7/30/2019 Notas de Teste de Software

    4/14

    Notas de Teste de software - Jaguaraci Silva - 14 de Dezembro de 2012

    Casos de Teste

    ID Varivel

    de

    Entrada

    Critrio

    Partio

    Dados de Entrada Sada Esperada

    1 V 1 Identificador Invlido!2 V 1 Teste Identificador Vlido!.

    3 V 2 $%#&@! Identificador Invlido!

    4 V 2 Teste Identificador Vlido!.

    5 V 2 A12345 Identificador Vlido!.

    6 V 3 T$%#&* Identificador Invlido!

    7 V 3 Teste1 Identificador vlido!

    8 V 3 A1Teste Identificador vlido!

    9 T 4 Identificador Invlido!

    10 T 4 Teste01223 Identificador Invlido!

    11 T 4 Teste1 Identificador vlido!

    12 T 4 T Identificador vlido!13 T 4 T1 Identificador vlido!

    14 L 5 1 Identificador Invlido!

    15 L 5 $ Identificador Invlido!

    16 L 5 A Identificador vlido!

    Teste Funcional Anlise de Valor Limite

    Acrescenta inteligncia ao critrio de particionamento por classes de equivalncia por

    no selecionar os dados de teste de forma aleatria para explorar os limites.

    Casos de teste que exploram limites tem mais probabilidade de encontrar defeitos.

    Os valores so escolhidos imediatamente acima ou abaixo dos limites definidos nas

    classes de equivalncia.

    Se CE especifica um intervalo de

    valores

    Dados de teste devem considerar os limites

    do intervalo imediatamente subsequentes

    Ex: classe no intervalo -1; 0 e +1; 0 dados de teste: -1; 0; +1; 0; -1,001 e +1,001

    Ex: for int i=1; i< 255; i++ Dados de teste i={0, 1, 255 e 256}

    Teste Funcional Sistemtico

    Combina PCE e AVL.

    Requer ao menos 2 casos de teste para cada partio para eliminar defeitoscoincidentes.

    Ex: programa calcula o quadrado de um nmero; dado de teste { 2; resultado 4} correto, mas pode ter vindo de uma soma 2 + 2.

  • 7/30/2019 Notas de Teste de Software

    5/14

    Notas de Teste de software - Jaguaraci Silva - 14 de Dezembro de 2012

    Diretrizes

    Domnio de Entrada

    Valores Discretos Testar todos os valores

    Intervalo de valores Testar os extremos e um valor no interior

    Domnio de SadaSelecionar valores de entrada que resultemnos valores de sada.

    Testar todos os valores discretos e osextremos e interior dos intervalos

    Valores Especiais Criar casos de teste para brancos e zeros.

    Valores Ilegais Criar casos de teste para certificar que cadavalor ou intervalo ilegal seja rejeitado naentrada.

    Nmeros Reais Testar todos os valores discretos e osextremos e interior dos intervalos

    Caracteres Testar valores discretos e alfanumricos.

    Intervalos Variveis Testar todos os valores discretos e os

    extremos e interior dos intervalosArranjos Testar todos os valores discretos e os

    extremos e interior dos intervalos

    Teste Funcional Grafo de Causa-Efeito

    A limitao dos critrios anteriores que no consideram a combinao das entradas.

    Explora ambiguidades e incompletudes da especificao.

    Benefcios: exercita combinaes dos dados de teste.

    Limitaes: complexidade em se construir o grafo e sua converso em tabelas dedeciso. O grande nmero de causas e efeitos podem no gerar dados de testes

    significativos.

    - E: no mximo um entre 1" e 2"pode ser igual a 1.- I: no mnimo um entre 1", 2" e3" deve ser igual a 1.- O: um e somente um entre 1" e2" deve ser igual a 1.- R: para que 1" seja igual a 1, 2"deve ser igual a 1.

    - M: se o efeito 1" 1 o efeito 2" forado a ser 0.

  • 7/30/2019 Notas de Teste de Software

    6/14

    Notas de Teste de software - Jaguaraci Silva - 14 de Dezembro de 2012

    Teste Estrutural

    Benefcios: os critrios de teste em geral possuem uma abordagem sistemtica e

    teoricamente fundamentada para conduzir uma atividade de teste. Aumentam a

    garantia de que os casos de testes iro revelar defeitos. Cada tcnica depende da

    origem dos dados para criar os casos de testes. A tcnica estrutural tem como base aimplementao.

    Benefcios: complementa outras tcnicas: depurao, manuteno e avaliao da

    confiabilidade.

    Limitaes: No existe um procedimento de teste de proprsito geral para provar a

    correo de um programa. indecidvel se dois ou mais programas computam a

    mesma funo; se dois caminhos de um mesmo programa, ou de programas

    diferentes, computam a mesma funo; e se um dado caminho executvel e se

    existe um conjunto de dados de entrada que leve execuo desse caminho.

    Limitaes: caminhos ausentes durante a execuo do teste e correo coincidente.

    Geralmente representado utilizando um Grafo de Fluxo de Controle (GFC)

  • 7/30/2019 Notas de Teste de Software

    7/14

    Notas de Teste de software - Jaguaraci Silva - 14 de Dezembro de 2012

    Diretrizes:

    Caminho seqncia de vrtices conectados por arestas.

    Caminho Simples Caminho em que um n no se repete, exceto o primeiro eltimo.

    Caminho Livre de Lao Caminho em que um n no se repete.

    Caminho Completo caminho que inicia no n de entrada e termina em um nde sada.

    Caminho no executvel Se existe algum n ou vertice no executado de acordocom um dado de entrada.

    Caminho Livre de

    Definio

    No contm redefinio uma varavel ao longo do caminho

    Definio Global Ou contm um caminho livre de definio para um n ouexiste C-USO ou P-USO da varavel em um arco.

    Definies

    C-USO uso computacional

    P-USO uso predicativoUSO- quando a referncia no define valor a uma varivel

    Indefinio Quando varivel no tem referncia memria.

    (2,3,4,5,6,7) caminho simples e livre de laos.

    (1,2,3,4,5,7,4,8,9,11) caminho completo.

    (1,3,4,8,9) caminho no executvel.

  • 7/30/2019 Notas de Teste de Software

    8/14

    Notas de Teste de software - Jaguaraci Silva - 14 de Dezembro de 2012

    Todos-Ns exige que a execuo do programa passe, ao menos uma vez, em cadavrtice do grafo de fluxo, ou seja, que cada comando do programa seja executado pelomenos uma vez.

    Todos-Arcos requer que cada aresta do grafo, ou seja, cada desvio de fluxo decontrole do programa, seja exercitada pelo menos uma vez.

    Todos-Caminhos requer que todos os caminhos possveis do programa sejamexecutados.

    Todas-Definies : requer que cada definio de varivel seja exercitada pelo menosuma vez, no importa se por um c-uso ou por um p-uso.

    Todos-Usos: requer que todas as associaes entre uma definio de varivel e seussubseqentes usos (c-usos e p-usos) sejam exercitadas pelos casos de teste, atravs depelo menos um caminho livre de definio, ou seja, um caminho onde a varivel no redefinida.

    Teste estrutural pode ser aplicado para teste de unidade pelo prprio desenvolvedorentre as fases e caminhos dentro das unidades, entre as unidades, subsistemas e sistemas.

    Teste Estrutural Teste de Fluxo de Dados

    Teste de fluxo de dados possui inteno de revelar defeitos em decorrncia de valores

    incorretos na codificao.

    Princpio da definio dos critrios: sequncia das aes realizadas sobre as variveis

    mais onde elas so definidas e utilizadas.

    Anomalias do Fluxo de Dados

    Uso de varivel no inicializada.

    Atribuio de valor a uma varivel mais de uma vez sem que tenha havido umareferncia a essa varivel entre essas atribuies.

    Liberao ou reinicializao de uma varivel antes que ela tenha sido criada ouinicializada.

    Liberao ou reinicializao de uma varivel antes que ela tenha sido usada.

    Atribuir novo valor a um ponteiro sem que a varivel tenha sido liberada.

    Notao Significado

    ~ No existe varivel

    d Definio da varivel

    u Uso da varivel

    K Destruio da varivel~d Varivel no existe e definida (correto)

    ~u Varivel no existe e usada (incorreto)

    ~k Varivelno existe e destruda

    dd Definida e redefinida (incorreto se global)

    du Definida e usada (correto)

    dk Definida e destruda (incorreto)

    ud Usada e definida (aceitvel)

    uu Usada e reusada (aceitvel)

    uk Usada e destruda (aceitvel)

    kd Destruda e redefinida (aceitvel)

    ku Destruda e usada (incorreto)

    Kk Destruda e destruda novamente (incorreto)

  • 7/30/2019 Notas de Teste de Software

    9/14

    Notas de Teste de software - Jaguaraci Silva - 14 de Dezembro de 2012

    Diretrizes:

    c-use(i) Variveis com uso global no bloco i

    def(i) Variveis com definio global no bloco i

    p-use(i,j) Variveis com p-usos no arco i,j

    dcu(x,i) Existe um caminho livre de definio do n i at n j

    dpu(x,i) Existe um caminho livre de definio do n i at arco jdu-caminho(x) Existe uma definio global de x, (tem um c-uso e existe um caminho

    simples livre de definio) ou (existe um p-uso e existe um caminholivre de definio e livre de lao.

    Associao

    definio c-uso

    uma tripla (i,j,x) onde i um n que contm uma definio global dex e j pertence a dcu(x,i)

    Associao

    definio p-uso

    uma tripla (i,(j,k),x) onde i um n que contm uma definio globalde x e j pertence a dpu(x,i)

    TodasDefinies requer que cada definio de varivel seja exercitada pelo menosuma vez, no importa se por um c-uso ou por um p-uso.

    TodosUsos requer que todas as associaes entre uma definio de varivel e

    seus subsequentes usos (c-usos e p-usos) sejam exercitadas peloscasos de teste, atravs de pelo menos um caminho livre de definio,ou seja, um caminho onde a varivel no redefinida.

    TodosDuCaminhos requer que toda associao entre uma definio de varivel esubsequentes p-usos ou c-usos dessa varivel seja exercitada portodos os caminhos livres de definio e livres de lao que cubram essaassociao.

    Associao

    definio-uso

    uma tripla (var,def,uso) onde var uma varivel com a definio-uso, def um n que contm uma definio de var e uso contm umn ou arco com c-uso ou p-uso de var.

    Potencial-

    associao

    Associaes so estabelecidas sem a necessidade de um uso explcito.

    Potencial

    definio-uso

    uma tripla (var,def,uso) onde var uma varivel com a definio-uso, def um n que contm uma definio de var e uso c-uso ou p-uso possvel de var em um n ou arco.

  • 7/30/2019 Notas de Teste de Software

    10/14

    Notas de Teste de software - Jaguaraci Silva - 14 de Dezembro de 2012

    Preenchem a lacuna entre os critrios GFC todos os ns e todos os arcos, porque

    considera a incluso de todos os usos (c-usos e p-usos) das variveis.

  • 7/30/2019 Notas de Teste de Software

    11/14

    Notas de Teste de software - Jaguaraci Silva - 14 de Dezembro de 2012

  • 7/30/2019 Notas de Teste de Software

    12/14

  • 7/30/2019 Notas de Teste de Software

    13/14

    Notas de Teste de software - Jaguaraci Silva - 14 de Dezembro de 2012

    Teste Baseado em Modelos

    O principal objetivo do software cumprir os requisitos para o qual foi construdo, por conta

    de diversos erros na fase de elicitao muito comum encontrar requisitos ambguos,

    incompletos e vagos, o que aumenta o custo de reparo nas fases seguintes do seu processo de

    construo. Neste caso, um modelo pode expressar diversas caractersticas de um software,desde os seus conceitos, propriedades, relaes e restries. Tambm, a partir de um modelo

    possvel melhorar o entendimento sobre os requisitos e automatizar a gerao de cdigo.

    No mbito das atividades de teste de software, que geralmente custam 45% do total do

    projeto, criar testes baseados em modelos pode ser bastante interessante. A partir da

    especificao criado um modelo (representao do funcionamento de um software) que

    pode ser externalizado atravs de uma MEF (Mquina de Estados Finitos). As vantagens da

    abordagem que a gerao de testes comea mais cedo no ciclo do desenvolvimento e pode-

    se criar casos de teste automaticamente a partir do modelo. Os casos de teste podem ser

    representados atravs de rvores de deciso, statecharts, ontologias de domnio ou diagramasde casos de uso e/ou estados da UML (Unified Modeling Language). Um modelo composto

    por estados, transies e aes. Os estados armazenam informaes sobre o passado, as

    transies indicam mudanas de estado e as aes representam as atividades que podem ser

    realizadas em um determinado momento. Dessa forma, com um conjunto de estados finito

    possvel responder a quase todas as perguntas sobre um sistema e a gerao de casos de teste

    baseada em sequncias (e.g. sequncia de sincronizao e distino) para verificar a

    consistncia dos estados.

    Figura 1- Sequncia de Sincronizao.

    De acordo com a Figura 1 possvel

    vislumbrar como seria uma atividade tpicade teste baseado em modelo:

    Para chegar ao estado S2 aplique asequncia a/x- a/x;

    Aplique a entrada b;

    Verifique a sada y;

    Verifique se a mquina est noestado S3;

    No caso da Figura 1, para perfazer a cobertura de todos os estados pode-se derivar os casos de

    teste a partir da sequncia : a/x a/x b/y b/x. A sequncia de sincronizao pode ser

    utilizada para garantir que a MEF v para um estado particular, neste caso, se ocorrer

    divergncia, possivelmente h um defeito. A sequncia de distino serve para identificar uma

    sada diferente para cada estado. A Tabela 1 demonstra atravs de uma tabela como seriam as

    sadas atravs de uma sequncia de distino. possvel observar que as sadas so distintas

    para cada estados.

    Estado Sada

    S0 x _

    S1 x y

    S2 _y

    S3 _ xTabela 1 Exempo de Sequncia de Distino.

  • 7/30/2019 Notas de Teste de Software

    14/14

    Notas de Teste de software - Jaguaraci Silva - 14 de Dezembro de 2012

    Diversos mtodos podem ser utilizados para criar casos de testes, incluindo: mtodo TT,

    mtodo UIO, mtodo DS, mtodo W. O mtodo TT (Transition Tour) parte do estado inicial e

    atravessa todas as transies pelo menos uma vez e retorna ao estado inicial, pode ser

    utilizado para detectar erros de sada. O mtodo UIO (Unique Input e Output) identifica o

    estado e uma sequncia de entrada que pode levar a uma determinada sada (exemplo ao lado

    da Figura 1). Uma desvantagem deste mtodo que no garante a cobertura de todas as

    transies como no mtodo anterior. O mtodo DS (Distinct Sequence) utiliza sequncias

    distintas como dados de teste para verificar as sadas de cada estado, conforme visto na

    Tabela 1. O problema que uma sequncia distinta nem sempre pode ser encontrada em uma

    MEF. J o mtodo W pode ser utilizado para encontrar defeitos estruturais sempre que uma

    MEF for completa, mnima e fortemente conectada.

    Em relao ao mtodos vistos possvel realizar uma rpida comparao para conhecer os

    requisitos de uma MEF para empreg-los (Tabela 2):

    TT UIO DS W

    MEF Mnima X X X

    Completamente Especificada X X X

    Fortemente Conectada X X X

    Mquina Mealy X X X

    Determinismo X X X X

    Sequncias de Sincronizao X

    Sequncias de Distino X

    Sequncias nicas de Entrada e Sada X

    Conjunto de Caracterizao X

    Tabela 2 Comparao do Mtodos.

    Conforme a Tabela 2 todos os mtodos vistos necessitam que a MEF sej mnima,

    completamente especificada, fortemente conectada, seja um modelo derivado da mquina de

    Mealy e que sempre haja determinsmo. Por conta desses requisitos estritos, o teste baseado

    em modelo, por ter em sua essncia a representao baseada em MEF, no muito utilizado.

    Se houvesse outras abordagem que facilitassem a representao, verificao e validao do

    modelo diante da especificao (e.g. ontologia de domnio e inferncias usando deduoautomtica) o teste baseado em modelos poderia ser largamente utilizado na indstria, pois

    entre as diversas vantagens da abordagem, possvel corrigir ambiguidades e incompletudes

    dos requisitos na fase de anlise, principal motivo dos fracassos dos projetos de software.

    Tambm, a dificuldade da gerao automtica de casos e dados de teste consonante com o

    domnio da aplicao um grande entrave para reduo dos custos no processo de

    desenvolvimento de softwares modernos quando da utilizao de outros critrios, a exemplo

    dos critrios funcionais e estruturais.