Teste de Software
Parte 2
Ricardo de Almeida Falbo
Tópicos Especiais – Qualidade de Software
2008/2
Departamento de Informática
Universidade Federal do Espírito Santo
Agenda



Processo de Teste
Planejamento de Teste
Teste Orientado a Objetos
Tópicos Especiais - Qualidade de Software 2008/2
2
Processo de Teste

Independentemente da fase de teste, o processo
de teste inclui as seguintes atividades:






Planejamento de Teste
Análise de Requisitos de Teste (normalmente realizado
em conjunto com o Planejamento de Teste)
Projeto de Casos de Teste
Implementação de Casos de Teste
Execução
Análise
Tópicos Especiais - Qualidade de Software 2008/2
3
Planejamento de Teste

Questões importantes:





Quem deve realizar os testes?
O que testar? Que partes devem ser mais
cuidadosamente testadas? (Análise de Requisitos de
Teste)
Quanto teste é adequado?
Quando testar?
Como o teste deve ser realizado?
Tópicos Especiais - Qualidade de Software 2008/2
4
Quem deve realizar os testes?
Desenvolvedores
Compartilhamento de
Responsabilidades entre
Desenvolvedores e
Testadores Independentes
Tópicos Especiais - Qualidade de Software 2008/2
Testadores
Independentes
5
Quem deve realizar os testes?

Desenvolvedor:



Código é resultado de seu trabalho. Logo, procurar
defeitos é, de certo modo, a destruição do mesmo, e o
próprio desenvolvedor não tem motivação psicológica
para projetar casos de teste que demonstrem que seu
produto tem defeitos (dissonância cognitiva).
Dificilmente o desenvolvedor consegue criar um caso de
teste que rompa com a lógica de funcionamento de seu
próprio código (Koscianski e Soares, 2006).
Testador Independente:



Assume a “perspectiva de teste”.
Pode representar papéis distintos (testador de unidade,
de integração e de sistema).
Se responsável por todos os testes, em todas as fases,
pode tornar o processo lento e pouco produtivo.
Tópicos Especiais - Qualidade de Software 2008/2
6
Quem deve realizar os testes?

Compartilhamento de Responsabilidades:

Divisão por Fases:



Desenvolvedores testam unidades, muitas vezes em
paralelo com a implementação das mesmas.
Testadores independentes testam integração e sistema.
Divisão por Atividades do Processo de Teste:


Testadores independentes são responsáveis pelo
Planejamento, Análise e Projeto de Casos de Teste
Desenvolvedores são responsáveis pela construção e
execução dos casos de teste.
Tópicos Especiais - Qualidade de Software 2008/2
7
O que testar?
Não testar nada
Testar parcialmente
Tópicos Especiais - Qualidade de Software 2008/2
Testar tudo
8
O que testar?




Princípio de Pareto adaptado ao teste: 20% dos
componentes de software concentram 80% dos
defeitos.
Esse princípio sugere que os esforços devem ser
concentrados nas partes mais importantes e/ou
frágeis.
Um bom teste é ao mesmo tempo econômico e
encontra o máximo de defeitos (Koscianski e
Soares, 2006).
Análise de Requisitos de Teste: Quais as partes
mais importantes? Quais as mais frágeis? Enfim,
que partes devem ser mais cuidadosamente
testadas?
Tópicos Especiais - Qualidade de Software 2008/2
9
O que testar?



Exemplo - Teste de Unidade: testar todas as
unidades? Testar unidades reutilizadas de outros
projetos?
Utilizar uma abordagem sistemática para
selecionar o subconjunto de componentes a ser
testado.
Algumas diretrizes (McGregor e Sykes, 2001):



Pode não ser necessário testar unidades reutilizadas de
outros projetos ou de bibliotecas.
Algumas unidades não são fáceis de serem testadas
individualmente, requerendo drivers e/ou stubs
complexos.
Concentrar esforços em usos prováveis.
Tópicos Especiais - Qualidade de Software 2008/2
10
Quanto teste é adequado?
Nenhum teste
Teste Exaustivo
Tópicos Especiais - Qualidade de Software 2008/2
11
Quanto teste é adequado?



