SlideShare una empresa de Scribd logo
1 de 66
Engenharia do Software I Manuel Menezes de Sequeira DCTI, ISCTE-IUL Manuel.Sequeira@iscte.pt, D6.02 As apresentações desta série baseiam-se nas apresentações disponibilizadas por IanSommerville, tendo sido alteradas e adaptadas primeiro por  Anders Lyhne Christensen e finalmente por Manuel Menezes de Sequeira.
Na aula anterior Verificação e validação Planeamento da verificação e validação Inspecções de software Análise estática automática Desenvolvimento de software em sala limpa 2009/2010 2 Engenharia do Software I
Testes de software 2009/2010 3 Engenharia do Software I
Sumário Testes de software Teste de sistemas Teste de componentes Desenho de casos de teste Automatização de testes 2009/2010 4 Engenharia do Software I
Objectivos Discutir diferença entre testes de validação e de defeitos Descrever princípios de testes de sistema e de componentes Descrever estratégias para gerar casos de teste para sistemas Compreender características essenciais das ferramentas de automatização de testes 2009/2010 5 Engenharia do Software I
Processo de testes Testes de componentes Teste de componentes individuais do programa Usualmente responsabilidade de desenvolvedor do componente (excepto por vezes em sistemas críticos) Testes derivados da experiência do desenvolvedor Testes de sistema Teste sistemas ou um subsistemas (compostos de componentes) Responsabilidade de equipa de testes independente Testes baseados em especificação do sistema 2009/2010 Engenharia do Software I 6
Fases de teste 2009/2010 7 Engenharia do Software I Testes de componentes Testes de sistemas Desenvolvedor do software Equipa de testes independente
Testes de defeitos Objectivo é descobrir defeitos em programas Teste com sucesso leva programa a comportamento anómalo Mostram presença e não ausência de defeitos 2009/2010 Engenharia do Software I 8
Objectivos do processo de testes Testes de validação Demonstra a desenvolvedor e cliente do sistema que software cumpre requisitos Teste com sucesso mostra que sistema se comporta como pretendido Testes de defeitos Descobre erros ou defeitos no software levando a comportamento incorrecto ou que não corresponde à especificação Teste com sucesso leva sistema a comportar-se incorrectamente, assim expondo um defeito no sistema 2009/2010 Engenharia do Software I 9 Um teste que não descubra erros ou defeitos é inconclusivo.
Processo de testes de software 2009/2010 10 Engenharia do Software I Casos de teste Dados de teste Resultados dos testes Relatórios dos testes Desenhar casos de teste Preparar dados de teste Executar programa com dados de teste Comparar resultado com casos de teste
Políticas de testes Testes exaustivos podem mostrar ausência de defeitos Testes exaustivos geralmente impossíveis Políticas de testes definem abordagem a usar na escolha de testes de sistema Testar todas funcionalidades acessíveis em menus Testar combinações de funcionalidades acedidas no mesmo menu Quando for necessário introduzir dados do utilizador, testar todas funcionalidades com entradas correctas e incorrectas 2009/2010 Engenharia do Software I 11
Testes de sistemas Envolvem integrar componentes de modo a formarem sistema ou subsistema Podem envolver testar incremento a fornecer a cliente 2009/2010 Engenharia do Software I 12
Fases dos testes de sistemas 2009/2010 Engenharia do Software I 13
Testes de integração Envolve Construir sistema a partir de componentes Ir testando para revelar problemas gerados por interacção entre componentes Integração deve ser incremental para simplificar localização de erros 2009/2010 Engenharia do Software I 14
Tipos de integração 2009/2010 Engenharia do Software I 15
Testes de integração incrementais 2009/2010 16 Engenharia do Software I T1 T1 T1 A A A T2 T2 T2 B B B T3 T3 T3 C C T4 T4 D T5 Sequência de testes 3 Sequência de testes 2 Sequência de testes 1
Abordagens aos testes 2009/2010 Engenharia do Software I 17 Descendente Facilita validação arquitectónica, i.e., descoberta de erros na arquitectura do sistema Permite demonstração limitada do sistema mesmo em fases iniciais do desenvolvimento Observação dos testes pode exigir código extra Ascendente Facilita muitas vezes implementação dos testes Observação dos testes pode exigir código extra
Testes de lançamento Processo de teste do lançamento do sistema a fornecer a clientes Objectivo principal: aumentar confiança de fornecedor no cumprimento de requisitos Normalmente de caixa preta ou funcionais Baseados só na especificação do sistema Testadores não conhecem implementação 2009/2010 Engenharia do Software I 18
Testes de caixa preta 2009/2010 19 Engenharia do Software I Dados de entrada do teste Entradas causadoras de anomalias Sistema Resultados de saída do teste Resultados reveladores de defeitos
Linhas de orientação para testes Escolher entradas Gerando todas as mensagens de erro Levando a transbordamentos de memória Repetir várias vezes mesma entrada ou sequência de entradas Forçar geração de saídas inválidas Forçar cálculo de valores além dos limites 2009/2010 Engenharia do Software I 20 Dicas para equipa escolher testes que revelem defeitos no sistema.
Cenário de teste Na Escócia, uma estudante está a estudar a história americana e foi convidada a escrever um artigo sobre a “mentalidade de fronteira no oeste americano de 1840 a 1880”. Para o fazer, precisa de encontrar fontes bibliográficas numa série de bibliotecas. Assim, autentica-se no sistema LIBSYS e usa o mecanismo de pesquisa para descobrir se pode aceder a documentos originais da época. Descobre fontes bibliográficas em várias bibliotecas universitárias dos EUA e descarrega cópias de algumas dessas fontes. No entanto, para um dos documentos é necessário que a sua universidade confirme que ela é realmente estudante e que a fonte será utilizada para fins não comerciais. A estudante usa o mecanismo do LIBSYS que permite solicitar essa autorização e regista o seu pedido. Se o pedido for concedido, o documento será transferido para o servidor da biblioteca e impresso. Ela receberá então uma mensagem do LIBSYS dizendo que irá receber uma mensagem de correio electrónico assim que o documento impresso estiver disponível para recolha. 2009/2010 Engenharia do Software I 21
Testes de sistema Testar mecanismo de autenticação usando credenciais válidas e inválidas para verificar se utilizadores com credenciais válidas são aceites e se utilizadores com credenciais inválidas são rejeitados. Testar mecanismo de pesquisa usando diferentes interrogações a diferentes fontes de informação para verificar se mecanismo de facto encontra documentos. Testar mecanismo de apresentação para verificar se informação é apresentada correctamente. Testar mecanismo de pedido de autorização para descarregamento. Testar resposta via correio electrónico que indica que documento descarregado está disponível. 2009/2010 Engenharia do Software I 22
Casos de uso Podem ser base para obtenção de testes de sistema Ajudam a identificar operações a testar e ajudam a conceber os casos de teste necessários A partir de diagrama de sequência associado, indentificar entradas e saídas a usar nos testes 2009/2010 Engenharia do Software I 23
Diagrama de sequência da recolha de dados meteorológicos 2009/2010 24 Engenharia do Software I sd data collection : CommunicationsController : WeatherStation : WeatherData getReport() acknowledge() getReport() getSummary() acknowledge()
Testes de desempenho Testes de lançamento podem envolver teste a propriedades emergentes Testes de desempenho Testes de fiabilidade Planear série de testes com carga crescente até desempenho ficar inaceitável 2009/2010 Engenharia do Software I 25
Testes de estresse Sujeitam sistema a cargas superiores a máximo previsto tentando revelar defeitos Aferem comportamento em caso de falha Sistema não pode falhar catastroficamente Falhas não podem levar a perdas inaceitáveis de serviço ou dados Muito relevantes para sistemas distribuídos que podem sofre degradação séria perante rede sobrecarregada 2009/2010 Engenharia do Software I 26
Testes de componentes ou testes unitários Processo de testar isoladamente componentes individuais É processo de teste de defeitos 2009/2010 Engenharia do Software I 27
Componentes ou unidades (de modularização) Rotinas Funções e procedimentos isolados Operações de classes e seus objectos Classes e respectivas propriedades e operações Componentes compósitos com interface definida para aceder à sua funcionalidade 2009/2010 Engenharia do Software I 28
Testes de classes (de objectos) Cobertura completa de classe por testes implica Testar todas as operações Alterar e inspeccionar todas as propriedades Fazer objectos passar por todos os estados representativos Fazer objectos passar por todos os possíveis fluxos de controlo Herança dificulta desenho de testes para classes, pois informação está disseminada 2009/2010 Engenharia do Software I 29
Interface de estação meteorológica 2009/2010 30 Engenharia do Software I WeatherStation + reportWeather() + calibrate(instruments) + test() + startup(instruments) + shutdown(instruments)
Teste da estação meteorológica Necessário definir casos de teste para reportWeather() calibrate() test() startup() shutdown() 2009/2010 Engenharia do Software I 31
Teste da estação meteorológica Usando modelo de transição de estados Identificar sequências de transição a testar Identificar sequências de eventos que as causem Exemplo Esperando Calibrando Testando Transmitindo Esperando 2009/2010 Engenharia do Software I 32
Testes de interfaces Detectar anomalias devidas a Erros de interface Suposições inválidas acerca das interfaces Especialmente importantes em desenvolvimento orientado para objectos (classes de objectos definidas pela interface) 2009/2010 Engenharia do Software I 33
Testes de interfaces 2009/2010 34 Engenharia do Software I Casos de teste B A C
Tipos de interfaces 2009/2010 Engenharia do Software I 35
Erros de interface 2009/2010 Engenharia do Software I 36
Linhas de orientação para testes de interface Invocar rotinas com valores extremos dos argumentos Invocar rotinas com argumentos nulos onde parâmetros forem ponteiros ou referências Tentar fazer os componentes falhar Fazer testes de estresse em sistemas com passagem de mensagens Variar ordem de activação de componentes em sistemas com memória partilhada 2009/2010 Engenharia do Software I 37
Desenho de casos de teste Desenho de casos de teste (entradas e saídas) usados para testar sistema Objectivo: criar conjunto de testes eficazes na validação e nos testes de defeitos Abordagens Testes baseados em requisitos Testes de partição Testes estruturais 2009/2010 Engenharia do Software I 38
Testes baseados em requisitos Requisitos têm de ser testáveis Técnica de testes de validação Conjunto de testes derivado para cada requisito 2009/2010 Engenharia do Software I 39 Princípio geral da engenharia de requisitos
Requisitos do LIBSYS 2009/2010 Engenharia do Software I 40
Testes do LIBSYS 2009/2010 Engenharia do Software I 41
Testes de partições Entradas e saídas muitas vezes em diferentes classes cujos membros estão relacionados Cada classe é partição ou domínio de equivalência para cujos membros comportamento do programa é equivalente Devem escolher-se casos de teste em cada partição 2009/2010 Engenharia do Software I 42
Partições de equivalência 2009/2010 43 Engenharia do Software I entradas válidas entradas inválidas Sistema saídas
Partições de equivalência 2009/2010 44 Engenharia do Software I 3 11 4 10 7 Número de entradas Menos de 4 Entre 4 e 10 Mais de 10 9 999 100 000 10 000 99 999 50 000 Valores da entrada Menos de 10 000 Entre 10 000 e 99 999 Mais de 99 999
Especificação de rotina de pesquisa procedure Search(element : inElement_T;     sequence : inarray (Integer range <>) ofElement_T; elementFound : inout Boolean;     index : inout Integer) is with         Pre => -- the sequence has at least one element sequence'FIRST <= sequence'LAST,         Post =>              -- the element is found and is referenced by index             (elementFoundand sequence(index) = element) or             -- the element is not in the sequence             (notelementFoundand not (exists i, sequence'FIRST <= i <= sequence'LAST,                   sequence(i) = element)); 2009/2010 Engenharia do Software I 45 Artificial…
Partição das entradas Entradas Que não cumprem a pré-condição Que cumprem a pré-condição Em que o elemento ocorre na sequência Em que o elemento não ocorre na sequência 2009/2010 Engenharia do Software I 46
Linhas de orientação para testes (sequências) Usar sequências vazias Usar sequências com um único elemento Usar sequências com diferentes comprimentos em diferentes testes Forçar acesso a primeiro elemento, último elemento e elemento central 2009/2010 Engenharia do Software I 47
Partição das entradas 2009/2010 Engenharia do Software I 48
Casos de teste 2009/2010 Engenharia do Software I 49
Testes estruturais Também conhecidos por testes de caixa branca Derivação de casos de teste de acordo com estrutura do programa Conhecimento do programa usado para identificar casos de teste adicionais Objectivo é exercitar todas instruções do programa e não todos possíveis caminhos 2009/2010 Engenharia do Software I 50
Testes estruturais 2009/2010 51 Engenharia do Software I Dados de teste derivar testar Código do componente Resultados do teste
Especificação de rotina de pesquisa binária procedureSearchIncreasing(element : inElement_T;     sequence : inarray (Integer range <>) ofElement_T; elementFound : inout Boolean;     index : inout Integer) is with         Pre => -- the sequence is increasing             (foralli, sequence'FIRST <= i < sequence'LAST,                   sequence(i) <= sequence(i + 1)),         Post =>             -- the element is found and is referenced by index             (elementFoundand sequence(index) = element)  or             -- the element is not in the sequence             (notelementFoundand not (exists i, sequence'FIRST <= i <= sequence'LAST,                   sequence(i) = element)); 2009/2010 Engenharia do Software I 52
Partição das entradas Entradas Que não cumprem a pré-condição Que cumprem a pré-condição Em que o elemento ocorre na sequência Em que o elemento não ocorre na sequência Sequência vazia Sequência com um único elemento Sequência com um número par de elementos Sequência com um número ímpar de elementos 2009/2010 Engenharia do Software I 53
Partições de equivalência 2009/2010 54 Engenharia do Software I Centro Primeiro Último Centro + 1 Centro - 1 Inferiores Superiores Classes de equivalência
Casos de teste 2009/2010 Engenharia do Software I 55
Teste de caminhos Objectivo: assegurar que conjunto de casos de teste garante que cada caminho é executado pelo menos uma vez Começar por obter grafo de fluxo do programa mostrando nós representando decisões do programa e arcos representando o fluxo de controlo Instruções com condições são por isso nós do grafo de fluxo de controlo 2009/2010 Engenharia do Software I 56
Implementação da pesquisa binária public <T extends Comparable<T>>  void search(final T element, final List<T> sequence) {	  1     indexOfFoundElement = -1;  2     found = false;  3     int left = 0;  4     int right = sequence.size() - 1;  5     while(left <= right) {  6         final int middle = (left + right) / 2;  7         int comparison = sequence.get(middle).compareTo(element);  8         if(comparison == 0) {  9             found = true; 10             indexOfFoundElement = middle; 11             return; 12         } else if(comparison < 0) 13             left = middle + 1;         else 14             right = middle - 1;     } 15 } 2009/2010 Engenharia do Software I 57
Grafo de fluxo da pesquisa binária 2009/2010 58 Engenharia do Software I 1 2 3 4 left > right 5 left <= right 6 comparison < 0 7 13 comparison == 0 comparison != 0 8 9 12 14 10 comparison > 0 11 15
Caminhos independentes 2009/2010 59 Engenharia do Software I 1 1 1, 2, 3, 4, 5, 15 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 1, 2, 3, 4, 5, 6, 7, 8, 12, 13, 5, … 1, 2, 3, 4, 5, 6, 7, 8, 12, 14, 5, … 2 2 3 3 4 4 left > right 5 5 left <= right 6 6 comparison < 0 7 7 13 13 comparison == 0 comparison != 0 8 9 12 8 9 12 14 14 10 comparison > 0 10 11 15 11 15
Caminhos independentes Desenvolver casos de teste que levem a execução de cada um dos caminhos Um analisador dinâmico de programas pode ser usado para verificar que todos os caminhos foram executados 2009/2010 Engenharia do Software I 60
Automatização de testes Testar é caro Bancadas de trabalho para testes ajudam a automatizar o processo Bancadas de trabalho para testes Ferramentas para poupar tempo e custo dos testes Sistemas como JUnit suportam execução automática de testes Maioria são sistemas abertos, assim suportando especificidades das organizações Por vezes difíceis de integrar com bancadas de trabalho fechadas para desenho e análise 2009/2010 Engenharia do Software I 61
Uma bancada de trabalho para testes 2009/2010 62 Engenharia do Software I Gerador de dados de teste Especificação Oráculo Dados de teste Gestor de testes Código fonte Programa em teste Resultados dos testes Previsões dos testes Analisador dinâmico Relatório de execução Simulador Comparador de ficheiros Relatório dos resultados dos testes Gerador de relatórios
Adaptação da bancada de trabalho para testes Scripts para simuladores de interfaces com o utilizador e padrões para geradores de dados Preparação manual de saídas dos testes para posterior comparação Desenvolvimento de comparadores de ficheiros especializados 2009/2010 Engenharia do Software I 63
A reter Testes Revelam erros em sistema Não demonstram ausência de erros De componentes: desenvolvedores De sistema: outra equipa De integração: incrementos a sistema De lançamento: sistema a fornecer Desenhados recorrendo a experiência e linhas de orientação 2009/2010 Engenharia do Software I 64
A reter Testes de interface revelam defeitos em interfaces de componentes compósitos Partições de equivalência para descobrir casos de teste – casos em partição têm comportamento equivalente Análise estrutural analisa programa e deriva casos de teste Automatização de testes reduz custos através de múltiplas ferramentas software 2009/2010 Engenharia do Software I 65
A ler IanSommerville, Software Engineering, 8.ª edição, Addison-Wesley, 2006 Capítulo 23 2009/2010 Engenharia do Software I 66

