Engenharia de Software II Aula 10 http://www.ic.uff.br/~bianca/engsoft2/ Aula 10-24/05/2006 1
Ementa Processos de desenvolvimento de software Estratégias e técnicas de teste de software (Caps. 13 e 14 do Pressman) Métricas para software Gestão de projetos de software: conceitos, métricas, estimativas, cronogramação, gestão de risco, gestão de qualidade e gestão de modificações Reengenharia e engenharia reversa Aula 10-24/05/2006 2
Testes Caixa-Preta e Caixa-Branca Testes Caixa-Preta São conduzidos na interface do software, sem preocupação com a estrutura lógica interna do software. Testes Caixa-Branca São baseados em um exame rigoroso do detalhe procedimental. Caminhos lógicos e colaborações entre componentes são testadas. Entrada Entrada Software Software Saída Saída Aula 10-24/05/2006 3
Teste Caixa Preta Também chamado de teste comportamental. Focaliza os requisitos funcionais do software. É complementar ao teste caixa branca. Deve ser aplicado durante os últimos estágios de teste. Ignora de propósito a estrutura de controle para focalizar o domínio da informação. Aula 10-24/05/2006 4
Projeto de Teste Caixa Preta Deve responder às seguintes perguntas: Como a validade funcional é testada? Como o comportamento e o desempenho do sistema são testados? Que classes de entrada vão constituir bons casos de teste? O sistema é particularmente sensível a certos valores de entrada? Como são isolados os limites de uma classe de dados? Que taxas e volumes de dados o sistema pode tolerar? Que efeito as combinações específicas de dados vão ter na operação do sistema? Aula 10-24/05/2006 5
Tipos de Teste Caixa Preta 1. Teste baseado em grafos 2. Particionamento de equivalência 3. Análise de valor-limite 4. Teste de matriz ortogonal Aula 10-24/05/2006 6
Métodos de Teste Baseados em Grafos O primeiro passo no teste é entender os objetos que estão modelados no software e as relações entre eles. Para isso, o engenheiro cria um grafo onde cada nó representa um objeto e cada aresta representa uma relação entre os objetos. Depois disso, uma série de testes é criada para cobrir o grafo de modo que cada objeto e cada relação seja exercitada. Aula 10-24/05/2006 7
Exemplo Arquivo Novo Relação Direcional Seleção menu gera (tempo de geração < 1,0 segundos) Janela de Documento Atributos: -Dimensões iniciais -Cor de fundo -Cor de texto É representado como Relação Bi-direcional Possibilita a edição de Texto de Documento Contém Relação Paralela Aula 10-24/05/2006 8
Tipos de modelagem usando grafos Modelagem de fluxo de transação Nós representam passos em alguma transação. Arestas representam as conexões lógicas entre os passos. Modelagem de estado finito Nós representam diferentes estados do software observáveis pelo usuário. Arestas representam transições de um estado para outro. Modelagem de fluxo de dados Nós representam os objetos de dados. Arestas representam as transformações que ocorrem para traduzir um objeto em outro. Eg: FTW = 0,62 x GW Modelagem de tempo Nós representam objetos do programa. Arestas representam ligações seqüenciais entre esses objetos. Pesos são usados para especificar os tempos de execução. Aula 10-24/05/2006 9
Tipos de Teste Caixa Preta 1. Teste baseado em grafos 2. Particionamento de equivalência 3. Análise de valor-limite 4. Teste de matriz ortogonal Aula 10-24/05/2006 10
Particionamento de Equivalência Busca definir casos de teste que descobrem classes de erros, reduzindo o número total de casos de teste. Divide o domínio de entrada de um programa em classes de dados. Uma classe de equivalência representa um conjunto de estados válidos ou inválidos para a entrada. Aula 10-24/05/2006 11
Diretrizes para Classes de Equivalência 1. Se uma condição de entrada especifica inválida 1 válida inválida 2 um intervalo: Uma classe de equivalência válida e duas inválidas são definidas. 2. Se uma condição de entrada exige um valor específico: inválida 1 válida inválida 2 Uma classe de equivalência válida e duas inválidas são definidas. Aula 10-24/05/2006 12
Diretrizes para Classes de Equivalência 3. Se uma condição de entrada especifica o membro de um conjunto: válida inválida Uma classe de equivalência válida e uma inválida são definidas. 4. Se uma condição de entrada é booleana: Uma classe de equivalência válida e uma inválida são definidas. Aula 10-24/05/2006 13
Tipos de Teste Caixa Preta 1. Teste baseado em grafos 2. Particionamento de equivalência 3. Análise de valor-limite 4. Teste de matriz ortogonal Aula 10-24/05/2006 14
Análise de Valor-limite (BVA) Há uma tendência de ocorrência de erros nas fronteiras do domínio de entrada. Por esse motivo, foram desenvolvidas as técnicas BVA (boundary-value analysis). Em vez de selecionar qualquer elemento de uma classe de equivalência, a BVA leva a escolha de casos de testes nas bordas da classe. Aula 10-24/05/2006 15
Diretrizes para BVA 1. Se uma condição de entrada especifica um intervalo: a b Casos de teste com o valores a e b, e imediatamente acima e abaixo são planejados. 2. Se uma condição de entrada especifica vários valores: Casos de teste devem ser desenvolvidos para exercitar o mínimo e o máximo. Valores imediatamente acima e abaixo também devem ser testados. Aula 10-24/05/2006 16
Diretrizes para BVA 3. Aplique as diretrizes 1 e 2 às condições de saída. Exemplo: a saída de um programa é uma tabela de dados. Casos de teste devem ser criados para gerar tabelas com o mínimo e o máximo de linhas e colunas. 4. Se as estruturas de dados internas do programa têm limites definidos, testes devem ser projetados para exercitar os limites internos. Aula 10-24/05/2006 17
Tipos de Teste Caixa Preta 1. Teste baseado em grafos 2. Particionamento de equivalência 3. Análise de valor-limite 4. Teste de matriz ortogonal Aula 10-24/05/2006 18
Teste de Matriz Ortogonal Se o domínio de entrada é limitado, é possível realizar testes exaustivos de todos as combinações de valores de entrada. Exemplo: três parâmetros que assumem três valores discretos cada um (3 3 3 = 27 casos de teste). Para domínios de entrada muito grandes, uma abordagem comum é variar um parâmetro de cada vez. Não detecta interações entre parâmetros O teste de matriz ortogonal é um meio termo, aplicável a problemas com domínio de entrada relativamente pequeno, mas grande demais para testes exaustivos. Aula 10-24/05/2006 19
Exemplo Três itens de entrada: X, Y, Z com três valores cada. Z Z Z Y Y Y X Teste Singular X Matriz Ortogonal X Teste Exaustivo Aula 10-24/05/2006 20
Propriedades da Matriz Ortogonal Casos de teste ficam espalhados uniformemente pelo domínio de teste. Detecta e isola todas as falhas de modo singular. Pela análise da informação sobre quais testes revelam erros, pode-se identificar quais valores de parâmetro causam a falha. Detecta todas as falhas de modo duplo. Falhas multi-modo podem ou não ser detectadas. Aula 10-24/05/2006 21
Métodos de Teste Orientados a Objetos Métodos de teste caixa branca e caixa preta são aplicáveis, mas surgem algumas complicações: O encapsulamento torna difícil o acesso ao estado do objeto. Torna-se necessário criar métodos para relatar os valores dos atributos da classe. A herança múltipla aumenta o número de contextos para os quais o teste é necessário. Se a subclasse é usada um contexto diferente da superclasse, um novo conjunto de testes para a superclasse precisa ser projetado. Mesmo os métodos que não foram redefinidos tem que ser testados. Aula 10-24/05/2006 22