Critérios de adequação e os diversos tipos de teste

Slides:



Advertisements
Apresentações semelhantes
Boas Práticas Adotadas em um Projeto de Design de Testes – Um relato de experiência
Advertisements

Introdução a Algoritmos
Metodologia de testes Nome: Gustavo G. Quintão
Adélia Barros Testes de Software Adélia Barros
Métodos, Parâmetros, Argumentos e Contratos
Fundamentos de Engenharia de SW
Engenharia de Software
Técnicas de Teste de Software
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO ENGENHARIA DE SOFTWARE Métricas de Software Prof.ª Adriana dos Santos Caparróz Carvalho.
Teste de Software.
Testando o sistema Teste funcional: o sistema integrado realiza as funções especificadas nos requisitos? Teste de desempenho: os requisitos não-funcionais.
Tópicos Motivação para teste Por que algumas empresas não testam
Teste de software Professor: Sílder Lamas Vecchi.
Teste de Software Parte 3.
Mutação de Interface Interface Mutation: An Approach for Integration Testing Marcio E. Delamaro José C. Maldonado Aditya P. Mathur.
Confiabilidade e Segurança MO828 – Eng. Software II Prof
Singleton.
Técnicas de Teste de Software
TIPOS DE TESTES APLICÁVEIS E NÃO APLICÁVEIS AO PROJETO
TSDD Teste de segurança durante o desenvolvimento.
Testes – visão geral Vanilson Burégio.
Paradigmas de programação
Escopo do teste.
Introdução aos conceitos de Teste de Software
REDUNDÂNCIA POR SOFTWARE
Introdução a Computação Trabalho Final PUC Minas – São gabriel
Prof. Esp. Fernando Barreto
Um Framework Para Testes
Teste de Sistemas de Software
Aspect Oriented Programming (AOP)
TESTES DE SOFTWARE Qualidade de software Professores: Juliano Bedin Juliano Bedin Sara Priscila Dutkwicz Leandro Bovi.
Marcio de Carvalho Victorino Processo Unificado. Unidade VI: Teste.
Estruturas de Dados Aula 8: Tipos Abstratos de Dados 30/04/2014.
O que é? É o processo de investigação técnica com intuito de identificar a qualidade, a segurança e a exatidão do software desenvolvido. A validação do.
Introdução a Teste de Software
GERENCIAMENTO DE PROJETOS DE T.I
Teste de Software. Sumário Introdução a Teste de Software; Verificação x Validação; Processo de Teste de Software; Suíte de Teste.
Automação de Testes de Software
Estruturas de Dados I Segundo Período de 2008 Gabarito da Primeira Prova.
Teste baseado em falhas
SCORE 2009 – aula a convite do Prof. Jaelson Castro Marcelo d’Amorim Testes em 2h.
Teste de Sistemas de Software
Teste de Software 14: Geração de teste baseado em modelos: MBT
A Linguagem Formal de Especificação VDM-SL
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE AULA 5
Data Flow Testing. Vários critérios de adequação até aqui Baseado em entradas de função (funcional)‏ Baseado na estrutura do programa (estrutural)‏ Baseado.
Teste de Software 02: Oracles Marcelo d’Amorim
Adequação do Teste. 2 Teste é incompleto Origem da incompletude –Seqüências insuficientes –Classificadores parciais É necessário uma medida que indique.
Desenvolvimento de Sistemas - Fluxo de Testes
Testes de SW Aula 24.
Teste baseado em falhas. Problema Usuário não sabe se a suíte de teste é adequada ou não para encontrar erro Solução 1 –Medir cobertura. Mas ainda não.
Teste de Software 06: Adequação do Teste Marcelo d’Amorim
Teste de Software 08: Teste Funcional Marcelo d’Amorim
Planejamento do Teste. Define que “tipo de teste” se quer fazer Depende de restrições do ambiente. Exemplo: –Deve basear-se em requisitos –Limitações.
Teste Estrutural. 2 Teste estrutural Teste baseado na estrutura do código Mais precisamente, –Critério de adequação baseia-se no código!
Data Flow Testing. Vários critérios de adequação até aqui Baseado em entradas de função (funcional)‏ Baseado na estrutura do programa (estrutural)‏ Baseado.
Engenharia de Software
Teste Funcional. 2 Teste funcional Considera o sistema como uma função O teste consiste em: –Gerar dados de entrada para função –Comparar saída com resultado.
Qualidade de Produtos de Software
J U nit Um Framework Para Testes. Motivação  Todos os programadores sabem que devem testar seu código  Quanto mais curto o prazo menos testes são realizados.
Engenharia de Sistemas Embarcados Aula 7: Testando o Sistema Embarcado.
Introdução 1.
1 Especificação de Sistemas de Software e a UML. 2 Modelagem de sistema A modelagem de sistema auxilia o analista a entender a funcionalidade do sistema.
18/09/ /12/20082 Testes Baseados Em Modelo Diana Rúbia Paulo César Qualidade, Processos e Gestão de Software Alexandre Vasconcelos {drrr, pco,
Adequação do Teste. 2 Teste é incompleto É necessário uma medida que indique quão completo é o teste –Indica quando o testador deve parar de testar.
Teste de Software 04: Que parte devo testar? Marcelo d’Amorim
TESTES DE SOFTWARE – AULA 1 Prof. Me. Ronnison Reges Vidal
Levantamento de Requisitos – Simulação do Supermercado
CMMI Capability Maturity Model Integration
Teste de Software 09: Teste Estrutural Marcelo d’Amorim
Transcrição da apresentação:

Critérios de adequação e os diversos tipos de teste

Adequação do Teste

Teste é incompleto Origem da incompletude Seqüências insuficientes Classificadores parciais É necessário uma medida que indique quão completo é o teste. Indica: Quando o testador deve parar de testar Quando o testar precisa escrever mais testes

Definição: Adequação Requisito de adequação (RA)‏ Condição sobre uma suíte de teste Critério de adequação Uma suíte de teste é adequada quando (i) todos os testes passam e (ii) todo RA é satisfeito por pelo menos um caso de teste

Exemplo 01: public static String collapseSpaces(String argStr) { 02: char last = argStr.charAt(0); 03: StringBuffer argBuf = new StringBuffer(); 04: for (int i = 0; i < argStr.length(); i++) { 05: char ch = argStr.charAt(i); 06: if (ch != ’ ’|| last != ’ ’) { 07: argBuf.append(ch); 08: last = ch; 09: } 10: } 11: return argBuf.toString(); 12: } Velocity version 1.3, Apache Jakarta project.

Exemplo 01: public static String collapseSpaces(String argStr) { quebra quando argStr é null ou “”. 01: public static String collapseSpaces(String argStr) { 02: char last = argStr.charAt(0); 03: StringBuffer argBuf = new StringBuffer(); 04: for (int i = 0; i < argStr.length(); i++) { 05: char ch = argStr.charAt(i); 06: if (ch != ’ ’|| last != ’ ’) { 07: argBuf.append(ch); 08: last = ch; 09: } 10: } 11: return argBuf.toString(); 12: } Velocity version 1.3, Apache Jakarta project.

Exemplo (nova versão) 01: public static String collapseSpaces(String argStr) { 02: if (argStr == null) return null; 03: char last = argStr == “” ? “” : argStr.charAt(0); 04: StringBuffer argBuf = new StringBuffer(); 05: for (int i = 0; i < argStr.length(); i++) { 06: char ch = argStr.charAt(i); 07: if (ch != ’ ’|| last != ’ ’) { 08: argBuf.append(ch); 09: last = ch; 10: } 11: } 12: return argBuf.toString(); 13: }

Exemplo RA1: Não executar statements 8 e 9 RA3: Executar statement 6

Exemplo (stmts de interesse) 01: public static String collapseSpaces(String argStr) { 02: if (argStr == null) return null; 03: char last = argStr == “” ? “” : argStr.charAt(0); 04: StringBuffer argBuf = new StringBuffer(); 05: for (int i = 0; i < argStr.length(); i++) { 06: char ch = argStr.charAt(i); 07: if (ch != ’ ’|| last != ’ ’) { 08: argBuf.append(ch); 09: last = ch; 10: } 11: } 12: return argBuf.toString(); 13: }

Exemplo Suíte adequada TC1: collapseSpaces(“ ”); TC3: collapseSpaces(“adequacao do teste”);

Exemplo Suíte adequada TC1 sat. RA1 e RA3 TC2 sat. RA1 e RA2 TC1: collapseSpaces(“ ”); TC2: collapseSpaces(“”); TC3: collapseSpaces(“adequacao do teste”); TC1 sat. RA1 e RA3 TC2 sat. RA1 e RA2 TC3 sat. RA3

× Exemplo Outra suíte adequada TC1 sat. RA1 e RA3 TC2 sat. RA1 e RA2 TC1: collapseSpaces(“ ”); TC2: collapseSpaces(“”); TC3: collapseSpaces(“adequacao do teste”); TC1 sat. RA1 e RA3 TC2 sat. RA1 e RA2 TC3 sat. RA3

Exemplo Outra suíte adequada TC1 sat. RA1 TC1: collapseSpaces(“ ”); TC2: collapseSpaces(“”); TC3: collapseSpaces(“adequacao do teste”); TC1 sat. RA1 TC2 sat. RA1 e RA2 TC3 sat. RA3 Minimização de suíte de teste preocupa-se em reduzir o número de testes necessários para atender os requisitos de adequação.

Redução/Minimização Pros Cons Facilita manutenção dos testes Reduz tempo de execução Cons Pode eliminar testes importantes

Nota importante Não apenas código! Requisito de adequação pode ser formulado em função de algum conceito relevante: requisitos condições de entradas etc. Não apenas código!

Força do critério (subsumption)

Força de critérios de adequação Em geral, não é possível medir se uma suite é melhor que a outra para revelar erros TC_a TC_b incomparáveis

Força de critérios de adequação Definiçao: Ca mais forte que Cb se e somente se para qualquer programa P, qualquer suíte que satisfaz Ca também satisfaz Cb.

Quiz Dados C1 é mais forte que C2? RA1: Não executar statements 7 e 8 RA3: Executar statement 5 C1 = {RA2, RA3} e C2 = {RA1, RA3} C1 é mais forte que C2?

Quiz Dados C1 é mais forte que C2? RA1: Não executar statements 7 e 8 RA3: Executar statement 5 C1 = {RA2, RA3} e C2 = {RA1, RA3} C1 é mais forte que C2? RA2 => RA1 RA2 é mais forte (i.e., restritivo) que RA1 C1 é mais forte que C2

Resumo até aqui Requisito e critério de adequação Força (subsumption) do critério Seleção/minimização/priorização

Teste de unidade, integração e sistema

Definição Teste de unidade checa corretude de classes Teste de integração checa corretude de módulos (integração entre classes) Teste de sistema checa corretude do sistema como um todo são complementares!

Teste caixa branca e preta

Definição Teste caixa preta é aquele realizado sem usar informação disponível no código fonte Caixa branca usa informação do código Caixa preta é mais usado para testar sistemas com especificações de entrada e saída bem documentadas.

Teste funcional, estrutural, e baseado em falhas

Restrições de ambiente Deve basear-se em requisitos Não há código fonte Deve focar nos erros mais comuns Deve focar na estrutura do código Etc.

Restrições de ambiente Deve basear-se em requisitos Não há código fonte Deve focar nos erros mais comuns Deve focar na estrutura do código A importância destas restrições definem que “tipo” de teste será realizado.

Tipos de teste Functional Structural Fault-based

Tipos de teste Functional Structural Fault-based Baseia-se na expectativa de comportamento Structural Baseia-se na estrutura do programa Fault-based Baseia-se na capacidade de encontrar falhas

Tipos de teste São incomparáveis! Oferecem garantias distintas. Exemplo: Teste funcional é capaz de revelar erros de lógica com mais facilidade Teste estrutural é capaz encontrar erros limítrofes (“corner-cases”) com mais facilidade

Functional Structural Fault-based Baseia-se na expectativa de comportamento Structural Baseia-se na estrutura do programa Fault-based Baseia-se na capacidade de encontrar falhas O sistema é uma função. Adequação baseia-se em fração do espaço de entrada da função exercitada

Functional Structural Fault-based Baseia-se na expectativa de comportamento Structural Baseia-se na estrutura do programa Fault-based Baseia-se na capacidade de encontrar falhas Adequação baseia-se em cobertura de código (várias existentes).

Functional Structural Fault-based Baseia-se na expectativa de comportamento Structural Baseia-se na estrutura do programa Fault-based Baseia-se na capacidade de encontrar falhas Adequação baseia-se em scores de mutação.

Várias outras classificações performance testing, stress testing, usability testing, configuration testing, acceptance testing, etc.