Вы находитесь на странице: 1из 63

Teste de Sistemas de Software

Alexandre Monteiro

Motivao

Ocorrncia de falhas humanas no processo de desenvolvimento de software considervel Processo de testes indispensvel na garantia de qualidade de software Custos associados s falhas de software justificam um processo de testes cuidadoso e bem planejado
2

Conceitos Bsicos

Falha, Falta e Erro

Falha

Incapacidade do software de realizar a funo requisitada (aspecto externo) Exemplo

Terminao anormal, restrio temporal violada

Falha, Falta e Erro

Falta

Causa de uma falha Exemplo

Cdigo incorreto ou faltando

Falha, Falta e Erro

Erro

Estado intermedirio (instabilidade) Provm de uma falta Pode resultar em falha, se propagado at a sada

Falta, erro e falha

Falta

Erro

Falha

Pode iteragir

Noo de confiabilidade

Algumas faltas escaparo inevitavelmente


Tanto dos testes Quanto da depurao

Falta pode ser mais ou menos perturbadora

Dependendo do que se trate e em qual freqncia ir surgir para o usurio final


8

Noo de confiabilidade

Assim, precisamos de uma referncia para decidir

Quando liberar ou no sistema para uso uma estimativa probabilstica Mede a freqncia com que um software ir executar sem falha

Confiabilidade de software

Em dado ambiente E por determinado perodo de tempo


9

Noo de confiabilidade

Assim, entradas para testes devem se aproximar do ambiente do usurio final

10

Dados e Casos de Teste

Dados de Teste

Entradas selecionadas para testar o software Dados de teste, bem como sadas esperadas de acordo com a especificao (Veredicto) Cenrios especficos de execuo
11

Casos de Teste

Finalidade dos testes

Averiguar se todos os requisitos do sistema foram corretamente implementados Assegurar, na medida do possvel, a qualidade e a corretude do software produzido Reduzir custos de manuteno corretiva e re-trabalho
12

Finalidade dos testes

Assegurar a satisfao do cliente com o produto desenvolvido Identificar casos de teste de elevada probabilidade para revelar erros ainda no descobertos (com quantidade mnima de tempo e esforo) Verificar a correta integrao entre todos os componentes de software
13

Eficcia de Testes

A atividade de teste o processo de executar um programa com a inteno de descobrir um erro Um bom caso de teste aquele que apresenta uma elevada probabilidade de revelar um erro ainda no descoberto Um teste bem sucedido aquele que revela um erro ainda no descoberto
14

Padronizao de Testes

Sistemtico

Documentado Repetvel

Testes aleatrios no so suficientes Testes devem cobrir todos os fluxos possveis do software Testes devem representar situaes de uso reais
Que testes foram feitos, resultados, etc.

Se encontrou ou no erro em determinada situao, deve-se poder repeti-lo


15

Abordagens de teste

Abordagem funcional (caixa preta)

Os testes so gerados a partir de uma anlise dos relacionamentos entre os dados de entrada e sada, com base nos requisitos levantados com os usurios

Especificao (pr e ps-condies)

Geralmente aplicado durante as ltimas etapas do processo de teste


16

Abordagens de teste

Abordagem funcional (caixa preta)

Objetivo

Erros associados a no satisfao da especificao Erros na GUI Erros nas estruturas de dados ou acesso ao banco de dados Problemas de integrao

17

Abordagens de teste

Abordagem estrutural (caixa branca)

Os testes so gerados a partir de uma anlise dos caminhos lgicos possveis de serem executados Conhecimento do funcionamento interno dos componentes do software usado

18

Abordagens de teste

Abordagem estrutural

Objetivo

Garantir que todos os caminhos independentes dentro de um mdulo tenham sido exercitados pelo menos uma vez Realizar todas as decises lgicas para valores falsos e verdadeiros Executar laos dentro dos valores limites Executar as estruturas de dados internas
19

Abordagens de teste

Abordagem estrutural

Programador

Testa o programa em pedaos Encontra quais as partes do programa que j foram testadas Conhece quais partes do programa sero modificadas Verifica os limites internos no cdigo que so invisveis ao testador externo

parte da atividade de codificao

20

Estgios de Teste

Teste de Unidade Teste de Aspectos OO Teste de Integrao Teste de Sistema Teste de Aceitao

21

Estgios de teste

Teste de unidade

Componentes individuais (ex.: mtodos, classes) so testados para assegurar que os mesmos operam de forma correta Teste de Iteradores Teste de Abstraes de Dados Teste de Hierarquia de Tipos
22

Teste de aspectos OO

Estgios de teste

Teste de integrao

A interface entre as unidades integradas testada Os elementos de software integrados com o ambiente operacional (hardware, pessoas, etc.) so testados como um todo

Teste de sistema

23

Estgios de teste

Testes de aceitao (caixa preta) so realizados pelo usurio

Envolve treinamento, documentao e empacotamento Podem ser de duas categorias: Testes alfa

