Você está na página 1de 32

TESTE DE SOFTWARE

Referncia Bibliogrfica
FABBRI, Sandra C. Pinto Ferraz. Teste e Validao de Software. MOLINARI, Leonardo. Testes de Software: Produzindo sistemas melhores e mais confiveis. So Paulo: rica, 2003. MYERS, Glenford J. The Art of Software Testing. New York: A WileyInterscience, 1979 PRESSMAN, R. S. Engenharia de Software. 5 ed. Rio de Janeiro: McGraw-Hill 2002. RUV, Marcelo. Notas de Aula. Universidade de Taubat. Taubat, 2006 SOMMERVILLE, I. Engenharia de Software. 6 ed. So Paulo: Pearson Addison Wesley, 2003.

Problema
Um programa l trs valores de Entrada. Os trs valores so interpretados como sendo os lados de um tringulo. O programa imprime uma mensagem que indica se o tringulo escaleno, issceles ou eqiltero.

Proposta:
Como este programa seria testado para garantir que o mesmo esteja correto? Elabore casos de teste para o problema acima.

Check List:
1. 2. 3. 4.

5. 6. 7. 8. 9. 10. 11. 12. 13. 14.

Voc tem um caso de teste que represente um tringulo escaleno vlido? Voc tem um caso de teste que represente um tringulo eqiltero vlido? Voc tem um caso de teste que represente um tringulo issceles vlido? Voc tem ao menos trs casos de teste que representem tringulos issceles de tal forma que tenham sido testadas todas as permutaes dos lados? Por exemplo: 3, 3, 4; 3, 4, 3; 4, 3, 3. Voc tem um caso de teste onde um dos lados zero? Voc tem um caso de teste onde um dos lados possui valor negativo? Voc tem um caso de teste com trs nmeros inteiros maiores que zero tal que a soma dos dois lados menores igual ao lado maior? Voc tem ao menos trs casos de teste na categoria 7 tal que voc tenha tentado todas as permutaes dos lados? Voc tem um caso de teste com trs nmeros inteiros maiores que zero tal que a soma dos dois lados menores seja menor que o lado maior? Voc tem ao menos trs casos de teste na categoria 9 tal que voc tenha tentado todas as permutaes? Voc tem um caso de teste onde todos os lados so zero? Voc tem ao menos um caso de teste especificando valores no inteiros? Voc tem ao menos um caso de teste especificando valores errados? Por exemplo: dois ao invs de trs lados. Para cada caso de teste, voc especificou o(s) resultado(s) esperado(s) para cada conjunto de entradas?

Verificao, Validao e Teste


Para Boehm (1979): Validao: estamos construindo o produto certo? Verificao: estamos construindo certo o produto? No processo VV &T, as seguintes tcnicas de checagem e anlise de sistemas podem ser utilizadas: Inspees de Software Testes de software

Definies
Defeito Erro Falha
No h um consenso sobre a definio de termos. Existe sim um conceito comum que recebe diferentes nomes em diferentes momentos. Defeito: deficincia mecnica ou algortmica que se ativada pode levar a uma falha Erro: item de informao ou estado de execuo inconsistente Falha: evento notvel onde o sistema viola suas especificaes

Definies
Teste: o processo de executar um programa ou sistema com a finalidade de encontrar erros. Teste: qualquer atividade que vise avaliar uma caracterstica ou recurso de programa ou sistema. Teste: Processo de executar um programa com o objetivo de revelar a presena de defeitos; ou, falhando nesse objetivo, aumentar a confiana sobre o programa Depurao: uma conseqncia no previsvel do teste. Aps revelada a presena do defeito ele deve ser encontrado e corrigido

Defeitos no Processo de Desenvolvimento


A maior parte de origem humana So gerados na comunicao e na transformao de informaes Permanecem presentes nos diversos produtos de software produzidos e liberados. (10 defeitos a cada 1000 linhas de cdigo) A maioria encontram-se em partes do cdigo raramente executadas Quanto antes a presena do defeito for revelada, menor o custo de correo do defeito e maior a probabilidade de corrig-lo corretamente Principal causa: traduo incorreta de informaes Soluo: introduzir atividades de Verificao, Validao &Teste ao longo de todo o ciclo de desenvolvimento

