SlideShare ist ein Scribd-Unternehmen logo
1 von 89
Teste Estrutural Arndt von Staa Departamento de Informática PUC-Rio Outubro 2008
Especificação ,[object Object],[object Object],[object Object],[object Object]
Sumário ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Critérios de seleção ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Critérios de valoração ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Critérios de valoração ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Critérios de valoração ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Critérios de valoração: tabela ISO / ASCII ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],parte ASCII parte ISO
Critérios de valoração: equalização de chars ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Critérios de valoração ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Critérios de valoração ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Critérios de valoração ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Critérios de valoração ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Critérios de valoração ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Critérios de valoração ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Adaptado de: [ Hunt & Thomas, 2004]
Critérios de valoração ,[object Object],[object Object],[object Object],[object Object],[object Object],Adaptado de: [ Hunt & Thomas, 2004]
Critérios de valoração ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Adaptado de: [ Hunt & Thomas, 2004]
Critérios de valoração ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],O último parâmetro indica o número de elementos caminhados " ø "  simboliza o string   inexistente
Critérios de valoração ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Teste de unidade ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Teste de unidade ,[object Object]
Teste de unidade :  exemplo de arcabouço de apoio ao teste
Critérios de teste estrutural ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Grafo da estrutura do código ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Início de função ou método, chamada de função ou método Seqüência de um ou mais comandos Término de função,  return ,  throw
Grafo da estrutura do código: exemplo ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],01 08 10 13 14 15 21 21
Grafo da estrutura do código: exemplo ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],21 71 25 27 30 51 71 32 34 36 38 51 39
Grafo da estrutura do código: exemplo ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],51 58 60 62 65 66 67 69
Grafo da estrutura do código: exemplo ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],71 75 77 83 79 84 85
Arrasto ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Arrasto ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Arrasto: exemplos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Arrasto ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Critério de cobertura de instruções ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Critério de cobertura de instruções: exemplo ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],71 75 77 83 79 84 85 Dois caminhos asseguram a cobertura 71 75 77 83 84 85 71 75 77 79 85
Critério de cobertura de arestas ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Critério de cobertura de arestas: exemplo ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],71 75 77 83 79 84 85 0 ciclos: 71 75 84 85 71 75 77 79 85 1 ciclo 71 75 77 83 75 84 85 71 75 77 83 75 77 79 85 2 ciclos 71 75 77 83 75 77 83 75 84 85 71 75 77 83 75 77 83 75 77 79 85
Critério de cobertura de condições ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Teste de funções encapsuladas ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Teste de funções encapsuladas: exemplo ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],01 08 10 13 14 15 21 21 21 - Considerar  idStringParm  que (i)  existem , (ii)  não existem  e (iii) a  falta do string default  para emitir a mensagem de não existência. Ver função  BuildStr( long )  a seguir 51 - Considerar string de tamanho igual a 0, ver  BuildString( int , char * )  a seguir 71 - Considerar repetições de procura 0, 1 e n iterações, ver  GetStringAddress( long )  a seguir
Teste de funções encapsuladas: exemplo ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],21 71 25 27 30 51 71 32 34 36 38 51 39
Teste de funções encapsuladas: exemplo ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],51 58 60 62 65 66 67 69 Como testar  pStringParm == NULL  sem adulterar os módulos cliente?
Teste de funções encapsuladas: exemplo ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],71 75 77 83 79 84 85
Critério cobertura de caminhos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Cobertura de caminhos ,[object Object],[object Object],[object Object],[object Object],O da ordem de
Cobertura de caminhos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Cobertura de caminhos: exemplo de seleção ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],71 75 77 83 79 84 85 Caminhos  0 vezes: <71,  75 , 84, 85>;  <71,  75 , 77 , 79, 85>;  1 vez:  <71,  75 , 77, 83,  75 , 84, 85>;  <71,  75 , 77, 83,  75 , 77, 79, 85>;  2 vezes: <71,  75 , 77, 83,  75 , 77, 83,  75 , 84, 85>;  <71,  75 , 77, 83,  75 , 77, 83,  75 , 77, 79, 85>;
Cobertura de caminhos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Cobertura de caminhos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Cobertura de caminhos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Cobertura de caminhos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Transformação em caso de teste úteis Os casos gerados foram casos de teste abstratos
Transformação em caso de teste úteis ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Transformação em caso de teste úteis ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Transformação em caso de teste úteis ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Exemplo de roteiro de teste ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Problema do teste caixa aberta ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Fluxo de dados ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Fluxo de dados ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Fluxo de dados ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Fluxo de dados ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Fluxo de dados: conversão para caminhos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Fluxo de dados: inspeção ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Fluxo de dados: inspeção ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Fluxo de dados: exemplo grafo de código
Fluxo de dados:  inspeção  envolvendo x *DcDU* *DcU*
Fluxo de dados: inspeção envolvendo z *LU UD * *LU D * *LL DUUD * *LL DUD *
Fluxo de dados: inspeção  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],21 71 25 27 30 51 71 32 34 36 38 51 39 idStr    22 D 27 Uc L ; 22 D 34 Uc L  ; 22 D 36 Uc L pStr    24 D 25 Up 27 Uc L ; 24 D 25 Up 31 D 32 Up 34 Uc L ; 24 D 25 Up 31 D 32 Up L  Msg    30 D 34 D 38 Uc L ; 30 D 36 D 38 Uc L
Teste de exceções ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Teste de exceções
Teste de exceções
Teste de exceções ,[object Object]
Teste de exceções: instrumentação Forçar ocorrência de erro
Teste de exceções: arcabouço teste C++ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Teste de exceções ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Teste de exceções: análise estática ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Recursos locais e exceções ,[object Object],[object Object],[object Object]
Recursos locais e exceções ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Recursos locais e exceções ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Recursos locais e exceções ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],void main( ) { try  { printf( &quot;Recurso: %d&quot;, UmaFunc( )) ; } catch ( ... ) { printf( &quot;Cancelou com throw&quot; ) ; } }
Módulos dublê ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Módulos dublê: exemplo de enchimento ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],a ser tratada pelo arcabouço de teste
Módulos dublê: módulos de imitação ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Módulos dublê: módulos de imitação ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Módulos dublê: módulos de imitação void * CED_Malloc( size_t Tamanho , int Linha , char * NomeArquivo ) { tpElemListaEspacos * pEspaco ; if ( LimiteMemoria > 0 ) { if ( LimiteMemoria < EspacoTotalAlocado + ( long ) Tamanho ) { return NULL ;  ou throw exceção de falta de memória } /* if */ } /* if */ if ( LimiteNumEspacos > 0 ) { if ( numEspacosAlocados >= LimiteNumEspacos ) { return NULL ; } /* if */ } /* if */ pEspaco = ( tpElemListaEspacos * ) malloc( sizeof( tpElemListaEspacos ) + Tamanho ) ; if ( pEspaco == NULL ) { return NULL ; } /* if */ #define malloc CED_Malloc( Tam , __LINE__ , __FILE__ )
Módulos dublê: módulos de imitação ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Módulos dublê: módulos de imitação ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],record / replay metaphor extraído de Fowler, M.; Mocks Aren’t Stubs
Módulos dublê: módulos de imitação ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Referências bibliográficas ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object]

