Aula12 TEES UFS Testes de SW

760 views
729 views

Published on

Aula12 TEES UFS Testes de SW

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
760
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
22
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Aula12 TEES UFS Testes de SW

  1. 1. Testes de SW Aula 12
  2. 2. Sumário <ul><li>Objectivos e Responsáveis </li></ul><ul><li>Princípios dos Testes </li></ul><ul><li>Software fácil de testar </li></ul><ul><li>Desenho de casos de teste </li></ul><ul><li>Testes </li></ul><ul><ul><li>Caixa Branca </li></ul></ul><ul><ul><li>Caminho básico </li></ul></ul><ul><ul><li>Estrutura de controlo </li></ul></ul><ul><ul><li>Caixa preta </li></ul></ul><ul><ul><li>Ambiente, arquitectura e aplicações </li></ul></ul><ul><ul><li>OO </li></ul></ul>
  3. 3. Objectivos e Responsáveis <ul><li>Descobrir erros </li></ul><ul><ul><li>Um bom teste tem uma alta probabilidade de detectar erros não descobertos </li></ul></ul><ul><ul><li>Um teste tem sucesso SE descobrir um erro não detectado </li></ul></ul><ul><li>Quem faz </li></ul><ul><ul><li>Engenheiros de SW </li></ul></ul><ul><ul><li>Testadores </li></ul></ul><ul><ul><ul><li>Engenheiros de SW especialistas em testes </li></ul></ul></ul>
  4. 4. Princípios <ul><li>Os testes deviam detectar desde erros de código até a satisfação de requisitos </li></ul><ul><li>Devem ser planificadas </li></ul><ul><li>Isolar módulos “suspeitos” e testá-los aprofundadamente </li></ul><ul><li>Começar pelos módulos e terminar no sistema inteiro </li></ul><ul><li>Não é possível fazer testes exaustivos </li></ul><ul><li>Realizados por equipas independentes </li></ul>
  5. 5. Software fácil de testar - características <ul><li>Observabilidade (o que você vê é o que você testa) </li></ul><ul><ul><li>Saída diferente para cada entrada </li></ul></ul><ul><ul><li>Estados e variáveis do sistema podem ser consultados durante a execução </li></ul></ul><ul><ul><li>Estados e variáveis do sistema antigos podem ser consultados (registos de transacção) </li></ul></ul><ul><ul><li>Todos os factores que afectam os resultados são visíveis </li></ul></ul><ul><ul><li>Um resultado incorrecto identifica-se com facilidade </li></ul></ul><ul><ul><li>Os erros internos detectam-se automaticamente </li></ul></ul><ul><ul><li>O código fonte é acessível </li></ul></ul>
  6. 6. <ul><li>Controlabilidade (quanto + controlável, + automatizável e optimizável) </li></ul><ul><ul><li>Todos os resultados possíveis gerados através da combinação de entradas </li></ul></ul><ul><ul><li>Estados e variáveis do sistema são controláveis pelo programador </li></ul></ul><ul><ul><li>Formatos de E/S são estruturados e consistentes </li></ul></ul><ul><ul><li>Os testes podem especificar-se, automatizar-se e reproduzir-se convenientemente </li></ul></ul><ul><li>Modularidade (controlando o âmbito dos testes, os problemas podem ser isolados) </li></ul><ul><ul><li>O sistema está construído em módulos independentes </li></ul></ul><ul><ul><li>Os módulos podem ser testados independentemente </li></ul></ul>Software fácil de testar - características
  7. 7. <ul><li>Simplicidade (há menos que testar) </li></ul><ul><ul><li>Simplicidade funcional (características mínimas) </li></ul></ul><ul><ul><li>Simplicidade estrutural (que impede propagação de falhas) </li></ul></ul><ul><ul><li>Simplicidade do código (selecção de standards, boas práticas de programação) </li></ul></ul><ul><li>Estabilidade (menos mudanças) </li></ul><ul><ul><li>Mudanças não frequentes </li></ul></ul><ul><ul><li>Mudanças controladas </li></ul></ul><ul><ul><li>Mudanças não invalidam testes </li></ul></ul><ul><ul><li>O software lida bem com as falhas </li></ul></ul>Software fácil de testar - características
  8. 8. <ul><li>Facilidade de compreensão (+informação, melhores testes) </li></ul><ul><ul><li>O Desenho foi compreendido </li></ul></ul><ul><ul><li>Dependências entre componentes internos foi compreendida </li></ul></ul><ul><ul><li>Mudanças ao desenho foram comunicadas </li></ul></ul><ul><ul><li>Documentação técnica acessível instantaneamente, está bem organizada, é exacta, específica e detalhada. </li></ul></ul><ul><li>Operatividade (quanto melhor funcionar, + eficientemente se pode testar) </li></ul><ul><ul><li>Tem poucos erros </li></ul></ul><ul><ul><li>Os erros não bloqueiam a execução dos testes </li></ul></ul><ul><ul><li>O produto evolui em fases </li></ul></ul>Software fácil de testar - características
  9. 9. Desenho de casos de teste <ul><li>Caixa preta </li></ul><ul><ul><li>Testes sobre as interfaces do Produto de SW </li></ul></ul><ul><li>Caixa branca </li></ul><ul><ul><li>Testes sobre os detalhes dos procedimentos de cada função </li></ul></ul>Conhecemos a função específica para a qual foi desenhado o produto. Podemos levar a cabo Testes que demonstram que cada função está completamente operacional. Conhecemos o funcionamento do produto. Podemos desenvolver testes que asseguram que “todas as peças se encaixam”. Ou seja, que a operação interna se ajusta às especificações e que todos os componentes internos foram comprovados de maneira adequada.
  10. 10. casos de teste de Caixa Branca <ul><li>garantem o exercício de: </li></ul><ul><ul><li>Todos os caminhos independentes são utilizados </li></ul></ul><ul><ul><li>Todas as vertentes falsas e verdadeiras das decisões lógicas </li></ul></ul><ul><ul><li>Todos os ciclos nos seus limites </li></ul></ul><ul><ul><li>Todas as estruturas internas de dados </li></ul></ul><ul><li>Permitem ver </li></ul><ul><ul><li>Erros lógicos e supostos incorrectos </li></ul></ul><ul><ul><li>Fluxo lógico real dum programa </li></ul></ul><ul><ul><li>Erros tipográficos </li></ul></ul><ul><li>Porém </li></ul><ul><ul><li>os testes exaustivos apresentam problemas logísticos tornando estes testes impossíveis para grandes sistemas de SW </li></ul></ul><ul><li>Devemos, então, seleccionar quais são os caminhos lógicos mais importantes </li></ul>
  11. 11. Teste do caminho básico <ul><li>É uma técnica de teste de caixa branca </li></ul><ul><li>Medida da complexidade lógica </li></ul><ul><li>Mede o nº de caminhos independentes </li></ul><ul><li>Os casos de teste obtidos por este método garantem que cada instrução seja executada pelo menos 1 vez </li></ul><ul><li>Pode tornar-se impossível, se o sistema for muito grande.. </li></ul>
  12. 12. Testes da estrutura de controlo <ul><li>Auxiliam as técnicas de Testes de Caixa Branca </li></ul><ul><li>Teste da condição </li></ul><ul><li>Teste de fluxos de dados </li></ul><ul><ul><li>caminhos de teste segundo a localização das definições e usos das variáveis </li></ul></ul><ul><li>Testes de ciclos </li></ul><ul><ul><li>Passar por alto </li></ul></ul><ul><ul><li>Passar 1 vez </li></ul></ul><ul><ul><li>Passar 2 vezes </li></ul></ul><ul><ul><li>Fazer m passos com m<n </li></ul></ul><ul><ul><ul><li>exemplo: se o ciclo executa 10 laços, testamos até o laço 3.. </li></ul></ul></ul><ul><ul><li>Fazer n-1, n e n+1 </li></ul></ul><ul><ul><ul><li>exemplo: se o ciclo executa 10 laços, testamos 9, 10 e forçamos 11 laços .. </li></ul></ul></ul>
  13. 13. casos de testes de Caixa Preta - várias técnicas <ul><li>Métodos baseados em grafos </li></ul><ul><ul><li>Entender os objectos de dados modelados e as suas relações </li></ul></ul><ul><ul><li>Definir uma série de testes que verifiquem “que todos os objectos possuem as relações esperadas entre eles” </li></ul></ul><ul><ul><li>Criar um grafo </li></ul></ul><ul><ul><ul><li>uma colecção de nós que representa os objectos </li></ul></ul></ul><ul><li>Método da Partição equivalente </li></ul><ul><li>Método da Análise de valores limites </li></ul><ul><li>Testes de comparação </li></ul><ul><li>Testes da tábua ortogonal </li></ul><ul><ul><li>Domínos de problemas pequenos </li></ul></ul><ul><ul><li>Mas que exigem muitas provas exaustivas </li></ul></ul>
  14. 14. E ainda: Testes de ambientes, arquitecturas e aplicações <ul><li>Testes de interfaces </li></ul><ul><li>Testes de arquitectura cliente/servidor </li></ul><ul><li>Testes da documentação e facilidades de ajuda </li></ul><ul><li>Testes de sistemas a tempo-real </li></ul>
  15. 15. próxima aula teórica
  16. 16. Testes OO <ul><li>Processos de SW OO: </li></ul><ul><ul><li>quando concluir uma iteração de AOO, DOO e Testes OO? </li></ul></ul><ul><li>Testes OO para a Lacertae SW </li></ul>

×