Objetivo:
Um teste tem por objetivo encontrar erros atravs de verificao/ validao de uma caracterstica, atributo etc., de um programa. Um caso de teste caracteriza-se pelos experimentos feitos no software a fim de cumprir o objetivo do teste.

Objetivo:
Principal Objetivo: refutar a assertiva de que o produto est correto
Determinar entradas que faam as sadas obtidas diferirem das sadas esperadas segundo a especificao (busca de um contraexemplo) um processo destrutivo, sob o ponto de vista psicolgico, contrariamente s demais fases da Engenharia de Software, onde constri-se um produto

Teste de Software
Uma das atividades mais onerosas do desenvolvimento de software Atividade essencial para ascenso ao nvel 3 do Modelo CMMI/SEI Atividade relevante para avaliao de produtos de software (ISO 9126, ISO 14598-5)

Teste de Software - Atividades


Planejamento Projeto de Casos de Teste Execuo de Casos de Teste Anlise de Resultados

Teste de Software - Tcnicas


Estrutural ou Teste Caixa Branca
Os requisitos de teste so extrados de uma implementao em particular

Funcional ou Teste Caixa Preta


Baseada na especificao do software

Baseada em Erros
Baseada nos erros tpicos e comuns cometidos durante o desenvolvimento

Teste de Software - Estrutural ou Teste Caixa Branca


So testados os caminhos lgicos do software, fornecendo casos de testes que pem a prova conjuntos de condies e/ou laos Testes dos detalhes procedimentais Utiliza uma representao grfica conhecida como grafo de programa ou grafo de fluxo de controle

Teste de Software - Estrutural ou Teste Caixa Branca


Grafo de Fluxo de Controle ou Grafo de Programa
Consiste de ns conectados por arcos com setas que mostram sua direo Os ns representam blocos de comandos
bloco de comando: um conjunto de comandos tal que se o primeiro comando for executado, ento todos os comandos subseqentes tambm o sero

Os arcos indicam precedncia, ou transferncia de controle Essa representao permite que o programa seja examinado independentemente de sua funo

Teste de Software - Estrutural ou Teste Caixa Branca


Construes Bsicas do Grafo de Fluxo de Controle

seqncia seq

deciso

Repetio Repeti while

Repetio Repeti repeat

Deciso Case

Teste de Software - Estrutural ou Teste Caixa Branca


Exemplo:
Procedimento Maior (A:Vetor; Tam:inteiro; Var Max:inteiro); Variveis I,M: inteiro; Incio 1 2 3 4 5 6 7 8 9 10 MA[1]; I 2; Enquanto I < Tam Faa Se A[I] > M Ento M A[I]; I I+1; Seno I I+1; Fim Se Fim Enquanto Max M;

1,2 3

7 8

5,6

10

Fim Procedimento

Teste de Software - Estrutural ou Teste Caixa Branca


Exemplo de Construo do Grafo de Fluxo de Controle
incio 1 1 leia (nro) 2 enquanto nro <> 0 faa 2 3 se nro > 0 ento 3 4 raiz raiz-quadrada(nro) 4 5 escreva (raiz) 6 Seno escreva (mensagem de erro) 6 7 Fim se 8 leia (nro) 7 1 Fim enquanto 2 Escreva (fim de programa) 8 fim
1

3 5 4 5

6 7 8

