A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Geração automática de testes de caixa branca

Apresentações semelhantes


Apresentação em tema: "Geração automática de testes de caixa branca"— Transcrição da apresentação:

1 Geração automática de testes de caixa branca
Geração automática de testes de caixa branca com restrições Dezembro 2006 Theme created by Sakari Koivunen and Henrik Omma Released under the LGPL license. Alunos: João Eiras André Lamego Testes e Qualidade do Software Faculdade de Engenharia da Universidade do Porto

2 Introdução Apresentação da metodologia proposta por Jon Edvardsson

3 Testes de caixa branca Características
Percorrer todos os caminhos possíveis - tem-se que conhecer o código à priori. Bifurcações de fluxo com condições e ciclos Problemas Tarefa morosa com fonte grandes. Descida recursiva com invocação de outras funções ou métodos.

4 Base teórica Conceito Um programa P é considerado uma função P(S)
S é conjunto de entradas, e R o de saídas, respecticamente o domínio e o contradóminio. Os elementos de S são vectores (d1,d2,...) que correspondem às variaveis de entrada. Objectivo Construir um subconjunto de S que execute todos os caminhos dentro de P, em uma ou várias execuções.

5 Base teórica Construir um grafo dirigido
Um programa P é representado por um grafo dirigido G=(N,E,s,e) N são os nós e correspondem a blocos de instruções E são as arestas e correspondem às condições s é o nó de entrada e são os nós de saída Objectivo Percorrer todas as arestas Uma aresta só pode ser percorrida quando a condição associada é verdade

6 Exemplo Consideremos o seguinte código
int tipoTriangulo(int ladoA, int ladoB, int ladoC) { int tipo = ISOSCELES; if( ladoA == ladoB ) if( ladoB == ladoC ) tipo = EQUILATERO; else if( ladoB != ladoC ) tipo = ESCALENO; return tipo; }

7 Geração de dados de teste
Achar o conjunto mínimo de caminhos que percorre todo o grafo. Escrever os caminhos em função das variáveis de entrada. Ex:

8 Geração de dados de teste
Execução estática Substituição de variáveis por expressões, que acumulam ao fim de um bloco de execução Obtém-se uma expressão resultante em função das variáveis de entrada Transformar o conjunto de expressões num sistema de inequações Tarefa cara, requer que expressões tenham que ser transformadas Problema quando a execução entra em funções da qual se desconhece o código fonte

9 Geração de dados de teste
Execução dinâmica Executar código com valores aleatórios. Monitorizar o caminho percorrido, e fazer backtracking em caso de direcção indesejada. Complexidade de caminhos e número de tentativas pode ser elevado.

10 Geração de dados de teste
Execução aleatória Geração aleatória não geralmente não cobre todas as possibilidades void xpto(int a, int b){ if( a == b+345 ) foo(); else bar(); }

11 Selecção de caminhos Escolha de caminhos
Cobertura de caminhos – executar todas instruções no código Cobertura de condições– executar todas as condições e subcondições com valor de verdadeiro e falso.

12 Problemas Arrays e apontadores
Diferentes variaveis podem indexar as mesmas posições de um array A[i]= 2; A[i]=0; A[i]=A[i]+1; if(A[x] == 3) { … }

13 Problemas Objectos Hereditariedade, interfaces, classes abstractas, polimorfismo. Ciclos Ciclos que dependem das variáveis de entrada são problemáticos Modularização Código fonte de outras funções localizado algures, ou não disponível.

14 Problemas Caminhos não executáveis
Caminhos que não podem ser percorridos poderão originar ciclos infinitos aquando a resolução. Restrições As funções a ser testadas podem ter limitações de domínio, incluindo as que são chamadas internamente. Problemas parcialmente contornável com execução dinâmica.

15 Considerações finais Problema complexo, abordado por vários indivíduos e grupos Métodos de arrefecimento controlado e algoritmo genéticos revelaram-se promissores Implementações utilizáveis não existentes. Projecto MUTT (MSIL Unit Testing Tools)


Carregar ppt "Geração automática de testes de caixa branca"

Apresentações semelhantes


Anúncios Google