Você está na página 1de 14

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

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.

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

Diretrizes: Condio de Entrada Se CE especifica intervalo de valores Se CE especifica uma quantidade de valores Se CE especifica um conjunto de valores determinados que devem ser tratados de maneira diferente Se CE especifica situao: deve ser assim... Definio das Classes de Equivalncia Um classe vlida e outra invlida Uma classe vlida e duas invlidas Uma vlida para um e uma invlida com valor qualquer. 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 variante do Pascal). Um identificador vlido deve comear com uma letra e conter apenas letras ou dgitos. Alm disso, deve ter no mnimo um caractere e no mximo seis caracteres de comprimento. Entradas da aplicao: V Vetor de caracteres que representa o identificador. T Tamanho do vetor. L 1 caractere do vetor uma letra. ID 1 2 Varivel de Entrada V V Classes Vlidas V[0..T-1] != vazio Para cada elemento de V, onde V[1]..V[T-1] pertence ao conjunto Z || [a..z|A..Z] Para cada elemento de V, onde V[1]..V[T-1] pertence ao conjunto Z && [a..z|A..Z] 1 <= T <= 6 L=V[0] && pertence ao conjunto [a..z|A..Z] Classes Invlidas V[0..T-1] = vazio Para cada elemento de V, onde V[1]..V[T-1] no pertencente ao conjunto Z || [a..z|A..Z] Para cada elemento de V, onde V[1]..V[T-1] no pertencente ao conjunto Z && [a..z|A..Z] T<1eT>6 L=V[0] && no pertence ao conjunto [a..z|A..Z]

4 5

T L

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

Casos de Teste ID Varivel de Entrada V V V V V V V V T T T T T L L L Critrio Partio 1 1 2 2 2 3 3 3 4 4 4 4 4 5 5 5 Dados de Entrada Sada Esperada

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Teste $%#&@! Teste A12345 T$%#&* Teste1 A1Teste Teste01223 Teste1 T T1 1 $ A

Identificador Invlido! Identificador Vlido!. Identificador Invlido! Identificador Vlido!. Identificador Vlido!. Identificador Invlido! Identificador vlido! Identificador vlido! Identificador Invlido! Identificador Invlido! Identificador vlido! Identificador vlido! Identificador vlido! Identificador Invlido! Identificador Invlido! 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 Dados de teste devem considerar os limites valores 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 defeitos coincidentes. Ex: programa calcula o quadrado de um nmero; dado de teste { 2; resultado 4} correto, mas pode ter vindo de uma soma 2 + 2.

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 Sada Selecionar valores de entrada que resultem Testar todos os valores discretos e os nos valores de sada. extremos e interior dos intervalos Valores Especiais Criar casos de teste para brancos e zeros. Valores Ilegais Criar casos de teste para certificar que cada valor ou intervalo ilegal seja rejeitado na entrada. Nmeros Reais Testar todos os valores discretos e os extremos e interior dos intervalos Caracteres Testar valores discretos e alfanumricos. Intervalos Variveis Testar todos os valores discretos e os extremos e interior dos intervalos Arranjos 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 de deciso. 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" e 3" deve ser igual a 1. - O: um e somente um entre 1" e 2" 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.

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 a implementao. 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)

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

Diretrizes: Caminho Caminho Simples

seqncia de vrtices conectados por arestas. Caminho em que um n no se repete, exceto o primeiro e ltimo. 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 n de sada. Caminho no executvel Se existe algum n ou vertice no executado de acordo com um dado de entrada. Caminho Livre de No contm redefinio uma varavel ao longo do caminho Definio Definio Global Ou contm um caminho livre de definio para um n ou existe C-USO ou P-USO da varavel em um arco. Definies C-USO uso computacional P-USO uso predicativo USO- 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.

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 cada vrtice do grafo de fluxo, ou seja, que cada comando do programa seja executado pelo menos uma vez. Todos-Arcos requer que cada aresta do grafo, ou seja, cada desvio de fluxo de controle do programa, seja exercitada pelo menos uma vez. Todos-Caminhos requer que todos os caminhos possveis do programa sejam executados. Todas-Definies: requer que cada definio de varivel seja exercitada pelo menos uma 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 seus subseqentes usos (c-usos e p-usos) sejam exercitadas pelos casos de teste, atravs de pelo 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 desenvolvedor entre 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 uma referncia a essa varivel entre essas atribuies. Liberao ou reinicializao de uma varivel antes que ela tenha sido criada ou inicializada. 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 ~ d u K ~d ~u ~k dd du dk ud uu uk kd ku Kk Significado No existe varivel Definio da varivel Uso da varivel Destruio da varivel Varivel no existe e definida (correto) Varivel no existe e usada (incorreto) Varivelno existe e destruda Definida e redefinida (incorreto se global) Definida e usada (correto) Definida e destruda (incorreto) Usada e definida (aceitvel) Usada e reusada (aceitvel) Usada e destruda (aceitvel) Destruda e redefinida (aceitvel) Destruda e usada (incorreto) Destruda e destruda novamente (incorreto)

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

