Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Testes de Software Aplicados à Orientação a Objetos

Seminário apresentando o capítulo 19 do Livro de Engenharia de Software, 7ª Edição de Roger S. Pressman.
by

Jaqueline Morais

on 29 November 2012

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Testes de Software Aplicados à Orientação a Objetos

Teste de Software Orientado a Objetos "Cada reutilização é um novo contexto de uso e é prudente o reteste." Binder Testes OO x Testes Convencionais Objetivo: Encontrar o número máximo de erros com um mínimo de esforço. O objetivo é o mesmo, porém, os desafios são diferentes (herença, polimorfismo, etc);

As estratégias e táticas para o uso do teste OO diferem significativamente;

O foco do teste afasta-se do componente procedural (módulo) e aproxima-se da classe. Em cada estágio, os modelos devem ser testados para descobrir erros antes de sua propagação para a próxima iteração. Ampliando a versão do teste Testando modelos de Análise Orientada a Objeto (OOA) e Projeto Orientado a Objeto (OOP) Análise e modelos de projeto não podem ser testados no sentido convencional, pois não podem ser executados. No entando, são usadas revisões técnicas. Exatidão dos modelos de OOA e OOP:
- Modelo reflete os requisitos do mundo real? Consistência dos modelos orientados a objeto:
- Examinar cada classe e suas conexões com outras classes. (CRC ou Diagrama de relacionamento entre objetos) Jaqueline Morais
Michel Ramos
Profº Lincoln Seminário capítulo 19 do livro Engenharia de Software - 7ª Edição de Roger S. Pressman Modelo Classe-responsabilidade-colaboração (CRC) Estratégias de teste orientado a objetos Teste de integração Teste de unidade Teste de validação Teste de unidade Teste de integração Teste de validação A menor unidade a ser testada é a classe xUnit Teste baseado em sequência de execução (thread-based testing);
Teste baseado em uso. Focaliza as ações visíveis pelo usuário e as saídas do sistema reconhecíveis pelo usuário. requisitos... caixa-preta... caso de uso... Métodos de teste Orientado a Objeto As implicações no projeto de casos de teste dos conceitos orientados a objeto... Aplicabilidade dos métodos convencionais de projeto de casos de teste... Teste baseado em falhas... Casos de teste e a hierarquia de classe... Projeto de teste baseado em cenário... Teste da estrutura superficial é aquilo que é imediatamente observável pelo usuário. É análogo ao teste caixa-preta.

Estrutura profunda refere-se aos detalhes técnicos internos. É um teste projetado para simular dependências, comportamentos e mecanismos de comunicação. É análogo ao teste caixa-branca. Métodos de teste aplicáveis no nível da classe Projeto de caso de teste interclasse Teste aleatório para classes orientadas a objeto... Teste de participação em nível de classe... Testes de múltiplas classes... Testes derivados de modelos comportamentais... Dúvidas? Estratégia Eficácia O testador procura por aspectos de implementação que podem resultar em falhas. Para determinar se as falhas existem, projetam-se casos de teste para exercitar o projeto ou o código. Projetar testes que tenham grande probabilidade de descobrir falhas plausíveis. Objetivo Como? Depende de como os testadores consideram uma falha plausível. Pode encontrar uma quantidade significativa de erros com pouco esforço. Formular uma hipótese de cada falha possível e criar casos de teste para provar cada uma delas. Tentar abrir um arquivo que não existe. Exemplo de falha Métodos e atributos. Deve-se procurar erros no código chamador, não no código chamado. O que testar? Mesmo que uma classe tenha sido testada, será preciso testar todas as classes derivadas dela. A herança complica o teste Concentra-se naquilo que o usuário faz e não no que o produto faz. Descobrem erros de interação;
Os testes são mais complexos e realistas que os baseados em falhas;
Tendem a usar diversos subsistemas em um único teste. Usar o sistema como se fosse o usuário, seguindo os casos de uso. Como testar? Reduz o número de casos de teste de forma muito semelhante ao particionamento de equivalência. Entradas e saídas são classificadas e casos de teste projetados para exercitar cada categoria. Particionamento baseado em estado Particionamento baseado em atributo Particionamento baseado em categoria Classifica as operações com base na sua habilidade de mudar o estado da classe ou não. Classifica com base nos atributos que elas usam. Classifica com base na função genérica. Kirani e Tsai [Kir94] sugerem a seguinte sequência:

1. Para cada classe cliente, use a lista de operações de classe para gerar uma série de sequências aleatórias de teste. Essas operações enviaram mensagens para outras classes servidoras;

2. Para cada mensagem gerada, determine a classe colaboradora e a operação correspondente no objeto servidor;

3. Para cada operação no objeto servidor que foi chamado pela mensagem do objeto cliente, determine as mensagens que ele transmite;

4. Para cada uma das mensagens, determine o próximo nível de operações chamadas e incorpore-as na sequência de teste. O diagrama de estados pode ser usado para ajudar a derivar uma série de testes que irão simular o comportamento dinâmico da classe e das classes que colaboram com ela.

Observando a classe Conta, a maioria das operações ocorrem no estado conta ativa, mas também existem os estados conta vazia, conta estabelecida e conta inativa.

Os testes projetados devem cobrir todos esses estados. Encapsulamento... Herança... caixa-branca... caminho-base... teste de ciclos ou fluxo de dados... Uma classe Conta que possui os métodos abrir(), estabelecer(), depositar(), retirar(), obterSaldo(), resumir(), limiteDeCredito() e fechar().

Primeiro a conta precisa ser aberta e estabelecida para que outras operações sejam aplicadas e deve ser fechada depois que todas as operações são completadas.

Uma sequência mínima:

Abrir – estabelecer – [depositar – retirar] – fechar

Mas pode existir uma ampla variedade de outros comportamentos:

Abrir - estabelecer – depositar – [depositar|retirar|obterSaldo|resumir|limiteDeCredito]^n –
retirar – fechar
Full transcript