• Nenhum resultado encontrado

Aula 18 - Testes de Software

N/A
N/A
Protected

Academic year: 2021

Share "Aula 18 - Testes de Software"

Copied!
41
0
0

Texto

(1)

Qualidade de Software

Testes de Software

Marcelo Marinho

(2)

Estamos vendo a causa ou a

conseqüência?

(3)
(4)
(5)
(6)

Motivação

• Ocorrência de falhas humanas no processo de desenvolvimento de software é considerável.

• Processo de testes é indispensável na garantia de qualidade de software.

• Custos associados às falhas de software justificam um processo de testes cuidadoso e bem planejado.

(7)

Motivação

• Clientes mais exigentes;

(8)

Motivação

• Segundo pesquisas do SEI ( Software Engineering

Institute):

– 30% dos projetos são cancelados antes de serem finalizados;

– 70% dos projetos falham nas entregas das funcionalidades esperadas;

– Os custos dos projetos extrapolam mais de 180% dos valores previstos;

– Empresas de nível 1 dedicam cerca de 55% dos esforços para corrigir defeitos;

– Esses índices vão sendo gradativamente reduzidos à medida que elas adotam um modelo de qualidade

(9)

Finalidade dos testes

• Averiguar se todos os requisitos do sistema foram corretamente implementados;

• Assegurar, na medida do possível, a qualidade e a corretude do software produzido;

(10)

Finalidade dos testes

• Assegurar a satisfação do cliente com o produto desenvolvido; • Identificar casos de teste com elevada probabilidade para

revelar erros ainda não descobertos (com quantidade mínima de tempo e esforço);

• Verificar a correta integração entre todos os componentes de software.

(11)

Eficácia de Testes

• A atividade de teste é o processo de executar um programa com a intenção de descobrir um erro;

• Um bom caso de teste é aquele que apresenta uma elevada probabilidade de revelar um erro ainda não descoberto;

• Um teste bem sucedido é aquele que revela um erro ainda não descoberto.

(12)

Padronização de Testes

• Sistemático

– Testes aleatórios não são suficientes

– Testes devem cobrir todos os fluxos possíveis do software – Testes devem representar situações de uso reais

• Documentado

– Que testes foram feitos, resultados, etc.

• Repetível

– Se encontrou ou não erro em determinada situação, deve-se poder repeti-lo

(13)

Abordagens de teste

• Abordagem funcional (“caixa preta”) • Abordagem Estrutural (“caixa branca”)

(14)

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

• Especificação (pré e pós-condições)

– Geralmente é aplicado durante as últimas etapas do processo de teste

(15)

Abordagens de teste

• Abordagem funcional (“caixa preta”)

– Tem o objetivo de encontrar:

• Erros associados a não satisfação da especificação • Erros na GUI

• Erros nas estruturas de dados ou acesso ao banco de dados • Problemas de integração

(16)

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

– Conhecimento do funcionamento interno dos componentes do software é usado

(17)

Abordagens de teste

• Abordagem estrutural (“caixa branca”)

– 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 • Avaliar as estruturas de dados internas

(18)

Abordagens de teste

• Abordagem estrutural

– Programador

• Testa o programa em pedaços

• Encontra quais as partes do programa que já foram testadas

• Conhece quais partes do programa serão modificadas • Verifica os limites internos no código que são

invisíveis ao testador externo

(19)

Estágios de Teste

• Teste de Unidade • Teste de Aspectos OO • Teste de Integração • Teste de Sistema • Teste de Aceitação

(20)

Estágios de teste

• Teste de unidade

– Visa testar individualmente cada um dos componentes (programas ou módulos);

– Componentes individuais (ex.: métodos, classes) são testados para assegurar que os mesmos operam de forma correta

• Teste de aspectos OO – Teste de Iteradores

(21)

Estágios de teste

• Teste de integração

– Visa testar o relacionamento entre as diversas unidades integradas. – Em outras palavras, garantir que a interface entre os módulos

funcione adequadamente. • Teste de sistema

– Conjunto de testes cujo objetivo primordial é colocar completamente à prova todo o sistema.

– Em outras palavras, testa a integração do software com o ambiente operacional – hardware,pessoas e dados reais;

(22)

Estágios de teste

• Testes de aceitação (Homologação)

– São testes realizados pelo cliente/usuário com o objetivo de validar o sistema a ser implantado.

– A motivação maior para esses testes é o fato do desenvolvedor nunca conseguir prever como o usuário realmente usará um software numa situação real.

(23)

Estágios de teste

• Testes de aceitação (Homologação) – Podem ser de duas categorias:

• Testes alfa • Testes beta

(24)

Estágios de teste

• Testes de aceitação (Homologação)

– Testes alfa: são feitos por um determinado cliente, geralmente nas

instalações do desenvolvedor, que observa e registra os erros e/ou problemas;

– Testes beta: são realizados por possíveis clientes, em suas próprias

instalações, sem a supervisão do desenvolvedor. Cada cliente relata os problemas encontrados ao desenvolvedor, posteriormente.

(25)

Tipos de Teste

• Existem vários tipos de teste que podem ser

executados nos diversos estágios de

– Teste funcional

– Teste de recuperação de falhas – Teste de segurança

– Teste de carga

– Teste de desempenho – Teste de portabilidade

(26)

Tipos de teste

• Teste funcional (regras de negócio)

