Você está na página 1de 65

Tcnicas de Teste de Software

Uma Breve Introduo

Compilado a partir do material original gentilmente cedido pelos professores Sandra Fabbri (UFSCar) e Jos Carlos Maldonado (ICMC-USP)
1

O Que Teste de Software


D P
X

?
T

Inexistncia de erro: Software de alta Qualidade? T de baixa Qualidade?

Caso de Teste
Especificao de uma entrada para o programa e a correspondente sada esperada Entrada: conjunto de dados necessrios para uma execuo do programa Sada esperada: resultado de uma execuo do programa (um orculo esperado) Um bom caso de teste tem alta probabilidade de revelar um erro ainda no descoberto

Projeto de Casos de Teste


Projeto de teste pode ser to difcil quanto o projeto do prprio produto a ser testado Poucos programadores/analistas gostam de teste; menos ainda de projeto de casos de teste

Tcnicas de Projeto de Casos de Teste


Maneira sistemtica e planejada para conduzir os testes ( Critrios de Teste ) Conjunto de Casos de Teste T caractersticas desejveis:
i ) deve ser finito ii) o custo de aplicao deve ser razovel

Critrios de Teste
Critrio de Teste C
Objetivo:
... obter, de maneira sistemtica um conjunto T de casos de teste efetivo quanto meta principal de teste - revelar a presena de erros no programa

Critrio de Seleo de Casos de Teste Critrio de Adequao


T C-adequado todo elemento requerido por C exercitado por pelo menos um t, t T

Tcnicas de Teste
Funcional Estrutural Baseada em Erros
A diferena est na fonte utilizada para estabelecer os requisitos de teste O importante no definir qual usar, mas saber us-las de forma complementar
7

Tcnicas de Teste
Funcional ou Teste Caixa Preta
baseada na especificao do software

Estrutural ou Teste Caixa Branca


baseada numa implementao em particular

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

Teste Funcional
Os requisitos de teste so extrados da especificao do software Aborda o software de um ponto de vista macroscpico Problema:
Dificuldade em quantificar a atividade de teste - no se pode garantir que partes essenciais ou crticas do software foram executadas

Critrios:
Particionamento de Equivalncia Anlise do Valor Limite Grafo Causa-Efeito
9

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, que podem ser vlidas ou invlidas, so definidas de acordo com as seguintes diretrizes:
se a condio de entrada especifica um intervalo, 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

10

Particionamento de Equivalncia
Aplicao:
de acordo com sua especificao existem, basicamente, quatro entradas:
um inteiro positivo (entre 1 e 20 3 parties) uma cadeia de caracteres um caractere 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 caractere foi encontrado na string (caractere de entrada pertencente string) uma mensagem declarando que ele no foi encontrado (caractere de entrada no pertencente string)
11

Particionamento de Equivalncia
Dados de teste para o Teste de Particionamento de Equivalncia
x 34 0 3 entrada a sada esperada c resposta entre com um inteiro entre 1 e 20 entre com um inteiro entre 1 e 20 o caractere c aparece na posio 3 s k n o caractere k no ocorre na string fornecida

abc

12

Particionamento de Eqivalncia
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

13

Anlise do Valor Limite


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

14

Anlise do Valor Limite


Aplicao:
os valores inteiros 0, 1, 20 e 21 encontrar o caractere 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 caractere a aparece na posio 1 s x n 20 abcdefghijklmnopqrst a s t n 15 o caractere t aparece na posio 20 o caractere a aparece na posio 1 o caractere x no ocorre na string fornecida

Teste Estrutural
Os requisitos de teste so extrados de uma implementao em particular Teste dos detalhes procedimentais A maioria dos critrios dessa tcnica utiliza uma representao conhecida do programa como grafo de programa ou grafo de fluxo de controle

16

Teste Estrutural
Teste Baseado em Fluxo de Controle Critrios:
Teste de Comandos Teste de Ramos Caminho DD Teste de Condio Teste de Deciso/Condio Teste de Condio Mltipla Teste do Caminho Bsico Teste de Caminho

Teste Baseado em Fluxo de Dados Critrio:


Todos-usos

17

Teste Estrutural
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

18

Teste Estrutural
Construes Bsicas do Grafo de Fluxo de Controle

seqncia

if

while

repeat

case

19

Teste Estrutural
Exemplo de Construo do Grafo de Fluxo de Controle

incio leia nro raiz = raiz-quadrada(nro) escreva raiz fim


1

Programa com um caminho

20

Teste Estrutural
Exemplo de Construo do Grafo de Fluxo de Controle

incio

leia nro se nro > 0 raiz = raiz-quadrada(nro) escreva raiz seno escreva mensagem de erro fim-se fim
4

Programa com dois caminhos

21

