Material Baseado em
Capitulo 14, Enegenharia de Software Roger Pressman 6 Ed. Capitulo 23, Engenharia de Software, Ian Sommerville, 8 Ed e material de Marcos Roberto Rodrigues rmarcos@unc-ct.rct-sc.br
Agenda
Teste e Depurao
Teste: Processo de executar um programa com o objetivo de revelar a presena de erros; 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
Teste de Software
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 (busca de um contra-exemplo) 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 Atividade essencial para ascenso ao nvel 3 do Modelo CMM/SEI e nvel D do MPS.BR Atividade relevante para avaliao de produtos de software (ISO 9126, ISO 14598-5)
Teste de Software
Defeitos e erros "emboscados" no software e no revelados Falhas a se manifestarem na utilizao pelos usurios e erros corrigidos durante a manuteno.
CUSTOS ALTSSIMOS!
7
Teste de Software
Atividades de Teste
Planejamento Projeto de Casos de Teste Execuo de Casos de Teste Anlise de Resultados
Teste de Software
Inexistncia de erro: Software de alta Qualidade? T de baixa Qualidade?
Projetar em Nvel de Componentes e em nvel de Sistema; Sistematizar o trabalho considerando os artefatos disponveis.
11
Tcnicas de Teste
Funcional (Caixa Preta) - Sistema Estrutural (Caixa Branca) - Componente
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
12
Tcnicas de Teste
Funcional ou Teste Caixa Preta
baseada na especificao do software
13
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 Particionamento de Equivalncia Anlise do Valor Limite
Critrios:
14
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 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
15
Particionamento de equivalncia
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 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
17
Limites
18
Em projetos OO Abordagem baseada em casos de uso; necessrio desenvolver casos de teste para cada cenrio de caso de uso; Uso de tabelas de deciso em que cada linha representa um caso de teste individual, e as colunas identificam informaes de caso de teste. Ver Exemplo
19
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 de programa conhecida como grafo de programa ou grafo de fluxo de controle.
20
Teste Estrutural
Critrios:
Teste do Caminho Bsico Teste de Comandos Teste de Ramos Teste de Condio Teste de Deciso/Condio Teste de Condio Mltipla
21
Teste Estrutural
Conceitos envolvidos:
22
Grafo de Fluxo
consiste de ns conectados por arestas 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
As arestas indicam precedncia, ou transferncia de controle essa representao permite que o programa seja examinado independentemente de sua funo
23
Fluxo
Construes Bsicas do Grafo de Fluxo de Controle
seqncia
if
while
repeat
case
24
Fluxo
Exemplo de Construo do Grafo de Fluxo de Controle
25
Fluxo
Exemplo de Construo do Grafo de Fluxo de Controle
incio 1 leia nro se nro > 0 raiz = raiz-quadrada(nro) escreva raiz seno escreva mensagem de erro fim-se 4 fim
Fluxo
Exemplo de Construo do Grafo de Fluxo de Controle
incio 1 leia nro 2 enquanto nro 0 3 se nro > 0 raiz = raiz-quadrada(nro) escreva raiz seno escreva mensagem de erro fim-se 6 leia nro fim-enqto 7 fim Programa com loop
1
27
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; 4 14 writeln (digite, x, caracteres); 5 15 for i := 1 to x do 16 read (a[ i ]); 6 17 readln; 7 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) 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 3
4 e 5 f h 6 g
7 i 8 j 9 r l 11 n q
15 16
k 10 m 12 13 o p
s 15 u
14
t 16 v
17 w 18
17
28
Caminho Independente
Qualquer caminho ao longo do programa que adiciona pelo menos um novo conjunto de comandos de processamento ou uma nova condio. Em um grafo de fluxo este caminho deve incluir pelo menos uma aresta que no tenha sido percorrida antes de o caminho ser definido.
29
Caminho Independente
Caminho 1: 1-2-3-6-8-9-10-1-11 Caminho 2: 1-2-3-6-7-9-10-1-11
30
Complexidade Ciclomtica
- Indica o nmero de caminhos que pode ser seguido dentro de um trecho de cdigo. - Mtrica de software que proporciona a medida da complexidade lgica de um programa. Trs forma de calcular: a) Conta-se o nmero de todos os comandos condicionais e soma 1; b) Nmero de regies correspondentes complexidade ciclomtica (grafo); c) Frmula V(G) = E N +2 onde E o nmero de arestas e N o nmero de ns (grafo).
31
32
33
34
Automao de teste
Teste uma fase dispendiosa do processo. Os workbenches de teste fornecem uma variedade de ferramentas para reduzir o tempo necessrio e os custos totais de teste. Sistemas tais como o JUnit apiam a execuo automtica de testes. A maioria dos workbenches de teste so sistemas abertos porque as necessidades de teste so especficas da organizao. Eles so, algumas vezes, difceis de integrar com workbenches de projeto e anlise fechados.
Um workbench de testes
Scripts podem ser desenvolvidos para simuladores de interface de usurio e padres para geradores de dados de teste. Sadas de teste podem ser preparadas manualmente para comparao. Comparadores de arquivos para propsitos especficos podem ser desenvolvidos.
Links teis
Sites teis
http://www.alats.org.br/ ALATS http://www.opensourcetesting.org/ OPENSOURCE TESTING http://standards.ieee.org/reading/ieee/std_public/description/se/829-1983_desc.htmlIEEE Standards
www.junit.org - JUNIT
38