Teste Estrutural
1 program exemplo(input, output); 2 var a: array[1..20] of char; Programa com 3 x, i: integer; blocos marcados 4 c, resposta: char; 5 achou: boolean; 6 begin 1 7 writeln (entre com um inteiro entre 1 e 20); 8 readln (x); 2 9 while (x < 1) or (x > 20) do 10 begin 3 11 writeln (entre com um inteiro entre 1 e 20); 12 readln (x) 13 end; 4 14 writeln (digite, x, caracteres); 5 15 for i := 1 to x do 16 read (a[ i ]); 6 7 17 readln; 18 repeat 19 writeln (digite o caracter a ser pesquisado: ); 8 20 readln (c); 21 achou := FALSE; 22 i := 1; 9 23 while (not(achou)) and (i <= x) do 24 begin 10 25 if a[ i ] = c then 11 26 achou := TRUE 27 else 12 28 i := i + 1 29 end; 13 14 30 if achou then 31 writeln (o caracter , c, aparece na posicao, i) 32 else 33 writeln (o caracter , c, no ocorre na string fornecida); 34 writeln; 35 writeln (deseja fazer a procura para outro caracter? [s/n]); 36 readln (resposta); 37 until (UpCase(resposta)='N'); 18 38 end. d

a 2 b 3 c

Grafo de fluxo de controle


f h

4 e 5 g 6

7 i 8 j 9 r l 11 n q
15 16

k 10 m 12 13 o p

s 15 u

14

t 16 v

17 w 18

17

Teste do Caminho Base

Descrio:
Esse critrio fornece uma maneira de determinar um conjunto bsico de caminhos linearmente independentes, de modo que executando-os garante-se a execuo de todos os comandos ao menos uma vez. Um caminho independente qualquer caminho atravs do programa que introduza pelo menos um novo conjunto de instrues de processamento ou uma nova condio. Esse nmero determinado pela frmula da Complexidade Ciclomtica de McCabe V(G) = a n + 2 ou V(G) = P + 1 ou V(G) = no. de regies Onde:
G: um grafo direcionado a: arestas (ramos) n: ns P: no. de ns predicativos

Teste de Software - Teste do Caminho Base


Determinar o n de caminhos lineramente independentes.
1,2 3

Complexidade Ciclomtica de McCabe: Ciclom 1. V(G) = O grafo de fluxo tem 3 regies 2. V(G) = 9 arestas - 8 ns + 2 = 3 3. V(G) = 2 ns predicativos + 1 = 3 A Complexidade Ciclomtica 3.

R2
8

5,6

Caminhos Caminho 1: 1, 2, 3, 10 Caminho 2: 1, 2, 3, 4, 5, 6, 8, 9, 3, 10

R3

R1
10

Caminho 3: 1, 2, 3, 4, 7, 8, 9, 3, 10

10

Teste de Software - Teste do Caminho Base


Caminhos
1,2 3

Caminho 1: 1, 2, 3, 10 1:

A=(1,5)

Tam=0

Resultado Esperado => Max=1 Caminho 2: 1, 2, 3, 4, 5, 6, 8, 9, 3,10 2:

A=(1,5)
5,6

Tam=2

R2
8

Resultado Esperado => Max=5 Caminho 3: 1, 2, 3, 4, 7, 8, 3, 9, 10 3: Resultado Esperado => Max=5

R3

A=(5,1,)

Tam=2

R1
10

Teste do Caminho Base - Outro exemplo


incio 1 1 leia (nro) 2 2 enquanto nro <> 0 faa 3 se nro > 0 ento 3 4 raiz raiz-quadrada(nro) 4 5 escreva (raiz) 6 Seno escreva (mensagem de erro) 6 7 Fim se 8 leia (nro) 7 1 Fim enquanto 2 Escreva (fim de programa) 8 fim

R1
6 7 8

R2 R3

Aplicao:

V(G) = 9 - 8 + 2 = 3 V(G) = 2 +1 = 3 V(G) = no. de regies = 3 A partir desse nmero deve-se escolher 3 caminhos linearmente independentes do grafo: 1. 1-2-8 2. 1-2-3-5-6-7-2-8 3. 1-2-3-4-6-7-2-8

11

Teste do Caminho Base - Outro exemplo


public long fatorial (int n) { int i; long fat; 1 2 3 4 5 6 7 8 9 10 if (n==0) || (n==1) fat=1; else { fat=1; for (i=1;i<=n;i++) fat=fat*i; } return fat; }

1 a 2 d b 3 c

Teste de Software - Teste do Caminho Base Aplicao:


