Aula - Teste de Software

37
Cliquez pour modifier le style du titre Teste Teste de de Software Software Universidade Federal da Bahia Universidade Federal da Bahia Instituto de Matemática Instituto de Matemática Departamento de Ciência da Computação Departamento de Ciência da Computação Disciplina: MATA62 Disciplina: MATA62 – Engenharia de Software I Engenharia de Software I Teste Teste de de Software Software Mauricio C. Santos CPD-UFBA Salvador, Março/2010

description

 

Transcript of Aula - Teste de Software

Page 1: Aula - Teste de Software

Cliquez pour modifier le style du titre

TesteTeste de de SoftwareSoftware

Universidade Federal da Bahia Universidade Federal da Bahia Instituto de Matemática Instituto de Matemática Departamento de Ciência da ComputaçãoDepartamento de Ciência da ComputaçãoDisciplina: MATA62 Disciplina: MATA62 –– Engenharia de Software IEngenharia de Software I

TesteTeste de de SoftwareSoftware

Mauricio C. Santos

CPD-UFBA

Salvador, Março/2010

Page 2: Aula - Teste de Software

O Que Veremos?

� Conceitos Básicos

� Teste de Software

• Teste de Unidade

• Teste Funcional

Teste de Software

2

• Teste de Integração

� Estratégia de Testes em XP

� Test-Driven Development

• TDD com Ruby

� Teste de Unidade com Ruby

Page 3: Aula - Teste de Software

Referências BibliográficasReferências Bibliográficas

� https://disciplinas.dcc.ufba.br/pub/MATB15/SemestreCorrent

e/Aula1.pdf

� http://disciplinas.dcc.ufba.br/MATA62/TesteDeSoftware

� http://disciplinas.dcc.ufba.br/MATA62/TestesDeUnidade

� http://www.disciplinas.dcc.ufba.br/MATA63/Desenvolviment

3

� http://www.disciplinas.dcc.ufba.br/MATA63/Desenvolviment

oDirigidoPorTestes

� http://disciplinas.dcc.ufba.br/MATA62/TDDComRuby

� http://pt.wikipedia.org/wiki/Test_Driven_Development

Page 4: Aula - Teste de Software

Cliquez pour modifier le style du titre

Conceitos Básicos

Page 5: Aula - Teste de Software

Defeitos e FalhasDefeitos e Falhas

� Defeito

• um problema nos requisitos, no projeto, no código, na documentação ou nos casos de teste.

5

� Falha

• um problema no funcionamento do sistema.

Falha: conseqüência de um defeito

Page 6: Aula - Teste de Software

Defeitos e Falhas: Uma Visão Mais CompletaDefeitos e Falhas: Uma Visão Mais Completa

6

Page 7: Aula - Teste de Software

Principais Artefatos de Software: Uma Visão Principais Artefatos de Software: Uma Visão SimplificadaSimplificada

7

Page 8: Aula - Teste de Software

Defeitos Introduzidos ao Longo do Processo Defeitos Introduzidos ao Longo do Processo de Desenvolvimentode Desenvolvimento

� A maior parte é de origem humana.

� São gerados na comunicação e na transformação de informações.

� Permanecem presentes nos diversos produtos de

8

software produzidos e liberados.

� A maioria encontra-se em partes do produto de software raramente utilizadas e/ou executadas.

Page 9: Aula - Teste de Software

Alguns Tipos de Defeitos IntroduzidosAlguns Tipos de Defeitos Introduzidos

9

Page 10: Aula - Teste de Software

Defeitos Introduzidos ao Longo do Processo Defeitos Introduzidos ao Longo do Processo de Desenvolvimentode Desenvolvimento

� Principal causa:

• Tradução incorreta de informações.

� Quanto antes a presença do defeito for revelada, menor o custo de correção do defeito e maior a

10

probabilidade de corrigi-lo corretamente.

� Solução:

• Introduzir atividades de V V & T ao longo de todo o ciclo de desenvolvimento.

Page 11: Aula - Teste de Software

Verificação e Validação V & VVerificação e Validação V & V

� As atividades de avaliação de produtos são parte do tema chamado Verificação e Validação (V&V).

� A definição de V&V abrange muitas das atividades às quais nos referimos como Garantia da

11

às quais nos referimos como Garantia da Qualidade de Software (SQA).

Page 12: Aula - Teste de Software

VerificaçãoVerificação

� Refere-se ao conjunto de atividades que garante que o software implementa corretamente uma função específica.

12

“Estamos construindo certo o produto?”

Page 13: Aula - Teste de Software

ValidaçãoValidação

� Refere-se ao conjunto de atividades que garante que o software que foi construído é “rastreável” às exigências do cliente.

13

“Estamos construindo o produto certo?”

Page 14: Aula - Teste de Software

Garantia da Qualidade de SoftwareGarantia da Qualidade de Software

� Métodos de Engenharia de Software: proporcionam a base a partir da qual a qualidade é construída.

� Revisões Técnicas Formais: ajudam a garantir a qualidade do produto produzido como uma

14

qualidade do produto produzido como uma conseqüência de cada passo da engenharia de software.

� Medição: ajudam a controlar cada elemento da configuração de software.

Page 15: Aula - Teste de Software

Garantia da Qualidade de SoftwareGarantia da Qualidade de Software

� Padrões e Procedimentos: ajudam a garantir a uniformidade.

� Garantia de Qualidade de Software (SQA): põe em prática uma filosofia de qualidade total.

15

prática uma filosofia de qualidade total.

� Teste: a qualidade pode ser avaliada.

Page 16: Aula - Teste de Software

Garantia da Qualidade de SoftwareGarantia da Qualidade de Software

16

Page 17: Aula - Teste de Software

Cliquez pour modifier le style du titre