Diretrizes: c-use(i) def(i) p-use(i,j) dcu(x,i) dpu(x,i) du-caminho(x)

Variveis com uso global no bloco i Variveis com definio global no bloco i Variveis com p-usos no arco i,j Existe um caminho livre de definio do n i at n j Existe um caminho livre de definio do n i at arco j 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 caminho livre de definio e livre de lao. Associao uma tripla (i,j,x) onde i um n que contm uma definio global de definio c-uso x e j pertence a dcu(x,i) Associao uma tripla (i,(j,k),x) onde i um n que contm uma definio global definio p-uso de x e j pertence a dpu(x,i) TodasDefinies requer que cada definio de varivel seja exercitada pelo menos uma 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 pelos casos 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 e subsequentes p-usos ou c-usos dessa varivel seja exercitada por todos os caminhos livres de definio e livres de lao que cubram essa associao. Associao uma tripla (var,def,uso) onde var uma varivel com a definiodefinio-uso uso, def um n que contm uma definio de var e uso contm um n ou arco com c-uso ou p-uso de var. PotencialAssociaes so estabelecidas sem a necessidade de um uso explcito. associao Potencial uma tripla (var,def,uso) onde var uma varivel com a definiodefinio-uso uso, def um n que contm uma definio de var e uso c-uso ou puso possvel de var em um n ou arco.

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.

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

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

Teste de Mutao O teste de mutao uma tcnica baseada em defeitos, cuja vantagem diante das tcnicas de teste funcional e estrutural a possibilidade de se estabelecer uma relao direta entre um subdomnio e a possibilidade de se encontrar defeitos. Apesar dessa relao direta, ainda podem existir casos de testes correspondentes que levem ou no o programa a falhar, como consequncia, um defeito pode no ser revelado. Com o uso da tcnica de teste baseada em defeitos utiliza-se os defeitos tpicos do processo de desenvolvimento cometidos por desenvolvedores, onde o objetivo injetar defeitos e verificar se os casos de teste so capazes de descobr-los. Uma das abordagens a aplicao do teste de mutao. O teste de mutao requer a criao de diversos programas (mutantes) derivados a partir de um programa original relativamente correto. Segundo Howden, a definio de correo pode ser dada por: Um programa P correto em relao a uma funo F se P computa F. Para provar a correo criado ento um conjunto de casos de testes confivel, sendo: Um conjunto de teste T confivel para um programa P e uma funo F, dada a existncia coincidente de P e F em T e se P computa F, caso contrrio, deve haver um ponto t tal que F(t) seja P(t). Outra definio pragmtica derivar programas alternativos a partir de P formando um conjunto M={M1, M2, M3...Mn} denominados mutantes. Os programas mutantes contm defeitos introduzidos atravs de pequenas alteraes (operadores de mutao) para serem testados. O testador verifica os programas mutantes em relao a execuo dos testes, eliminado-os progressivamente ao detectar o comportamento incorreto, o que o esperado. Em geral, os passos para execuo podem ser dividos em: 1. Execuo de um conjunto de testes T no programa original P, se ocorrer uma falha o teste termina. 2. So gerados os programas mutantes com operadores de mutao a partir de um P correto. 3. Os mutantes so executados com o mesmo conjunto de testes T. 4. Atravs de uma anlise, possvel quantificar os mutantes vivos, mortos, equivalentes e reveladores de defeito. Os mutantes mortos possuem os resultados dos testes diferentes de P e os vivos devem ser equivalentes a P , se no forem, podem ajudar a expor a fraqueza dos casos de teste. Se para algum caso de teste t tal que P(t) M(t), pode-se concluir que P(t) no est de acordo com a especificao, neste caso a presena de um defeito pode ter sido revelada. Uma medida para medir a adequao de T em relao ao teste de mutao o escore de mutao: escore(P, T) = ( , ) M(P) EM(P)

DM(P,T) - Nmero de mutantes mortos por T; M(P) Total de mutantes gerados; EM(P) Nmero de mutantes equivalentes a P; Uma desvantagem da anlise de mutantes que so gerados muitos mutantes. Tambm, estes precisam ser compilados e executados, assim h tambm a necessidade de se conhecer o cdigo-fonte do programa. Apesar das desvantagens, um dos critrios mais eficazes para encontrar defeitos. 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 podese 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 diagramas de 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. De acordo com a Figura 1 possvel vislumbrar como seria uma atividade tpica de teste baseado em modelo: Para chegar ao estado S2 aplique a sequncia a/x- a/x; Aplique a entrada b; Verifique a sada y; Verifique se a mquina est no estado S3;

Figura 1- Sequncia de Sincronizao.

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 S0 S1 S2 S3 Sada x_ xy _y _x

Tabela 1 Exempo de Sequncia de Distino.

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 MEF Mnima Completamente Especificada Fortemente Conectada Mquina Mealy Determinismo Sequncias de Sincronizao Sequncias de Distino Sequncias nicas de Entrada e Sada Conjunto de Caracterizao
Tabela 2 Comparao do Mtodos.

UIO X X X X

DS X X X X X X X

W X X X X X

X X

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 deduo automtica) 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.

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

Você também pode gostar