V(G) = 23 - 18 + 2 = 7 V(G) = 6 +1 = 7 V(G) = no. de regies = 7 A partir desse nmero deve-se escolher 7 caminhos linearmente independentes do grafo:
1. 2. 3. 4. 5. 6. 7. 1-2-4-5-7-8-9-14-15-17-18 1-2-4-5-7-8-9-14-16-17-18 2-3-2 5-6-5 9-10-11-13-9 9-10-12-13-9 8-9-14-15-17-8

4 e 5 f h 6 g

7 i 8 j 9 r l 11 n q s 15 u 17 w 18 13 o k 10 m 12 p

14

t 16 v

12

Teste de Comandos Descrio:


Estabelece como requisito de teste que sejam executados todos os comandos do programa ao menos uma vez

Aplicao:
necessrio concentrar-se nos comandos que so controlados por condies Fornecer um valor para x que esteja fora do intervalo para forar a execuo dos comandos no loop (linhas 11-12) Quando x est dentro do intervalo, ele ser no mnimo 1 e o comando dentro do for (linha 16) ser executado

Teste de Comandos Aplicao (cont.):


O comando if (linha 25) precisa ser executado, com as alternativas then e else (linhas 26 e 28) procurar por um caracter que esteja na cadeia e que force a procura dentro dela A entrada no while (linha 23) garantida O comando if (linha 30) precisa ser executado, com as alternativas then e else (linhas 31 e 33) um caracter que pertena e outro que no pertena cadeia (combinando com o if anterior uma cadeia de caracteres a, de um caracter e valores para a varivel c que ocorra e que no ocorra em a) Por fim, preciso terminar o loop para executar o comando end

13

Teste de Comandos
Dados de teste para o Teste de Comandos
x 25 1 a b entrada c b s a n o caracter a no ocorre na string fornecida sada esperada resposta entre com um inteiro entre 1 e 20 o caracter b aparece na posicao 1

Observao:
o nvel mnimo de cobertura esperado no teste estrutural

Teste de Ramos Descrio:


Com dados de teste deve-se exercitar todas as sadas verdadeiro e falso de todas as decises

Aplicao:
conveniente observar o grafo do programa Observando o grafo, necessrio gerar dados de teste que causem as duas sadas verdadeiro e falso que ocorrem nos ns 2, 5, 9, 10, 14 e 17 Para o n 2, um valor da varivel x menor que 1 ou maior que 20 causa a sada pelo ramo verdadeiro e um valor de x dentro desse intervalo causa a sada pelo ramo falso O n 5, comando for (linha 15), ter as sadas verdadeiro e falso, desde que o valor de x seja ao menos 1 (e ter que ser para chegar nesse ponto)

14

Teste de Ramos

Aplicao (cont.):
Para o n 9, loop while (linha 23), a sada verdadeiro (arco k) garantida devido aos comandos das linhas 21 e 22; a sada falso (arco q) garantida ou quando o caracter que est sendo procurado encontrado ou quando o final da cadeia encontrado O n 10, if (linha 25), requer uma comparao que encontre o caracter que est sendo procurado (arcos l, n) e uma outra que cause o incremento de i (arcos m, o) O n 14 (linha 30) precisa de um caracter que seja encontrado e um outro que no seja encontrado O n 17 requer pelo menos mais uma iterao do loop repeat (arco r) antes que o final do programa seja encontrado (arco w)

Teste de Ramos
Dados de teste para o Teste de Ramos
x 25 1 a x entrada c x s a n o caracter a no ocorre na string fornecida sada esperada resposta entre com um inteiro entre 1 e 20 o caracter x aparece na posicao 1

Observao:
O conjunto de dados de testes o mesmo do Teste de Comandos, mas neste, o caracter a poderia ser fornecido atravs de outra execuo do programa, j no Teste de Ramos, a execuo do loop repeat obrigatria

15

Teste de Condio Condi

Descrio:
Estabelece os requisitos de teste tal que todas as condies em uma deciso requeiram as duas sadas, verdadeiro e falso, se for possvel, ao menos uma vez

