Sie sind auf Seite 1von 44

Slide 1

Teste de Software
Slide 2
Testes para a deteco de defeitos
G Testar programas para
estabelecer a presena de
defeitos no sistema.
Slide 3
Tpicos
G Testes para a deteco de defeitos
G Testes de integrao
G Testes orientados a objetos
Slide 4
O processo de teste
G Testes de componentes
Testes de componentes de programas individuais.
Usualmente os programadores assumem a responsabilidade
pelo teste de seu cdigo (exceto em caso de sistemas
crticos).
Testes so derivados da experincia do desenvolvedor.
G Testes de integrao
Testes de grupos de componentes integrados para formar
subsistemas ou sistemas completos.
Uma equipe independente de teste fazem o teste de
integrao.
Os testes so baseados em uma especificao do sistema.
Slide 5
Teste para deteco de defeitos
G O objetivo de testes para a deteco de
defeitos revelar defeitos latentes nos
programas.
G Um teste bem sucedido aquele que revela a
presena de um defeito (faz com que o
programa se comporte de maneira anmala)
G Testes mostram a presena e no a ausncia
de defeitos.
Slide 6
G A nica maneira de mostrar que um programa est
correto o teste exaustivo teste exaustivo. Contudo, teste exaustivo
impraticvel impraticvel.
G Testes devem ser baseados em um subconjunto subconjunto de
possveis casos de teste.
G Polticas devem ser utilizadas para escolher esse
conjunto.
Ex: todas as declaraes do programa devem ser testadas pelo
menos uma vez
Todas as funes de sistema acessados por meio de menus devem
ser testadas, etc.
Prioridades do teste
Slide 7
GG Dados de teste Dados de teste entradas criadas para testar o
sistema.
GG Casos de teste Casos de teste Entradas para testar o sistema
e sadas esperadas para essas entradas (
quando o sistema opera de acordo com suas
especificaes) .
Dados de teste e Casos de teste
Slide 8
Processo de teste para a deteco
de defeitos
Design test
cases
Prepare test
data
Run program
with test data
Compare r esults
t o test cases
Test
cases
Test
data
Test
results
Test
reports
Casos
de teste
Casos
de teste
Dados
de teste
Dados
de teste
Resultados
de teste
Resultados
de teste
Relatrios
de teste
Relatrios
de teste
Projetar casos
de teste
Projetar casos
de teste
Preparar dados
de teste
Preparar dados
de teste
Executar programa
com dados de teste
Executar programa
com dados de teste
Comparar resultados
com os casos de teste
Comparar resultados
com os casos de teste
Slide 9
Teste de caixa preta
G Uma abordagem de teste onde o programa
considerado como uma caixa-preta.
G Os casos de teste para testar o programa so
baseados na especificao do sistema.
G O planejamento dos testes podem comear nos
primeiros estgios do processo de software.
Slide 10
Teste Caixa preta
Ie
Entrada de
Dados de teste
Sada dos resultados de
teste
Oe
SISTEMA
SISTEMA
Entradas que provocam
comportamento anmalo
Sadas que revelam a
presena de defeitos
Problema: selecionar
entradas Ie
Slide 11
Particionamento de equivalncia
(abordagem sistemtica para seleo de dados de teste)
G Dados de entrada e resultados de sada caem
em diferentes classes onde todos os membros
de uma classe so relacionados
G Cada uma dessas classes uma partio de
equivalncia onde o programa se comporta de
uma maneira equivalente para cada membro da
classe
G Casos de teste devem ser escolhidos de cada
partio.
Slide 12
(abordagem sistemtica para seleo de dados de teste)
Particio de Equivalncia
Sy stem
Ou tput s
Invali d in pu ts Vali d in pu ts
Slide 13
G Entradas e sadas do sistema so particionadas
em conjuntos de equivalncia
Se a entrada um inteiro de 5 dgitos entre 10.000 e 99.999,
parties de equivalncia so nmeros < 10.000, nmeros
entre 10.000 e 99. 999 e nmeros > 99. 999
G Escolher casos de teste nos limites das
parties:
00000, 09.999, 10.000, 50.0000, 99.999, 100.000
(abordagem sistemtica para seleo de dados de teste)
Particionamento de equivalncia
Slide 14
(abordagem sistemtica para seleo de dados de teste)
Parties de equivalncia
Between 10000 and 99999
Less than 10000
More t han 99999
9999
10000 50000
100000
99999
Input values
Between 4 and 10 Less than 4 More t han 10
3
4 7
11
10
Number of i nput values
O programa aceita entre 4 a
10 entradas, que so nmeros
inteiros de cinco dgitos,
maiores do que 10.000 e
menores que 99.999
Slide 15
Especificao de uma rotina de
busca
procedure Search (Key : ELEM ; T: ELEM_ARRAY;
Found : in out BOOLEAN; L: in out ELEM_INDEX) ;
Pr-condio
-- a seqncia tem pelo menos um elemento
TFIRST <= TLAST
Ps-condio
-- O elemento encontrado e referenciado por L
( Found and T (L) = Key)
ou
-- O elemento no est na seqncia
( not Found and
not (exists i, TFIRST >= i <= TLAST, T (i) = Key ))
Slide 16
G Entradas que esto de acordo com a pr
condio: seqncia com no mnimo um
elemento.
G Entradas onde a pr condio no vale.
G Entradas onde o elemento chave um
elemento da seqncia.
G Entradas onde o elemento chave no um
membro da seqncia.
Rotina de busca - parties de
entrada
Slide 17
Diretrizes de testes (no caso do
exemplo usado)
G Teste o software com seqncias que possuem
somente um nico valor.
G Use diferentes seqncias, de diferentes
tamanhos, em diferentes testes.
G Derive testes de maneira que o primeiro, o
mdio e o ltimo elemento da seqncia sejam
acessados.
G Teste com seqncias de comprimento zero.
Slide 18
Rotina de busca - parties de
equivalncia
Vet or El ement o
Val or ni co Est na seqnci a
Val or ni co No est na seqnci a
Mai s que 1 val or Pr i mei r o el ement o est na seqnci a
Mai s que 1 val or l t i mo el ement o est na seqnci a
Mai s que 1 val or El ement o mdi o est na seqnci a
Mai s que 1 val or No est na seqncia