Teste Estrutural
Exemplo de Construo do Grafo de Fluxo de Controle
incio

leia nro enquanto nro 0 2 3 se nro > 0 raiz = raiz-quadrada(nro) 4 escreva raiz seno escreva mensagem de erro fim-se 6 leia nro fim-enqto fim
7

4 5 6

Programa com loop


22

Teste Estrutural
1 program exemplo(input, output); 2 var a: array[1..20] of char; 3 x, i: integer; 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; 14 writeln (digite, x, caracteres); 4 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; 23 while (not(achou)) and (i <= x) do 9 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) 15 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 (resposta = n) or (resposta = N); 38 end. 18

Programa com blocos marcados

16

17

23

Teste Estrutural
1 program exemplo(input, output); 2 var a: array[1..20] of char; 3 x, i: integer; 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; 14 writeln (digite, x, caracteres); 4 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; 23 while (not(achou)) and (i <= x) do 9 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) 15 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 (resposta = n) or (resposta = N); 38 end. 18

1 a 2 b d 3 c

Programa com blocos marcados

Grafo de fluxo de controle


f h

4 e 5 g 6

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

k 10 m 12 13 o p

14

t 16

17 w 18

17

24

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

25

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 caractere 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 caractere que pertena e outro que no pertena cadeia (combinando com o if anterior uma cadeia de caracteres a, de um caractere 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
26

Teste de Comandos
Dados de teste para o Teste de Comandos (sute 1)
x 25 3 a entrada c sada esperada resposta entre com um inteiro entre 1 e 20 o caractere b aparece na posio 2 n 25 3 entre com um inteiro entre 1 e 20 o caractere d no ocorre na string fornecida n

abc

abc

Observao:
o nvel mnimo de cobertura esperado no teste estrutural

27

Teste de Comandos
Dados de teste para o Teste de Comandos (sute 2)
x 25 1 a entrada c sada esperada resposta entre com um inteiro entre 1 e 20 o caractere x aparece na posio 1 s a n o caractere a no ocorre na string fornecida

Observao:
A busca de um caractere que no existe pode ser feita na mesma execuo do programa

28

Teste de Ramos
Descrio:
Estabelece como dados de teste 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) 29

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 caractere que est sendo procurado encontrado ou quando o final da cadeia encontrado o n 10, if (linha 25), requer uma comparao que encontre o caractere 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 caractere 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)
30

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

Observao:
O conjunto de dados de testes o mesmo da Sute 2 do Teste de Comandos Note que sute 1 do Teste de Comandos no satisfaz o Teste de Ramos No Teste de Ramos, a execuo do loop repeat obrigatria !
31

Teste de Condio
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
32

Teste de Condio
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

33

Teste de Condio
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 caractere que pertena string e o caso de um caractere 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 (resposta = n) or (resposta = N)
quando fornecido o valor n, a primeira condio verdadeira e a segunda falsa; quando fornecido o valor N, a primeira falsa e a segunda verdadeira (executar o programa duas vezes) 34

Teste de Condio
Dados de teste para o Teste de Condio
x 21 0 1 a entrada c resposta sada esperada

x n

entre com um inteiro entre 1 e 20 entre com um inteiro entre 1 e 20 o caractere x aparece na posio 1

a N

o caractere a no ocorre na string fornecida

Observao:
o Teste de Condio pode no satisfazer o Teste de Ramos neste caso, o loop do repeat no executado
35

Teste do Caminho Base


Descrio:
esse critrio fornece uma maneira de determinar um conjunto bsico de caminhos linearmente independentes, de modo que executandoos garante-se a execuo de todos os comandos ao menos uma vez 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 sendo:
G: um grafo direcionado a: arestas (ramos) n: ns P: no. de ns predicativos

Um caminho linearmente independente aquele que contm ao menos um novo n


36

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
37

Teste do Caminho Base


1 a

Aplicao:
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
d

2 b 3 c

4 e 5 f h 6 g

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

38

Teste do Caminho Base


Observao:
esse conjunto conhecido como conjunto base a partir do qual qualquer outro caminho pode ser construdo Por exemplo, o caminho:
1-2-3-2-4-5-6-5-6-5-7-8-9-10-11-13-9-14-15-17-18

uma combinao dos caminhos 1, 3, 4 (2 vezes) e 5 neste caso, o conjunto de dados de teste o mesmo do Teste de Ramos

39

Teste de Fluxo de Dados


Descrio:
estabelece requisitos de teste que seguem o modelo de dados usados dentro do programa cada ocorrncia de uma varivel dentro de um programa pode ser classificada como sendo uma das seguintes:
def: definio c-use: uso-computacional p-use: uso-predicativo

40

Teste de Fluxo de Dados


