Escolar Documentos
Profissional Documentos
Cultura Documentos
Contedo
Tcnicas de Teste
Funcional
Estrutural
Baseada em Erros
Estratgias de Teste
Teste de Unidade
Teste de Integrao
Teste de Validao
Teste de Sistema
Depurao
Qualidade de Software
Conformidade com requisitos funcionais e de desempenho,
padres de desenvolvimento documentados, e caractersticas
implcitas esperadas de todo software profissionalmente
desenvolvido
Corretitude
Confiabilidade
Testabilidade
Verificao:
Assegurar consistncia, completitude e corretitude do produto em
cada fase e entre fases consecutivas do ciclo de vida do software.
Estamos construindo corretamente o produto?
Teste:
Examina o comportamento do produto atravs de sua execuo
Definies
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
Defeito
Erro
Falha
Teste e Depurao
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
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
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:
Teste timo
Custo do teste
Quantidade
supertestado
subtestado
Nmero de defeitos
Extenso do teste
Teste de Software
Atividade essencial para ascenso ao nvel 3 do Modelo
CMM/SEI;
Atividade relevante para avaliao de produtos de software
(ISO 9126, ISO 14598-5);
Teste de Software
Defeitos e erros ocultos" no software e no revelados
CUSTOS ALTSSIMOS!
Teste de Software
Atividades de Teste
Planejamento
Tipos de testes;
Casos de teste;
Ciclos de teste;
Ferramentas de teste.
Inexistncia de erro:
Estratgias de Teste
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
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
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
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
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
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;
Abordagem big-bang?
Correo difcil e isolamento complicado.
Teste de Integrao
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
M5
M8
M3
M6
M7
M4
Teste de Integrao
Integrao Top-down
O processo de integrao feito atravs de cinco passos:
1. o mdulo de controle principal usado como um driver e substituise 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.
Teste de Integrao
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
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
D1
Mb
D2
D3
Cluster3
Cluster1
Cluster2
Teste de Integrao
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
Teste de Regresso
Cada vez que um novo mdulo adicionado como parte do teste
de integrao, o software se modifica;
Modificaes podem causar
previamente funcionavam;
problemas
com
funes
que
Teste de Integrao
Teste de Fumaa
Abordagem de teste de integrao comumente usada em projetos
de software;
Atividades:
Componentes de software que foram construdos so integrados em
uma construo (build).
Uma srie de testes projetada para expor erros que impeam a
construo de desempenhar adequadamente sua funo.
A construo integrada com outras construes e o produto inteiro
passa pelo teste de fumaa diariamente.
Teste de Integrao
A escolha por uma das duas abordagens de integrao depende
do tipo de software e, s vezes, do cronograma do projeto
Em geral, uma integrao combinada - sanduche aconselhvel:
mdulos superiores
abordagem top-down
mdulos mais inferiores
abordagem bottom-up
Top-down
mais
Bottom-up
Teste de Validao
Aes visveis ao usurio e sadas reconhecidas pelo usurio;
O software est montado como um pacote e a validao
realizada atravs de uma srie de testes caixa preta;
Finalidade:
Demonstrar a conformidade aos requisitos funcionais e de
desempenho;
Verificar se a documentao est correta.
Duas possibilidades:
Aceito;
No est totalmente de acordo com os requisitos: negociar com
o usurio.
Teste de Validao
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
desenvolvedor
Teste beta: realizado pelo usurio em seu prprio ambiente
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 recuperao: tem por objetivo verificar se a recuperao do
software realizada de forma adequada
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
Processo de Depurao
Resultados
Casos
de
Teste
Testes
adicionais
Causas
suspeitas
Testes de
regresso
Depurao
Correes
Causas
identificadas
Depurao
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
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.
Teste OO
mais simples por causa do reso?
NO!
Cada reso um novo contexto;
Retestar prudente;
Tudo indica que mais (e no menos) teste necessrio para se
obter alta confiabilidade em sistemas OO.
Teste OO
Para testar um sistema OO de maneira adequada:
O teste deve ser ampliado para incluir tcnicas para identificao
de erros que se apliquem aos modelos de AnliseOO e
ProjetoOO;
A estratgia de teste de unidade e de integrao deve mudar
significativamente;
O projeto de casos de teste deve considerar as caractersticas
de software OO.
detalhes
das
conexes
entre
classes
Tcnicas de Teste
Tcnicas de Teste
Funcional
Estrutural
Baseada em Erros
Tcnicas de Teste
Funcional ou Teste Caixa Preta
baseada na especificao do software
Baseada em Erros
baseada nos erros tpicos e comuns cometidos
durante o desenvolvimento
Teste Estrutural
Os requisitos de teste so
implementao em particular
extrados
de
uma
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
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
Teste Estrutural
Construes Bsicas do Grafo de Fluxo de Controle
seqncia
if
while
repeat
case
Teste Estrutural
Exemplo de Construo do Grafo de Fluxo de Controle
incio
leia nro
raiz = raiz-quadrada(nro)
escreva raiz
fim
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
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
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;
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
a
2
b
Grafo de fluxo
de controle
e
5
g
f
h
7
i
8
j
9
k
r
l
10
11
12
n
13
14
16
17
16
15
u
17
w
18
V(G) = a n + 2
ou
V(G) = P + 1
ou
G: um grafo direcionado
a: arestas (ramos)
n: ns
P: no. de ns predicativos
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
Ramo
V(G) = 11 ramos 9 ns + 2 = 4
N V(G) = 3 ns predicativos + 1 = 4
2
4
6
R2
R3
R1
Portanto a complexidade
ciclomtica 4
Regio
R4
- Caminho 1: 1-11
- Caminho 2: 1-2-3-4-5-10-1-11
- Caminho 3: 1-2-3-6-8-9-10-1-11
- Caminho 4: 1-2-3-6-7-9-10-1-11
Teste de Condio
Descrio:
Exercita as condies lgicas de um mdulo de programa.
Estabelece os requisitos de teste para que todas as condies em
uma deciso requeiram as duas sadas, verdadeiro e falso, se for
possvel, ao menos uma vez
Aplicao:
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 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
Particionamento de Equivalncia
Descrio:
Divide o domnio de entrada em classes de dados das quais os
casos de teste podem ser derivados
Busca definir um caso de teste que descobre classes de erros,
reduzindo assim o nmero total de casos de teste.
As classes de dados, 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 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
Particionamento de Equivalncia
Aplicao:
de acordo com sua especificao existem, basicamente, quatro
entradas:
Particionamento de Equivalncia
entrada
a
abc
sada esperada
c
resposta
entre com um inteiro entre 1 e 20
entre com um inteiro entre 1 e 20
o caracter c aparece na posicao 3
c
s
k
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
Partio de Equivalncia
Limites
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
a
s
x
20 abcdefghijklmnopqrst