Aplicao:
necessrio considerar todos os ns identificados no Teste de Ramos, mas neste caso, devem ser consideradas todas as condies das decises No loop while (linha 9), tem-se uma deciso com duas condies: while (x<1) or (x>20) do
valores de x: 0 e 21 obtm-se a cobertura das condies. Se x=0 ento a primeira condio verdadeira e a segunda falsa; Se x=21 ento a primeira condio falsa e a segunda verdadeira

Teste de Condio Condi

Aplicao (cont.):
necessrio gerar um outro valor para x que esteja dentro do intervalo, de forma que seja possvel a execuo do resto do programa Esse valor pode ser determinado pelo requisito imposto pela outra condio do programa, que corresponde ao loop for do comando: for i:=1 to x do
para uma sada verdadeira a varivel i deve ser menor ou igual a x; para uma sada falsa a varivel i deve ser maior que x. Como x pelo menos 1 para se chegar nessa parte do programa, o for executado at que i seja maior que x

16

Teste de Condio Condi

Aplicao (cont.):
Loop while, linha 23 (n 9): while (not(achou))and(i<=x) do
as duas condies nessa deciso so verdadeiras quando se entra nesse loop Para torn-las com valor falso, preciso prever as duas alternativas, ou seja, o caso de um caracter que pertena string e o caso de um caracter que no pertena

Essas duas alternativas geram tambm os valores verdadeiro e falso para os comandos if da linha 25 e if da linha 30 A ltima deciso a ser considerada o comando until da linha 37 (n 17): until (UpCase(resposta)='N' );
executar o programa duas vezes, uma com n e outra com N

Teste de Condio Condi


Dados de teste para o Teste de Condio
x 21 0 1 1 a entrada c resposta sada esperada entre com um inteiro entre 1 e 20 entre com um inteiro entre 1 e 20 o caracter x aparece na posicao 1 n x a N o caracter a no ocorre na string fornecida

17

Teste Funcional
Os requisitos de teste so extrados da especificao do software Aborda o software de um ponto de vista macroscpico Procura descobrir erros nas seguintes categorias: Funes incorretas ou ausentes Erros de Interface Erros nas estruturas de Dados ou acesso a bancos de dados externos Erros de desempenho Erros de inicializao e trmino

Teste Funcional
Problema:
Dificuldade em quantificar a atividade de teste - no se pode garantir que partes essenciais ou crticas do software foram executadas Est sujeito a inconsistncias decorrentes da especificao.

Critrios:
Particionamento de Equivalncia Anlise do Valor Limite Grafo Causa-Efeito Teste Estatstico de Software

18

Particionamento de Equivalncia
Descrio:
Divide o domnio de entrada em classes ou parties de equivalncia que, de acordo com a especificao do programa, so tratadas da mesma maneira As classes de equivalncia representam um conjunto de estados vlidos ou invlidos e podem ser definidas de acordo com as seguintes diretrizes:
Se a condio de entrada especificar um intervalo, so definidas uma classe vlida e duas invlidas Se a condio de entrada exige um valor especfico, so definidas uma classe vlida e duas invlidas Se a condio de entrada especifica um membro de um conjunto, so definidas uma classe vlida e uma invlida Se a condio de entrada for booleana, so definidas uma classe vlida e uma invlida

Programa Exemplo
1 program exemplo(input, output); 2 var a: array[1..20] of char; Programa com 3 x, i: integer; blocos marcados 4 c, resposta: char; 5 achou: boolean; 6 begin 1 7 writeln (entre com um inteiro entre 1 e 20); 8 readln (x); 2 9 while (x < 1) or (x > 20) do 10 begin 3 11 writeln (entre com um inteiro entre 1 e 20); 12 readln (x) 13 end; 4 14 writeln (digite, x, caracteres); 5 15 for i := 1 to x do 16 read (a[ i ]); 6 7 17 readln; 18 repeat 19 writeln (digite o caracter a ser pesquisado: ); 8 20 readln (c); 21 achou := FALSE; 22 i := 1; 9 23 while (not(achou)) and (i <= x) do 24 begin 10 25 if a[ i ] = c then 11 26 achou := TRUE 27 else 12 28 i := i + 1 29 end; 13 14 30 if achou then 31 writeln (o caracter , c, aparece na posicao, i) 32 else 33 writeln (o caracter , c, no ocorre na string fornecida); 34 writeln; 35 writeln (deseja fazer a procura para outro caracter? [s/n]); 36 readln (resposta); 37 until (UpCase(resposta)='N'); 18 38 end. d