É impossível testar tudo.
Testes podem somente mostrar a presença de
erros, mas não a sua ausência.
Cobertura de Teste pode ser medida pelo menos
de duas maneiras (McGregor e Sykes, 2001):


Em relação a requisitos: quanto dos requisitos
especificados foi testado? Considerar requisitos
funcionais (casos de uso, fluxos de eventos) e não
funcionais.
Em relação à execução de linhas de código (teste de
caminhos possíveis).
Tópicos Especiais - Qualidade de Software 2008/2
12
Quanto teste é adequado?


O esforço de teste deve ser compensatório, ou
seja, deve haver um balanceamento entre
tempo/custo do teste e a quantidade de defeitos
encontrados.
O número de defeitos encontrados segue uma
curva logarítmica, ou seja, embora ainda possam
existir defeitos, o esforço para encontrá-los
passa a ser muito grande, fazendo com que a
atividade de teste comece a ser percebida como
muito custosa (Koscianski e Soares, 2006).
Tópicos Especiais - Qualidade de Software 2008/2
13
Quando testar?
Todo dia
Na medida em que os
componentes são
desenvolvidos
Tópicos Especiais - Qualidade de Software 2008/2
Testar no
final
14
Quando testar?




Teste como uma atividade do processo de
software (testar no final) x Teste como um
processo paralelo ao processo de
desenvolvimento (teste todo dia)
Revisões e testes são atividades
complementares.
Planejar, analisar e projetar testes à medida que
o processo de desenvolvimento progride.
Utilizar informações do ciclo de vida
(incrementos) e dos requisitos (casos de uso)
para definir o cronograma de testes.
Tópicos Especiais - Qualidade de Software 2008/2
15
Quando testar?

Cronograma de teste



Teste de Unidade: depende da produção das unidades
pelo processo de desenvolvimento.
Teste de Integração: depende do ciclo de vida
(incrementos / iterações) e da estrutura (subsistemas /
casos de uso). Pode ser programado em intervalos
específicos.
Teste de Sistema: sua execução deve ocorrer nas
entregas e, portanto, depende do ciclo de vida.
Tópicos Especiais - Qualidade de Software 2008/2
16
Como testar?
Apenas com o
conhecimento
da implementação
(como)
Apenas com o
conhecimento
da especificação
(o quê)
Usando o
conhecimento
da especificação
e da implementação
(o quê e como)
Tópicos Especiais - Qualidade de Software 2008/2
17
Como testar?

Definir técnicas de teste para cada fase
(funcional, estrutural, baseado em modelos,
baseado em defeitos).
Tópicos Especiais - Qualidade de Software 2008/2
18
Estimativas e Riscos


Como qualquer atividade de planejamento,
planejar testes envolve a gerência de riscos e a
realização de estimativas de esforço, recursos
(pessoas, equipamentos, software), tempo e
custo.
Fatores que afetam as estimativas / riscos:





Software sendo testado: tipo de software, plataforma
de implementação etc.
Equipamentos e software requeridos para o teste
Modelo organizacional (testadores x desenvolvedores)
Nível de Cobertura.
Usar dados históricos.
Tópicos Especiais - Qualidade de Software 2008/2
19
Plano de Testes



Como qualquer atividade de planejamento, um
plano de testes deve ser elaborado, descrevendo
o escopo, o processo de teste definido, os
recursos alocados, estimativas, cronograma e
riscos.
Característica específica: deve ser organizado
em função dos itens e funcionalidades a serem
testados.
Exemplo de Modelo de Plano de Teste: Padrão
IEEE 829-1998.
Tópicos Especiais - Qualidade de Software 2008/2
20
Padrão IEEE 829-1998






Identificador único para o plano de testes.
Introdução
Itens: identifica os itens a serem testado,
incluindo versão
Funcionalidades: identifica as funcionalidades
que serão testadas ou não, bem como os
motivos
Processo: especifica as principais atividades,
técnicas e ferramentas
Critérios de aceite: especifica os critérios de
aceite para cada item
Tópicos Especiais - Qualidade de Software 2008/2
21
Padrão IEEE 829-1998