Más contenido relacionado

La actualidad más candente

Introdução a Testes Automatizados
Introdução a Testes AutomatizadosIntrodução a Testes Automatizados
Introdução a Testes Automatizados
elliando dias
 
Tecnicas Para Planejamento E Execucao De Testes De Software
Tecnicas Para Planejamento E Execucao De Testes De SoftwareTecnicas Para Planejamento E Execucao De Testes De Software
Tecnicas Para Planejamento E Execucao De Testes De Software
marthahuback
 
Engenharia Requisitos - Aula4 06 03 2006
Engenharia Requisitos - Aula4 06 03 2006Engenharia Requisitos - Aula4 06 03 2006
Engenharia Requisitos - Aula4 06 03 2006
Luís Fernando Richter
 
Gerenciamento de projetos aula 7 (custos)
Gerenciamento de projetos   aula 7 (custos)Gerenciamento de projetos   aula 7 (custos)
Gerenciamento de projetos aula 7 (custos)
Paulo Junior
 
Testes De Software - Uma Visão Geral
Testes De Software - Uma Visão GeralTestes De Software - Uma Visão Geral
Testes De Software - Uma Visão Geral
paulo peres
 

La actualidad más candente (20)

Qualidade de Software: Teste de software
Qualidade de Software: Teste de softwareQualidade de Software: Teste de software
Qualidade de Software: Teste de software
 