1 a 2 b 3 c

Grafo de fluxo de controle


f h

4 e 5 g 6

7 i 8 j 9 r l 11 n q
15 16

k 10 m 12 13 o p

s 15 u

14

t 16 v

17 w 18

17

19

Particionamento de Equivalncia
Aplicao:
De acordo com a especificao, existem basicamente quatro entradas:
um inteiro positivo (entre 1 e 20 3 parties) uma cadeia de caracteres um caracter a ser procurado a opo por procurar por mais caracteres (duas parties: uma para S e outra para N)

O domnio de sada consiste de duas respostas, que levam a outra diviso do domnio de entrada:
a posio na qual o caracter foi encontrado na string (caracter de entrada pertencente string) uma mensagem declarando que ele no foi encontrado (caracter de entrada no pertencente string)

Particionamento de Equivalncia

Dados de teste para o Teste de Particionamento de Equivalncia


x 34 0 3 entrada a c sada esperada resposta entre com um inteiro entre 1 e 20 entre com um inteiro entre 1 e 20 o caracter c aparece na posicao 3 s o caracter k no ocorre na string fornecida n

abc c k

20

Particionamento de Equivalncia
Observao:
Reduz o tamanho do domnio de entrada Concentra-se em criar dados de teste baseados unicamente na especificao especialmente adequado para aplicaes em que as variveis de entrada podem ser facilmente identificadas e podem ter valores distintos Problemas:
embora a especificao possa sugerir que um grupo de dados seja processado de forma idntica, isso pode no ocorrer a tcnica no fornece um guia para a determinao dos dados de teste

Anlise do Valor Limite An

Descrio:
Complementa o Particionamento de Equivalncia Coloca sua ateno em uma fonte propcia a erros os limites de uma classe ou partio de equivalncia

Partio de Equivalncia

Limites

21

Anlise do Valor Limite


Aplicao:
Os valores inteiros 0, 1, 20 e 21 Encontrar o caracter na primeira e na ltima posio da cadeia de caracteres
Dados de teste para o Teste de Anlise do Valor Limite
x 21 0 1 entrada a sada esperada c resposta entre com um inteiro entre 1 e 20 entre com um inteiro entre 1 e 20 o caracter a aparece na posicao 1 s x n 20 abcdefghijklmnopqrst a s t n o caracter t aparece na posicao 20 o caracter a aparece na posicao 1 o caracter x no ocorre na string fornecida

Teste Baseado em Erros


Os requisitos de teste so estabelecidos com base nos erros tpicos e comuns cometidos durante o desenvolvimento do software. Consistem em incluir propositalmente algum erro no programa e observar seu comportamento comparando com o comportamento do programa original. Fornecem indicadores para gerenciar o processo de teste: porcentagem de erros remanescentes e qualidade dos casos de testes. Tipos de testes baseados em erros:
Semeadura de Erros [DeMillo, 1980] Anlise de Mutantes [Budd, 1981]

22

Teste Baseado em Erros: Semeadura de Erros


1. Uma quantidade definida de erros artificiais (tpicos) so introduzidos em um programa que j foi testado, e cujos erros so conhecidos. 2. Os casos de teste j realizados so repetidos para o programa modificado e verifica-se a quantidade de novos erros que foram identificados. 3. A proporo: total de novos erros identificados / total de erros introduzidos ... permite estimar a quantidade de erros remanescentes para o conjunto de casos de teste definidos para o programa.
Se os casos de teste foram capazes de identificar 60% dos novos erros pode-se supor que isto se verifique para o conjunto total dos erros do programa original. Desta forma pode-se comparar a estimativa de erros remanescentes com a confiabilidade esperada (especificada) para o software.

