Anda di halaman 1dari 38

Tcnicas de Testes de Software

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

Defeitos ! Objetivos da Atividade de Testes Tcnicas de Teste


Funcional (Caixa-Preta) Estrutural (Caixa-Branca)

Defeitos no Processo de Desenvolvimento


A maior parte de origem humana So gerados na comunicao e na transformao de informaes A maioria encontram-se em partes do cdigo raramente executadas Quanto antes a presena do defeito for revelada, menor o custo de correo do defeito e maior a probabilidade de corrigi-lo corretamente Principal causa: traduo incorreta de informaes Soluo: introduzir atividades de V&V ao longo de todo o ciclo de desenvolvimento
3

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?

Projeto de Casos de Teste


Projeto de teste pode ser to difcil quanto o projeto do prprio produto a ser testado Poucos programadores/analistas gostam de teste; menos ainda de projeto de casos de teste Tcnicas de Projeto de Casos de Teste
Maneira sistemtica e planejada para conduzir os testes ( Critrios de Teste ) Conjunto de Casos de Teste T caractersticas desejveis:
i ) deve ser finito ii) o custo de aplicao deve ser razovel
10

Projeto de Casos de Teste


Critrio de Teste C
Objetivo:
... obter, de maneira sistemtica um conjunto T de casos de teste efetivo quanto meta principal de teste - revelar a presena de erros no programa

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

Estrutural ou Teste Caixa Branca


baseada numa implementao em particular

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

Fonte: Engenharia de Software, I. Sommerville, 8a edio

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

Anlise do Valor Limite


Descrio:
complementa o Particionamento de Equivalncia coloca sua ateno em uma fonte propcia a erros os limites de uma classe ou partio de equivalncia
Partio de Equivalncia

Limites

18

Exemplo Teste Funcional

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:

Grafo de fluxo; Caminho Independente; Complexidade ciclomtica.

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

incio leia nro raiz = raiz-quadrada(nro) escreva raiz fim

Programa com um caminho

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

Programa com dois caminhos


26

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

Programa com blocos marcados Grafo de fluxo de controle

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

Teste do Caminho Bsico


Descrio: - Este critrio fornece uma maneira de determinar um conjunto bsico de caminhos linearmente independentes, de modo que executando-os garante-se a execuo de todos os comandos ao menos uma vez - Um caminho linearmente independente aquele que contm ao menos um novo n Etapas: a) construir o grafo do programa; b) Determinar a complexidade ciclomtica V(G) do grafo de fluxo resultante. c) Determinar o conjunto-base de caminhos linearmente independentes. d) Preparar os casos de teste do conjunto-base para execuo.

32

Teste do Caminho Bsico - Ex


a) construir o grafo do programa; public class MDC { public static int between(int x, int y) { 1 1 int mdc; 2 while (x != y) { 3 if (x > y) { 2 4 x -= y; 5 } else { y -= x; } 3 6 } mdc = x; return mdc; 4 5 } }

33

Teste do Caminho Bsico - Ex


b) Determinar a complexidade ciclomtica V(G) do grafo de fluxo resultante V(G) = E N + 2; E = 7 e N = 6 V(G) = 7 6 + 2= 3 Regioes = 4 Comandos Condiciionais + 1 = 3 c) Determinar o conjunto-base de caminhos linearmente independentes. Caminho 1: (1, 2, 6) Caminho 2: (1, 2, 3, 4, 2, ...) Caminho 3: (1, 2, 3, 5, 2, ) d) Preparar os casos de teste do conjunto-base para execuo.

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

Adaptao do 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

http://www.wthreex.com/rup/process/modguide/md_tstcs.htm#Deriving%20Test%20Cases%20from %20Use%20Cases. Testes Baseados em casos de Uso RUP

www.junit.org - JUNIT

38

Anda mungkin juga menyukai