1 / 19

Testes e Depuração de Software

Testes e Depuração de Software. Slides preparados por Bruno Monteiro e Marcelo d’Amorim Execução simbólica - 24/09/2009. Execução Simbólica: Objetivo. Gerar dados de testes de forma automática Explora todos os possíveis caminhos (módulo limitações). Dados concretos e simbólicos. Concreto

suchin
Download Presentation

Testes e Depuração de Software

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Testes e Depuração de Software Slides preparados por Bruno Monteiro e Marcelo d’Amorim Execução simbólica - 24/09/2009

  2. Execução Simbólica: Objetivo • Gerar dados de testes de forma automática • Explora todos os possíveis caminhos (módulo limitações)

  3. Dados concretos e simbólicos • Concreto • Exemplo: “Fui à escola hoje”, 3, newInteger(3) • Simbólico • Exemplo: $a + 3, $s.indexOf(‘a’) != -1 • Valor Simbólico representa um conjunto de valores concretos

  4. Entrada e Saída (King, 1976) f(int x, int y) REQ1(x,y) Execução Simbólica REQ2(x,y) REQn(x,y)

  5. Entrada e Saída (King, 1976) f(int x, int y) REQ1(x,y) Execução Simbólica REQ2(x,y) REQn(x,y) • REQidenota um requisito de entrada sobre x e y na forma de uma expressão simbólica

  6. Entrada e Saída f(int x, int y) f(2,3) f(-1,-1) f(0,0) REQ1(x,y) REQ2(x,y) Exec. Simb. Constraint Solver REQn(x,y) Resolve restrições. Isto é, instancia variáveis simbólicas Gera restrições simbólicas

  7. Path Condition (PC) • Representa condições suficientes para execução alcançar um ponto do programa • Forma: • Conjunção de restrições b1 Λ b2 Λ ... bn • Faz parte do estado de uma execução simbólica

  8. Exemplo 1: Fork f(int x, int y){ if(x = y){ ... }else{ ... } } Fork na execução  PC1: $a = $b  PC2: $a != $b f($a,$b) produz • PC1 = ($a = $b) • PC2 = $a != $b

  9. Exemplo 1: Fork f(int x, int y){ if(x = y){ ... }else{ ... } } Nota: Exemplo ilustrativo. Considere chamada de funções, loops, encadeamento de condicionais, e outros operadores relacionais e booleanos. Fork na execução  PC1: $a = $b  PC2: $a != $b

  10. Exemplo 2: Estado simbólico f(int x, int y){ x = x + y if(x = y){ ... }else{ ... } } Fork na execução •  PC1: $a + $b = $b •  PC2: $a + $b != $b

  11. Desafios • Suporte para • Métodos Nativos • Loop e recursão • Indexação de Arrays • Strings • Referências fuzzing Interpretação especial de operadores

  12. Referências • Referência • S. Khurshid, C. Pasareanu and W. Visser. Generalized Symbolic Execution for Model Checking and Testing. TACAS 2003 • Strings • D. Shannon, S. Hajra, A. Lee, D. Zhan, and S. Khurshid. Abstracting Symbolic Execution with String Analysis. TAIC-PART 2007.

  13. Exemplo 3: Tipo referência f(T t){ if(t == null){ ... } ... } Fork na execução •  PC1: $t == null •  PC2: $t != null

  14. LazyInitialization • Só inicializa os objetos no momento em que são usados • Derreferência (ou seja, “r.”) requer lazyinitialization • Três possibilidade para o valor de uma referência: null, objeto novo, objeto existente (alias)

  15. Exemplo 4: Strings foo(String s, String t){ s.equals(t) } • Operadores da linguagem geram restrições. • Por exemplo, equals, indexOf, substring, etc. • Duas opções de tratamento: • se t têm tamanho fixo n. Equivalente a: • foo(int s1, ..., sn, t1, ..., tn) • Não assumir tamanho das entradas

  16. Strings e autômatos • Valor simbólico de uma string $a é caracterizado pelo autômato que reconhece a linguagem com todas possíveis strings concretas associadas a $a

  17. Exemplo 5: Valores associados a string s em pontos do programa Σ* f(String s){ s.startWith(“ola ”) } Σ* l a     o

  18. Soluções para strings podem ser obtidas com uma visita no autômato

  19. Exemplo 5: Valores associados a string s em pontos do programa f(String s){ s.startWith(“ola ”) if (s.endsWith(“ turma”) && s.length() > 9) { } ... } Σ+ o l a t       u r m a    

More Related