Teste Baseado em Erros: Anlise de Mutantes


Esta tcnica empregada para avaliar o quanto um conjunto de casos de teste adequado para testar um dado programa. 1. Casos de teste T so gerados para um programa P; 2. A aplicao de T revela e existncia do conjunto de erros E no programa P; 3. Gera-se um programa mutante P que possua pequenas mudanas em relao ao original (defeitos comuns em programao ); 4. A aplicao de T revela e existncia do conjunto de erros E no programa P; se E E o mutante morto se E = E o mutante continua vivo 5. Anlise dos mutantes vivos; verificar se os casos de teste foram insuficiente para detectar a modificao introduzida, o que significa que outros erros podem estar escondidos no programa P... e novos casos de teste devem ser definidos;

23

Estratgias de Teste Estrat Relao entre o processo de desenvolvimento e uma estratgia de teste
Engenharia de Sistema Requisitos Projeto Cdigo
S R P C U I V TS

Teste de Unidade Teste de Integrao Teste de Validao Teste de Sistema

Estratgias de Teste Estrat

24

Estratgias de Teste para o Paradigma OO


Segundo Colanzi (1999): Teste de Unidade: Testa os mtodos individualmente; Teste de Classe: Testa a interao entre os mtodos de uma classe; Teste de Integrao: Testa a interao entre as classes Integra do sistema; Teste de Sistema: Testa a funcionalidade do sistema como um todo.

Teste de Unidade

Concentra-se no mdulo Utiliza a tcnica de teste estrutural Pode ser realizado em paralelo para vrios mdulos Aspectos considerados:
Mdulo __________ __________ __________ __________ __________ _____ Interface Estrutura de dados local Condies limite Caminhos independentes Caminhos de tratamento de erros

Casos de teste

25

Teste de Unidade

Geralmente, um programa no um mdulo nico, mas formado de diversos mdulos que, para efeito do teste de unidade devem ser testados separadamente
driver : um programa principal que aceita dados de casos de teste, passa esses dados para o mdulo a ser testado e imprime os dados relevantes que ele recebe do mdulo stub : so mdulos que servem para substituir outros mdulos que estejam subordinados, isto , que so chamados pelo mdulo testado; ele usa a interface do mdulo subordinado, faz o mnimo de manipulao de dados, imprime uma verificao da entrada e retorna

Driver Interface Estrutura de dados local Condies limite Caminhos independentes Caminhos de tratamento de erros

Mdulo a ser testado

Stub

Stub

Resultados Casos de teste

Teste de Integrao Integra

Constri-se, de uma forma sistemtica, a estrutura do programa realizando, ao mesmo tempo, testes para detectar erros de interface Embora os mdulos, depois do teste de unidade, funcionem corretamente de forma isolada, o teste de integrao necessrio pois quando colocados juntos, vrias situaes inesperadas podem acontecer Integrao dos mdulos feita atravs de uma abordagem incremental
integrao top-down integrao bottom-up

26

Teste de Integrao Integra

Integrao Top-down
A integrao dos mdulos feita de cima para baixo Pode ser realizada de duas maneiras:
por profundidade (M2, M5 e M8 ou M2, M5, M6 e M8) por largura (M2, M3 e M4)
M1

M2

M3

M4

M5

M6

M7

M8

Teste de Integrao Integra

Integrao Top-down
O processo de integrao feito atravs de cinco passos:
1. O mdulo de controle principal usado como um driver e substitui-se por stubs todos os mdulos reais diretamente subordinados ao mdulo principal; 2. Dependendo da abordagem de integrao a ser utilizada por profundidade ou largura os stubs so substitudos pelos mdulos reais, um de cada vez; 3. So realizados testes para cada mdulo que seja integrado; 4. Quando um teste concludo, outro stub substitudo pelo mdulo real; 5. Teste de regresso, isto , repetio de todos ou alguns dos testes j realizados pode ser aplicado novamente para garantir que novos erros no tenham sido introduzidos.

