Академический Документы
Профессиональный Документы
Культура Документы
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
Erro
Estado intermedirio (instabilidade) Provm de uma falta Pode resultar em falha, se propagado at a sada
Falta
Erro
Falha
Pode iteragir
Noo de confiabilidade
Noo de confiabilidade
Quando liberar ou no sistema para uso uma estimativa probabilstica Mede a freqncia com que um software ir executar sem falha
Confiabilidade de software
Noo de confiabilidade
10
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
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
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.
Abordagens de teste
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
Abordagens de teste
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
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
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
Envolve treinamento, documentao e empacotamento Podem ser de duas categorias: Testes alfa
Feitos pelo usurio, geralmente nas instalaes do desenvolvedor, que observa e registra erros e/ou problemas
24
Estgios de teste
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
A funcionalidade geral do sistema em termos de regras de negcio (fluxo de trabalho) testada Condies vlidas e invlidas
27
Tipos de teste
O software forado a falhar de diversas maneiras para que seja verificado o seu comportamento Bem como a adequao dos procedimentos de recuperao
28
Tipos de teste
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
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
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
Compatibilidade do software/hardware Configurao do servidor Tipos de conexes com a Internet Compatibilidade com o browser
33
Tipos de teste
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
Aparncia e comportamento da GUI Navegao Consistncia Aderncia a padres Tempo de aprendizagem Funcionalidade
35
Tipos de teste
Teste de documentao
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
39
Driver de teste
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
Resultados
40
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
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
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
46
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
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;
2 5
y0
p0
6
8
y0
7
y<0
10
49
Critrios de cobertura
Tipos
de de de de
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
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)
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
55
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
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
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