Teste de Software
Parte 4
Ricardo de Almeida Falbo
Tópicos Especiais – Qualidade de Software
2008/2
Departamento de Informática
Universidade Federal do Espírito Santo
Agenda







Teste
Teste
Teste
Teste
Teste
Teste
Teste
de Integração
de Classe
de Interação
de Componente
de Caso de Uso
Baseado em Máquina de Estados
de Sistema
Tópicos Especiais - Qualidade de Software 2008/2
2
Teste de Integração




Objetivo: verificar se as partes, quando
colocadas para trabalhar juntas, não conduzem a
erros.
Todas as técnicas de teste se aplicam, com
destaque para o teste funcional.
Questão importante: Como agrupar os módulos
para se testar a integração entre eles?
No paradigma procedimental (Pressman, 2006):




Integração não incremental (big-bang)
Integração Ascendente (bottom-up)
Integração Descendente (top-down)
E no paradigma OO?
Tópicos Especiais - Qualidade de Software 2008/2
3
Teste de Integração OO

Níveis de Teste de Integração:


Teste de Classe: testa a interação entre métodos de
uma classe, usando o conjunto de atributos de uma
instância.
Teste de Interação ou Interclasse: testa a colaboração /
interação entre classes. Inicia-se sem prover ainda uma
funcionalidade completa, avançando para a interação
no contexto de um componente ou caso de uso.
Tópicos Especiais - Qualidade de Software 2008/2
4
Teste de Integração OO

Teste de Componente: Quando um componente é
implementado usado a tecnologia de objetos, ele pode
ser visto como um conjunto de classes que provê uma
porção significativa de funcionalidade, acessível por
meio de um conjunto de interfaces especificando os
comportamentos disponíveis.


Perspectiva do desenvolvedor de componente: testa a
colaboração entre classes que compõem um componente,
bem como as suas interfaces contratuais públicas.
Técnicas funcionais e estruturais podem ser aplicadas,
pois o código-fonte está disponível.
Perspectiva do cliente de componente: quando um
componente desenvolvido independentemente é integrado
a uma aplicação, o código pode não estar disponível,
dificultando a atividade de teste. Neste caso, apenas
critérios funcionais são aplicáveis.
Tópicos Especiais - Qualidade de Software 2008/2
5
Teste de Integração OO


Teste de Caso de Uso: testa a colaboração entre classes
no contexto de um caso de uso ou fluxo de eventos de
um caso de uso.
Teste de Subsistema: testa partes de um sistema,
contendo vários componentes e realizando vários casos
de uso.
Tópicos Especiais - Qualidade de Software 2008/2
6
Teste de Classe




Visto como um teste de integração, o teste de
classe visa testar a integração de métodos e
atributos de uma classes.
Aspecto importante a verificar: restrições na
ordem de invocação de suas operações (muitas
vezes implícitas) estão sendo satisfeitas?
Seqüência mínima de teste: aquele que exercita
o histórico de vida comportamental mínimo de
um objeto da classe.
Além da seqüência mínima, há muitas
combinações possíveis de invocação de
operações (Pressman, 2006).
Tópicos Especiais - Qualidade de Software 2008/2
7
Teste de Classe



Seja a seguinte classe Conta.
Qual a seqüência de testes mínima a ser
feita?
Que outros casos de teste são possíveis?
Tópicos Especiais - Qualidade de Software 2008/2
8
Teste de Classe

Seqüência Mínima


abrir – estabelecerLimite – depositar – retirar –
encerrar
Outros casos de teste possíveis: Infinitos...

Seqüências Válidas


abrir – estabelecerLimite – depositar – [obterLimite |
estabelecerLimite | depositar | retirar | obterSaldo |
obterExtrato]n – retirar – encerrar
Seqüências Inválidas






estabelecerLimite – depositar – retirar – encerrar
abrir – depositar – retirar – encerrar
abrir – estabelecerLimite – retirar – encerrar
abrir – estabelecerLimite – depositar – encerrar
abrir – estabelecerLimite – depositar – retirar – encerrar depositar
etc
Tópicos Especiais - Qualidade de Software 2008/2
9
Teste de Classe


