4 engenharia de software

43
Disciplina Engenharia de Software Testes de Software Prof. Esp. Rafael H Mauro [email protected]

Upload: felipe-bugov

Post on 30-Jun-2015

184 views

Category:

Education


2 download

DESCRIPTION

Unip

TRANSCRIPT

Page 1: 4   engenharia de software

Disciplina Engenharia de Software

Testes de Software

Prof. Esp. Rafael H Mauro

[email protected]

Page 2: 4   engenharia de software

Testes de Software

Page 3: 4   engenharia de software

Tópicos

• Motivação para teste

– Por que algumas empresas não testam

• Finalidades dos Testes

• Formando a Equipe de Testes

– Usando a Equipe de Desenvolvimento

– Usando uma Equipe independente

– Usando uma Equipe de não-especialistas em TI

• Relacionando as atividades de Testes com as de Desenvolvimento

• Processo de Teste

– Planejar Testes

– Especificar Testes

– Executar Testes

– Reportar Testes

• Gerenciamento de Bugs

• Ferramentas de Teste

– Mantis

Page 4: 4   engenharia de software

Objetivo

• Apresentar uma abordagem geral sobre o processo

de teste de software, abrangendo seus principais

fundamentos técnicos e gerenciais. Além disso, serão

apresentados os principais conceitos necessários

para um bom entendimento sobre as atividades de

teste.

Page 5: 4   engenharia de software

Motivação para Teste

Page 6: 4   engenharia de software

Motivação para Teste

As falhas causam prejuízos financeiros

As falhas causam a perda de confiança do cliente

Page 7: 4   engenharia de software

Por que algumas empresas não testam?

Teste é um

processo

caro

Dificuldade em

implantar um

processo de teste

Desconhecem

a relação

custo/benefíc

io

Só se

preocupam

com teste na

fase final do

projeto

Desconhecem

técnicas de

teste

adequadas

Page 8: 4   engenharia de software

Motivação para Teste • 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;

Page 9: 4   engenharia de software

Motivação para Teste

– Prazos excedem mais de 220%

– 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

Page 10: 4   engenharia de software

Finalidade dos Testes

– Verificar se todos os requisitos do sistema foram corretamente

implementados

– Assegurar a satisfação do cliente com o produto desenvolvido

– Assegurar, na medida do possível, a qualidade e a corretude do

software produzido

– Reduzir custos de manutenção corretiva e retrabalho

Page 11: 4   engenharia de software

Finalidade dos Testes

“Teste é o processo de demonstrar que erros não estão presentes”

“O objetivo do teste é demonstrar que um programa executa suas

funções corretamente”

“Teste é o processo de criação de confiança de que o programa faz o

que ele tem que fazer”

Teste é o processo de executar um programa com a intenção de

encontrar defeitos

Page 12: 4   engenharia de software

Formando a Equipe de Testes

Usando a Equipe de Desenvolvimento:

- O Líder do Projeto de Desenvolvimento será também o

Líder do Projeto de Testes;

- A Equipe de Teste é a mesma Equipe de Desenvolvimento;

- Os Testes serão executados através de rodízios, onde nunca a pessoa que desenvolveu o módulo executará testes no próprio modulo.

Page 13: 4   engenharia de software

Formando a Equipe de Testes

Desvantagens:

- Diminuição da qualidade do produto final;

- Tendência a não visualizar certos defeitos do projeto

(testes de sucesso);

- Tendência a informalidade na execução dos testes;

- Dificuldade de conciliar os cronogramas das equipes de

desenvolvimento;

- Falta de conhecimento do negócio da equipe que for

executar os testes.

Page 14: 4   engenharia de software

Formando a Equipe de Testes

Usando Equipe Independente:

- Esta é uma prática que está sendo cada vez mais usada no mercado;

- Equipes especializadas em teste produzem resultados, em termos de qualidade do software, muito melhores;

- Essas equipes possuem um treinamento adequado para executar com qualidade os testes e estão bastante familiarizadas com as suas ferramentas e metodologias.

Page 15: 4   engenharia de software

Formando a Equipe de Testes

Desvantagens:

- Custos maiores;

- Aumento no tempo de liberação do software;

- Tendência da equipe de desenvolvimento em relaxar na

parte que lhe cabe (teste unitário e de integração);

- Divergências entre as duas equipes.

Page 16: 4   engenharia de software

Formando a Equipe de Testes

Usando Equipes de não-especialistas em TI

- Muitas empresas usam grupos de usuários para fazer o chamado trabalho de homologação do software ou o seu teste de aceitação;

- A perspectiva é sempre a do negócio, ou seja, garantir que o software foi desenvolvido de acordo com os requisitos que foram estabelecidos pelo negócio.

Page 17: 4   engenharia de software

Formando a Equipe de Testes

Desvantagens:

- Custos maiores;

- Falta de familiarização com ferramentas;

- Abordagens exclusivas do negócio, esquecendo

aspectos técnicos do teste.

Page 18: 4   engenharia de software

Estágios de Teste

Testes de

unidade

Testes de

Integração

Testes de

Sistema

Testes de

Aceitação

Entrega

Page 19: 4   engenharia de software

Ciclo de Vida

Testes de

unidade

Testes de

Integração

Testes de

Sistema

Testes de

Aceitação

Design

detalhado

Design da

arquitetura

Requisitos

do sw/hw

Requisitos de

usuário

Implementação

Page 20: 4   engenharia de software

Tipos de Teste

Estáticos ou revisões:

– Revisão técnica: Consiste na apresentação do material para

uma equipe de revisão onde será feita a análise do produto de