27

Teste de Integrao Integra

Integrao Top-down
Por profundidade: permite que uma funo especfica do mdulo principal possa ser testada por completo Nem sempre a construo de um stub uma tarefa fcil, pois se a funo do mdulo real que ele representa for complexa, o stub tem que tratar os aspectos principais desse mdulo para que o teste seja significativo

Teste de Integrao Integra

Integrao Bottom-up
A integrao dos mdulos feita de baixo para cima Quando os mdulos de nveis superiores vo ser testados, os mdulos subordinados j esto prontos e portanto, no se torna necessria a construo de stubs
Mc

Ma D2

Mb D3

D1

Cluster3 Cluster1 Cluster2

28

Teste de Integrao Integra

Integrao Bottom-up
O processo de integrao feito atravs de quatro passos:
1. Os mdulos de nvel mais baixo so combinados em clusters que executam funes especficas do mdulo principal; 2. Para cada cluster elaborado um driver que coordena a entrada e sada dos casos de teste; 3. O cluster testado; 4. Os drivers so substitudos pelos clusters que passam a interagir com os mdulos acima, na estrutura do programa.

Teste de Integrao Integra

A escolha por uma dessas duas abordagens de integrao depende do tipo de software e, s vezes, do cronograma do projeto Em geral, uma integrao combinada - sanduche - mais aconselhvel:
mdulos superiores abordagem top-down mdulos mais inferiores abordagem bottom-up

top-down
vantagem: testar logo no incio as funes principais do software desvantagem: os stubs e a dificuldade de teste quando eles so usados

bottom-up
vantagem: no se precisa de stubs desvantagem:o mdulo principal no existe enquanto todos mdulos no estiverem testados

29

Teste de Validao Valida

O software est montado como um pacote e a validao do mesmo realizada atravs de uma srie de testes caixa preta. Finalidade:

Demonstrar a conformidade aos requisitos funcionais e de desempenho (testar todos os casos de uso). Verificar se a documentao est correta

Duas possibilidades:
Aceito No est totalmente de acordo com os requisitos: negociar com o usurio

Teste de Validao Valida

Engloba o Teste de Aceitao: realizado pelo prprio usurio No caso de software desenvolvido para vrios usurios:
Teste alfa: realizado pelo usurio no ambiente do alfa: desenvolvedor Teste beta: realizado pelo usurio em seu prprio ambiente beta:

30

Teste de Sistema

Considera o software dentro do seu ambiente mais amplo (todos os aspectos de interao com ele, como outro hardware, software, pessoas, etc.) Corresponde a uma srie de testes que tem por objetivo verificar se todos os elementos do sistema foram integrados adequadamente e realizam corretamente suas funes
teste de segurana: tem por objetivo verificar se todos os mecanismos de proteo protegem realmente o software de acessos indevidos. teste de estresse: tem por objetivo confrontar os programas com situaes anormais de freqncia, volume ou recursos em quantidade. teste de desempenho: tem por objetivo testar o tempo de resposta do sistema e aplicado, geralmente, para sistemas de tempo real

Depurao Depura

Processo de Depurao

Resultados Casos de Teste

Testes adicionais

Causas suspeitas Depurao

Testes de regresso Correes Causas identificadas

31

Depurao Depura

abordagens para se conduzir a depurao:


fora bruta: quando o erro no analisado para se descobrir a causa, tentando que o prprio computador a descubra, inserindo, por exemplo, vrios comandos de escrita no programa. backtracking: inicia-se no local em que o sintoma foi detectado e rastreia-se para trs, manualmente, at que o local da causa seja encontrado. eliminao da causa: supe-se uma causa e elaboram-se casos de teste para comprovar ou refutar essa hiptese

Pontos-Chaves Pontos-

O objetivo do teste encontrar erros e se eles no forem detectados, o teste no pode afirmar sua ausncia Testar tudo impossvel As tcnicas de teste so complementares, isto , devem aplicadas conjuntamente a execuo do teste criativa e difcil, pois para testar com eficincia preciso conhecer o software a fundo

32