Ciência da Computação
ENGENHARIA DE SOFTWARE
Teste de Software
Prof. Claudinei Dias
email: [email protected]
Engenharia de Software
2011-2
Introdução
• Teste é um conjunto de atividades que pode ser
planejado antecipadamente e realizado
sistematicamente.
• É possível definir um “template” (esqueleto), ou
seja um conjunto de passos ao qual é possível
alocar técnicas de projeto de casos de teste e
estratégias de teste específicos.
Engenharia de Software
2011-2
2/31
Fluxo de informações de teste
Configuração
de Software
Resultados
de Teste
Atividades de
Teste
Configuração
de Teste
•
Avaliação
Depuração
Dados
da Taxa
de Erros
Resultados
Esperados
Modelo de
Confiabilidade
O processo de depuração é a parte
mais imprevisível do processo de
teste. Um erro que indique uma
discrepância de 0,01% entre
resultados esperados e reais pode
demorar uma hora, um dia ou um
mês para ser diagnosticado e
corrigido.
Engenharia de Software
Erros
2011-2
Confiabilidade
Prevista
3/31
Técnicas de Teste de Software
• Conhecendo-se a função específica que um produto
projetado deve executar, testes podem ser realizados
para demonstrar que cada função é totalmente
operacional (teste de caixa preta - “black box”)
• Conhecendo-se o funcionamento interno de um
produto, testes podem ser realizados para garantir que
“todas as engrenagens”, ou seja, que a operação
interna de um produto tem um desempenho de acordo
com as especificações e que os componentes internos
foram adequadamente postos à prova (teste de caixa
branca - “white box”)
Engenharia de Software
2011-2
4/31
Teste de Caixa Preta
• Teste de caixa preta refere-se aos
testes realizados nas interfaces do SW
(a entrada é adequadamente aceita e a
saída é corretamente produzida com a
integridade das informações externas
mantida).
Engenharia de Software
2011-2
5/31
Teste de Caixa Branca
 Teste de caixa branca baseia-se num minucioso exame
dos detalhes procedimentais, através da definição de
todos os caminhos lógicos possíveis.
 Infelizmente estes testes apresentam problemas
logísticos, uma vez que o número destes possíveis
caminhos lógicos pode ser muito grande, o que levaria a
um tempo infinito.
 Entretanto este tipo de teste não pode ser desprezado
como pouco prático, podendo-se optar por um número
limitado de opções
Engenharia de Software
2011-2
6/31
Teste de caminho básico
• É uma técnica de teste de caixa branca que possibilita
que o projetista do caso de teste derive uma medida de
complexidade lógica de um projeto procedimental e use
essa medida como guia para definir um conjunto básico
de caminhos de execução.
Notação de grafo de fluxo:
– notação simples para representação do fluxo de controle, que
descreve o fluxo lógico:
Seqüência
while
if
Engenharia de Software
2011-2
case
7/31
Visão da Qualidade
• Teste x Verificação x Validação
– Verificação: “Estamos construindo certo o produto?”
– Validação: “Estamos construindo o produto certo?”
• Teste x Qualidade
– Qualidade é um conceito mais amplo
– Teste gera informação sobre qualidade do produto
Engenharia de Software
2011-2
8/31
Estratégias de Teste de Software
Engenharia de sistemas
Requisitos
Projeto
Código
S
R
D
C
U
I
•
•
•
•
Estratégia de teste
Teste de unidade
Teste de integração
V
Teste de validação
ST
Teste de sistema
Teste de Unidade
Teste de Integração
Teste de Validação
Teste de Sistema
Engenharia de Software
2011-2
9/31
Testes de Unidade
• Concentra-se no esforço de verificação da
menor unidade de projeto de SW - o módulo.
Baseia-se quase sempre na técnica de caixa
branca (com menor incidência na O.O.) e pode
ser realizado em paralelo para múltiplos
módulos.
Engenharia de Software
2011-2
10/31
Testes de Integração
• O objetivo é, a partir dos módulos testados no
nível de unidade, construir a estrutura de
programa que foi determinada pelo projeto
realizando-se ao mesmo tempo, testes para
descobrir erros associados a interfaces
(entradas e saídas entre módulos devem se
compatibilizar).
Engenharia de Software
2011-2
11/31
Testes de Validação
• São definidas expectativas razoáveis na
Especificação de Requisitos de SW, que
descreve todos os atributos do SW visíveis ao
usuário.
• A validação é bem-sucedida quando o SW
funciona de uma maneira razoavelmente
esperada pelo cliente.
Engenharia de Software
2011-2
12/31
Testes de Sistema
• É uma série de diferentes testes, cujo propósito
primordial é pôr completamente à prova o sistema
baseado em computador.
Engenharia de Software
2011-2
13/31
Teste de Sistema
• Teste de recuperação: é um teste de sistema que força
o SW a falhar de diversas maneiras e verifica se a
recuperação é adequadamente executada.
• Teste de segurança: tenta verificar se todos os
mecanismos de proteção embutidos em um sistema o
protegerão, de fato, de acessos indevidos.
• Teste de estresse: executa o sistema de uma forma que
exige recursos em quantidade. Essencialmente o
analista tenta destruir o programa.
• Teste de desempenho: é idealizado para testar o
desempenho de “runtime” do SW dentro do contexto de
um sistema integrado.
Engenharia de Software
2011-2
14/31
Test-Driven Development (TDD)
• Desenvolvimento guiado pelos testes
– Só escreva código novo se um teste falhar
– Refatore até que o teste funcione
– Alternância: "red/green/refactor" - nunca passe mais de 10
minutos sem que a barra do JUnit fique verde.
• Técnicas
– "Fake It Til You Make It": faça um teste rodar simplesmente
fazendo método retornar constante
– Implementação óbvia: se operações são simples, implementeas e faça que os testes rodem
Engenharia de Software
2011-2
15/31
Plugin JUnit (BlueJ)
Engenharia de Software
2011-2
16/31
Plugin JUnit (Eclipse)
Engenharia de Software
2011-2
17/31
Ferramentas para Testes
 Caso específico: resposta de servidores Web
 Verificar se uma página HTML ou XML contém determinado texto