trabalho;

– Inspeção: Consiste na verificação dos produtos do software e

processo estão de acordo com os padrões, guidelines,

especificações e procedimentos;

Page 21: 4   engenharia de software

Tipos de Teste

– Teste Funcional

– Teste de Recuperação de Falhas

– Teste de segurança e controle de acesso

– Teste de performance

– Teste de estresse

– Teste de configuração ou portabilidade

– Teste de interface com o usuário

– Teste de regressão

Page 22: 4   engenharia de software

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 de saída

• Abordagem estrutural(“caixa-branca”)

Os testes são executados a partir de uma análise dos

caminhos lógicos possíveis de serem executados.

Page 23: 4   engenharia de software

Relacionando as atividades de Testes com as de Desenvolvimento

Quando começar a testar?

Planejamento de Projeto

Captura de Requisitos

Análise e Projeto Implementação

Planejar Testes Projetar Testes Implementar Testes

Build Build

Executar Testes Avaliar Testes

Gerenciar Defeitos

Page 24: 4   engenharia de software

Processo de Teste

- Planejar Testes

- Especificar Testes

- Executar Testes

- Reportar Testes

Page 25: 4   engenharia de software

Planejar Testes

Entradas

–Documento de Requisitos

–Plano de Projeto

–Modelos de Caso de Uso

Saídas

–Plano de Testes

Page 26: 4   engenharia de software

Plano de Testes

Histórico de Revisões

1.Objetivo

2.Requisitos a serem testados

3.Estágios de Teste

4.Tipos de Teste

5.Abordagens de Teste

6.Critérios de parada/aceitação

7.Recursos

8.Matriz de Responsabilidade

9.Cronograma

Page 27: 4   engenharia de software

Projetar Testes

Entradas

– Documento de Requisitos

– Plano de Testes

– Modelo de Caso de Uso

Saídas

– Projeto de Testes(casos e procedimentos)

– Planilha de Teste

Page 28: 4   engenharia de software

Projeto de Testes Histórico de Revisões

1. Requisitos a serem testados(prioridade)

2. Identificador do caso de Teste

3.Requisitos Associados

3.Casos de Teste

3.Tipo de Teste

4. Pré-condição

4.Dados de entrada

5.Procedimento

6.Resultado esperado

7.Status do teste

Page 29: 4   engenharia de software

Execução de Testes

Entradas

–Projeto de Testes

–Código executável do sistema

Saídas

–Planilha de Teste

Page 30: 4   engenharia de software

Relatório de Testes

- Registrar resultados

- Avaliar resultados

- Encaminhar ao desenvolvedor responsável

Page 31: 4   engenharia de software

Gerenciamento de bugs

Classificação de defeitos:

1. Faltante: O defeito ocorre em virtude da falta parcial ou total de

um requisito;

2. Errado: O defeito ocorre porque o requisito foi implementado

corretamente;

3. Acréscimo:O defeito ocorre em virtude de um comportamento

ou elemento que foi implementado mas não foi especificado no

requisito.

Page 32: 4   engenharia de software

Gerenciamento de bugs

Ciclo de vida de um defeito

Page 33: 4   engenharia de software

Ferramentas de Teste

- Automatizam atividades do processo de teste

- Podem nos auxiliar em todas as atividades do processo de teste

Ferramentas de planejamento e projeto de testes:

• Elaborar plano de testes. Ex: Project

• Projetar testes:Excel, TestManager

• Executar testes:Excel, TestManager

• Avaliar testes:Excel, TestManager

• Implementação: Junit(unidade), Jtest e C++Test (Análise estática de código)

• Gerência de defeitos: Bugzilla, Mantis

Page 34: 4   engenharia de software

Ferramentas de Teste

• O Mantis é uma ferramenta Open Source automatizada escrita em PHP cujo principal objetivo é dar suporte ao processo de gestão de defeitos.

• Website do Mantis http://www.mantisbt.org

Page 35: 4   engenharia de software

Página inicial

Page 36: 4   engenharia de software

Relatar caso

Page 37: 4   engenharia de software

Reconhecimento de um defeito

Page 38: 4   engenharia de software

E-mail enviado ao desenvolvedor

Page 39: 4   engenharia de software

Visão por desenvolvedor

Page 40: 4   engenharia de software

Report da correção

Page 41: 4   engenharia de software

Fechamento de um defeito

Page 42: 4   engenharia de software

Referências

• ACKERMAN, A., BUCHWALD, L., LEWSKI, F., 1989, “Software Inspections: An Effective Verification Process”, IEEE Software, vol. 6, no. 3, pp.31-37.

• KALINOWSKI, M., SPÍNOLA, R.O., TRAVASSOS, G.H., Infra-Estrutura Computacional para Apoio ao Processo de Inspeção de Software. No:

Simpósio Brasileiro de Qualidade de Software, 2004, Brasília. • BOEHM, B. W., BASILI, V.R., 2001, “Software Defect Reduction Top 10 List.”, IEEE

Computer 34 (1): 135-137. • BOEHM, B.W., ABTS, C., BROWN, A.W., CHULANI, S., CLARK, B.K., HOROWITZ, E.,

MADACHY, R., REIFER, D., STEECE, B., 2000, Software Cost • Estimation with COCOMO II, Prentice Hall. BOEHM, B.W., 1981, Software

Engineering Economics, Prentice Hall. • CIOLKOWSKI, M., LAITENBERGER, O., BIFFL, S., 2003, “Software Reviews: The State

of the Practice”, IEEE Software 20 (6): 46-51.

Page 43: 4   engenharia de software

Fim da Apresentação