são técnicas empregadas durante o processo de desenvolvimento de um software. visam detectar...

41
Profº Anderson L. Barbosa – Engenharia de Software Teste de software ADS-2sem.

Upload: internet

Post on 18-Apr-2015

107 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

Profº Anderson L. Barbosa – Engenharia de Software

Teste de software

ADS-2sem.

Page 2: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

São técnicas empregadas durante o processo de desenvolvimento de um software.

Visam detectar antecipadamente falhas nos vários artefatos produzidos durante o processo de desenvolvimento.

O que é Teste de Software?

Teste de Software

“O teste consiste em executar o programa com a intenção de encontrar erros (bugs)”.

Myers, 1979.

Page 3: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

Martin PolEm linhas gerais, podemos dizer que o objetivo dos testes é encontrar defeitos: desta forma os testes são conduzidos para demonstrar a ausência de qualidade expressa pela presença de defeitos, para tal se faz necessário um processo (planejamento, especificação, execução, análise de resultados), considerando-se sempre os riscos do negócio e a qualidade do produto. (Visão do processo, projeto, requisito, risco de negócio e a qualidade para o negócio).

Fonte: Software Testing – A Guide to the Tmap Approach – Martin Pol e outros.

O que é Teste de Software?

Teste de Software

Page 4: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

Errar é humano

É preciso garantir que os erros serão eliminados.

Aumentar a qualidade do produto.

Reduzir o custo

Porque testar Software?

Teste de Software

Page 5: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

Aumento de falhas devido a ausência de qualidade;

Aumento dos custos de suporte; Aumento dos custos de

desenvolvimento; Falta de confiabilidade do produto no

mercado; Insatisfação dos clientes e usuários; Perda de mercado;

A falta de testeTeste de Software

Page 6: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

Teste de Especificações de Requisitos;Teste de Modelos de Análise;Teste de Regras de Negócio;Teste de Unidade;Teste de Integração;Teste de Validação;Teste de Sistema;Teste de recuperação;Teste de Segurança;

Teste de estresse;Teste de desempenho;Teste de Interface;Teste de Carga;Teste de Funcionalidade;Teste de Usabilidade;Teste de Portabilidade;Teste de Compatibilidade;Teste de documentos do projeto;Teste de Aceitação.

O que testar?Teste de Software

Page 7: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

Processo do Teste de Software

Teste de Software

Fonte: Java Magazine 102

Page 8: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

Exemplo de Caso de Teste de Software

Teste de Software

Fonte: http://www.ufpi.br/subsiteFiles/pasn/arquivos/files/CursoTesteNovoPDFParte4.pdf

Page 9: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

Defeito: resultado de um erro encontrado no código ou documento;

Erro: engano cometido por seres humanos;

Falha: resultado ou manifestação de um ou mais defeitos.

Exemplo: A aplicação entra em looping infinito, devido a um erro de lógica, ocasionando o travamento da mesma.

Conceitos básicos

Teste de Software

Page 10: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

O custo da correção do defeito

Custo do defeitoTeste de Software

Especificação

Projeto Construção e Teste

Produção

Page 11: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

Recursos HumanosTeste de Software

Fonte: http://testwarequality.blogspot.com.br/p/projeto-de-teste.html

Page 12: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

É uma métrica de software que fornece uma medida quantitativa da complexidade lógica de um programa. Fornece um limite superior para o número de

caminhos independentes em um conjunto-base.

Fornece um limite superior para a quantidade de testes que deve ser conduzida para garantir que todos os comandos sejam executados pelo menos uma vez.

Complexidade Ciclomática

Teste de Software

Page 13: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

Pode ser calculada de três maneiras equivalentes:1. V(G) = R, onde R é o número de regiões

do grafo de fluxo.2. V(G) = E – N + 2,onde E é o número de

arestas e N é o número de nós do grafo G.3. V(G) = P + 1, onde P é o número de nós-

predicados contidos no grafo G ( só funciona se os nós-predicados tiverem no máximo duas arestas saindo)

Cálculo da Complexidade

Ciclomática

Teste de Software

Page 14: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

Exemplo de Complexidade

Ciclomática

Teste de Software

Page 15: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

Complexidade Ciclomática

Teste de Software

Caminhos independentes

Page 16: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

Focaliza na menor unidade de projeto do software: o componente ou módulo.

Pode ser conduzido em paralelo para os diversos componentes.

Caminhos de controle importantes são testados para descobrir erros dentro dos limites do módulo.

Testam unidades lógicas Métodos Objetos

Erros mais fáceis de corrigir Devem ser executados continuamente

Teste de UnidadeTeste de Software

Page 17: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

A partir dos módulos testados ao nível de unidade, construir a estrutura do programa, visa descobrir erros associados as interfaces entre os módulos, focando na arquitetura do software.

ObjetivoTeste de Integração

Page 18: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

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 Ascendente (bottom-up) Integração Descendente (top-down)

Passos do processo de integração

Teste de Integração

Page 19: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

Os módulos são integrados movimentando-se de cima para baixo, através da hierarquia de controle, iniciando-se do módulo de controle principal.

Teste de Caixa-PretaO teste é particularmente útil para revelar problemas, tais como, funções incorretas ou omitidas, erros de interface, erros de comportamento ou desempenho, erros de iniciação e término.

Top-downTeste de Integração

Page 20: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

Na técnica Bottom-up, a integração do sistema começa com a partir do nível mais baixo do software, ou seja, o módulo. O módulo é dito como o mais baixo nível se ele não depende de outro módulo.

Bottom-upTeste de Integração

Page 21: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