definio: quando uma varivel definida atravs de uma leitura ou quando ela aparece do lado esquerdo de um comando de atribuio, isto , dado um valor varivel uso-computacional: quando a varivel usada na avaliao de uma expresso ou em um comando de sada uso-predicativo: quando a varivel ocorre em um predicado e portanto, afeta o fluxo de controle do programa

41

Teste de Fluxo de Dados


Aplicao:
seja a aplicao do critrio de fluxo de dados: todos-usos (uso inclui c-uso e p-uso) a idia identificar e classificar todas as ocorrncias de variveis no programa e ento gerar, para cada varivel, dados de teste de modo que todas as definies e usos (denominado par d-u) sejam exercitados as variveis que precisam ser consideradas so: x, i, c, achou, resposta e o vetor a para cada uma dessas variveis constri-se uma tabela de pares d-u

42

Teste de Fluxo de Dados


Pares d-u da varivel x par d-u 1 2 3 4 5 6 7 8 d 8 8 8 8 12 12 12 12 u 9 14 15 23 9 14 15 23

Requisitos de teste: 1) um valor vlido de x fornecido na primeira entrada (input), e ento usado dentro do programa 2) um valor invlido de x seguido por um valor vlido, que usado subseqentemente

43

Teste de Fluxo de Dados


Pares d-u da varivel i par d-u 1 2 3 4 5 6 7 8 9 d 15 22 22 22 22 28 28 28 28 u 16 23 25 28 31 23 25 28 31

Requisitos de teste: 1) o par d-u 1 satisfeito lendo-se pelo menos um valor no vetor 2) os pares 2 e 3 sero cobertos automaticamente 3) o par 4 exercitado quando a procura do caractere no obtm sucesso no primeiro elemento do vetor 4) o par 5, por outro lado, o resultado de uma procura com sucesso no primeiro elemento do vetor 5) os pares 6 a 9 so exercitados por uma futura procura sem sucesso seguida por uma procura com sucesso
44

Teste de Fluxo de Dados


Pares d-u da varivel c par d-u 1 2 3 d 20 20 20 u 25 31 33

Requisitos de teste: para a varivel c: 1) encontrando-se com sucesso o caractere c no vetor 2) no encontrando o caractere c no vetor

Pares d-u da varivel achou par d-u 1 2 3 4 d 21 21 26 26 u 23 30 23 30

para a varivel achou: similar c

45

Teste de Fluxo de Dados


Pares d-u da varivel resposta par d-u 1 d 36 u 37

Requisitos de teste: para a varivel resposta: 1) fornecendo um valor s

Pares d-u da varivel a par d-u 1 d 16 u 25

para a varivel a: o vetor tratado como uma varivel simples ele exercitado pela execuo normal do programa

46

Teste de Fluxo de Dados


Dados de teste para o Teste de Fluxo de Dados
entrada c D n 21 3 entre com um inteiro entre 1 e 20 o caractere Z aparece na posio 3 y a n o caractere a no ocorre na string fornecida sada esperada resposta o caractere D aparece na posio 1

x 1

a D

XYZ

47

Teste Baseado em Erros


Os requisitos de teste so estabelecidos com base nos erros tpicos e comuns cometidos durante o desenvolvimento do software Critrio:
Anlise de Mutantes

48

Anlise de Mutantes
Descrio:
opn P

op2 op1

Mutantes

operadores de mutao T

Hipteses: 1) programador competente 2) efeito de acoplamento

escore de mutao =

# mutantes mortos # mutantes gerados no equivalentes


49

Anlise de Mutantes
Garantir a ausncia de determinados tipos de defeitos Considerando todos os programas Q, possvel provar a correo de P
T

P P(t) Q(t)

tT

50

Anlise de Mutantes
impraticvel executar e comparar todos os programas Q Estabelece-se ento uma vizinhana (P) que contm apenas um conjunto finito de programas Esses programas contm pequenos desvios sintticos que representam defeitos simples

51

Anlise de Mutantes
Q01 Q02 Q... Q... Q... Q... Q...

Q... Q... Q... Q... Q... Q... Q... Q... Q... Q... Q... Q... Q...

Q... Q... Q... Q... Q... Q...

(P)

Q... Q... Q... Q... Q... Q... Q... Q... Q... Q... Q... Q... Q... Qn

t T | Q, P(t) Q(t) que P no contm os tipos de defeitos representados pelos programas Q

52

Anlise de Mutantes
Hiptese do Programador Competente
Programadores experientes escrevem programas corretos ou muito prximos do correto.

Efeito de Acoplamento
Casos de teste capazes de revelar erros simples so to sensveis que, implicitamente, tambm so capazes de revelar erros mais complexos.

53

Anlise de Mutantes
Os operadores de mutao determinam o tipo de alterao sinttica que deve ser feita para a criao dos mutantes
Introduzir pequenas alteraes semnticas atravs de pequenas alteraes sintticas que representam defeitos tpicos