Necessidade de reduzir o número de casos de
teste
Teste Aleatório ou Randômico


Casos de teste para diferentes seqüências
(normalmente válidas) de operações são gerados
aleatoriamente.
Teste de Partição no Nível de Classe



Análogo ao critério Particionamento de Equivalência.
Casos de teste são projetados para exercitar cada
categoria (válida ou inválida).
Alguns critérios:



Partição Baseada em Estado
Partição Baseada em Atributo
Partição Baseada em Categoria
Tópicos Especiais - Qualidade de Software 2008/2
10
Partição Baseada em Estado


O termo “estado” neste contexto designa o
estado interno de um objeto dado pelo seu
conjunto de atributos e não apenas os estados
definidos por uma máquina de estados da
classe.
Categoriza as operações em duas grandes
classes:


operações que podem mudar o estado de um objeto da
classe, ou seja, que alteram o valor de atributos da
classe e
operações que não podem mudar o estado de um
objeto da classe.
Tópicos Especiais - Qualidade de Software 2008/2
11
Partição Baseada em Estado



Casos de teste são projetados de modo a
exercitarem separadamente as operações que
mudam o estado e aquelas que não mudam o
estado (Pressman, 2006).
A seqüência mínima de teste é usada como
base.
Introduzem-se operações da partição nessa
seqüência, respeitando a ordem da seqüência
mínima, para gerar casos de teste com
seqüências válidas.
Tópicos Especiais - Qualidade de Software 2008/2
12
Partição Baseada em Estado



Seja a seguinte classe Conta.
Que operações mudam o estado?
Que casos de teste considerar?
Tópicos Especiais - Qualidade de Software 2008/2
13
Partição Baseada em Estado

Operações que mudam o estado:


Operações que não mudam o estado:


obterLimite, obterSaldo, obterExtrato
Seqüência Mínima


estabelecerLimite, depositar, retirar
abrir – estabelecerLimite – depositar – retirar –
encerrar
Partições Válidas:


abrir – estabelecerLimite – depositar –
[estabelecerLimite | depositar | retirar ]n – retirar –
encerrar
abrir – estabelecerLimite – depositar – [obterLimite |
obterSaldo | obterExtrato]n – retirar – encerrar
Tópicos Especiais - Qualidade de Software 2008/2
14
Partição Baseada em Atributo

Categoriza as operações com base nos atributos
que elas usam (Pressman, 2006):



Operações que usam o atributo sem modificá-lo
Operações que modificam o valor do atributo
Operações que não usam o atributo
Tópicos Especiais - Qualidade de Software 2008/2
15
Partição Baseada em Atributo


Seja a seguinte classe Conta.
Que operações usam / modificam / não
usam cada um dos atributos?
Tópicos Especiais - Qualidade de Software 2008/2
16
Partição Baseada em Atributo

Atributo limiteCredito




Atributo saldo




Usam: obterLimite, obterSaldo, obterExtrato, retirar
Modificam: estabelecerLimite
Não usam ou modificam: abrir, depositar, encerrar
Usam: obterSaldo, obterExtrato, encerrar
Modificam: abrir, depositar, retirar
Não usam ou modificam: estabelecerLimite, obterLimite
Casos de Teste: pelo menos um caso de teste
dentro de cada uma das partições.
Tópicos Especiais - Qualidade de Software 2008/2
17
Partição Baseada em Categoria


Categoriza as operações com base na função
genérica que cada uma realiza.
Por exemplo, uma categorização que estende a
partição baseada em estado:




Operações
Operações
classe)
Operações
classe)
Operações
de inicialização
de consulta (que não alteram o estado da
com atribuição (que alteram o estado da
de término
Tópicos Especiais - Qualidade de Software 2008/2
18
Partição Baseada em Categoria

Operações de inicialização:


Operações de consulta:




obterLimite
obterSaldo
obterExtrato
Operações de atribuição:




abrir
estabelecerLimite
depositar
retirar
Operações de término:

encerrar
Tópicos Especiais - Qualidade de Software 2008/2
19
Teste de Classe


Para cada classe, é importante definir se a
mesma deve ser testada de forma separada ou
no contexto de uma parte maior do sistema
(p.ex., componente, caso de uso etc).
Essa definição deve baseada nos seguintes
fatores (McGregor e Sykes, 2001):



Papel da classe no sistema (criticidade) e risco
associado à mesma
Complexidade da classe, medida em termos do número
de estados, operações e associações com outras classes
Esforço associado com o desenvolvimento do driver de
teste da classe.
Tópicos Especiais - Qualidade de Software 2008/2
20
Planejamento de Teste de Classe



Quem deve testar?
Geralmente, classes são testadas pelos próprios
desenvolvedores, sendo que seu plano de teste
pode ser feito por outra pessoa.
Vantagens:




Minimiza o número de pessoas que devem conhecer a
especificação da classe.
Facilita a implementação dos casos de teste, pois o
testador conhece a implementação da classe.
Driver de teste pode ser usado para depuração.
Desvantagens:

Problemas no entendimento da especificação são
propagados para o teste (McGregor e Sykes, 2001).
Tópicos Especiais - Qualidade de Software 2008/2
21
Planejamento de Teste de Classe




O que testar?
Basicamente, deseja-se testar se uma
implementação reflete exatamente sua
especificação e nada além disso.
O esforço para testar se a implementação
contém apenas o que foi especificado pode ser
alto e, portanto, deve ser avaliado em relação ao
risco associado à classe.
Se após a execução de vários de casos de teste,
ainda há código não coberto, é possível que
exista comportamento indesejado na classe
(McGregor e Sykes, 2001).
Tópicos Especiais - Qualidade de Software 2008/2
22
Planejamento de Teste de Classe




Quando testar?
Assim que uma classe está pronta para ser
codificada, seu plano de teste pode ser
elaborado.
O teste de uma classe deve ser executado antes
que a mesma seja usada em outras partes do
software.
Caso a implementação mude, os testes devem
ser executados novamente podendo ser
alterados ou não (quando não alterados, está-se
aplicando teste de regressão) (McGregor e
Sykes, 2001).
Tópicos Especiais - Qualidade de Software 2008/2
23
Planejamento de Teste de Classe



Como testar?
Classes são testadas através de drivers de teste,
construindo o ambiente necessário à execução
dos casos de teste (McGregor e Sykes, 2001).
Uso de ferramentas pode ajudar, aumentando a
produtividade do teste de classe.
Tópicos Especiais - Qualidade de Software 2008/2
24
Planejamento de Teste de Classe



Quanto testar?
Avaliar criticidade e riscos associados à classe
(relação custo-benefício) (McGregor e Sykes,
2001).
Aplicar técnicas de teste de classe para
minimizar o número de casos de teste, mas com
uma boa cobertura.
Tópicos Especiais - Qualidade de Software 2008/2
25
Plano de Teste de Classe









Nome da Classe:
Desenvolvedor:
Testador:
Criticidade:
Seqüência Mínima:
Considerações sobre o Projeto da Suíte de Teste
Casos de Teste (organizados por tipo)
Resultados
Considerações sobre a Cobertura da Suíte de
Teste
Tópicos Especiais - Qualidade de Software 2008/2
26
Teste de Interação ou Interclasse



Uma interação é uma requisição feita por um
objeto (o transmissor) a outro (o receptor) para
executar uma das operações do receptor.
Um programa OO consiste de uma coleção de
objetos que colaboram para resolver um
problema.
Assim, a correta colaboração (ou interação)
entre objetos em um programa OO é crítica para
a correção do programa (McGregor e Sykes,
2001).
Tópicos Especiais - Qualidade de Software 2008/2
27
Formas Típicas de Interação entre Classes





Mensagens passadas a outros objetos.
Uma operação pública que recebe como
parâmetro um ou mais objetos.
Uma operação pública que retorna um objeto.
Objeto que mantém uma referência a outro
como parte de seus atributos (atributo
implementando uma associação).
Um método de uma classe que cria uma
instância de outra classe como parte de sua
implementação (muitas vezes, um objeto
temporário).
Tópicos Especiais - Qualidade de Software 2008/2
28
Teste de Interação

Como testar?




Usando classes de teste
Usando o próprio programa de aplicação (p.ex., caso de
uso + estrutura de acesso ao caso de uso)
Teste funcional é o mais usado, mas observar o
código pode ser importante para definir o que
testar (para identificar quais formas de interação
estão presentes e entre quais classes).
Questão: Como agrupar classes para testar sua
integração?
Tópicos Especiais - Qualidade de Software 2008/2
29
Estratégia de Integração Baseada no Uso



Adaptação para o paradigma OO da estratégia
ascendente de integração.
Começa testando as classes servidoras ou
primitivas, i.e., as classes que não usam outras
classes.
Depois de testar as classes primitivas, testam-se
as classes dependentes (ou não primitivas) que
dependem apenas das classes já testadas e
assim sucessivamente.
Tópicos Especiais - Qualidade de Software 2008/2
30
Teste Baseado no Caminho de Execução



Integra o conjunto de classes necessárias para
responder a uma entrada ou um evento do
sistema.
Cada caminho de execução é testado e integrado
individualmente.
Teste de Componente e Teste de Caso de Uso se
enquadram nesta estratégia.
Tópicos Especiais - Qualidade de Software 2008/2
31
Teste de Interação



Testes de interação baseados apenas nas
especificações de operações públicas são
consideravelmente mais diretos que os baseados
nas implementações das mesmas.
Quando a abordagem baseada no uso é aplicada
integralmente, são necessários apenas testes
baseados nas especificações de operações
públicas.
Quando algumas das classes não são testadas
individualmente, contudo, tais testes podem não
ser suficientes (McGregor e Sykes, 2001).
Tópicos Especiais - Qualidade de Software 2008/2
32
Abordagem de Projeto e Teste

A abordagem de projeto (design) adotada tem
grande influência no projeto de casos de teste.


Ex.: Criação de objetos: teste na interface, aplicação ou
domínio?
É possível classificar as abordagens de projeto
em duas grandes categorias:


Abordagem defensiva: assume que pouca ou nenhuma
checagem de valores de parâmetros vai ocorrer antes
das mensagens serem enviadas para objetos da classe.
Abordagem de projeto por contrato: assume que as
pré-condições são checadas antes que a mensagem
seja enviada e que a mensagem não é enviada se os
parâmetros estão fora dos limites aceitáveis (McGregor
e Sykes, 2001).
Tópicos Especiais - Qualidade de Software 2008/2
33
Abordagem Defensiva de Projeto




Poucas pré-condições estabelecidas.
Necessidade de muitas checagens internas de
violação de restrições sobre atributos.
Muitos resultados possíveis (sobretudo de
exceção).
Necessidade de um maior número de casos de
teste nas classes que recebem mensagens, de
modo a checar valores de entrada que produzem
exceções e, por conseguinte, maior esforço no
teste de classe (McGregor e Sykes, 2001).
Tópicos Especiais - Qualidade de Software 2008/2
34
Abordagem de Projeto por Contrato




Muitas pré-condições estabelecidas.
Pouca ou nenhuma checagem interna de
violação de restrições sobre atributos.
Poucos resultados possíveis (especialmente de
exceção).
Necessidade de um maior número de casos de
teste nas classes que enviam mensagens, de
modo a checar valores de entrada que produzem
exceções e, por conseguinte, maior esforço no
teste de interação (McGregor e Sykes, 2001).
Tópicos Especiais - Qualidade de Software 2008/2
35
Teste de Componente: Perspectiva de
Desenvolvedor de Componentes


Um componente pode ser visto como um
agregado de objetos e, portanto, o teste de
componentes é muito similar ao teste de
interações entre conjuntos de objetos.
Um componente é tipicamente maior do que
uma classe e, por conseguinte, é mais difícil
obter boa cobertura de código usando um
critério funcional baseado na especificação do
componente (McGregor e Sykes, 2001).
Tópicos Especiais - Qualidade de Software 2008/2
36
Teste de Caso de Uso




Testa a interação no contexto da realização de
um caso de uso.
O que testar? Testar as partes mais usadas e
mais críticas com um alcance mais amplo de
entradas do que as partes menos usadas e
menos críticas.
Perfil de uso: classificação dos casos de uso
baseada em uma combinação de freqüência e
criticidade.
Riscos associados ao caso de uso devem ser
levados em conta e estão fortemente
relacionados à criticidade do caso de uso
(McGregor e Sykes, 2001).
Tópicos Especiais - Qualidade de Software 2008/2
37
Exemplo: Ferramenta GeRis
Teste de Caso de Uso – Perfil de Uso
Projeto:
Documento Base:
1
Documento de Especificação de Requisitos – Versão 1.1
Tipo
Freq.
Criti.
Importância
Criar Nova Versão de Plano de Riscos
Curso Normal
Baixa
Alta
Média
Criar Nova Versão de Plano de Riscos
Curso Alternativo
Média
Alta
Alta
Criar Nova Versão de Plano de Riscos
Curso de Exceção
Baixa
Baixa
Baixa
Alterar Versão de Plano de Riscos
Curso Normal
Alta
Alta
Alta
Consultar Versão de Plano de Riscos
Curso Normal
Média
Média
Média
Excluir Versão de Plano de Riscos
Curso Normal
Baixa
Baixa
Baixa
Curso Normal
Média
Alta
Alta
Curso Normal
Média
Alta
Alta
Efetuar Avaliação de Risco: Ação de
mitigação aplicada
Curso Alternativo
Baixa
Baixa
Baixa
Efetuar Avaliação de Risco: Risco ocorreu
Curso Alternativo
Baixa
Média
Média
Efetuar Avaliação de Risco
Curso de Exceção
Baixa
Média
Média
Excluir Avaliação de Risco
Curso Normal
Baixa
Média
Média
Excluir Avaliação de Risco
Curso de Exceção
Baixa
Média
Média
Curso Normal
Média
Alta
Alta
Caso de Uso
Fluxo de Eventos
Controlar Versão de Plano de Riscos
2
Identicar Riscos
3
Avaliar Risco
4
Geris
Definir Riscos Gerenciados
Efetuar Avaliação de Risco
Tópicos Especiais - Qualidade de Software 2008/2
38
Exemplo: Ferramenta GeRis
Teste de Caso de Uso – Perfil de Uso
Projeto:
Documento Base:
Caso de Uso
Geris
Documento de Especificação de Requisitos – Versão 1.1
Fluxo de Eventos
Tipo
Freq.
Criti.
Importância
5
Planejar Ações
Curso Normal
Média
Alta
Alta
6
Finalizar Versão de Plano de Riscos
Curso Normal
Média
Alta
Alta
7
Cadastrar Conseqüência
Criar Nova Conseqüência
Curso Normal
Baixa
Baixa
Baixa
Criar Nova Conseqüência
Curso de Exceção
Baixa
Baixa
Baixa
Alterar Conseqüência
Curso Normal
Baixa
Baixa
Baixa
Alterar Conseqüência
Curso de Exceção
Baixa
Baixa
Baixa
Consultar Conseqüência
Curso Normal
Baixa
Baixa
Baixa
Excluir Conseqüência
Curso Normal
Baixa
Baixa
Baixa
Tópicos Especiais - Qualidade de Software 2008/2
39
Teste de Caso de Uso




Um caso de uso contém um conjunto de fluxos
de eventos, incluindo cursos normais,
alternativos e de exceção.
Cada fluxo de eventos inclui a ação tomada por
um ator e a resposta produzida pelo sistema.
Esses dois elementos correspondem às partes
básicas de um caso de teste de caso de uso.
Para a construção de um caso de teste, valores
específicos de entrada são definidos, assim como
os correspondentes resultados esperados.
Selecionando diferentes valores para um fluxo
de eventos, dá-se origem a diferentes casos de
teste (McGregor e Sykes, 2001).
Tópicos Especiais - Qualidade de Software 2008/2
40
Teste de Caso de Uso


Partições de Equivalência podem ser criadas,
levando-se em consideração fluxos de eventos
normais, alternativos e de exceção.
Para cada caso de uso / fluxo de exceção:




Identificar os valores que devem ser informados pelo
ator.
Identificar partições de equivalência para cada entrada.
Construir tabelas de combinações de valores das várias
partições de equivalência.
Construir casos de teste exercitando essas combinações
(McGregor e Sykes, 2001).
Tópicos Especiais - Qualidade de Software 2008/2
41
Exemplo: Ferramenta GeRis
Teste de Caso de Uso
Projeto:
Documento Base:
Versão:
1
Geris
Documento de Especificação de Requisitos
1.1
Caso de Uso
Fluxo de Eventos
Entradas
Classe de
Equivalência
Válida
Controlar Versão de
Plano de Riscos
Criar Nova Versão de Plano de
Riscos (curso normal)
nome da versão
cadeia de
caracteres, exceto
apenas espaços
Criar Nova Versão de Plano de
Riscos (curso alternativo)
versão base
Classe de
Equivalência
Inválida
Saida Esperada
nova versão criada
cadeia vazia
Erro: nome inválido
cadeia contendo
apenas espaços
Erro: nome inválido
nome já existente
Erro: nome já
existente
versão base
selecionada
Tópicos Especiais - Qualidade de Software 2008/2
nova versão criada
contendo os dados
da versão base
42
Exemplo: Ferramenta GeRis
Caso de
Teste
Entradas
Classe de
Equivalência
Exercitada
Critério Utilizado
Saida Esperada
1.1.a
nome da versão =
"Versão 1"
cadeia de caracteres,
exceto apenas
espaços
Teste Funcional Sistemático:
Valor típico esperado
nova versão criada
1.1.b
nome da versão =
"Versão 1.0"
cadeia de caracteres,
exceto apenas
espaços
Teste Funcional Sistemático:
Valor típico esperado, 2o
elemento
nova versão criada
1.1.c
nome da versão =
<<cadeia vazia>>
cadeia vazia
Teste Funcional Sistemático:
Valor ilegal
Erro: nome inválido
1.1.d
nome da versão = " "
cadeia contendo
apenas espaços
Teste Funcional Sistemático:
Valor ilegal
Erro: nome inválido
1.1.e
nome da versão = 1.0
cadeia de caracteres,
exceto apenas
espaços
Teste Funcional Sistemático:
Entrada válida, mas que
pode ser interpretada como
tipo ilegal
nova versão criada
1.1.f
nome da versão = 1.0
nome já existente
Teste Funcional Sistemático:
Valor ilegal
Erro: nome já
existente
1.1.g
nome da versão = 1.1
versão base
selecionada
Teste Funcional Sistemático:
Valor típico esperado
nova versão criada
contendo os dados
da versão base
nome da versão = 1.2
nome da versão =
1.2
versão base = 1.1
versão base = 1.1
Teste Funcional Sistemático:
Valor típico esperado, 2o
elemento
nova versão criada
contendo os dados
da versão base
versão base = 1.0
1.1.h
Tópicos Especiais - Qualidade de Software 2008/2
Resultado da
Execução do
Teste
43
Exemplo: Ferramenta GeRis
Teste de Caso de Uso
Projeto:
Documento Base:
Versão:
3
Geris
Documento de Especificação de Requisitos
1.1
Caso de Uso
Fluxo de Eventos
Entradas
Classe de
Equivalênc
ia Válida
Avaliar Risco
Efetuar Avaliação de
Risco (curso
normal)
risco a ser
avaliado
risco selecionado
probabilidade (p)
0 <= p <= 100%
impacto (i)
0 <= i <= 10
Classe de
Equivalênci
a Inválida
Saida Esperada
avaliação de risco
criada para o
risco
selecionado
risco a ser
avaliado
nenhum risco
selecionado
probabilidade (p)
p< 0 ou p > 100%
Erro: probabilidade
deve ser um
valor entre 0
e 100%
impacto (i)
i < 0 ou i > 10
Erro: impacto deve
ser um valor
entre 0 e 10
Tópicos Especiais - Qualidade de Software 2008/2
44
Exemplo: Ferramenta GeRis
CasoTeste
Entradas
Classe de Equivalência
Exercitada
Critério Utilizado
Saida Esperada
3.1.a
risco a ser avaliado =
qualquer
risco selecionado
Teste Funcional Sistemático: Valor
típico esperado
probabilidade (p) = 60%
0 <= p <= 100%
avaliação de risco
criada para o
risco
selecionado
impacto (i) = 5
0 <= i <= 10
risco a ser avaliado =
qualquer
risco selecionado
Teste Funcional Sistemático: Valor
típico esperado, 2o elemento
probabilidade (p) = 80%
0 <= p <= 100%
avaliação de risco
criada para o
risco
selecionado
impacto (i) = 3
0 <= i <= 10
3.1.c
risco a ser avaliado =
nenhum
nenhum risco selecionado
Análise de Valor Limite: Condição
de entrada especificando uma
quantidade de valores:
Nenhum valor de entrada
3.1.d
risco a ser avaliado =
quaisquer dois riscos
mais de um risco
selecionado
Análise de Valor Limite: Condição
de entrada especificando uma
quantidade de valores: Qte
máxima + 1
3.1.b
Tópicos Especiais - Qualidade de Software 2008/2
Resultado
45
Exemplo: Ferramenta GeRis
CasoTeste
Entradas
Classe de Equivalência
Exercitada
Critério Utilizado
Saida Esperada
3.1.e
probabilidade (p) = 0
(demais dados válidos)
0 <= p <= 100%
Análise de Valor Limite: Condição
de entrada especificando um
intervalo de valores: Limite inferior
avaliação de risco
criada para o risco
selecionado
3.1.f
probabilidade (p) = 100%
(demais dados válidos)
0 <= p <= 100%
Análise de Valor Limite: Condição
de entrada especificando um
intervalo de valores: Limite superior
avaliação de risco
criada para o risco
selecionado
3.1.g
probabilidade (p) = -0.1%
(demais dados válidos)
p< 0 ou p > 100%
Análise de Valor Limite: Condição
de entrada especificando um
intervalo de valores: Valor menor do
que o limite inferior
Erro: probabilidade
deve ser um valor
entre 0 e 100%
3.1.h
probabilidade (p) = 100,1%
(demais dados válidos)
p< 0 ou p > 100%
Análise de Valor Limite: Condição
de entrada especificando um
intervalo de valores: Valor maior do
que o limite superior
Erro: probabilidade
deve ser um valor
entre 0 e 100%
Tópicos Especiais - Qualidade de Software 2008/2
Resultado
46
Teste Baseado em Máquina de Estados


Uma máquina de estados especifica as
seqüências de estados pelos quais um objeto
passa durante seu tempo de vida em resposta a
eventos, juntamente com as respostas a esses
eventos (Booch et al., 2006).
Pela definição acima, testes baseados em uma
máquina de estados aplicam-se a uma classe e,
portanto, podem ser vistos como um tipo de
teste de classe. Isso é verdade sobretudo
quando um diagrama de estados é elaborado na
fase de projeto, com as transições entre estados
correspondendo a métodos da classe.
Tópicos Especiais - Qualidade de Software 2008/2
47
Teste Baseado em Máquina de Estados


Quando um diagrama de estados da fase de
análise é usado como base para o teste, muitas
vezes, as transições correspondem a fluxos de
eventos de casos de uso. Assim, é necessário
que cada um desses fluxos de eventos tenha
sido testado e integrado.
Nesta visão, um teste baseado em máquina de
estados visa testar a integração de vários casos
de uso, tendo como foco uma classe.
Tópicos Especiais - Qualidade de Software 2008/2
48
Teste Baseado em Máquina de Estados




Usar o diagrama de estados para determinar a
seqüência de eventos a serem exercitados.
Os casos de teste devem cobrir todos os
estados.
Cada uma das transições deve ser exercitada
pelo menos uma vez.
Eventos inválidos devem ser testados para ver
se o sistema refuta a sua ocorrência.
Tópicos Especiais - Qualidade de Software 2008/2
49
Teste de Subsistema


Após testar casos de uso isoladamente ou no
contexto de uma máquina de estados, pode ser
útil, ainda, testar se os vários casos de uso se
comportam adequadamente no contexto de um
subsistema.
Testes de ciclo de vida do domínio: realizar os
processos de negócio (casos de uso) como eles
tipicamente acontecem (McGregor e Sykes,
2001).
Tópicos Especiais - Qualidade de Software 2008/2
50
Teste de Sistema



Teste do sistema completo ou de um incremento
a ser implantado provendo algum grau de
funcionalidades para usuários finais.
O foco dos testes de sistema não é exatamente
procurar defeitos que conduzam a falhas, mas
procurar defeitos que representem variações
entre o que o sistema realmente faz e os
requisitos especificados para ele.
Os tipos de teste nesta fase estão direta ou
indiretamente relacionados a requisitos, tanto
funcionais quanto não funcionais.
Tópicos Especiais - Qualidade de Software 2008/2
51
Teste de Sistema


Os testes de sistema que enfocam requisitos
funcionais são análogos aos testes de
subsistema. Ou seja, visam testar se os vários
casos de uso se comportam adequadamente no
contexto, agora, do sistema (ou do incremento a
ser implantado).
Mas agora é muito importante também que
usuários testem efetivamente o sistema, pois
pode haver problemas na especificação dos
requisitos. Testes dessa natureza são ditos
testes de aceitação.
Tópicos Especiais - Qualidade de Software 2008/2
52
Teste de Sistema



Para testar requisitos funcionais, testes de ciclo
de vida do domínio podem ser aplicados.
A idéia de perfil de uso (teste de caso de uso)
também pode ser aplicada.
Para testar requisitos não funcionais (RNF), é
necessário:



Definir RNFs como atributos mensuráveis.
Projetar casos de teste que detectem a presença ou
ausência desses atributos.
Executar os casos de teste e analisar os resultados.
Tópicos Especiais - Qualidade de Software 2008/2
53
Teste de Sistema

Há diversos tipos de testes de sistemas, focando
alguma particularidade ou tipo de RNF, tais
como:









Teste de Implantação (instalação/remoção do sistema)
Teste de Inicialização
Teste de Configuração de Hardware e Software
Teste de Ambiente (rodar vários programas ao mesmo
tempo, simulando situações típicas do usuário)
Teste de Exceção e Recuperação
Teste de Desempenho
Teste de Segurança
Teste de Estresse
etc
Tópicos Especiais - Qualidade de Software 2008/2
54
Referências




Booch, G., Rumbaugh, J., Jacobson, I., UML Guia
do Usuário, 2a edição, Editora Campus, 2006.
Delamaro, M.E., Maldonado, J.C., Jino, M.,
Introdução ao Teste de Software, Série Campus
– SBC, Editora Campus, 2007.
McGregor, J.D., Sykes, D.A., A Practical Guide to
Testing Object-Oriented Software, AddisonWesley, 2001.
Pressman, R.S., Engenharia de Software. 6a
edição, McGrawHill, 2006.
Tópicos Especiais - Qualidade de Software 2008/2
55
Download

Teste de Software - Informática - Universidade Federal do Espírito