Arquitetura básica de testes para seu projeto Java
Arquitetura básica de testes para seu projeto JavaArquitetura básica de testes para seu projeto Java
Arquitetura básica de testes para seu projeto Java
 
Workshop Agile Testing Mindset
Workshop Agile Testing MindsetWorkshop Agile Testing Mindset
Workshop Agile Testing Mindset
 
Aula01 Gerência de Projetos - Conceitos e áreas de conhecimento do PMBOK
Aula01 Gerência de Projetos - Conceitos e áreas de conhecimento do PMBOKAula01 Gerência de Projetos - Conceitos e áreas de conhecimento do PMBOK
Aula01 Gerência de Projetos - Conceitos e áreas de conhecimento do PMBOK
 
Introdução a Testes Automatizados
Introdução a Testes AutomatizadosIntrodução a Testes Automatizados
Introdução a Testes Automatizados
 
Avaliação Heurística
Avaliação HeurísticaAvaliação Heurística
Avaliação Heurística
 
Gerenciamento da Qualidade em Projetos
Gerenciamento da Qualidade em ProjetosGerenciamento da Qualidade em Projetos
Gerenciamento da Qualidade em Projetos
 
Apresentação da UML
Apresentação da UMLApresentação da UML
Apresentação da UML
 
Modelos e etapas do processo de software.pdf
Modelos e etapas do processo de software.pdfModelos e etapas do processo de software.pdf
Modelos e etapas do processo de software.pdf
 