Weitere ähnliche Inhalte

Ähnlich wie Teste Estrutural Arndt

Ähnlich wie Teste Estrutural Arndt (20)

nDeveloper Framework
nDeveloper FrameworknDeveloper Framework
nDeveloper Framework
 
Introdução a linguagem de programação Python
Introdução a linguagem de programação PythonIntrodução a linguagem de programação Python
Introdução a linguagem de programação Python
 
Combinando OO e Funcional em javascript de forma prática
Combinando OO e Funcional em javascript de forma práticaCombinando OO e Funcional em javascript de forma prática
Combinando OO e Funcional em javascript de forma prática
 
Ganhando tempo com casos de testes
Ganhando tempo com casos de testesGanhando tempo com casos de testes
Ganhando tempo com casos de testes
 
Apresentacao codeigniter
Apresentacao codeigniterApresentacao codeigniter
Apresentacao codeigniter
 
Otimização e Escalabilidade
Otimização e EscalabilidadeOtimização e Escalabilidade
Otimização e Escalabilidade
 
Beagajs
BeagajsBeagajs
Beagajs
 
Testing sucks
Testing sucksTesting sucks
Testing sucks
 
teste
testeteste
teste
 
Spring Capitulo 02
Spring Capitulo 02Spring Capitulo 02
Spring Capitulo 02
 