Finalidade demonstrar a conformidade com os requisitos do software

Feitos pelo usurio, geralmente nas instalaes do desenvolvedor, que observa e registra erros e/ou problemas
24

Estgios de teste

Testes de aceitao (caixa preta) so realizados pelo usurio Testes beta

Feitos pelo usurio, geralmente em suas prprias instalaes, sem a superviso do desenvolvedor. Os problemas detectados so ento relatados para o desenvolvedor

25

Tipos de Teste

So definidos em relao aos diversos tipos de requisitos descritos no documento de requisitos Alguns exemplos so:

Teste funcional Teste de recuperao de falhas Teste de segurana Teste de performance Teste de carga
26

Tipos de teste

Teste funcional (regras de negcio)

A funcionalidade geral do sistema em termos de regras de negcio (fluxo de trabalho) testada Condies vlidas e invlidas

27

Tipos de teste

Teste de recuperao de falhas

O software forado a falhar de diversas maneiras para que seja verificado o seu comportamento Bem como a adequao dos procedimentos de recuperao

A recuperao pode ser automtica ou exigir interveno humana

28

Tipos de teste

Teste de segurana e controle de acesso

Teste de integridade de dados

Verifica se todos os mecanismos de proteo de acesso esto funcionando satisfatoriamente Verifica a corretude dos mtodos de acesso base de dados e a garantia das informaes armazenadas
29

Tipos de teste

Teste de performance

Verifica tempo de resposta e processamento (para diferentes configuraes, nmero de usurios, tamanho do BD, etc.) Exemplo

Recuperar conta de usurio em x segundos Servidores e clientes, sistemas operacionais e protocolos utilizados

So necessrios definir

30

Tipos de teste

Teste de volume (carga)


Foca em transaes do BD Verifica se o sistema suporta altos volumes de dados em uma nica transao Verifica o nmero de terminais, modems e bytes de memria que possvel gerenciar
31

Tipos de teste

Teste de estresse

Verifica a funcionalidade do sistema em situaes limite

Pouca memria ou rea em disco, alta competio por recursos compartilhados (ex: vrios acessos/transaes no BD ou rede) Exemplo: pode-se desejar saber se um sistema de

transaes bancrias suporta uma carga de mais de 100 transaes por segundo ou se um sistema operacional pode manipular mais de 200 terminais remotos

32

Tipos de teste

Teste de configurao ou portabilidade

Verifica o funcionamento adequado do sistema em diferentes configuraes de hardware/software O que testar


Compatibilidade do software/hardware Configurao do servidor Tipos de conexes com a Internet Compatibilidade com o browser

33

Tipos de teste

Teste de instalao e desinstalao

Verifica a correta instalao e desinstalao do sistema para diferentes plataformas de hardware/software e opes de instalao O que testar

Compatibilidade do hardware e software Funcionalidade do instalador/desinstalador sob mltiplas opes/condies de instalao GUI do programa instalador/desinstalador

34

Tipos de teste

Teste da GUI (usurio)


Aparncia e comportamento da GUI Navegao Consistncia Aderncia a padres Tempo de aprendizagem Funcionalidade
35

Tipos de teste

Teste de documentao

Verifica se a documentao corresponde informao correta e apropriada:


online escrita help sensvel ao contexto

Teste de ciclo de negcios

Garante que o sistema funciona adequadamente durante um ciclo de atividades relativas ao negcio
36

Teste de regresso

Re-execuo de testes feitos aps uma manuteno corretiva ou evolutiva Em processos de desenvolvimento iterativos, muitos dos artefatos produzidos nas primeiras iteraes so usados em iteraes posteriores
37

Teste de unidade

38

Teste de unidade

Investigar a qualidade de componentes individuais (ex: mtodos, classes) Objetivo:

Testar comportamento (especificao) e estrutura interna (lgica e fluxo de dados)

39

Estratgia para Teste de unidade


Driver

Driver de teste

Mdulo a ser testado

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

programa que executa o mdulo a ser testado usando os dados do caso de teste e verifica o veredicto

Casos de teste

Este ser o propsito de uso do JUnit

Resultados

40

Teste de Caixa Preta

Casos de teste so gerados usando somente a especificao Vantagens:

Procedimento de teste no influenciado pela implementao Resultados dos testes podem ser avaliados por pessoas sem conhecimento da linguagem de programao Robusto em relao a mudanas na implementao (Abordagem XP...)
41

Teste de Caixa Preta

Deve-se analisar a relao entre a pr e a ps-condio Tentar cobrir todas as combinaes lgicas existentes entre essas partes Dada a relao pr => ps, tem-se

pr=true => ps=true pr=false => exceo


42

Seleo de Dados de Teste

H vrias tcnicas para seleo de dados de teste


Particionamento Fronteiras Pares ortogonais Etc.

43

Particionamento
Determinando parties Selecionando representantes

44

Fronteiras

Estatsticas indicam que h uma maior suscetibilidade a erros nas fronteiras de parties (limites dos tipos) Tanto em dados vlidos quanto invlidos