Tecnicas Para Planejamento E Execucao De Testes De Software
Tecnicas Para Planejamento E Execucao De Testes De SoftwareTecnicas Para Planejamento E Execucao De Testes De Software
Tecnicas Para Planejamento E Execucao De Testes De Software
 
Es capítulo 5 - modelagem de sistemas
Es   capítulo 5  - modelagem de sistemasEs   capítulo 5  - modelagem de sistemas
Es capítulo 5 - modelagem de sistemas
 
Aula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de SoftwareAula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de Software
 
Engenharia Requisitos - Aula4 06 03 2006
Engenharia Requisitos - Aula4 06 03 2006Engenharia Requisitos - Aula4 06 03 2006
Engenharia Requisitos - Aula4 06 03 2006
 
Introdução à Qualidade e Testes Ágeis de Software
Introdução à Qualidade e Testes Ágeis de SoftwareIntrodução à Qualidade e Testes Ágeis de Software
Introdução à Qualidade e Testes Ágeis de Software
 
Gerenciamento de projetos aula 7 (custos)
Gerenciamento de projetos   aula 7 (custos)Gerenciamento de projetos   aula 7 (custos)
Gerenciamento de projetos aula 7 (custos)
 
Usabilidade aula-01 Introdução
Usabilidade aula-01 IntroduçãoUsabilidade aula-01 Introdução
Usabilidade aula-01 Introdução
 
Apostila Fundamentos do Gerenciamento de Projetos
Apostila Fundamentos do Gerenciamento de ProjetosApostila Fundamentos do Gerenciamento de Projetos
Apostila Fundamentos do Gerenciamento de Projetos
 
Testes em métodos ágeis
Testes em métodos ágeisTestes em métodos ágeis
Testes em métodos ágeis
 
Testes De Software - Uma Visão Geral
Testes De Software - Uma Visão GeralTestes De Software - Uma Visão Geral
Testes De Software - Uma Visão Geral
 
Mini curso de testes ágeis
Mini curso de testes ágeisMini curso de testes ágeis
Mini curso de testes ágeis
 

Destacado

Doenças má alimentação
Doenças má alimentaçãoDoenças má alimentação
Doenças má alimentação
Maria Sequeira
 
Livro curso de_hacker_para_iniciantes_cap_1
Livro curso de_hacker_para_iniciantes_cap_1Livro curso de_hacker_para_iniciantes_cap_1
Livro curso de_hacker_para_iniciantes_cap_1
Alax Ricard
 
Apostila emi musica
Apostila emi musicaApostila emi musica
Apostila emi musica
Elvis Live
 

Destacado (20)

Parte Especial Verb To Be
Parte Especial Verb To BeParte Especial Verb To Be
Parte Especial Verb To Be
 
Plano de estudo para Guitarristas
Plano de estudo para GuitarristasPlano de estudo para Guitarristas
Plano de estudo para Guitarristas
 
Mídias Sociais e Inteligência de Marketing
Mídias Sociais e Inteligência de MarketingMídias Sociais e Inteligência de Marketing
Mídias Sociais e Inteligência de Marketing
 
Doenças má alimentação
Doenças má alimentaçãoDoenças má alimentação
Doenças má alimentação
 
Apostila
ApostilaApostila
Apostila
 
Programação Android - Básico
Programação Android - BásicoProgramação Android - Básico
Programação Android - Básico
 
Dicas para programador web
Dicas para programador webDicas para programador web
Dicas para programador web
 
Aula de violão para iniciantes
Aula de violão para iniciantesAula de violão para iniciantes
Aula de violão para iniciantes
 
CURSO DE PHP PARA INICIANTES - AULA 1
CURSO DE PHP PARA INICIANTES - AULA 1CURSO DE PHP PARA INICIANTES - AULA 1
CURSO DE PHP PARA INICIANTES - AULA 1
 
Windows xp
Windows xpWindows xp
Windows xp
 
Apostila Arduino - Núcleo de Estudos em Robótica SheepSet
Apostila Arduino - Núcleo de Estudos em Robótica SheepSetApostila Arduino - Núcleo de Estudos em Robótica SheepSet
Apostila Arduino - Núcleo de Estudos em Robótica SheepSet
 
