Causas de faltas e falhas
de software
• Requisitos errados: não é o que o cliente pretende • Requisitos em falta
• Requisitos impossível de implementar • Desenho com faltas
testes
Objectivo dos testes: encontrar faltas
Um teste diz-se bem sucedido se encontrar alguma falta
Identificação de faltas é o processo de determinação das possíveis faltas que causaram a falha
Correcção de faltas é o processo de modificação do sistema para remover as faltas (depuração)
Tipos de faltas
Algorítmicas Computação e precisão Documentação Overloading Capacidade ou limite Timing ou coordenação Desempenho RecuperaçãoFaltas algoritmicas
• Ocorrem quando o algoritmo de um componente não produz o output adequado
–Poucas/demasiadas alternativas –testa a condição errada
–Não inicializa variáveis ou define os invariantes do ciclo
–Não testa condição particular
organização dos testes
Testes de unidade Testes de integração Testes de funcionalidade Testes de desempenho Testes de aceitaçãoAtitude perante os testes
Egoless programming:
programas são componentes de um grande sistema programas não são propriedade de quem os escreve
Quem executa os testes?
Equipa de testes independente evita conflitos
melhora a objectividade
Estratégias de teste
Caixa fechada (closed box ou black box): testes feitos à funcionalidade dos objectos, ignorando a sua estrutura interna
Caixa aberta (clear box ou white box): testes feitos tendo em conta a estrutura interna dos objectos
Nem sempre é possível testar todas as possibilidades
factores que influenciam a escolha
da estratégia de testes
Número de possibilidades Natureza dos dados
Quantidade de computação envolvida Complexidade dos algoritmos
Testes de unidade
Revisão do códigowalkthrough Inspecção
Prova da correcção do código Métodos formais
Execução simbólica
escolha dos casos de teste
• Determinar os objectivos do teste• Seleccionar os casos de teste • Definir um teste
profundidade dos testes
Instrução (statement): toda a instrução é executada pelo menos uma vezAlternativa (branch): para cada ponto de decisão, toda a alternativa é executada pelo menos uma vez
Caminho (path): todos os possíveis caminhos distintos de instruções são executados pelo menos uma vez
Testes de integração
• Bottom-up • Top-down • Big-bang • ...
Testes de integração
Terminologia
• Component Driver: rotina que chama determinado componente e passa-lhe um caso de teste
• Stub: programa especial para simular a actividade de um componente que ainda não foi testado
Testes de integração
Exemplo de um sistemaTestes de integração
Integração bottom-Up
Testes de integração
Integração Top-Down
Testes de integração
Integração Big-Bang
Componentes testados isoladamente e depois integrados de uma só vez Necessita de stubs e de drivers para testar os componentescomparação de estratégias de
integração
Bottom-up
Top-down
Modified
top-down Big-bang Sandwich
Modified sandwich
Integration Early Early Early Late Early Early
Time to basic working
program Late Early Early Late Early Early
Component drivers
needed Yes No Yes Yes Yes Yes
Stubs needed No Yes Yes Yes Yes Yes
Work parallelism at
beginning Medium Low Medium High Medium High
Ability to test particular
paths Easy Hard Easy Easy Medium Easy
Ability to plan and
Testes ao sistema
Testes de funcionalidade: verificam se o sistema faz o que foi especificado nos requisitos funcionais
Testes de desempenho: verificam os requisitos não funcionais
Testes de aceitação: verificam se o sistema funciona de acordo com as espectativas do cliente
Testes de instalação: verificam se o sistema funciona correctamente no seu ambiente de instalação
Testes de funcionalidade
Comparam a execução do sistema com os requisitos Casos de teste são desenvolvidos baseados no
testes de desempenho
Examinamos cálculos
a velocidade de resposta a precisão do resultado a acessibilidade aos dados
Tipos de testes de desempenho
•
Carga
•
Volume
•
Configuração
•
Compatibilidade
•
Operacionais
•
Segurança
•
Timing
•
Ambientais
•
Qualidade
•
Recuperação
•
Manutenção
•
Documentação
•
Usabilidade
testes de aceitação
• Servem para os clientes e utilizadores verificarem se o sistema satisfaz os objectivos e as expectativas
• Concebidos, geridos e realizados pelos clientes/ utilizadores
tipos de testes de aceitação
• Benchmark: cliente prepara conjunto de casos de testeque representam situações típicas de utilização
• Piloto: sistema instalado numa base experimental para ser utilizado diariamente (sem casos de teste)
• Alfa: realizado no local onde foi desenvolvido • Beta: realizado no local do cliente
• Paralelo : novo sistema é executado em paralelo com o antigo
testes de instalação
Podem não ser necessários, caso os testes de aceitação tenham sido realizados no local de funcionamento do sistema
Antes de testar
Configurar o sistema
Ligar todos os dispositivos
Estabelecer as comunicações com os outros sistemas Testar operacionalidade: verificar se o sistema foi bem
Planeamento de testes
• Estabelecer os objectivos do teste• Desenhar os casos de teste • Escrever os casos de teste • Testar os casos de teste • Executar os testes
documentação de testes
Plano: descrição do sistema e plano para exercitartodas as funções e características
Especificação e avaliação: detalhes de cada testes
e critérios de avaliação
Descrição: dados de teste e procedimentos para cada
teste
Exemplo
Test Requirement 2.4.1: Generate and Maintain Database Requirement 2.4.2: Selectively Retrieve Data Requirement 2.4.3: Produced Specialized Reports 1. Add new record X2. Add field X
3. Change field X 4. Delete record X 5. Delete field X
6. Create index X
Retrieve record with a requested
7. Cell number X
8. Water height X
9. Canopy height X
10. Ground cover X
Exemplo descrição de teste
INPUT DATA:
Input data are to be provided by the LIST program. The program generates randomly a list of N words of alphanumeric characters; each word is of length M. The program is invoked by calling
RUN LIST(N,M)
in your test driver. The output is placed in global data area LISTBUF. The test datasets to be used for this test are as follows:
Case 1: Use LIST with N=5, M=5 Case 2: Use LIST with N=10, M=5 Case 3: Use LIST with N=15, M=5 Case 4: Use LIST with N=50, M=10 Case 5: Use LIST with N=100, M=10 Case 6: Use LIST with N=150, M=10 INPUT COMMANDS:
The SORT routine is invoked by using the command RUN SORT (INBUF,OUTBUF) or
RUN SORT (INBUF) OUTPUT DATA:
If two parameters are used, the sorted list is placed in OUTBUF. Otherwise, it is placed in INBUF. SYSTEM MESSAGES:
During the sorting process, the following message is displayed: “Sorting ... please wait ...”
Upon completion, SORT displays the following message on the screen: “Sorting completed”
Relatório de testes
Documentam o resultado dos testes
Fornece informação necessária para duplicar a falha e localizar e corrigir as respectivas causas
Fornece informação para se inferir se o projecto está completo
COmo relatar uma falha
• Localização: onde ocorreu?• Timing: quando ocorreu?
• Sintoma: o que foi observado?
• Resultado: quais foram as consequências? • Mecanismo: como ocorreu?
• Causa: porque ocorreu?
Resumo
Faltas versus falhasO objectivo dos testes é encontrar faltas e não provar a correcção
Os testes devem iniciar-se o mais cedo possível Os testes baseiam-se no documento dos requisitos