Assim, para x > 0, no bastaria usar qualquer x > 0 (particionamento) Mas sim x = 1 (vlido no limite) e x = 0 (invlido no limite)

45

Fronteiras

A tcnica da seleo de dados pelas fronteiras muito indicada para investigar bom funcionamento de

Arrays Vetores Algoritmos de busca/ordenao Etc.

46

Teste de Caixa Branca

Casos de teste so gerados a partir da implementao No se pode avaliar o grau de cobertura de uma funcionalidade pelo teste de caixa preta A idia gerar dados de teste que permitam exercitar algum critrio em relao ao cdigo (cobertura)
47

Grafo de fluxo de controle


n = bloco de comandos seqenciais aresta ou ramo = transferncia de controle
1 1
bloco seqencial

1 3 2 3

1
2

2 4

... m
n

2 3
while

3
repeat-until

if-then-else

case

seleo

repetio
48

Clculo de xy 1. read x, y; 2. if y < 0 3. then p := 0 - y 4. else p := y; 5. z := 1.0; 6. while p 0 do 7. begin z := z * x; p := p - 1; end; 8. if y < 0 9. then z := 1 / z; 10. write z; end;

Grafo de fluxo de controle: Exemplo


1
y<0

2 5

y0

p0

6
8
y0

7
y<0

10

49

Critrios de cobertura

Tipos

Cobertura Cobertura Cobertura Cobertura

de de de de

instrues decises condies caminhos

50

Cobertura de instrues
1
y<0

2 5

y0

Critrio: cada instruo deve ser executada pelo menos 1 vez ns predicados x, y = 0 dados

4
{1,2,3,5,6,7,6, 8,9,10} x, y < 0 (4, -1) {1,2,4,5,6,8,10} (4, 0)

p0

7
y<0

8
y0

9 10

51

Cobertura de decises
1
y<0

2
5

y0

Critrio: cada ramo deve ser percorrido pelo menos 1 vez

ramos
{(1,2), (2,3), (3,5), (5,6) (6,7), (7,6), (6,8), (8,9), (9,10)} {(1,2), (2,4), (4,5), (5,6),

predicados dados
x, y < 0 x, y = 0 (4, -1)

p0

6 8
y0

7
y<0

(4, 0)

(6,7), (7,6), (6,8), (8, 10)}

9 10

52

Cobertura de decises
c
1. if a >= 0 and a <= 200 2. then m := 1 3. else m := 3 4. Dep. em a...
ramos {(1,2), (2,4)} {(1,3), (3,4)} dados a=5 a = -5
53

c
2

c
3

Cobertura de decises/condies
c
1. if a >= 0 and a <= 200 2. then m := 1 3. else m := 3 4. Dep. em a...
ramos {(1,1A), (1A, 2), (2,4)} {(1,1A), (1A,3), (3,4)} {(1,3), (3,4)} dados a=5 a = 500 a = -5

a0 a 200

1
a<0 a > 200

1A

2 4

Critrio: todas as condies devem ser avaliadas para valores V/F em cada (sub)deciso
54

Aproximao do Fluxo Completo


j = k; for(int i=1; i<=100; i++) if(Tests.pred(i*j)) j++;
Quem so os casos de testes para o fragmento de cdigo acima?

55

Aproximao do Fluxo Completo

Laos com iteraes fixas

Considerar 2 iteraes e situaes de terminao do lao

Laos com iteraes variveis

Considerar 0, 1 e 2 iteraes, bem como casos de terminao Considerar situaes onde no haver chamada recursiva e com apenas 1 chamada
56

Recurso

Iterao Fixa
j = k; for(int i=1; i<=100; i++) if(i==j) break; else if(Tests.pred(i*j)) j++;

1 i 2 e (j=1 ou j=2)

57

Iterao Varivel
while( x<y || x>z ) { ... }

1. x < y || x > z
(1 e 2 iteraes) 2. x y && x z

Condies de terminao
58

Recurso
static int fat(int i) { int res; if(i==0) res = 1; else res = i * fat( i 1 ); return res; }

1. i = 0 2. i = 1
59

Teste de Abstraes de Dados

Testar os mtodos de maneira conjugada Testes devem explorar propriedades esperadas para a composio de mtodos Seqncias de testes devem ser originadas tanto pelo teste de caixa preta quanto o de caixa branca
60

Exemplo

Suponha uma classe com mtodos inserir, remover, consultar, etc. Ento, seqncias como:

consultar(x) -> inserir(x) -> remover(x) inserir(x) -> inserir(x) inserir(x) -> consultar(x) remover(x) -> consultar(x)
61

Automao de Testes Integrada

Testar essencial como referencial de qualidade Falhas humanas so comuns Realizar todos os testes, associados a artefatos modificados, imprescindvel

62

Bibliografia

Liskov, B. et al. Program Development in Java (Cap. 10) Sommerville, I. Software Engineering (Cap. 20)

63

Вам также может понравиться