Carregar apresentação
A apresentação está carregando. Por favor, espere
1
Critérios de adequação e os diversos tipos de teste
2
Adequação do Teste
3
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
4
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
5
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.
6
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.
7
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: }
8
Exemplo RA1: Não executar statements 8 e 9
RA3: Executar statement 6
9
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: }
10
Exemplo Suíte adequada TC1: collapseSpaces(“ ”);
TC3: collapseSpaces(“adequacao do teste”);
11
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
12
× 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
13
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.
14
Redução/Minimização Pros Cons Facilita manutenção dos testes
Reduz tempo de execução Cons Pode eliminar testes importantes
15
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!
16
Força do critério (subsumption)
17
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
18
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.
19
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?
20
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
21
Resumo até aqui Requisito e critério de adequação
Força (subsumption) do critério Seleção/minimização/priorização
22
Teste de unidade, integração e sistema
23
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!
24
Teste caixa branca e preta
25
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.
26
Teste funcional, estrutural, e baseado em falhas
27
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.
28
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.
29
Tipos de teste Functional Structural Fault-based
30
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
31
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
32
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
33
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).
34
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.
35
Várias outras classificações
performance testing, stress testing, usability testing, configuration testing, acceptance testing, etc.
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.