Aula 01 - Curso PHP e MySQL
Aula 01 - Curso PHP e MySQLAula 01 - Curso PHP e MySQL
Aula 01 - Curso PHP e MySQL
 
Php 04 Mysql
Php 04 MysqlPhp 04 Mysql
Php 04 Mysql
 
Ppi cap6 ac_2011
Ppi cap6 ac_2011Ppi cap6 ac_2011
Ppi cap6 ac_2011
 
Conhecendo ou relembrando C
Conhecendo ou relembrando CConhecendo ou relembrando C
Conhecendo ou relembrando C
 
AULA-02.pdf
AULA-02.pdfAULA-02.pdf
AULA-02.pdf
 
03 - Formulários &amp; Dados
03 - Formulários &amp; Dados03 - Formulários &amp; Dados
03 - Formulários &amp; Dados
 
Por que voce deveria documentar seu codigo?
Por que voce deveria documentar seu codigo?Por que voce deveria documentar seu codigo?
Por que voce deveria documentar seu codigo?
 
MongoDB
MongoDBMongoDB
MongoDB
 
A_Arte_de_Marcar_X.pdf
A_Arte_de_Marcar_X.pdfA_Arte_de_Marcar_X.pdf
A_Arte_de_Marcar_X.pdf
 
Testes de Sofware
Testes de SofwareTestes de Sofware
Testes de Sofware
 

Mehr von elliando dias

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slideselliando dias
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScriptelliando dias
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structureselliando dias
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de containerelliando dias
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agilityelliando dias
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Librarieselliando dias
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!elliando dias
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Webelliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduinoelliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorceryelliando dias
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Designelliando dias
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makeselliando dias
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.elliando dias
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebookelliando dias
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Studyelliando dias
 

Mehr von elliando dias (20)

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScript
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structures
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
 
Geometria Projetiva
Geometria ProjetivaGeometria Projetiva
Geometria Projetiva
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
 
Ragel talk
Ragel talkRagel talk
Ragel talk
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
 
Rango
RangoRango
Rango
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
 

Teste Estrutural Arndt

  • 1. Teste Estrutural Arndt von Staa Departamento de Informática PUC-Rio Outubro 2008
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22. Teste de unidade : exemplo de arcabouço de apoio ao teste
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51. Transformação em caso de teste úteis Os casos gerados foram casos de teste abstratos
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64. Fluxo de dados: exemplo grafo de código
  • 65. Fluxo de dados: inspeção envolvendo x *DcDU* *DcU*
  • 66. Fluxo de dados: inspeção envolvendo z *LU UD * *LU D * *LL DUUD * *LL DUD *
  • 67.
  • 68.
  • 69.
  • 71.
  • 72. Teste de exceções: instrumentação Forçar ocorrência de erro
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84. Módulos dublê: módulos de imitação void * CED_Malloc( size_t Tamanho , int Linha , char * NomeArquivo ) { tpElemListaEspacos * pEspaco ; if ( LimiteMemoria > 0 ) { if ( LimiteMemoria < EspacoTotalAlocado + ( long ) Tamanho ) { return NULL ; ou throw exceção de falta de memória } /* if */ } /* if */ if ( LimiteNumEspacos > 0 ) { if ( numEspacosAlocados >= LimiteNumEspacos ) { return NULL ; } /* if */ } /* if */ pEspaco = ( tpElemListaEspacos * ) malloc( sizeof( tpElemListaEspacos ) + Tamanho ) ; if ( pEspaco == NULL ) { return NULL ; } /* if */ #define malloc CED_Malloc( Tam , __LINE__ , __FILE__ )
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.