ou determinado elemento
 Verificar se resposta está de acordo com dados passados na
requisição: testes funcionais tipo "caixa-preta“
 Soluções (extensões do JUnit)
 HttpUnit e ServletUnit:
 permite testar dados de árvore DOM HTML gerada
 JXWeb (combinação do JXUnit com HttpUnit)
 permite especificar os dados de teste em arquivos XML
 arquivos de teste Java são gerados a partir do XML
 XMLUnit
 extensão simples para testar árvores XML
 Onde encontrar: (httpunit|jxunit|xmlunit).sourceforge.net
 Outras: Cactus, JUnitPerf, JUnitEE…
Engenharia de Software
2011-2
18/31
Ferramenta para Testes de Performance
 JUnitPerf (www.clarkware.com)
 Coleção de decoradores para medir performance e escalabilidade em
testes JUnit existentes
 TimedTest
 Executa um teste e mede o tempo transcorrido
 Define um tempo máximo para a execução. Teste falha se execução
durar mais que o tempo estabelecido
 LoadTest
 Executa um teste com uma carga simulada
 Utiliza timers para distribuir as cargas usando distribuições randômicas
 Combinado com TimerTest para medir tempo com carga
 ThreadedTest
 Executa o teste em um thread separado
Engenharia de Software
2011-2
19/31
Processo de Teste de Software na visão do RUP
Engenharia de Software
2011-2
20/31
Planejamento de Testes
• Definição de uma proposta de testes baseada nas
expectativas do Cliente em relação à :
– prazos,
– custos
– qualidade esperada
• Possibilidade de dimensionar a equipe e estabelecer
um esforço de acordo com as necessidades apontadas
pelo Cliente.
Engenharia de Software
2011-2
21/31
Especificação dos Testes
• Identificação dos casos de testes que deverão ser
construídos e/ou modificados em função das mudanças
solicitadas pelo Cliente.
Engenharia de Software
2011-2
22/31
Especificação dos Testes (Categorias)
Engenharia de Software
2011-2
23/31
Modelagem dos Testes
• Identificação de todos os elementos necessários para a
implementação de cada caso de teste especificado:
– modelagem das massas de testes
– definição dos critérios de tratamento de arquivos
(descaracterização e comparação de resultados).
Engenharia de Software
2011-2
24/31
Preparação do Ambiente
• Conjunto de atividades que visa a
disponibilização física de um ambiente de
testes para sofrer a bateria de testes planejadas
nas etapas anteriores de forma contínua e
automatizada (sem intervenção humana).
Engenharia de Software
2011-2
25/31
Execução dos Testes
• Execução e conferência dos testes planejados,
de forma a garantir que o comportamento do
aplicativo permanece em "conformidade" com
os requisitos contratados pelo Cliente.
Engenharia de Software
2011-2
26/31
Análise dos Resultados
• Análise e confirmação dos resultados relatados
durante a fase de execução dos testes.
• Os resultados em "não-conformidade" deverão ser
"confirmados" e "detalhados" para que a Fábrica de
Software realize as correções necessárias.
• Já os em "conformidade" deverão ter seu resultado
"POSITIVO" reconfirmado.
Engenharia de Software
2011-2
27/31
Equipes de Teste
Engenharia de Software
2011-2
28/31
Norma IEEE 829-1998
• A norma IEEE 829-1998 descreve um conjunto
de documentos para as atividades de teste de
um produto de software. Os documentos
cobrem as tarefas de planejamento,
especificação e relato de testes.
Engenharia de Software
2011-2
29/31
Bibliografia
http://msoo.pbworks.com
BIBLIOGRAFIA BÁSICA:
PRESSMAN, R.S. Engenharia de Software. Mc Graw Hill, 5ª Edição 2001.
SOMMERVILLE,I. Engenharia de Software. Addison Wesley, 6ª Edição 2003.
REZENDE,D.A. Engenharia de Software e Sistemas de Informação. Brasport, 2ª edição.
BIBLIOGRAFIA COMPLEMENTAR:
WEBER,K.C. et all. Qualidade e produtividade em Software. Makron Books, 1999.
ROCHA,A.R.C et all; Qualidade de Software. Editora Linarth, 1999.
Anais do SBES - Simpósio Brasileiro de Engenharia de Software.
SEI. SOFTWARE ENGINEERING INSTITUTE. CMMI for Development (CMMI-DEV), Version 1.2, Technical report
CMU/SEI-2006-TR-008. Pittsburgh, PA: Software Engineering Institute, Carnegie Mellon University, 2006.
SOFTEX. MPS.BR - Melhoria de Processo do Software Brasileiro. Guia Geral, versão 1.2. 2007.
ABNT – ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. NBR ISO/IEC 12207 – Tecnologia de informação Processos de ciclo de vida de software. Rio de Janeiro, 1998.
ISO/IEC - The International Organization for Standardization and The International Electrotechnical Commission,
ISO/IEC TR 15504 Software Process Assessment. 1998.
Engenharia de Software
2011-2
30/31
Ciência da Computação
ENGENHARIA DE SOFTWARE
Teste de Software
Prof. Claudinei Dias
email: [email protected]
Engenharia de Software
2011-2
Download

Ciência da Computação ENGENHARIA DE SOFTWARE