Esses testes são projetados em função da estrutura do componente e podem permitir verificação mais precisa de comportamento do produto. Ele permite ao avaliador concentrar a atenção nos pontos mais importantes ou “perigosos” do código, de uma maneira mais precisa do que no caso do teste caixa-preta. Tais pontos podem até ser identificados durante o desenvolvimento e cobertos com o uso de assertivas e testes. Alguns exemplos de testes são: Duplicar informações (por exemplo, tentar cadastrar

duas vezes exatamente os mesmos dados); Imprimir relatórios para bases de dados vazias; Procurar registros inexistentes.

Teste caixa brancaTeste de Integração

Page 22: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

Exemplo de Teste caixa branca

Teste de Integração

Page 23: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

Teste de caixa preta, descobrindo funções incorretas ou ausentes; erros de interface; erros nas estruturas de dados ou no acesso a bancos de dados externos; erros de desempenho, e erros de inicialização e término.

CritériosTeste de Validação

Page 24: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

Duas condições... Corretas ou lista de deficiência.

Dependendo do erro á uma negociação.

CritériosTeste de Validação

Page 25: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

Verificar elementos da configuração.

Revisão de configurações

Teste de Validação

Page 26: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

Teste realizados pelo próprio cliente, podendo ser mal interpretadas.Teste Alfa

Realizado com um usuário junto ao desenvolvedor que registra qualquer problema.

Teste AlfaTeste de Validação

Page 27: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

Realizado em uma ou mais instalações. O próprio usuário registra os problemas. EXEMPLO: Jogos Online (Beta).

Teste BetaTeste de Validação

Page 28: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

É uma fase do processo de teste de software e de hardware em que o sistema já completamente integrado é verificado quanto a seus requisitos num ambiente de produção.

DefiniçãoTeste de Sistema

Page 29: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

O objetivo é executar o sistema sob ponto de vista de seu usuário final, varrendo as funcionalidades em busca de falhas em relação aos objetivos originais.

ObjetivoTeste de Sistema

Page 30: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

É um procedimento que visa identificar as falhas de segurança de um ambiente e aproveitá-las para invadi-lo, obtendo acesso indevido a informações e recursos.

DefiniçãoTeste de Segurança

Page 31: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

Permite avaliar as vulnerabilidades em aplicações e serviços frente a diferentes tipos de ataques de segurança – como Ataques de negação de serviço ou Ataque man-in-the-middle – e descobrir novas vulnerabilidades antes que sejam exploradas por atacantes.

ObjetivoTeste de Segurança

Page 32: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

É um teste realizado para confrontar os programas com situações anormais, executa o sistema de uma forma que exige recursos em quantidade, frequência, ou volume anormais.

DefiniçãoTeste de Estresse

Page 33: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

Tem como objetivo avaliar o comportamento do sistema em situações onde há poucos recursos ou há concorrência por recursos:

Pouca memória disponível; Capacidade máxima especificada

de clientes ou processos executando; Alta concorrência por recursos.

ObjetivoTeste de Estresse

Page 34: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

É similar ao teste de carga mas com o intuito de testar o software a fim de encontrar o seu limite de processamento de dados no seu melhor desempenho. No teste normalmente é avaliada a capacidade resposta em determinados cenários e configurações.Geralmente ocorre paralelamente ao teste de estresse.

DefiniçãoTeste de

Desempenho

Page 35: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

Tem como objetivo medir o desempenho do sistema em uma situação normal de uso, bem como quanto requer de recursos de hardware, tempo de espera entre as ações e transações, com base no cenário que se espera ter normalmente em produção.

ObjetivoTeste de

Desempenho

Page 36: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

Quando erro é encontrado

Depuração (Debugging)

Teste de Depuração

Page 37: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

Dois resultados, corrigida e removida, ou não descoberta.

Tentativa de reprodução do problema, reduzindo até sua essência.

Divisão e Conquista.

Usado um depurador.

Processo de Depuração

Teste de Depuração

Page 38: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

Objetivo: descobrir e corrigir a causa de um erro de software.

Três categorias: Força bruta (Quando tudo falha, computador) backtracking (Manual, pequenos programas) Eliminação da causa (Participação binária,

isolar o problema)

Gerar outros erros então... CUIDADO.

AbordagensTeste de Depuração

Page 39: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

O GNU Debugger, mais conhecido por GDB, é um depurador, ou debugger, do projeto GNU. Ele pode ser usado para depuração em muitos sistemas do tipo Unix e suporta muitas linguagens de programação, como C, C++ e FORTRAN.

GNU DebuggerTeste de Depuração

Page 40: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

PRESSMAN, Roger S. Engenharia de Software. 3º Edição. São Paulo: Pearson Education do Brasil, 2007. 1056 p.

MAZOLLA, Vitório B. Engenharia de Software. Disponível em: <http://www.pucrs.br/edipucrs/online/projetoSI/6-Engenharia/ESoft_01.pdf >. Acesso em 10 de abril.

CUNHA, Simone Projeto de Teste de Software. Disponível em: <http://testwarequality.blogspot.com.br/p/projeto-de-teste.html>. Acesso em 23 de abril.

NETO, Pedro de A. dos S. Teste de Software. Disponível em: <http://www.ufpi.br/subsiteFiles/pasn/arquivos/files/CursoTesteNovoPDFParte1.pdf>. Acesso em 25 de abril.

TOZELLI, Paulo Análise do Teste de Software – Parte 02: Recursos Humanos. Disponível em: <http://imasters.com.br/artigo/9817/software/analise-do-teste-de-software-parte-02/>. Acesso em 1 de maio.

BibliografiaTeste de Software

Page 41: São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar antecipadamente falhas nos vários artefatos produzidos durante

Obrigado pela atenção!

Teste de Software