![Page 1: Critérios de adequação e os diversos tipos de teste](https://reader034.vdocuments.net/reader034/viewer/2022051704/570638481a28abb8238f4288/html5/thumbnails/1.jpg)
Critérios de adequação e os diversos tipos de teste
![Page 2: Critérios de adequação e os diversos tipos de teste](https://reader034.vdocuments.net/reader034/viewer/2022051704/570638481a28abb8238f4288/html5/thumbnails/2.jpg)
Adequação do Teste
![Page 3: Critérios de adequação e os diversos tipos de teste](https://reader034.vdocuments.net/reader034/viewer/2022051704/570638481a28abb8238f4288/html5/thumbnails/3.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570638481a28abb8238f4288/html5/thumbnails/4.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570638481a28abb8238f4288/html5/thumbnails/5.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570638481a28abb8238f4288/html5/thumbnails/6.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570638481a28abb8238f4288/html5/thumbnails/7.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570638481a28abb8238f4288/html5/thumbnails/8.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570638481a28abb8238f4288/html5/thumbnails/9.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570638481a28abb8238f4288/html5/thumbnails/10.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570638481a28abb8238f4288/html5/thumbnails/11.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570638481a28abb8238f4288/html5/thumbnails/12.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570638481a28abb8238f4288/html5/thumbnails/13.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570638481a28abb8238f4288/html5/thumbnails/14.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570638481a28abb8238f4288/html5/thumbnails/15.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570638481a28abb8238f4288/html5/thumbnails/16.jpg)
Força do critério (subsumption)
![Page 17: Critérios de adequação e os diversos tipos de teste](https://reader034.vdocuments.net/reader034/viewer/2022051704/570638481a28abb8238f4288/html5/thumbnails/17.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570638481a28abb8238f4288/html5/thumbnails/18.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570638481a28abb8238f4288/html5/thumbnails/19.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570638481a28abb8238f4288/html5/thumbnails/20.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570638481a28abb8238f4288/html5/thumbnails/21.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570638481a28abb8238f4288/html5/thumbnails/22.jpg)
Teste de unidade, integração e sistema
![Page 23: Critérios de adequação e os diversos tipos de teste](https://reader034.vdocuments.net/reader034/viewer/2022051704/570638481a28abb8238f4288/html5/thumbnails/23.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570638481a28abb8238f4288/html5/thumbnails/24.jpg)
Teste caixa branca e preta
![Page 25: Critérios de adequação e os diversos tipos de teste](https://reader034.vdocuments.net/reader034/viewer/2022051704/570638481a28abb8238f4288/html5/thumbnails/25.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570638481a28abb8238f4288/html5/thumbnails/26.jpg)
Teste funcional, estrutural, e baseado em falhas
![Page 27: Critérios de adequação e os diversos tipos de teste](https://reader034.vdocuments.net/reader034/viewer/2022051704/570638481a28abb8238f4288/html5/thumbnails/27.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570638481a28abb8238f4288/html5/thumbnails/28.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570638481a28abb8238f4288/html5/thumbnails/29.jpg)
Tipos de teste
• Functional• Structural• Fault-based
![Page 30: Critérios de adequação e os diversos tipos de teste](https://reader034.vdocuments.net/reader034/viewer/2022051704/570638481a28abb8238f4288/html5/thumbnails/30.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570638481a28abb8238f4288/html5/thumbnails/31.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570638481a28abb8238f4288/html5/thumbnails/32.jpg)
• 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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570638481a28abb8238f4288/html5/thumbnails/33.jpg)
• 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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570638481a28abb8238f4288/html5/thumbnails/34.jpg)
• 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](https://reader034.vdocuments.net/reader034/viewer/2022051704/570638481a28abb8238f4288/html5/thumbnails/35.jpg)
Várias outras classificações
• performance testing, stress testing, usability testing, configuration testing, acceptance testing, etc.