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

Post on 18-Apr-2015

107 views 3 download

Transcript of São técnicas empregadas durante o processo de desenvolvimento de um software. Visam detectar...

Profº Anderson L. Barbosa – Engenharia de Software

Teste de software

ADS-2sem.

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.

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

Errar é humano

É preciso garantir que os erros serão eliminados.

Aumentar a qualidade do produto.

Reduzir o custo

Porque testar Software?

Teste de Software

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

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

Processo do Teste de Software

Teste de Software

Fonte: Java Magazine 102

Exemplo de Caso de Teste de Software

Teste de Software

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

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

O custo da correção do defeito

Custo do defeitoTeste de Software

Especificação

Projeto Construção e Teste

Produção

Recursos HumanosTeste de Software

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

É 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

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

Exemplo de Complexidade

Ciclomática

Teste de Software

Complexidade Ciclomática

Teste de Software

Caminhos independentes

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

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

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

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

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

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

Exemplo de Teste caixa branca

Teste de Integração

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

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

Dependendo do erro á uma negociação.

CritériosTeste de Validação

Verificar elementos da configuração.

Revisão de configurações

Teste de Validação

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

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

Teste BetaTeste de Validação

É 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

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

É 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

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

É 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

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

É 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

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

Quando erro é encontrado

Depuração (Debugging)

Teste de Depuração

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

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

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

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

Obrigado pela atenção!

Teste de Software