Seqncia de entradas (T) Chave (key) Sadas (Found, L)
17 17 Verdadeiro, 1
17 0 Falso, ??
17, 29, 21, 23 17 Verdadeiro, 1
41, 18, 9, 31, 30, 16, 45 45 Verdadeiro, 7
17, 18, 21, 23, 29, 41, 38 23 Verdadeiro, 4
21, 23, 29, 33, 38 25 Falso, ??
Slide 19
G Algumas vezes chamado testes de caixa
branca.
G Derivao de casos de teste de acordo com a
estrutura do programa. O conhecimento do
programa usado para identificar casos de
testes adicionais.
Exemplo: exercitar todas as declaraes do programa.
Teste Estrutural
Slide 20
Testes caixa branca
Component
code
Test
out puts
Test dat a
Deri ves
Test s
Component
code
Test
out puts
Test dat a
Deri ves
Test s
Dados
de teste
Dados
de teste
Cdigo de
componente
Cdigo de
componente Sadas
do teste
Sadas
do teste
Testa
Deriva
Slide 21
Testes de Caminho
G O objetivo dos testes de caminho garantir que
o conjunto de casos de teste tal que cada
caminho do programa executado no mnimo
uma vez.
G Para o teste de caminho, elabora-se um grafo
de fluxo de programa, onde os ns,
representam os pontos de deciso do
programa, e os arcos representam o fluxo de
controle.
Slide 22
G Modelo em esqueleto de todos os caminhos do
programa.
G Consiste em ns que representam decises e
em ramos que mostram o fluxo de controle.
G construdo atravs do cdigo fonte, onde
substitui-se os comandos por ns ns e desvios
pelos arcos arcos (ou ramos) do grafo.
G Declaraes seqenciais so ignoradas na
construo do grafo de fluxo.
Grafos de fluxo de programa
Slide 23
G Em um comando condicional, cada ramo
mostrado como um caminho separado, e laos
so indicados por uma seta fazendo o loop de
volta para o n de condio do lao.
G Usado como base para calcular o nmero de
caminhos independentes no programa.
G Caminho independente - caminho que
atravessa pelo menos um novo ramo no grafo
de fluxo.
Grafos de fluxo de programa
Slide 24
G O nmero de caminhos independentes no
cdigo igual complexidade complexidade ciclomtica ciclomtica.
G Clculo da Complexidade ciclomtica:
CC = Nmero de ramos - Nmero de ns + 2.
G Complexidade ciclomtica determina o nmero
de casos de teste mnimo para testar
adequadamente todos os caminhos
independentes do programa.
Complexidade Ciclomtica
Busca binria (Java)
class BinSearch {

// Esse um encapsulamento de uma funo de busca
// binria que considera um vetor de objetos ordenados e uma chave
// e retorna um objeto com 2 atributos, chamados
// index o valor do ndice de vetor
// found um booleano que indica se uma chave est ou no no vetor
// A chave ser 1 se o elemento no for encontrado

public static void search ( int key, int [] elemArray, Result r )
{
int bottom = 0 ;
int top = elemArray.length - 1 ;
int mid ;
r.found = false ; r.index = -1 ;
while ( bottom <= top )
{
mid = (top + bottom) / 2 ;
if (elemArray [mid] == key)
{
r.index = mid ;
r.found = true ;
return ;
} // if part
else
{
if (elemArray [mid] < key)
bottom = mid + 1 ;
else
top = mid - 1 ;
}
} //while loop
} // search
} //BinSearch
Grafo de fluxo para Busca
Binria
1
2
3
4
6 5
7
whil e bott om < = top
i f (elemArray [mi d] == key
(i f (elemArray [mi d]< key
8
9
bot tom > t op
Slide 27
G 1, 2, 3, 8, 9
G 1, 2, 3, 4, 6, 7, 2
G 1, 2, 3, 4, 5, 7, 2
G 1, 2, 3, 4, 6, 7, 2, 8, 9
G Casos de teste devem ser projetados para
executar todos esses caminhos.
Exerccio: elaborar um conjunto de dados que execute os caminhos
independentes acima.
Caminhos independentes
Slide 28
G til se usado com cuidado.
G No implica que o programa foi
adequadamente testado - embora todos os
caminhos independentes so executados,
todas as combinaes possveis de caminhos
no so executadas.
Teste de Caminhos
Slide 29
Testes de integrao
G Testes feitos em sistemas completos ou
subsistemas, compostos de componentes
integrados.
G Testes de integrao devem ser desenvolvidos
a partir da especificao do sistema.
G A maior dificuldade a localizao de erros.
G Integrao incremental reduz esse problema.
Slide 30
Testes de integrao incremental
T3
T2
T1
T4
T5
A
B
C
D
T2
T1
T3
T4
A
B
C
T1
T2
T3
A
B
Test s equ ence
1
Test s equ ence
2
Test s equ ence
3
Seqncia
de teste 1
Seqncia
de teste 2
Seqncia
de teste 3
Slide 31
Abordagens para o teste de
integrao
G Teste de integrao top-down
Comea com os componentes de alto nvel de um sistema, e
a integrao se d de cima para baixo em uma hierarquia de
componentes. Componentes individuais em um nvel mais
baixo na hierarquia so representados por stubs.
G Teste de integrao bottom-up
Envolve integrar e testar os mdulos de nvel inferior na
hierarquia e, ento, subir na hierarquia de mdulos, at que o
mdulo final seja testado.
G Na prtica, a maioria das integraes envolve a
combinao dessas estratgias.
Slide 32
Testes de integrao Top-down
Level 2 Le vel 2 Level 2 Level 2
Level 1 Level 1
Test ing
sequence
Le vel 2
stubs
Le vel 3
stubs
. . .
Seqncia
de testes
Stubs do
nvel 2
Stubs do
nvel 3
Slide 33
Testes de integrao bottom-up
Level N Level N Le vel N Level N Level N
Level N1 Level N1 Level N1
Test in g
s equence
Test
dri vers
Test
dri vers
Seqncia
de testes
Drivers
de teste
Drivers
de teste
Slide 34
Vantagens e desvantagens das
abordagens de teste
G Validao da arquitetura
Os testes top-down oferecem maior probabilidade de
descobrir erros na arquitetura de sistema, em um estgio
inicial do processo de desenvolvimento.
G Demonstrao do sistema
Os testes de integrao top-down permite a demonstrao de
um sistema de trabalho limitado em uma fase inicial do
desenvolvimento.
G Implementao de teste
Testes top-down so mais difceis de implementar pois
necessrio a produo de stubs (programas que simulam
nveis inferiores)
G Observao de teste
Problemas com ambas as abordagens. Cdigo extra so
necessrios para poder observar os testes.
Slide 35
G Ocorrem quando mdulos ou subsistemas so
integrados para criar sistemas maiores.
G Objetivo detectar erros devido a erros ou
suposies invlidas sobre interfaces.
G Particularmente importante para o
desenvolvimento orientado a objeto, uma vez
que os objetos so definidos por suas
interfaces
Testes de interface
Slide 36
Testes de Interface
Test
cases
B A
C
Slide 37
Diretrizes para os testes de
interface
G Projete conjunto de testes em que o valor dos
parmetros para os componentes externos esteja nos
limites extremos.
G Sempre teste parmetros ponteiros com ponteiros
nulos.
G Em sistemas de passagem de mensagem, projete
testes que gerem muito mais mensagens que
provvel ocorrer na prtica (teste de estresse) estresse).
G Em um sistemas de memria compartilhada, varie a
ordem na qual os componentes so ativados.
Slide 38
Testes de estresse
G Exercitam o sistema alm de sua carga mxima
de projeto, at o sistema falhe.
G Testa o comportamento de falha do sistema.
importante que a falha no cause a corrupo
de dados ou a perda inesperada de servios do
usurio.
G Particularmente relevantes para sistemas
distribudos, que podem exibir uma degradao
severa quando a rede se torna sobrecarregada.
Slide 39
G Os componentes a serem testados so classes
de objetos que so instanciadas como objetos.
G Diferentes de teste funcional, pois:
Objetos individuais so, muitas vezes, maiores do que
funes isoladas. Abordagens de teste de caixa-branca
devem ser estendidas.
Testadores podem no ter acesso ao cdigo fonte do
componente para anlise, no caso de reuso de objetos
No existe um nvel superior bvio para integrao e teste
top-down.
Testes orientados a objetos
Slide 40
4 Nveis de teste
G Testar as operaes associadas com os
objetos.
G Testar classes de objetos individuais.
G Testar agrupamentos de objetos que cooperam
entre si.
G Testar o sistema orientado a objeto completo.
Slide 41
Testes de classes de objetos
G A cobertura completa de testes deve incluir
Testar todas as operaes associadas com um objeto
Estabelecimento e a interrogao de todos os atributos
associados com o objeto
Exercitar o objeto em todos os estados possveis (simular
todos os eventos que provoquem mudana de estado no
objeto)
G Herana dificulta o projeto de testes de classe
de objetos. Quando uma superclasse fornece
operaes herdadas por subclasses, todas
essas subclasses devem ser testadas com
todas as operaes herdadas.
Slide 42
Integrao de objetos
G Nveis de integrao so menos distintos em
sistemas orientados a objetos.
G Testes de clusters se ocupam com a integrao
e teste de objetos que cooperam entre si.
G Clusters devem ser identificados utilizando-se o
conhecimento de suas operaes e as
caractersticas do sistema implementadas por
esses clusters.
Slide 43
Pontos chave
G mais importante testar as partes do sistema
mais comumente utilizadas do que as partes que
so exercitadas raramente.
GG Partio de equivalncia Partio de equivalncia uma maneira de
derivar casos de teste. Parties so conjuntos
de dados onde o programa deve se comportar
de maneira equivalente.
GG Teste de caixa preta Teste de caixa preta baseado na especificao
do sistema. No precisa analisar o cdigo fonte.
GG Teste estrutural Teste estrutural baseia-se na anlise do
programa para determinar os caminhos a serem
executados e a seleo de casos de teste.
Slide 44
Pontos chave
G Os testes de integrao testes de integrao se concentram no
teste das interaes entre os componentes.
G Os testes de interface testes de interface procuram descobrir
defeitos nas interfaces ou nos mdulos.
G Para testar as classes de objetos testar as classes de objetos, deve-se
testar todas as operaes, atributos e
estados.
G Sistemas orientados objetos devem ser
integrados integrados em torno de clusters clusters de objetos.

Das könnte Ihnen auch gefallen