Teste de Software

Page 18: Aula - Teste de Software

O Que É ?O Que É ?

� 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 tem uma elevada probabilidade de revelar um erro ainda não

18

elevada probabilidade de revelar um erro ainda não descoberto

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

Page 19: Aula - Teste de Software

Objetivos da Atividade de TesteObjetivos da Atividade de Teste

� Objetivo: projetar testes que descubram sistematicamente diferentes classes de erros com uma quantidade de tempo e esforço razoáveis.

� Se a atividade de teste for conduzida com sucesso,

19

� Se a atividade de teste for conduzida com sucesso, ela descobrirá erros no software.

A atividade de teste não pode mostrar a ausência de bugs.

Ela só pode mostrar se defeitos de software estão presentes.

Page 20: Aula - Teste de Software

Erros e as Atividades de TesteErros e as Atividades de Teste

� Se erros graves forem encontrados com regularidade, isto implica que a qualidade e a confiabilidade de software são suspeitas.

� Se erros facilmente corrigíveis forem

20

� Se erros facilmente corrigíveis forem encontrados, isto implica que a qualidade e a confiabilidade do software estão aceitáveis ou os testes são inadequados para revelar erros graves

� Se não for encontrado erro isto implica que a configuração de teste não foi suficientemente elaborada e erros estão escondidos no software

Page 21: Aula - Teste de Software

Processo Tradicional de TestesProcesso Tradicional de Testes

21

Page 22: Aula - Teste de Software

Abordagens para TestesAbordagens para Testes

� Abordagem funcional

• AKA "teste caixa preta"

• são testadas as funcionalidades do software,

22

emitindo entradas pré-definidas e testando pelas saídas esperadas.

Page 23: Aula - Teste de Software

Abordagens para TestesAbordagens para Testes

� Abordagem estrutural

• AKA "teste caixa branca"

• são testados aspectos de implementação das unidades de modularização (e.g. classes):

23

unidades de modularização (e.g. classes):

� algoritmos utilizados

� resultados esperados de métodos em função de seus parâmetros

Page 24: Aula - Teste de Software

Teste Automatizado de SoftwareTeste Automatizado de Software

� Programas que testam programas.

• oráculo

� Uso de frameworks de teste.

24

Page 25: Aula - Teste de Software

Etapas do Teste de SoftwareEtapas do Teste de Software

� Testes de Unidade: cada módulo é testado individualmente garantindo que ele funcione adequadamente.

25

� Utiliza as técnicas de teste de caixa branca.

Page 26: Aula - Teste de Software

Etapas do Teste de SoftwareEtapas do Teste de Software

� Testes de Integração: os módulos são montados ou integrados para formarem um pacote de software.

26

� Utiliza principalmente as técnicas de teste de caixa preta.

Page 27: Aula - Teste de Software

Etapas do Teste de SoftwareEtapas do Teste de Software

� Testes de Alto Nível (validação e sistema): Os critérios de validação estabelecidos durante a análise de requisitos são testados.

27

� Verifica também se todos os elementos combinam-se adequadamente e se a função/ desempenho global do sistema é conseguida.

� Utiliza as técnicas de caixa preta.

Page 28: Aula - Teste de Software

Etapas do Teste de SoftwareEtapas do Teste de Software

28

Page 29: Aula - Teste de Software

Cliquez pour modifier le style du titre

Estratégia de Teste em XP

Page 30: Aula - Teste de Software

Estratégia de Teste em XPEstratégia de Teste em XP

� "O que não pode ser mensurado não existe." [Kent Beck]

� "Não confio em nada que escrevi até que eu tenha testes para isso." [Kent Beck]

30

testes para isso." [Kent Beck]

� "Tests are both resource and responsibility."

� "Work with human nature, not against it."

• Testar é importante mas pensamos mais no código do que nos testes

Page 31: Aula - Teste de Software

Estratégia de Teste em XPEstratégia de Teste em XP

� Testes com XP são isolados e automáticos

• Testes isolados: não há efeito "cascata" pois testes não interagem entre si

31

• Testes automáticos: indicam apenas se os testes passaram ou não

Page 32: Aula - Teste de Software

Cliquez pour modifier le style du titre

Test Driven Development - TDD

Page 33: Aula - Teste de Software

O Que É ?O Que É ?

33

Page 34: Aula - Teste de Software

Por Quê Usar ? Por Quê Usar ?

� Ênfase na interface

� Expressão dos requisitos

� Projeto bottom-up

34

� Projeto bottom-up

� Todo código desenvolvido é coberto por testes

� Design do programa

� Redução do tempo de depuração

� Código modularizado, flexível e extensível

Page 35: Aula - Teste de Software

Refatoração Refatoração

� Modificar o design de um código sem alterar o seu comportamento

� Em TDD, isso significa alterar o código de forma que os testes continuem passando.

35

que os testes continuem passando.

� Para saber mais: Refactoring: Improving the Design of Existing Code (The Addison-Wesley ObjectTechnology Series): Martin Fowler,Kent Beck,John Brant,William Opdyke,Don Roberts

Page 36: Aula - Teste de Software

BeneficiosBeneficios

� Alguns estudos mostram impacto positivo de TDD:

� Redução de número de defeitos

• Um estudo sobre o impacto do uso de desenvolvimento orientado por testes na

36

melhoria da qualidade de software. Projeto de conclusão de curso de Daniela Feitosa, 2007.2.

� Aumento da produtividade

� Aumento da qualidade

Page 37: Aula - Teste de Software

LimitaçõesLimitações

� Mudança de pensamento

� Suporte gerencial

� Dependência de testes funcionais para sucesso/falha (interfaces de usuários, interação

37

com bases de dados, sistemas que dependam de configurações específicas da rede)