Suspensão: especifica os critérios para
suspender parte ou todo o processo de teste
Produtos: identifica os artefatos produzidos pelo
processo de teste (planos, casos de teste,
relatórios etc)
Tarefas: detalhamento e dependência entre as
atividades
Ambiente: identifica as necessidades do
ambiente de teste (hardware e software)
Responsabilidades: identifica os responsáveis
pelas atividades, pelo ambiente de teste e pelos
itens de teste
Tópicos Especiais - Qualidade de Software 2008/2
22
Padrão IEEE 829-1998




Treinamento: especifica as necessidades de
treinamento e identifica opções
Cronograma
Riscos: plano de riscos
Aprovações: especifica os nomes e cargos dos
responsáveis por aprovar o plano. Devem ser
inclusos espaços para assinaturas e datas.
Tópicos Especiais - Qualidade de Software 2008/2
23
Teste Orientado a Objetos


Embora o paradigma OO possa reduzir a
ocorrência de alguns tipos de defeitos cometidos
no paradigma procedimental, ele aumenta a
chance de ocorrência de outros.
De fato, as características da orientação a
objetos, dentre elas Encapsulamento, Herança,
Classes Abstratas e Genéricas, Polimorfismo,
Containeres Heterogêneos e Conversão de Tipos,
introduzem novas fontes de defeitos (Delamaro
et al., 2007).
Tópicos Especiais - Qualidade de Software 2008/2
24
Encapsulamento


Refere-se ao mecanismo de controle de acesso a
atributos e métodos de uma classe.
Não contribui diretamente para a ocorrência de
defeitos (muito pelo contrário), mas dificulta a
obtenção e atualização do estado de um objeto,
podendo dificultar os testes (Delamaro et al.,
2007).
Tópicos Especiais - Qualidade de Software 2008/2
25
Herança





Classes podem ser definidas em função de
classes já existentes, criando-se uma hierarquia
de classes.
Enfraquece o encapsulamento.
É possível que subclasses violem condições
requeridas para o correto funcionamento de
classes ancestrais.
Grandes hierarquias podem dificultar a
compreensão e reduzir a testabilidade de
classes.
Herança múltipla: problemas de métodos
sobrecarregados e herança repetida (Delamaro
et al., 2007).
Tópicos Especiais - Qualidade de Software 2008/2
26
Classes Abstratas e Genéricas




Classe Abstrata: fornece um conjunto
incompleto de funcionalidades, sendo que pelo
menos uma delas não possui implementação.
O teste de uma classe abstrata só pode ser
realizado após esta ter sido especializada e uma
classe concreta ter sido obtida.
Classe Genérica: permite que sejam declarados
atributos e parâmetros que podem ser
instanciados com objetos de tipos específicos.
Classes genéricas precisam ter o parâmetro
genérico substituído por um parâmetro de um
tipo específico para serem testadas (Delamaro et
al., 2007).
Tópicos Especiais - Qualidade de Software 2008/2
27
Polimorfismo




É caracterizado pela possibilidade de um único nome, dito
nome polimórfico (uma variável ou uma referência), denotar
objetos de diferentes classes, que devem possuir uma
superclasse comum.
Cada possibilidade de acoplamento de uma mensagem
polimórfica é uma computação única.
Um bom conjunto de teste deveria garantir que todos os
possíveis acoplamentos polimórficos sejam exercitados ao
menos uma vez.
Uma vez que a hierarquia de classes é livremente
extensível, é impossível desenvolver um conjunto de teste
que garanta a execução do acoplamento em relação a todas
as possíveis classes (Delamaro et al., 2007).
Tópicos Especiais - Qualidade de Software 2008/2
28
Containeres Heterogêneos e Conversão
de Tipos



Containeres heterogêneos são estruturas de
dados que armazenam objetos que podem
pertencer a várias classes diferentes.
Contudo, alguns dos objetos armazenados
podem não ter o mesmo conjunto de operações
daquelas pertencentes à superclasse raiz de uma
hierarquia.
Para permitir que tais objetos façam uso de
todos os seus métodos, é possível fazer a
conversão (casting) do objeto para qualquer
classes na hierarquia (Delamaro et al., 2007).
Tópicos Especiais - Qualidade de Software 2008/2
29
Containeres Heterogêneos e Conversão
de Tipos


