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

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

Upload: isis-dias

Post on 07-Apr-2016

215 views

Category:

Documents


0 download

TRANSCRIPT

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

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

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

Adequação do Teste

Page 3: Critérios de adequação e os diversos tipos de 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

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

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

Page 5: Critérios de adequação e os diversos tipos 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.

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

6

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.

quebra quando argStr é null ou “”.

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

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: }

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

8

Exemplo

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

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

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: }

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

10

Exemplo

• Suíte adequada

TC1: collapseSpaces(“ ”);TC2: collapseSpaces(“”);TC3: collapseSpaces(“adequacao do teste”);

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

11

Exemplo

• Suíte adequada

TC1: collapseSpaces(“ ”);TC2: collapseSpaces(“”);TC3: collapseSpaces(“adequacao do teste”);

• TC1 sat. RA1 e RA3• TC2 sat. RA1 e RA2• TC3 sat. RA3

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

12

Exemplo

• Outra suíte adequada

TC1: collapseSpaces(“ ”);TC2: collapseSpaces(“”);TC3: collapseSpaces(“adequacao do teste”);

• TC1 sat. RA1 e RA3• TC2 sat. RA1 e RA2• TC3 sat. RA3

×

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

13

Exemplo

• Outra suíte adequada

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.

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

Redução/Minimização

• Pros– Facilita manutenção dos testes– Reduz tempo de execução

• Cons– Pode eliminar testes importantes

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

15

Nota importante

• 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!

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

Força do critério (subsumption)

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

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

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

18

• 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.

Força de critérios de adequação

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

19

Quiz

• Dados– RA1: Não executar statements 7 e 8 – RA2: Não executar statement 5– RA3: Executar statement 5– C1 = {RA2, RA3} e C2 = {RA1, RA3}

• C1 é mais forte que C2?

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

20

Quiz

• Dados– RA1: Não executar statements 7 e 8 – RA2: Não executar statement 5– 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

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

21

Resumo até aqui

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

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

Teste de unidade, integração e sistema

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

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!

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

Teste caixa branca e preta

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

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.

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

Teste funcional, estrutural, e baseado em falhas

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

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.

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

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.

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

Tipos de teste

• Functional• Structural• Fault-based

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

Tipos de teste

• Functional– Baseia-se na expectativa de comportamento

• Structural– Baseia-se na estrutura do programa

• Fault-based– Baseia-se na capacidade de encontrar falhas

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

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

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

• Functional– 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

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

• Functional– 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).

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

• Functional– 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.

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

Várias outras classificações

• performance testing, stress testing, usability testing, configuration testing, acceptance testing, etc.