Operadores dependem da linguagem alvo


FORTRAN (22 operadores) C (71 operadores)

54

Anlise de Mutantes
Exemplos de operadores de mutao
Retira um comando de cada vez do programa Troca operador relacional por operador relacional Troca o comando while por do-while Interrompe a execuo do lao aps duas execues Troca constante por constante Requer valor negativo, positivo e zero para cada referncia escalar

55

Anlise de Mutantes
Dados P e T Passos para a Aplicao da Anlise de Mutantes
P executado com os casos de teste de T Mutantes so gerados Mutantes so executados com os casos de teste de T Mutantes so analisados

56

Anlise de Mutantes
Aplicao:
Considere o trecho do programa e o conjunto de teste obtido para o Teste de Ramos
M 21 22 23 24 25 26 27 28 29 M achou := FALSE; i := 1; while (not(achou)) and (i <= x) do begin if a[ i ] = c then achou := TRUE else i := i + 1 end;

x 25 1

a x

entrada c resposta x s a n

sada esperada entre com um inteiro entre 1 e 20 o caractere x aparece na posio 1 o caractere a no ocorre na string fornecida

57

Anlise de Mutantes
Aplicao:
Mutante 1: alterao na linha 21
de: achou := FALSE para: achou := TRUE considere agora que o mutante seja re-executado com os dados de teste obtidos para o Teste de Ramos a sada gerada seria: o caractere a aparece na posio 1 em vez de: o caractere a no ocorre na string fornecida mutante seria morto por esse conjunto de dados de teste

58

Anlise de Mutantes
Aplicao:
Mutante 2: alterao na linha 22
de: i := 1 para: x := 1 considere agora que o mutante seja re-executado com os dados de teste obtidos para o Teste de Ramos o erro no revelado; o mutante continua vivo pois a sada gerada por ele igual sada gerada pelo programa original, uma vez que a string de tamanho 1 e o loop while da linha 23 executa exatamente uma vez (somente se o for sair com i=1) para matar esse mutante deve-se criar um caso de teste que possua uma string de tamanho maior que 1 e assim, qualquer caractere da posio 2 em diante ser considerado como no pertencente string, mesmo que faa parte dela
59

Anlise de Mutantes
Aplicao:
Mutante 2: novos dados de teste para ser morto
Dado de teste que mata o mutante 2
x 3 a xCv entrada c resposta x y v y C n o caractere C no ocorre na string fornecida o caractere v no ocorre na string fornecida sada fornecida pelo mutante

o caractere x aparece na posio 1

Obs: se o programa original fosse executado com esses dados, os caracteres v e C seriam encontrados nas posies 3 e 2 respectivamente.

60

Anlise de Mutantes
Aplicao:
Mutante 3: alterao na linha 28
de: i := i + 1 para: i := i + 2 considere agora que o mutante seja re-executado com os dados de teste obtidos para o Teste de Ramos o erro no revelado; o mutante continua vivo pois a sada gerada por ele igual sada gerada pelo programa original, uma vez que a string de tamanho 1 e o loop while da linha 23 executa exatamente uma vez (o incremento de 2 no ser executado) para matar esse mutante deve-se criar um caso de teste que possua uma string de tamanho maior que 1 e, alm disso, necessrio procurar por um caractere nas posies pares da string
61

Anlise de Mutantes
Aplicao:
Mutante 3: novos dados de teste para ser morto
Dado de teste que mata o mutante 3
x 3 a xCv entrada c resposta x y v y C n o caractere C no ocorre na string fornecida o caractere v aparece na posio 3 sada fornecida pelo mutante

o caractere x aparece na posio 1

Obs: Se o programa original fosse executado com esse dado de teste, o caractere C seria encontrado na posio 2

62

Anlise de Mutantes
Observao:
Teste de Mutao consegue mostrar a ausncia de erros particulares, pois ao matar os mutantes est sendo mostrado que o programa original no possui aquele erro esse critrio fora o testador a analisar cuidadosamente o programa, uma vez que ele precisa criar dados de teste que exponham os erros introduzidos desvantagem:
ele computacionalmente caro devido ao grande nmero de mutantes gerados e o tempo e recurso usados para compilar e executar todos eles

63

Estratgias de Teste
Aspectos genricos das Estratgias de Teste
a atividade de teste inicia-se no nvel de mdulos e caminha na direo da integrao de todo o sistema diferentes tcnicas de teste so apropriadas para diferentes situaes a atividade de teste, em geral, realizada pela equipe de desenvolvimento e, no caso de grandes projetos, por um grupo de teste independente as atividades de teste e depurao so atividades diferentes, mas a depurao necessria em qualquer estratgia de teste

64

Estratgias de Teste
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

65

Você também pode gostar