Upload
internet
View
102
Download
1
Embed Size (px)
Citation preview
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Engenharia de Software
Testes de Software
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Motivação
• Existe grande possibilidade de injeção de falhas humanas no processo de desenvolvimento de software
• Os custos associados às falhas de software justificam um processo de testes cuidadoso e bem planejado
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Motivação
• U$59.500.000.000,00 foi o custo das falhas em software nos EUA, apenas em 2002.
• U$22.200.000.000,00 em economia, caso a infra-estrutura para testes fosse melhor
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Motivação
• Mars Climate Orbiter• Objetivo
– Enviar sinais a partir de Marte, após seu pouso no planeta
• Desastre– Chocou-se com o planeta
• Motivo– Bug no software responsável pela conversão de medidas
• Prejuízo– 165 milhões de dólares
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Motivação
• Airbus Airbus 320• Desastre
– USS Vicennes derrubou um Airbus 320 em 1988
• Motivo– Bug no software no software de reconhecimento
confundindo o avião com um F14
• Prejuízo– 290 mortes
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Motivação
• Máquina de Terapia Radiotiva• Desastre
– Overdose em pacientes sob tratamento
• Motivo– Inabilidade em gerenciar certas condições de disputa
• Prejuízo– Morte de 2 pessoas– 6 outras lesionadas
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Motivação
• London Ambulance Service• Desastre
– Serviço auxiliado por computador falhou nos dias 26 e 27 de novembro de 1992, gerando várias falhas, como o envio de 2 ambulâncias para o mesmo destino, envio de uma ambulância para um local estando outras mais próximas, etc
• Motivo– Tudo indica que o problema estava relacionado a alta carga
de emergências durante o período.
• Prejuízo– 20 mortes
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Motivação
• Airbus A300 China Air Lines• Desastre
– Avião caiu em 1994
• Motivo– Foi feita uma investigação e, dentre as recomendações,
aconselharam mudanças nos softwares de controle
• Prejuízo– 264 mortes
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Motivação
• Se a indústria automobilística tivesse se desenvolvido como a indústria do software, nós teríamos carros por U$25, fazendo 5000 milhas com um galão de combustível.
• Porém, esse carro iria “quebrar” duas vezes por dia, sem um motivo aparente, e quando você solicitasse assistência junto às concessionárias eles iriam dizer para você reinstalar o motor.
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Finalidade dos Testes
• Verificar se todos os requisitos do sistema foram corretamente implementados
• Assegurar, na medida do possível, a qualidade e a corretude do software produzido
• Reduzir custos de manutenção corretiva e retrabalho
• Assegurar a satisfação do cliente com o produto desenvolvido
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Finalidade dos Testes
• Produzir casos de teste que têm elevada probabilidade de revelar um erro ainda não descoberto com uma quantidade mínima de tempo e esforço
• Comparar o resultado dos testes com os resultados esperados a fim de produzir uma indicação da qualidade e da confiabilidade do software
• Verificar a correta integração entre todos os componentes de software
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Defeitos, Erros e Falhas
• Defeito: deficiência mecânica ou algorítmica que, se ativada, pode levar a uma falha
• Erro: item de informação ou estado de execução inconsistente
• Falha: evento notável em que o sistema viola suas especificações
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Defeitos no Software
• A maior parte é de origem humana
• São gerados na comunicação e na transformação de informações
• Continuam presentes nos diversos produtos de software produzidos e liberados
• A maioria encontra-se em partes do código raramente executadas
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Defeitos no Software
• Quanto antes a presença do defeito for revelada, menor o custo de correção do defeito e maior a probabilidade de corrigi-lo corretamente
• Principal causa: tradução incorreta de informações
• Solução: introduzir atividades de VV&T ao longo de todo o ciclo de desenvolvimento
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Definição de Teste de Software
Processo de executar um programa com o objetivo de revelar a presença de defeitos; ou, falhando nesse objetivo, aumentar a
confiança sobre o programa.
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Teste de Software
• Objetivo: revelar a presença de erros• Inexistência de erro:
– Software é de alta qualidade?– Conjunto de casos de teste T é de baixa qualidade?
• Defeitos e erros não revelados– Falhas se manifestam durante a utilização pelos
usuários– Erros devem ser corrigidos durante a manutenção– Alto custo
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Testes de Software
• Caso de teste– Especificação de uma entrada para o programa e a
correspondente saída esperada– Entrada: conjunto de dados necessários para uma– execução do programa– Saída esperada: resultado de uma execução do
programa (oráculo)– Um bom caso de teste tem alta probabilidade de
revelar um erro ainda não descoberto
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Processo de Teste
• Objetivo– Criar testes para revelar a presença de erros.
• Define– Como os testes serão planejados e executados através de
atividades e passos, e quando serão executados.
• O teste pode ser visto como “destrutivo” ao invés do desenvolvimento que é “construtivo”
• O “engenheiro de testes” tenta elaborar casos de teste que têm a intenção de “demolir” o software (descobrir erros)
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Processo de Teste
• Quando bem planejado e controlado– Exige menor esforço e tem maior eficácia.
• Objetos testados– Módulos de código– Estrutura de dados– ...
• É impossível provar a ausência total de erros
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Processo de Teste - Atividades
• planejamento dos testes– requisitos a serem testados e priorização– estratégias de testes– cronograma, esforço e recursos exigidos
• projeto dos testes– casos e procedimentos de testes
• implementação dos testes– scripts e componentes de teste
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Processo de Testes - Atividades
• execução dos testes– manual e/ou automática
• avaliação dos testes– cobertura– tendência dos defeitos– critérios de sucesso
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Processo de Testes
Design testcases
Prepare testdata
Run programwith test data
Compare resultsto test cases
Testcases
Testdata
Testresults
Testreports
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Processo de Testes• Quando se acaba de testar? Quando parar? Quando podemos
considerar o sistema como testado?
• Nunca termina
• Critérios de parada
– Funcionalidade
– Expectativa do usuário
– Mercado
• Quando o tempo ou o dinheiro acaba
• Técnicas estatísticas
• Comparação com experiências anteriores
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Abordagens de Teste
• Abordagem funcional (“caixa preta”)– Os testes são gerados a partir de uma análise dos
relacionamentos entre os dados de entrada e saída, com base nos requisitos levantados com os usuários.
– É muito aplicado durante as últimas etapas do processo de teste.
– Objetivo• Erros de interface• Erros nas estruturas de dados ou acesso ao banco• Erros de desempenho
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Abordagens de Teste
• Abordagem estrutural (“caixa branca”)– Os testes são gerados a partir de uma análise dos
caminhos lógicos possíveis de serem executados, de modo a conhecer o funcionamento interno dos componentes do software.
– Objetivo• Garantir que todos os caminhos independentes dentro de
um módulo tenham sido exercitados pelo menos uma vez• Realizar todas as decisões lógicas para valores falsos e
verdadeiros• Executar laços dentro dos valores limites• Executar as estruturas de dados internas
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Estágios de Teste
• Teste de unidade– Componentes individuais (ex: classes, métodos) são testados
para assegurar que os mesmos operam de forma correta
• Teste de integração– A interface entre as unidades integradas é testada
• Teste de sistema– Os elementos de software integrados com o ambiente
operacional (hardware, pessoas, etc.) são testados como um todo
• Teste de aceitação (homologação)– O software é testado pelo usuário final– Envolve treinamento, documentação e empacotamento
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Teste de Unidade
• Testar cada método de cada uma das classes
• Teste realizado, em geral, pelo próprio programador
• Pode ser automatizado (ex: JUnit)
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Conceitos
• Driver – programa principal, que aceita dados do caso de teste, passa estes dados para o módulo a ser testado e visualiza os dados relevantes.
• Stubs – módulos que substituem outros módulos subordinados. Utiliza a interface do módulo subordinado, manipula os dados e retorna um resultado esperado.
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Teste de Integração
• A integração dos módulos pode ser feitas através das abordagens top-down e bottom-up:
• Top-down – Os módulos são integrados de cima para baixo. O teste usa driver e stubs. O driver é utilizado como módulo de controle principal, e os módulos reais são substituídos por stubs.
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Teste de Integração
• Bottom-up – a integração é feita a partir do nível mais básico da hierarquia. Os stubs nem sempre são necessários.– Os módulos do nível inferior são combinados. – Para cada combinação é criado um driver que
coordena a entrada e a saída dos casos de teste.– O módulo é testado.– O driver é substituído pela combinação de módulos
correspondente, que passam a interagir com os módulos do nível superior.
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Teste de Sistema
• Verifica se a aplicação está funcionando como um todo
• A integração dos componentes de software com o ambiente operacional similar ao de produção (hardware, software, pessoas e outros sistemas) é testada
• Geralmente é um teste “caixa-preta”, executado por um testador de sistemas (idealmente membro de um grupo independente de testes)
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Teste de Aceitação
• Testes de “caixa preta”, realizados pelo usuário a fim de demonstrar a conformidade com os requisitos do software
• Envolve treinamento, documentação e empacotamento• Podem ser de duas categorias:
– Testes alfa: feitos pelo usuário, geralmente nas instalações do desenvolvedor, que observa e registra erros e/ou problemas
– Testes beta: feitos pelo usuário, geralmente em suas próprias instalações, sem a supervisão do desenvolvedor. Os problemas detectados são então relatados para o desenvolvedor
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Tipos de Teste
• Teste funcional (regras de negócio)– A funcionalidade geral do sistema em termos de
regras de negócio (fluxo de trabalho) é testada– Condições válidas e inválidas
• Teste de recuperação de falhas– O software é forçado a falhar de diversas maneiras
para que seja verificado o seu comportamento, bem como a adequação dos procedimentos de recuperação. A recuperação pode ser automática ou exigir intervenção humana
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Tipos de Teste
• Teste de segurança e controle de acesso– Verifica se todos os mecanismos de proteção
de acesso estão funcionando satisfatoriamente
• Teste de integridade de dados– Verifica a corretude dos métodos de acesso à
base de dados e a garantia das informações armazenadas
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Tipos de Teste
• Teste de performance– Tempo de resposta e processamento (para diferentes
configurações, número de usuários, tamanho do BD, etc.)
– Exemplo• Recuperar uma conta do usuário em x segundos• Processar a transação y em x segundos
– São necessários definir• Os servidores e clientes• Sistemas operacionais, servidores de aplicação• Protocolos utilizados
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Tipos de Teste
• Teste de volume (carga)– Foca em transações do BD– Verifica se o sistema suporta altos volumes
de dados uma única transação– Verifica o número de terminais, modems e
bytes de memória que é possível gerenciar
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Tipos de Teste
• Teste de estresse– Verifica a funcionalidade do sistema em situações
limite– Pouca memória ou área em disco, alta competição
por recursos compartilhados (ex: vários acessos/transações no BD ou rede)
– Exemplo: pode-se desejar saber se um sistema de transações bancárias suporta uma carga de 100 transações por segundo ou se um sistema operacional pode manipular 200 terminais remotos
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Tipos de Teste
• Teste de configuração ou portabilidade– Verifica o funcionamento adequado do
sistema em diferentes configurações de hardware/software
– O que testar• Compatibilidade do software/hardware• Configuração do servidor• Tipos de conexões com a Internet• Compatibilidade com o browser
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Tipos de Teste
• Teste de instalação e desinstalação– Verifica a correta instalação e desinstalação
do sistema para diferentes plataformas de hardware/software e opções de instalação
– O que testar• Compatibilidade do hardware e software• A funcionalidade do instalador/desinstalador sob
múltiplas opções e condições de instalação• A interface do programa instalador/desinstalador
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Tipos de Teste
• Teste de interfaces com o usuário– Aparência e comportamento da interface– Navegação– Consistência– Aderência a padrões– Tempo para aprender como usar o programa– Funcionalidade– Algo que a aplicação é esperada fazer, mas é difícil
de ser realizado, complicado ou impossível
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Tipos de Teste
• Teste de documentação– Verifica se a documentação corresponde à
informação correta e apropriada:• online• escrita• help sensível ao contexto
• Teste de ciclo de negócios– Garante que o sistema funciona adequadamente
durante um ciclo de atividades relativas ao negócio
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Tipos de Teste
• Testes de Regressão– Re-execução de testes feitos após uma
manutenção corretiva ou evolutiva.– Em processos de desenvolvimento iterativos,
muitos dos artefatos produzidos nas primeiras iterações, como casos e procedimentos de teste, são usados em iterações posteriores nos testes de regressão.