Apostila Arduino - FBS Eletrônica
Apostila Arduino - FBS EletrônicaApostila Arduino - FBS Eletrônica
Apostila Arduino - FBS Eletrônica
 
Arduino introdução - 10 projectos
Arduino   introdução - 10 projectosArduino   introdução - 10 projectos
Arduino introdução - 10 projectos
 
Livro curso de_hacker_para_iniciantes_cap_1
Livro curso de_hacker_para_iniciantes_cap_1Livro curso de_hacker_para_iniciantes_cap_1
Livro curso de_hacker_para_iniciantes_cap_1
 
Apostila emi musica
Apostila emi musicaApostila emi musica
Apostila emi musica
 
Guia otimizacao para Mecanismos de Pesquisa
Guia otimizacao para Mecanismos de PesquisaGuia otimizacao para Mecanismos de Pesquisa
Guia otimizacao para Mecanismos de Pesquisa
 
Apostila para hackers iniciantes
Apostila para hackers iniciantesApostila para hackers iniciantes
Apostila para hackers iniciantes
 
Bactérias utilizadas na produção de alimentos
Bactérias utilizadas na produção de alimentosBactérias utilizadas na produção de alimentos
Bactérias utilizadas na produção de alimentos
 
Notas de violão para iniciantes
Notas de violão para iniciantesNotas de violão para iniciantes
Notas de violão para iniciantes
 
Hotelaria plan e gestão cap 3
Hotelaria plan e gestão cap 3Hotelaria plan e gestão cap 3
Hotelaria plan e gestão cap 3
 

Similar a Eng.ª do Software - 10. Testes de software

Engenharia de Testes
Engenharia de TestesEngenharia de Testes
Engenharia de Testes
UFPA
 
Introdução a testes automatizados
Introdução a testes automatizadosIntrodução a testes automatizados
Introdução a testes automatizados
Thiago Ghisi
 

Similar a Eng.ª do Software - 10. Testes de software (20)

Eng.ª do Software - 9. Verificação e validação
Eng.ª do Software - 9. Verificação e validaçãoEng.ª do Software - 9. Verificação e validação
Eng.ª do Software - 9. Verificação e validação
 
Mini aula de teste de software
Mini aula de teste de softwareMini aula de teste de software
Mini aula de teste de software
 
Aula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdfAula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdf
 
Engenharia de Testes
Engenharia de TestesEngenharia de Testes
Engenharia de Testes
 
O que é Teste de Software?
O que é Teste de Software?O que é Teste de Software?
O que é Teste de Software?
 
Aula12 T EES UFS Testes de SW
Aula12  T EES  UFS  Testes de SWAula12  T EES  UFS  Testes de SW
Aula12 T EES UFS Testes de SW
 
Aula12 TEES UFS Testes de SW
Aula12 TEES UFS Testes de SWAula12 TEES UFS Testes de SW
Aula12 TEES UFS Testes de SW
 
Introdução a Automação de Teste de Software
Introdução a Automação de Teste de SoftwareIntrodução a Automação de Teste de Software
Introdução a Automação de Teste de Software
 
Testes de Software.ppt
Testes de Software.pptTestes de Software.ppt
Testes de Software.ppt
 
ybr789try
ybr789tryybr789try
ybr789try
 
Testes de software
Testes de softwareTestes de software
Testes de software
 
Introdução a testes automatizados
Introdução a testes automatizadosIntrodução a testes automatizados
Introdução a testes automatizados
 
Testes Funcionais
Testes FuncionaisTestes Funcionais
Testes Funcionais
 
Gerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptx
 
Fundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline ZaninFundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline Zanin
 
Casos teste integração efetiva de algumas unidades
Casos teste integração efetiva de algumas unidades Casos teste integração efetiva de algumas unidades
Casos teste integração efetiva de algumas unidades
 
4 engenharia de software
4   engenharia de software4   engenharia de software
4 engenharia de software
 
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
SLIDEPRELIMINAR.pptx
SLIDEPRELIMINAR.pptxSLIDEPRELIMINAR.pptx
SLIDEPRELIMINAR.pptx
 

Más de Manuel Menezes de Sequeira

Más de Manuel Menezes de Sequeira (20)

14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
 
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
 
11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...
11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...
11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...
 
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
 
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
 
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...
 
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
 
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
 
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
 
4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação
 
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
 
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
 
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...
 
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
 
Semana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instânciasSemana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
 
Semana 9: toString, classes, instâncias e objectos, Scanner
Semana  9: toString, classes, instâncias e objectos, ScannerSemana  9: toString, classes, instâncias e objectos, Scanner
Semana 9: toString, classes, instâncias e objectos, Scanner
 
Semana 8: Classes e instâncias, cadeias de caracteres
Semana  8: Classes e instâncias, cadeias de caracteresSemana  8: Classes e instâncias, cadeias de caracteres
Semana 8: Classes e instâncias, cadeias de caracteres
 
Semana 6: Matrizes multidimensionais, estratégias de resolução de problemas
Semana  6: Matrizes multidimensionais, estratégias de resolução de problemasSemana  6: Matrizes multidimensionais, estratégias de resolução de problemas
Semana 6: Matrizes multidimensionais, estratégias de resolução de problemas
 
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referênciaSemana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
 
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana  4: Atribuições especiais, matrizes, ciclos, classes pacoteSemana  4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
 

Último

PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
HELENO FAVACHO
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
AntonioVieira539017
 
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfGEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
RavenaSales1
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
LeloIurk1
 

Último (20)

Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º ano
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéis
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
 
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
 
Aula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIXAula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIX
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
 
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para criançasJogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
 
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfGEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
Seminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptxSeminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptx
 
Modelo de Plano Plano semanal Educação Infantil 5 anossemanal Educação Infant...
Modelo de Plano Plano semanal Educação Infantil 5 anossemanal Educação Infant...Modelo de Plano Plano semanal Educação Infantil 5 anossemanal Educação Infant...
Modelo de Plano Plano semanal Educação Infantil 5 anossemanal Educação Infant...
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
 