Um objeto pode ser convertido para uma classe
à qual não pertence, sendo incapaz, portanto, de
invocar um determinado método.
Um objeto não convertido para o tipo de sua
classe pode estar sendo usado para invocar um
método da mesma (Delamaro et al., 2007).
Tópicos Especiais - Qualidade de Software 2008/2
30
Fases de Teste





Teste de Unidade
Teste de Integração
Teste de Sistema
Software OO é composto de classes que
encapsulam uma série de métodos que
cooperam entre si na implementação de uma
funcionalidade.
O que muda em relação às fases de teste?
Tópicos Especiais - Qualidade de Software 2008/2
31
Tipos de Teste OO

Teste intramétodo:



Testa um método individualmente.
A classe à qual pertence o método é o driver.
Teste intermétodo:


Testa os métodos de uma classe com a finalidade de
descobrir defeitos de integração entre métodos dentro
do escopo da classe em teste.
Testa métodos públicos em conjunto com outros
métodos dentro da mesma classe, com o intuito de
descobrir defeitos nas interfaces de comunicação entre
os métodos (Delamaro et al., 2007).
Tópicos Especiais - Qualidade de Software 2008/2
32
Tipos de Teste OO

Teste intraclasse:



Testa interações entre métodos públicos de uma classe,
fazendo-se chamadas a esses métodos em diferentes
seqüências.
O objetivo é identificar seqüências de ativação de
métodos inválidas que levem o objeto a um estado
inconsistente.
Teste interclasse:

idem anterior, mas os métodos públicos não necessitam
estar na mesma classe (Delamaro et al., 2007).
Tópicos Especiais - Qualidade de Software 2008/2
33
Visões das Fases de Teste na Orientação a
Objetos




Método como a menor unidade a ser testada.
Teste de Unidade: Teste intramétodo.
Teste de Integração: Teste intermétodo, Teste
intraclasse e Teste interclasse.
Teste de Sistema: toda a aplicação (Delamaro et
al., 2007).
Tópicos Especiais - Qualidade de Software 2008/2
34
Visões das Fases de Teste na Orientação a
Objetos

Teste de Unidade:


Teste de Integração:





Método
Classe
Componente
Caso de Uso
Subsistema
Teste de Sistema

Toda aplicação
Tópicos Especiais - Qualidade de Software 2008/2
35
Visões das Fases de Teste na Orientação a
Objetos




Classe como a menor unidade a ser testada.
Teste de Unidade: Teste intramétodo, Teste
intermétodo e Teste intraclasse.
Teste de Integração: Teste interclasse.
Teste de Sistema: toda a aplicação (Delamaro et
al., 2007).
Tópicos Especiais - Qualidade de Software 2008/2
36
Visões das Fases de Teste na Orientação a
Objetos

Teste de Unidade:


Teste de Integração:




Classe
Componente
Caso de Uso
Subsistema
Teste de Sistema

Toda aplicação
Tópicos Especiais - Qualidade de Software 2008/2
37
Fases de Teste OO




Teste de Unidade: testa os métodos
individualmente (teste intramétodo).
Teste de Classe: testa a interação entre métodos
de uma classe (testes intermétodo e
intraclasse).
Teste de Integração: testa a interação entre
classes do sistema (teste interclasse).
Teste de Sistema: testa a funcionalidade do
sistema como um todo.
Tópicos Especiais - Qualidade de Software 2008/2
38
Referências



Delamaro, M.E., Maldonado, J.C., Jino, M.,
Introdução ao Teste de Software, Série Campus
– SBC, Editora Campus, 2007.
Koscianski, A., Soares, M.S., Qualidade de
Software, Editora Novatec, 2006.
McGregor, J.D., Sykes, D.A., A Practical Guide to
Testing Object-Oriented Software, AddisonWesley, 2001.
Tópicos Especiais - Qualidade de Software 2008/2
39
Download

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