– Testa a funcionalidade geral do sistema, em termos de regras de negócio (fluxo de trabalho), considerando-se tanto as condições válidas como as inválidas;

(27)

Tipos de teste

• Teste de recuperação de falhas

– O software é forçado a falhar de diversas maneiras para que seja verificado o seu comportamento;

(28)

Tipos de teste

• Teste de segurança e controle de acesso

– Tenta certificar-se de que todos os mecanismos de proteção embutidos no software, de fato, o protegerão dos acessos indevidos;

(29)

Tipos de teste

• Teste de carga

– Tenta confrontar o software ou os programas com situações anormais. Ele executa o software de uma forma que exige recursos em quantidade, freqüência e volume bem maiores do que o uso normal;

(30)

Tipos de teste

• Teste de desempenho

– São testes que visam verificar o desempenho ou performance do software.

– Verifica o tempo de resposta e processamento (para diferentes configurações, número de usuários, tamanho do BD, etc.)

– Exemplo

(31)

Tipos de teste

• Teste de 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;

(32)

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 mais de 100 transações por segundo ou se um sistema operacional pode manipular mais de 200 terminais remotos

(33)

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

• Funcionalidade do instalador/desinstalador sob múltiplas opções/condições de instalação

(34)

Processo de Testes

• Testes também é o processo de avaliar a qualidade de um software;

• O processo de testes define como os testes serão planejados, projetados, implementados, executados e avaliados através de um conjunto de atividades, artefatos e papéis;

• A seguir serão apresentadas algumas das possíveis atividades de um processo de testes.

(35)
(36)

Atividade - Planejar Testes

•Objetivo: planejar as atividades de testes que serão executadas ao longo de todo o ciclo de vida do projeto.

Entradas  Plano do Projeto

 Cronograma do Projeto  Planilha de Riscos

 Documento de Requisitos do Cliente.  Documento de Requisitos do Produto (se existir)

Planejar Testes

Saídas  Plano de Testes (revisado)

 Cronograma (atualizado, se necessário).  Planilha de Riscos (atualizada, se necessário)

(37)

Atividade - Projetar Testes

• Objetivo: identificar e especificar os casos de testes baseando-se nos requisitos e na estratégia descrita no Plano de Testes.

Entradas

 Documento de Requisitos do Cliente.  Documento de Requisitos do Produto (se existir)  Documento de Arquitetura  Plano de Testes  Plano do Projeto  Manual de Instalação Projetar Testes Saídas  Projeto de Testes (revisado)

 Plano de Testes (atualizado, se necessário)  MRT (atualizada, se existir)

(38)

Atividade - Implementar

Testes

•Objetivo: implementar scripts de automação para utilizar na execução dos casos de teste.

Entradas

 Documento de Requisitos do Cliente.  Documento de Requisitos do Produto (se existir)

 Documento de Arquitetura  Plano de Testes

 Projeto de Testes

 Especificações de Componentes (opcional).

Implementar Testes

Saídas

 Projeto de Testes (atualizado, se necessário)  Scripts de Automação (revisados)

(39)

Atividade - Executar

Testes

•Objetivo: executar os casos de teste projetados e registrar os seus resultados.

Entradas

 Documento de Requisitos do Cliente

 Documento de Requisitos do Produto (se existir)  Projeto de Testes

 Planilha de Resultados

 Scripts de Teste (caso haja automação)  Produto a ser testado (baselined)

 Manual de Instalação

Executar Testes

Saídas

 Planilha de Resultados (atualizada)  Log de execução dos testes (caso haja automação)

(40)

Atividade - Analisar Testes

•Objetivos: Consolidar os dados operacionais do processo de teste em informações gerenciais que complementem a tomada de decisões.

Entradas  Planilha de Resultados  Plano de Testes

 Projeto de Testes

Analisar Resultado dos Testes

Saídas

 Planilha de Resultados (atualizada)

 Plano de Testes (atualizado, se necessário)  Projeto de Testes (atualizado, se necessário)

(41)

Qualidade de Software

Testes de Software

Marcelo Marinho

Referências

Documentos relacionados

No período de primeiro de janeiro a 30 de junho de 2011, foram encaminhadas, ao Comitê de Segurança do Paciente da instituição sede do estudo, 218 notificações de

-- A Alléém m ddooss bi bi op opol ol í ím mer eros  os  , moléculas menores como , moléculas menores como lipídios lipídios ,, água água ,, sais

A estabilidade do corpo docente permanente permite atribuir o conceito muito bom, segundo os parâmetros da área, para o item 2.2 (pelo menos 75% dos docentes permanentes foram

A realização da estágio em saúde coletiva realizado no Centro de Referência Especializado de Assistência Social – CREAS, no desempenho de seu caráter

RESUMO: Neste artigo, desenvolvemos uma breve análise sobre o papel do professor que atravessa o discurso materializado no Documento Base da Educação Profissional Técnica de

» Estamos em condições de fornecer consultoria e/ou informações especializada para o estudo e/ou a definição de novos artigos ou soluções coordenadas para problemas operativos,

Através desses questionários pode-se coletar informações sobre as brincadeiras conhecidas e a importância da prática de educação física para as séries iniciais do ensino

Inconformada com a decisão administrativa do INSS, a autora buscou o judiciário no intuito de comprovar o direito ao benefício pleiteado, uma vez que exerce atividade