Eng.ª do Software - 10. Testes de software

  • 1. Engenharia do Software I Manuel Menezes de Sequeira DCTI, ISCTE-IUL Manuel.Sequeira@iscte.pt, D6.02 As apresentações desta série baseiam-se nas apresentações disponibilizadas por IanSommerville, tendo sido alteradas e adaptadas primeiro por  Anders Lyhne Christensen e finalmente por Manuel Menezes de Sequeira.
  • 2. Na aula anterior Verificação e validação Planeamento da verificação e validação Inspecções de software Análise estática automática Desenvolvimento de software em sala limpa 2009/2010 2 Engenharia do Software I
  • 3. Testes de software 2009/2010 3 Engenharia do Software I
  • 4. Sumário Testes de software Teste de sistemas Teste de componentes Desenho de casos de teste Automatização de testes 2009/2010 4 Engenharia do Software I
  • 5. Objectivos Discutir diferença entre testes de validação e de defeitos Descrever princípios de testes de sistema e de componentes Descrever estratégias para gerar casos de teste para sistemas Compreender características essenciais das ferramentas de automatização de testes 2009/2010 5 Engenharia do Software I
  • 6. Processo de testes Testes de componentes Teste de componentes individuais do programa Usualmente responsabilidade de desenvolvedor do componente (excepto por vezes em sistemas críticos) Testes derivados da experiência do desenvolvedor Testes de sistema Teste sistemas ou um subsistemas (compostos de componentes) Responsabilidade de equipa de testes independente Testes baseados em especificação do sistema 2009/2010 Engenharia do Software I 6
  • 7. Fases de teste 2009/2010 7 Engenharia do Software I Testes de componentes Testes de sistemas Desenvolvedor do software Equipa de testes independente
  • 8. Testes de defeitos Objectivo é descobrir defeitos em programas Teste com sucesso leva programa a comportamento anómalo Mostram presença e não ausência de defeitos 2009/2010 Engenharia do Software I 8
  • 9. Objectivos do processo de testes Testes de validação Demonstra a desenvolvedor e cliente do sistema que software cumpre requisitos Teste com sucesso mostra que sistema se comporta como pretendido Testes de defeitos Descobre erros ou defeitos no software levando a comportamento incorrecto ou que não corresponde à especificação Teste com sucesso leva sistema a comportar-se incorrectamente, assim expondo um defeito no sistema 2009/2010 Engenharia do Software I 9 Um teste que não descubra erros ou defeitos é inconclusivo.
  • 10. Processo de testes de software 2009/2010 10 Engenharia do Software I Casos de teste Dados de teste Resultados dos testes Relatórios dos testes Desenhar casos de teste Preparar dados de teste Executar programa com dados de teste Comparar resultado com casos de teste
  • 11. Políticas de testes Testes exaustivos podem mostrar ausência de defeitos Testes exaustivos geralmente impossíveis Políticas de testes definem abordagem a usar na escolha de testes de sistema Testar todas funcionalidades acessíveis em menus Testar combinações de funcionalidades acedidas no mesmo menu Quando for necessário introduzir dados do utilizador, testar todas funcionalidades com entradas correctas e incorrectas 2009/2010 Engenharia do Software I 11
  • 12. Testes de sistemas Envolvem integrar componentes de modo a formarem sistema ou subsistema Podem envolver testar incremento a fornecer a cliente 2009/2010 Engenharia do Software I 12
  • 13. Fases dos testes de sistemas 2009/2010 Engenharia do Software I 13
  • 14. Testes de integração Envolve Construir sistema a partir de componentes Ir testando para revelar problemas gerados por interacção entre componentes Integração deve ser incremental para simplificar localização de erros 2009/2010 Engenharia do Software I 14
  • 15. Tipos de integração 2009/2010 Engenharia do Software I 15
  • 16. Testes de integração incrementais 2009/2010 16 Engenharia do Software I T1 T1 T1 A A A T2 T2 T2 B B B T3 T3 T3 C C T4 T4 D T5 Sequência de testes 3 Sequência de testes 2 Sequência de testes 1
  • 17. Abordagens aos testes 2009/2010 Engenharia do Software I 17 Descendente Facilita validação arquitectónica, i.e., descoberta de erros na arquitectura do sistema Permite demonstração limitada do sistema mesmo em fases iniciais do desenvolvimento Observação dos testes pode exigir código extra Ascendente Facilita muitas vezes implementação dos testes Observação dos testes pode exigir código extra
  • 18. Testes de lançamento Processo de teste do lançamento do sistema a fornecer a clientes Objectivo principal: aumentar confiança de fornecedor no cumprimento de requisitos Normalmente de caixa preta ou funcionais Baseados só na especificação do sistema Testadores não conhecem implementação 2009/2010 Engenharia do Software I 18
  • 19. Testes de caixa preta 2009/2010 19 Engenharia do Software I Dados de entrada do teste Entradas causadoras de anomalias Sistema Resultados de saída do teste Resultados reveladores de defeitos
  • 20. Linhas de orientação para testes Escolher entradas Gerando todas as mensagens de erro Levando a transbordamentos de memória Repetir várias vezes mesma entrada ou sequência de entradas Forçar geração de saídas inválidas Forçar cálculo de valores além dos limites 2009/2010 Engenharia do Software I 20 Dicas para equipa escolher testes que revelem defeitos no sistema.
  • 21. Cenário de teste Na Escócia, uma estudante está a estudar a história americana e foi convidada a escrever um artigo sobre a “mentalidade de fronteira no oeste americano de 1840 a 1880”. Para o fazer, precisa de encontrar fontes bibliográficas numa série de bibliotecas. Assim, autentica-se no sistema LIBSYS e usa o mecanismo de pesquisa para descobrir se pode aceder a documentos originais da época. Descobre fontes bibliográficas em várias bibliotecas universitárias dos EUA e descarrega cópias de algumas dessas fontes. No entanto, para um dos documentos é necessário que a sua universidade confirme que ela é realmente estudante e que a fonte será utilizada para fins não comerciais. A estudante usa o mecanismo do LIBSYS que permite solicitar essa autorização e regista o seu pedido. Se o pedido for concedido, o documento será transferido para o servidor da biblioteca e impresso. Ela receberá então uma mensagem do LIBSYS dizendo que irá receber uma mensagem de correio electrónico assim que o documento impresso estiver disponível para recolha. 2009/2010 Engenharia do Software I 21
  • 22. Testes de sistema Testar mecanismo de autenticação usando credenciais válidas e inválidas para verificar se utilizadores com credenciais válidas são aceites e se utilizadores com credenciais inválidas são rejeitados. Testar mecanismo de pesquisa usando diferentes interrogações a diferentes fontes de informação para verificar se mecanismo de facto encontra documentos. Testar mecanismo de apresentação para verificar se informação é apresentada correctamente. Testar mecanismo de pedido de autorização para descarregamento. Testar resposta via correio electrónico que indica que documento descarregado está disponível. 2009/2010 Engenharia do Software I 22
  • 23. Casos de uso Podem ser base para obtenção de testes de sistema Ajudam a identificar operações a testar e ajudam a conceber os casos de teste necessários A partir de diagrama de sequência associado, indentificar entradas e saídas a usar nos testes 2009/2010 Engenharia do Software I 23
  • 24. Diagrama de sequência da recolha de dados meteorológicos 2009/2010 24 Engenharia do Software I sd data collection : CommunicationsController : WeatherStation : WeatherData getReport() acknowledge() getReport() getSummary() acknowledge()
  • 25. Testes de desempenho Testes de lançamento podem envolver teste a propriedades emergentes Testes de desempenho Testes de fiabilidade Planear série de testes com carga crescente até desempenho ficar inaceitável 2009/2010 Engenharia do Software I 25
  • 26. Testes de estresse Sujeitam sistema a cargas superiores a máximo previsto tentando revelar defeitos Aferem comportamento em caso de falha Sistema não pode falhar catastroficamente Falhas não podem levar a perdas inaceitáveis de serviço ou dados Muito relevantes para sistemas distribuídos que podem sofre degradação séria perante rede sobrecarregada 2009/2010 Engenharia do Software I 26
  • 27. Testes de componentes ou testes unitários Processo de testar isoladamente componentes individuais É processo de teste de defeitos 2009/2010 Engenharia do Software I 27
  • 28. Componentes ou unidades (de modularização) Rotinas Funções e procedimentos isolados Operações de classes e seus objectos Classes e respectivas propriedades e operações Componentes compósitos com interface definida para aceder à sua funcionalidade 2009/2010 Engenharia do Software I 28
  • 29. Testes de classes (de objectos) Cobertura completa de classe por testes implica Testar todas as operações Alterar e inspeccionar todas as propriedades Fazer objectos passar por todos os estados representativos Fazer objectos passar por todos os possíveis fluxos de controlo Herança dificulta desenho de testes para classes, pois informação está disseminada 2009/2010 Engenharia do Software I 29
  • 30. Interface de estação meteorológica 2009/2010 30 Engenharia do Software I WeatherStation + reportWeather() + calibrate(instruments) + test() + startup(instruments) + shutdown(instruments)
  • 31. Teste da estação meteorológica Necessário definir casos de teste para reportWeather() calibrate() test() startup() shutdown() 2009/2010 Engenharia do Software I 31
  • 32. Teste da estação meteorológica Usando modelo de transição de estados Identificar sequências de transição a testar Identificar sequências de eventos que as causem Exemplo Esperando Calibrando Testando Transmitindo Esperando 2009/2010 Engenharia do Software I 32
  • 33. Testes de interfaces Detectar anomalias devidas a Erros de interface Suposições inválidas acerca das interfaces Especialmente importantes em desenvolvimento orientado para objectos (classes de objectos definidas pela interface) 2009/2010 Engenharia do Software I 33
  • 34. Testes de interfaces 2009/2010 34 Engenharia do Software I Casos de teste B A C
  • 35. Tipos de interfaces 2009/2010 Engenharia do Software I 35
  • 36. Erros de interface 2009/2010 Engenharia do Software I 36
  • 37. Linhas de orientação para testes de interface Invocar rotinas com valores extremos dos argumentos Invocar rotinas com argumentos nulos onde parâmetros forem ponteiros ou referências Tentar fazer os componentes falhar Fazer testes de estresse em sistemas com passagem de mensagens Variar ordem de activação de componentes em sistemas com memória partilhada 2009/2010 Engenharia do Software I 37
  • 38. Desenho de casos de teste Desenho de casos de teste (entradas e saídas) usados para testar sistema Objectivo: criar conjunto de testes eficazes na validação e nos testes de defeitos Abordagens Testes baseados em requisitos Testes de partição Testes estruturais 2009/2010 Engenharia do Software I 38
  • 39. Testes baseados em requisitos Requisitos têm de ser testáveis Técnica de testes de validação Conjunto de testes derivado para cada requisito 2009/2010 Engenharia do Software I 39 Princípio geral da engenharia de requisitos
  • 40. Requisitos do LIBSYS 2009/2010 Engenharia do Software I 40
  • 41. Testes do LIBSYS 2009/2010 Engenharia do Software I 41
  • 42. Testes de partições Entradas e saídas muitas vezes em diferentes classes cujos membros estão relacionados Cada classe é partição ou domínio de equivalência para cujos membros comportamento do programa é equivalente Devem escolher-se casos de teste em cada partição 2009/2010 Engenharia do Software I 42
  • 43. Partições de equivalência 2009/2010 43 Engenharia do Software I entradas válidas entradas inválidas Sistema saídas
  • 44. Partições de equivalência 2009/2010 44 Engenharia do Software I 3 11 4 10 7 Número de entradas Menos de 4 Entre 4 e 10 Mais de 10 9 999 100 000 10 000 99 999 50 000 Valores da entrada Menos de 10 000 Entre 10 000 e 99 999 Mais de 99 999
  • 45. Especificação de rotina de pesquisa procedure Search(element : inElement_T; sequence : inarray (Integer range <>) ofElement_T; elementFound : inout Boolean; index : inout Integer) is with Pre => -- the sequence has at least one element sequence'FIRST <= sequence'LAST, Post => -- the element is found and is referenced by index (elementFoundand sequence(index) = element) or -- the element is not in the sequence (notelementFoundand not (exists i, sequence'FIRST <= i <= sequence'LAST, sequence(i) = element)); 2009/2010 Engenharia do Software I 45 Artificial…
  • 46. Partição das entradas Entradas Que não cumprem a pré-condição Que cumprem a pré-condição Em que o elemento ocorre na sequência Em que o elemento não ocorre na sequência 2009/2010 Engenharia do Software I 46
  • 47. Linhas de orientação para testes (sequências) Usar sequências vazias Usar sequências com um único elemento Usar sequências com diferentes comprimentos em diferentes testes Forçar acesso a primeiro elemento, último elemento e elemento central 2009/2010 Engenharia do Software I 47
  • 48. Partição das entradas 2009/2010 Engenharia do Software I 48
  • 49. Casos de teste 2009/2010 Engenharia do Software I 49
  • 50. Testes estruturais Também conhecidos por testes de caixa branca Derivação de casos de teste de acordo com estrutura do programa Conhecimento do programa usado para identificar casos de teste adicionais Objectivo é exercitar todas instruções do programa e não todos possíveis caminhos 2009/2010 Engenharia do Software I 50
  • 51. Testes estruturais 2009/2010 51 Engenharia do Software I Dados de teste derivar testar Código do componente Resultados do teste
  • 52. Especificação de rotina de pesquisa binária procedureSearchIncreasing(element : inElement_T; sequence : inarray (Integer range <>) ofElement_T; elementFound : inout Boolean; index : inout Integer) is with Pre => -- the sequence is increasing (foralli, sequence'FIRST <= i < sequence'LAST, sequence(i) <= sequence(i + 1)), Post => -- the element is found and is referenced by index (elementFoundand sequence(index) = element) or -- the element is not in the sequence (notelementFoundand not (exists i, sequence'FIRST <= i <= sequence'LAST, sequence(i) = element)); 2009/2010 Engenharia do Software I 52
  • 53. Partição das entradas Entradas Que não cumprem a pré-condição Que cumprem a pré-condição Em que o elemento ocorre na sequência Em que o elemento não ocorre na sequência Sequência vazia Sequência com um único elemento Sequência com um número par de elementos Sequência com um número ímpar de elementos 2009/2010 Engenharia do Software I 53
  • 54. Partições de equivalência 2009/2010 54 Engenharia do Software I Centro Primeiro Último Centro + 1 Centro - 1 Inferiores Superiores Classes de equivalência
  • 55. Casos de teste 2009/2010 Engenharia do Software I 55
  • 56. Teste de caminhos Objectivo: assegurar que conjunto de casos de teste garante que cada caminho é executado pelo menos uma vez Começar por obter grafo de fluxo do programa mostrando nós representando decisões do programa e arcos representando o fluxo de controlo Instruções com condições são por isso nós do grafo de fluxo de controlo 2009/2010 Engenharia do Software I 56
  • 57. Implementação da pesquisa binária public <T extends Comparable<T>> void search(final T element, final List<T> sequence) { 1 indexOfFoundElement = -1; 2 found = false; 3 int left = 0; 4 int right = sequence.size() - 1; 5 while(left <= right) { 6 final int middle = (left + right) / 2; 7 int comparison = sequence.get(middle).compareTo(element); 8 if(comparison == 0) { 9 found = true; 10 indexOfFoundElement = middle; 11 return; 12 } else if(comparison < 0) 13 left = middle + 1; else 14 right = middle - 1; } 15 } 2009/2010 Engenharia do Software I 57
  • 58. Grafo de fluxo da pesquisa binária 2009/2010 58 Engenharia do Software I 1 2 3 4 left > right 5 left <= right 6 comparison < 0 7 13 comparison == 0 comparison != 0 8 9 12 14 10 comparison > 0 11 15
  • 59. Caminhos independentes 2009/2010 59 Engenharia do Software I 1 1 1, 2, 3, 4, 5, 15 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 1, 2, 3, 4, 5, 6, 7, 8, 12, 13, 5, … 1, 2, 3, 4, 5, 6, 7, 8, 12, 14, 5, … 2 2 3 3 4 4 left > right 5 5 left <= right 6 6 comparison < 0 7 7 13 13 comparison == 0 comparison != 0 8 9 12 8 9 12 14 14 10 comparison > 0 10 11 15 11 15
  • 60. Caminhos independentes Desenvolver casos de teste que levem a execução de cada um dos caminhos Um analisador dinâmico de programas pode ser usado para verificar que todos os caminhos foram executados 2009/2010 Engenharia do Software I 60
  • 61. Automatização de testes Testar é caro Bancadas de trabalho para testes ajudam a automatizar o processo Bancadas de trabalho para testes Ferramentas para poupar tempo e custo dos testes Sistemas como JUnit suportam execução automática de testes Maioria são sistemas abertos, assim suportando especificidades das organizações Por vezes difíceis de integrar com bancadas de trabalho fechadas para desenho e análise 2009/2010 Engenharia do Software I 61
  • 62. Uma bancada de trabalho para testes 2009/2010 62 Engenharia do Software I Gerador de dados de teste Especificação Oráculo Dados de teste Gestor de testes Código fonte Programa em teste Resultados dos testes Previsões dos testes Analisador dinâmico Relatório de execução Simulador Comparador de ficheiros Relatório dos resultados dos testes Gerador de relatórios
  • 63. Adaptação da bancada de trabalho para testes Scripts para simuladores de interfaces com o utilizador e padrões para geradores de dados Preparação manual de saídas dos testes para posterior comparação Desenvolvimento de comparadores de ficheiros especializados 2009/2010 Engenharia do Software I 63
  • 64. A reter Testes Revelam erros em sistema Não demonstram ausência de erros De componentes: desenvolvedores De sistema: outra equipa De integração: incrementos a sistema De lançamento: sistema a fornecer Desenhados recorrendo a experiência e linhas de orientação 2009/2010 Engenharia do Software I 64
  • 65. A reter Testes de interface revelam defeitos em interfaces de componentes compósitos Partições de equivalência para descobrir casos de teste – casos em partição têm comportamento equivalente Análise estrutural analisa programa e deriva casos de teste Automatização de testes reduz custos através de múltiplas ferramentas software 2009/2010 Engenharia do Software I 65
  • 66. A ler IanSommerville, Software Engineering, 8.ª edição, Addison-Wesley, 2006 Capítulo 23 2009/2010 Engenharia do Software I 66