A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Critérios de adequação e os diversos tipos de teste"— Transcrição da apresentação:

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.


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

Apresentações semelhantes


Anúncios Google