SlideShare une entreprise Scribd logo
1  sur  15
Télécharger pour lire hors ligne
Automatic Test Generation for Space

       Ulisses Costa              Daniela da Cruz              Pedro Rangel Henriques

            SLATE’12 - Symposium on Languages, Applications and Technologies


                                             June 21, 2012




Ulisses Costa, Daniela da Cruz, Pedro Rangel Henriques   Automatic Test Generation for Space
Context


   Problem
   VST (Visionspace Technologies) provides services related to testing
   for ESA and wants to automate the test generation for the
   Operational Simulator platform.

   This presentation appears in the context of a master’s thesis that
   aims at:
           Generate automatically tests for the Operational Simulator
           Generate unit tests for the Operational Simulator language –
           C++
           Parametrize the size of the generated data structures and be
           able to configure other attributes



  Ulisses Costa, Daniela da Cruz, Pedro Rangel Henriques   Automatic Test Generation for Space
Motivation




           Extract UML and OCL from the existing code
           Extract tests from the existing code




  Ulisses Costa, Daniela da Cruz, Pedro Rangel Henriques   Automatic Test Generation for Space
OCL Inference



   OCL is a language used to describe logic properties about UML
   models, typically in the form of invariants.
   The first step is to extract interesting invariants from the code and
   match them with requirements.
           Generate UML diagrams from the existing code (easy)
           Infer code invariants (hard)
           Relate the discovered invariants with the UML diagrams
           Relate the discovered diagrams with requirements




  Ulisses Costa, Daniela da Cruz, Pedro Rangel Henriques   Automatic Test Generation for Space
White vs. Black Box Testing




   Types of tests regarding the knowledge about the code
    White Box , there is knowledge about the code, and this
                 knowledge is used to perform the test generation.
       Black Box , there is only knowledge about the requirements and
                 about how each component should behave.




  Ulisses Costa, Daniela da Cruz, Pedro Rangel Henriques   Automatic Test Generation for Space
Approaches 1/2




   Specification-based Generation Testing , aka Model Based Testing
                consists in testing a program based on the program
                specification or on the program model. Test cases
                can be generated from the specification, without
                consider the code.




  Ulisses Costa, Daniela da Cruz, Pedro Rangel Henriques   Automatic Test Generation for Space
Approaches 2/2




   Constraint-based Generation Testing , can be used to select test
                cases that meet some variable restrictions. When
                combined with symbolic execution, gathers
                restrictions along the different paths in the CFG. It is
                possible to solve these restrictions and generate test
                cases.




  Ulisses Costa, Daniela da Cruz, Pedro Rangel Henriques   Automatic Test Generation for Space
Current state




   By now, we studied different approaches and tools, the more
   important to our goal are:
           Korat, is a mature framework to automatically construct
           complex structures for JAVA
           Pex is a White-box testing framework from Microsoft tool
           that tries to give total code coverage




  Ulisses Costa, Daniela da Cruz, Pedro Rangel Henriques   Automatic Test Generation for Space
Studied Tools - Pex


   1        public class Program {
   2          public static int BSearch ( int x , int n ) {
   3            return BinarySearch (x , 0 , n ) ;
   4          }
   5          static int BinarySearch ( int x , int lo , int hi ) {
   6            while ( lo < hi ) {
   7              int mid = ( lo + hi ) /2;
   8              Debug . Assert ( mid >= lo && mid < hi ) ;
   9              if ( x < mid ) { hi = mid ; } else { lo = mid +1; }
  10            }
  11            return lo ;
  12          }
  13        }

       Result         x             n           result       Output/Exception
                      0              0            0
                      0              1            1
                      0              3            1
                1073741888     1719676992                 TraceAssertionException
                      1              6            2
                     50             96           51




  Ulisses Costa, Daniela da Cruz, Pedro Rangel Henriques       Automatic Test Generation for Space
Studied Tools - Korat

   1     public class LinkedList T  {
   2       public static class LinkedListElement T  {
   3         public T Data ;
   4         public LinkedListElement T  Prev ;
   5         public LinkedListElement T  Next ;
   6       }
   7       private LinkedListElement T  Head ;
   8       private LinkedListElement T  Tail ;
   9       private int size ;
  10     }

   LinkedList class invariants (circular doubly linked list):
                                   ∀ l : l ∈ LinkedList : Head(l) ≡ null ∨ Tail(l) ≡ null ⇔ size(l) ≡ 0     (1)
                                                               ∀ l : l ∈ LinkedList : Tail(l).Next ≡ null   (2)
                                                              ∀ l : l ∈ LinkedList : Head(l).Prev ≡ null    (3)
                                                 ∀ l : l ∈ LinkedList : size(l) ≡ 1 ⇔ Head(l) ≡ Tail(l)     (4)
       ∀ l : l ∈ LinkedList : ∀ e1 , e2 : {e1 , e2 } ⊆ l : ∃ e : e ∈ l : e1 .Next ≡ e ∧ e2 .Prev ≡ e
                                                      ⊆             ∈                                       (5)
                           ∀ l : l ∈ LinkedList : ∀ e1 , e2 : {e1 , e2 } ⊆ l : e1 ≡ e2 ⇒ i(e1 ) ≡ i(e2 )
                                                                          ⊆                                 (6)




  Ulisses Costa, Daniela da Cruz, Pedro Rangel Henriques       Automatic Test Generation for Space
Studied Tools - Pex - LinkedList




                  (a) LinkedList instance                      (b) LinkedList instance
                  generated by Pex to test                     generated by Pex to test
                  the method Remove                            the method Find

    Figure: Examples of instances generated by Pex to the LinkedList class.



  Ulisses Costa, Daniela da Cruz, Pedro Rangel Henriques   Automatic Test Generation for Space
Studied Tools - Korat - LinkedList




                         (a) LinkedList                           (b) LinkedList
                         instance with 2                          instance with 5
                         elements                                 elements



  Ulisses Costa, Daniela da Cruz, Pedro Rangel Henriques   Automatic Test Generation for Space
Studied Tools - Summary




   Summary
   Pex uses static analysis and is very efficient in discovering all the
   possible execution paths in C# methods. Pex can also be used to
   generate classes testcases, but the generated instances does not
   keep the invariants of data structures.
   On the other hand, Korat is the ideal tool to generate data
   structures that meet the invariants.




  Ulisses Costa, Daniela da Cruz, Pedro Rangel Henriques   Automatic Test Generation for Space
Conclusion and Future work




           Pex has proved to be a powerful tool regarding full coverage.
           Korat is a very useful tool to generate complex data
           structures.
   A mix between the static analysis of Pex with Korat’s capability to
   generate useful data structures is the path we will follow.
   The study of pre- pos conditions inference using static analysis
   [Moy 2009] will be useful to infer OCL rules.




  Ulisses Costa, Daniela da Cruz, Pedro Rangel Henriques   Automatic Test Generation for Space
Korat repOK method for LinkedList

   1     public boolean repOK () {
   2       if ( Head == null || Tail == null )
   3          return size == 0;
   4       if ( size == 1) return Head == Tail ;
   5       if ( Head . Prev != null ) return false ;
   6       if ( Tail . Next != null ) return false ;
   7       LinkedListElement T  last = Head ;
   8       Set visited = new HashSet () ;
   9       LinkedList workList = new LinkedList () ;
  10       visited . add ( Head ) ;
  11       workList . add ( Head ) ;
  12       while (! workList . isEmpty () ) {
  13          LinkedListElement T  current = ( LinkedListElement T ) workList .
                      removeFirst () ;
  14          if ( current . Next != null ) {
  15             if (! visited . add ( current . Next ) )
  16          return false ;
  17             workList . add ( current . Next ) ;
  18             if ( current . Next . Prev != current ) return false ;
  19             last = current . Next ;
  20          }
  21       }
  22       if ( last != Tail )
  23          return false ;
  24       return ( visited . size () == size ) ;
  25     }




  Ulisses Costa, Daniela da Cruz, Pedro Rangel Henriques   Automatic Test Generation for Space

Contenu connexe

Tendances

Scala eXchange opening
Scala eXchange openingScala eXchange opening
Scala eXchange openingMartin Odersky
 
ScalaDays 2013 Keynote Speech by Martin Odersky
ScalaDays 2013 Keynote Speech by Martin OderskyScalaDays 2013 Keynote Speech by Martin Odersky
ScalaDays 2013 Keynote Speech by Martin OderskyTypesafe
 
Temporal logic and functional reactive programming
Temporal logic and functional reactive programmingTemporal logic and functional reactive programming
Temporal logic and functional reactive programmingSergei Winitzki
 
EVERYTHING ABOUT STATIC CODE ANALYSIS FOR A JAVA PROGRAMMER
EVERYTHING ABOUT STATIC CODE ANALYSIS FOR A JAVA PROGRAMMEREVERYTHING ABOUT STATIC CODE ANALYSIS FOR A JAVA PROGRAMMER
EVERYTHING ABOUT STATIC CODE ANALYSIS FOR A JAVA PROGRAMMERAndrey Karpov
 
Beauty and the beast - Haskell on JVM
Beauty and the beast  - Haskell on JVMBeauty and the beast  - Haskell on JVM
Beauty and the beast - Haskell on JVMJarek Ratajski
 
Polyglot persistence for Java developers - moving out of the relational comfo...
Polyglot persistence for Java developers - moving out of the relational comfo...Polyglot persistence for Java developers - moving out of the relational comfo...
Polyglot persistence for Java developers - moving out of the relational comfo...Chris Richardson
 
Locality-sensitive hashing for search in metric space
Locality-sensitive hashing for search in metric space Locality-sensitive hashing for search in metric space
Locality-sensitive hashing for search in metric space Eliezer Silva
 
Mining Adaptively Frequent Closed Unlabeled Rooted Trees in Data Streams
Mining Adaptively Frequent Closed Unlabeled Rooted Trees in Data StreamsMining Adaptively Frequent Closed Unlabeled Rooted Trees in Data Streams
Mining Adaptively Frequent Closed Unlabeled Rooted Trees in Data StreamsAlbert Bifet
 
A Signature Scheme as Secure as the Diffie Hellman Problem
A Signature Scheme as Secure as the Diffie Hellman ProblemA Signature Scheme as Secure as the Diffie Hellman Problem
A Signature Scheme as Secure as the Diffie Hellman Problemvsubhashini
 
Sets, maps and hash tables (Java Collections)
Sets, maps and hash tables (Java Collections)Sets, maps and hash tables (Java Collections)
Sets, maps and hash tables (Java Collections)Fulvio Corno
 

Tendances (12)

Scala eXchange opening
Scala eXchange openingScala eXchange opening
Scala eXchange opening
 
ScalaDays 2013 Keynote Speech by Martin Odersky
ScalaDays 2013 Keynote Speech by Martin OderskyScalaDays 2013 Keynote Speech by Martin Odersky
ScalaDays 2013 Keynote Speech by Martin Odersky
 
Elm talk bayhac2015
Elm talk bayhac2015Elm talk bayhac2015
Elm talk bayhac2015
 
Temporal logic and functional reactive programming
Temporal logic and functional reactive programmingTemporal logic and functional reactive programming
Temporal logic and functional reactive programming
 
EVERYTHING ABOUT STATIC CODE ANALYSIS FOR A JAVA PROGRAMMER
EVERYTHING ABOUT STATIC CODE ANALYSIS FOR A JAVA PROGRAMMEREVERYTHING ABOUT STATIC CODE ANALYSIS FOR A JAVA PROGRAMMER
EVERYTHING ABOUT STATIC CODE ANALYSIS FOR A JAVA PROGRAMMER
 
Beauty and the beast - Haskell on JVM
Beauty and the beast  - Haskell on JVMBeauty and the beast  - Haskell on JVM
Beauty and the beast - Haskell on JVM
 
Eta
EtaEta
Eta
 
Polyglot persistence for Java developers - moving out of the relational comfo...
Polyglot persistence for Java developers - moving out of the relational comfo...Polyglot persistence for Java developers - moving out of the relational comfo...
Polyglot persistence for Java developers - moving out of the relational comfo...
 
Locality-sensitive hashing for search in metric space
Locality-sensitive hashing for search in metric space Locality-sensitive hashing for search in metric space
Locality-sensitive hashing for search in metric space
 
Mining Adaptively Frequent Closed Unlabeled Rooted Trees in Data Streams
Mining Adaptively Frequent Closed Unlabeled Rooted Trees in Data StreamsMining Adaptively Frequent Closed Unlabeled Rooted Trees in Data Streams
Mining Adaptively Frequent Closed Unlabeled Rooted Trees in Data Streams
 
A Signature Scheme as Secure as the Diffie Hellman Problem
A Signature Scheme as Secure as the Diffie Hellman ProblemA Signature Scheme as Secure as the Diffie Hellman Problem
A Signature Scheme as Secure as the Diffie Hellman Problem
 
Sets, maps and hash tables (Java Collections)
Sets, maps and hash tables (Java Collections)Sets, maps and hash tables (Java Collections)
Sets, maps and hash tables (Java Collections)
 

Similaire à Automatic Test Generation for Space

Relaxation methods for the matrix exponential on large networks
Relaxation methods for the matrix exponential on large networksRelaxation methods for the matrix exponential on large networks
Relaxation methods for the matrix exponential on large networksDavid Gleich
 
A Distributed Architecture System for Recognizing Textual Entailment
A Distributed Architecture System for Recognizing Textual EntailmentA Distributed Architecture System for Recognizing Textual Entailment
A Distributed Architecture System for Recognizing Textual EntailmentFaculty of Computer Science
 
Deep Learning through Examples
Deep Learning through ExamplesDeep Learning through Examples
Deep Learning through ExamplesSri Ambati
 
Dcn 20170823 yjy
Dcn 20170823 yjyDcn 20170823 yjy
Dcn 20170823 yjy재연 윤
 
H2O.ai's Distributed Deep Learning by Arno Candel 04/03/14
H2O.ai's Distributed Deep Learning by Arno Candel 04/03/14H2O.ai's Distributed Deep Learning by Arno Candel 04/03/14
H2O.ai's Distributed Deep Learning by Arno Candel 04/03/14Sri Ambati
 
Lecture 5: Functional Programming
Lecture 5: Functional ProgrammingLecture 5: Functional Programming
Lecture 5: Functional ProgrammingEelco Visser
 
Log Analytics in Datacenter with Apache Spark and Machine Learning
Log Analytics in Datacenter with Apache Spark and Machine LearningLog Analytics in Datacenter with Apache Spark and Machine Learning
Log Analytics in Datacenter with Apache Spark and Machine LearningAgnieszka Potulska
 
The Concurrent Constraint Programming Research Programmes -- Redux (part2)
The Concurrent Constraint Programming Research Programmes -- Redux (part2)The Concurrent Constraint Programming Research Programmes -- Redux (part2)
The Concurrent Constraint Programming Research Programmes -- Redux (part2)Pierre Schaus
 
Anti-differentiating Approximation Algorithms: PageRank and MinCut
Anti-differentiating Approximation Algorithms: PageRank and MinCutAnti-differentiating Approximation Algorithms: PageRank and MinCut
Anti-differentiating Approximation Algorithms: PageRank and MinCutDavid Gleich
 
San Francisco Hadoop User Group Meetup Deep Learning
San Francisco Hadoop User Group Meetup Deep LearningSan Francisco Hadoop User Group Meetup Deep Learning
San Francisco Hadoop User Group Meetup Deep LearningSri Ambati
 
Language Technology Enhanced Learning
Language Technology Enhanced LearningLanguage Technology Enhanced Learning
Language Technology Enhanced Learningtelss09
 
H2O Distributed Deep Learning by Arno Candel 071614
H2O Distributed Deep Learning by Arno Candel 071614H2O Distributed Deep Learning by Arno Candel 071614
H2O Distributed Deep Learning by Arno Candel 071614Sri Ambati
 
Introduction to conventional machine learning techniques
Introduction to conventional machine learning techniquesIntroduction to conventional machine learning techniques
Introduction to conventional machine learning techniquesXavier Rafael Palou
 
Abductive commonsense reasoning
Abductive commonsense reasoningAbductive commonsense reasoning
Abductive commonsense reasoningSan Kim
 
Lambda? You Keep Using that Letter
Lambda? You Keep Using that LetterLambda? You Keep Using that Letter
Lambda? You Keep Using that LetterKevlin Henney
 
Class 22: Stateful Evaluation Rules
Class 22: Stateful Evaluation RulesClass 22: Stateful Evaluation Rules
Class 22: Stateful Evaluation RulesDavid Evans
 
Software Defect Prediction on Unlabeled Datasets
Software Defect Prediction on Unlabeled DatasetsSoftware Defect Prediction on Unlabeled Datasets
Software Defect Prediction on Unlabeled DatasetsSung Kim
 
A package system for maintaining large model distributions in vle software
A package system for maintaining large model distributions in vle softwareA package system for maintaining large model distributions in vle software
A package system for maintaining large model distributions in vle softwareDaniele Gianni
 
A preliminary study of diversity in ELM ensembles (HAIS 2018)
A preliminary study of diversity in ELM ensembles (HAIS 2018)A preliminary study of diversity in ELM ensembles (HAIS 2018)
A preliminary study of diversity in ELM ensembles (HAIS 2018)Carlos Perales
 
Functional Programming You Already Know
Functional Programming You Already KnowFunctional Programming You Already Know
Functional Programming You Already KnowKevlin Henney
 

Similaire à Automatic Test Generation for Space (20)

Relaxation methods for the matrix exponential on large networks
Relaxation methods for the matrix exponential on large networksRelaxation methods for the matrix exponential on large networks
Relaxation methods for the matrix exponential on large networks
 
A Distributed Architecture System for Recognizing Textual Entailment
A Distributed Architecture System for Recognizing Textual EntailmentA Distributed Architecture System for Recognizing Textual Entailment
A Distributed Architecture System for Recognizing Textual Entailment
 
Deep Learning through Examples
Deep Learning through ExamplesDeep Learning through Examples
Deep Learning through Examples
 
Dcn 20170823 yjy
Dcn 20170823 yjyDcn 20170823 yjy
Dcn 20170823 yjy
 
H2O.ai's Distributed Deep Learning by Arno Candel 04/03/14
H2O.ai's Distributed Deep Learning by Arno Candel 04/03/14H2O.ai's Distributed Deep Learning by Arno Candel 04/03/14
H2O.ai's Distributed Deep Learning by Arno Candel 04/03/14
 
Lecture 5: Functional Programming
Lecture 5: Functional ProgrammingLecture 5: Functional Programming
Lecture 5: Functional Programming
 
Log Analytics in Datacenter with Apache Spark and Machine Learning
Log Analytics in Datacenter with Apache Spark and Machine LearningLog Analytics in Datacenter with Apache Spark and Machine Learning
Log Analytics in Datacenter with Apache Spark and Machine Learning
 
The Concurrent Constraint Programming Research Programmes -- Redux (part2)
The Concurrent Constraint Programming Research Programmes -- Redux (part2)The Concurrent Constraint Programming Research Programmes -- Redux (part2)
The Concurrent Constraint Programming Research Programmes -- Redux (part2)
 
Anti-differentiating Approximation Algorithms: PageRank and MinCut
Anti-differentiating Approximation Algorithms: PageRank and MinCutAnti-differentiating Approximation Algorithms: PageRank and MinCut
Anti-differentiating Approximation Algorithms: PageRank and MinCut
 
San Francisco Hadoop User Group Meetup Deep Learning
San Francisco Hadoop User Group Meetup Deep LearningSan Francisco Hadoop User Group Meetup Deep Learning
San Francisco Hadoop User Group Meetup Deep Learning
 
Language Technology Enhanced Learning
Language Technology Enhanced LearningLanguage Technology Enhanced Learning
Language Technology Enhanced Learning
 
H2O Distributed Deep Learning by Arno Candel 071614
H2O Distributed Deep Learning by Arno Candel 071614H2O Distributed Deep Learning by Arno Candel 071614
H2O Distributed Deep Learning by Arno Candel 071614
 
Introduction to conventional machine learning techniques
Introduction to conventional machine learning techniquesIntroduction to conventional machine learning techniques
Introduction to conventional machine learning techniques
 
Abductive commonsense reasoning
Abductive commonsense reasoningAbductive commonsense reasoning
Abductive commonsense reasoning
 
Lambda? You Keep Using that Letter
Lambda? You Keep Using that LetterLambda? You Keep Using that Letter
Lambda? You Keep Using that Letter
 
Class 22: Stateful Evaluation Rules
Class 22: Stateful Evaluation RulesClass 22: Stateful Evaluation Rules
Class 22: Stateful Evaluation Rules
 
Software Defect Prediction on Unlabeled Datasets
Software Defect Prediction on Unlabeled DatasetsSoftware Defect Prediction on Unlabeled Datasets
Software Defect Prediction on Unlabeled Datasets
 
A package system for maintaining large model distributions in vle software
A package system for maintaining large model distributions in vle softwareA package system for maintaining large model distributions in vle software
A package system for maintaining large model distributions in vle software
 
A preliminary study of diversity in ELM ensembles (HAIS 2018)
A preliminary study of diversity in ELM ensembles (HAIS 2018)A preliminary study of diversity in ELM ensembles (HAIS 2018)
A preliminary study of diversity in ELM ensembles (HAIS 2018)
 
Functional Programming You Already Know
Functional Programming You Already KnowFunctional Programming You Already Know
Functional Programming You Already Know
 

Plus de Ulisses Costa

Automatic Test Generation for Space
Automatic Test Generation for SpaceAutomatic Test Generation for Space
Automatic Test Generation for SpaceUlisses Costa
 
Static Code Analyzer - Part IV
Static Code Analyzer - Part IVStatic Code Analyzer - Part IV
Static Code Analyzer - Part IVUlisses Costa
 
Specifying and Implementing SNOW3G with Cryptol
Specifying and Implementing SNOW3G with CryptolSpecifying and Implementing SNOW3G with Cryptol
Specifying and Implementing SNOW3G with CryptolUlisses Costa
 
Static Code Analyzer - Part III
Static Code Analyzer - Part IIIStatic Code Analyzer - Part III
Static Code Analyzer - Part IIIUlisses Costa
 
Static Code Analyzer - Part II
Static Code Analyzer - Part IIStatic Code Analyzer - Part II
Static Code Analyzer - Part IIUlisses Costa
 
Static Code Analyzer - Part I
Static Code Analyzer - Part IStatic Code Analyzer - Part I
Static Code Analyzer - Part IUlisses Costa
 
GD::Graph - Graph Plotting Module
GD::Graph - Graph Plotting ModuleGD::Graph - Graph Plotting Module
GD::Graph - Graph Plotting ModuleUlisses Costa
 
Captura de Informação em Rede
Captura de Informação em RedeCaptura de Informação em Rede
Captura de Informação em RedeUlisses Costa
 
Correct sorting with Frama-C
Correct sorting with Frama-CCorrect sorting with Frama-C
Correct sorting with Frama-CUlisses Costa
 
The Cryptol Epilogue: Swift and Bulletproof VHDL
The Cryptol Epilogue: Swift and Bulletproof VHDLThe Cryptol Epilogue: Swift and Bulletproof VHDL
The Cryptol Epilogue: Swift and Bulletproof VHDLUlisses Costa
 
Splint the C code static checker
Splint the C code static checkerSplint the C code static checker
Splint the C code static checkerUlisses Costa
 
Exploring the Cryptol Toolset
Exploring the Cryptol ToolsetExploring the Cryptol Toolset
Exploring the Cryptol ToolsetUlisses Costa
 
Specification of SNOW 3G in Cryptol
Specification of SNOW 3G in CryptolSpecification of SNOW 3G in Cryptol
Specification of SNOW 3G in CryptolUlisses Costa
 
Snort - capturar e dissecar o tráfego da rede
Snort - capturar e dissecar o tráfego da redeSnort - capturar e dissecar o tráfego da rede
Snort - capturar e dissecar o tráfego da redeUlisses Costa
 
Uso de Honeypots com Honeyd
Uso de Honeypots com HoneydUso de Honeypots com Honeyd
Uso de Honeypots com HoneydUlisses Costa
 

Plus de Ulisses Costa (20)

Automatic Test Generation for Space
Automatic Test Generation for SpaceAutomatic Test Generation for Space
Automatic Test Generation for Space
 
Static Code Analyzer - Part IV
Static Code Analyzer - Part IVStatic Code Analyzer - Part IV
Static Code Analyzer - Part IV
 
Specifying and Implementing SNOW3G with Cryptol
Specifying and Implementing SNOW3G with CryptolSpecifying and Implementing SNOW3G with Cryptol
Specifying and Implementing SNOW3G with Cryptol
 
Static Code Analyzer - Part III
Static Code Analyzer - Part IIIStatic Code Analyzer - Part III
Static Code Analyzer - Part III
 
Static Code Analyzer - Part II
Static Code Analyzer - Part IIStatic Code Analyzer - Part II
Static Code Analyzer - Part II
 
Static Code Analyzer - Part I
Static Code Analyzer - Part IStatic Code Analyzer - Part I
Static Code Analyzer - Part I
 
logCesium01
logCesium01logCesium01
logCesium01
 
Cesium Log ed2
Cesium Log ed2Cesium Log ed2
Cesium Log ed2
 
GD::Graph - Graph Plotting Module
GD::Graph - Graph Plotting ModuleGD::Graph - Graph Plotting Module
GD::Graph - Graph Plotting Module
 
Captura de Informação em Rede
Captura de Informação em RedeCaptura de Informação em Rede
Captura de Informação em Rede
 
Cryptol experience
Cryptol experienceCryptol experience
Cryptol experience
 
Correct sorting with Frama-C
Correct sorting with Frama-CCorrect sorting with Frama-C
Correct sorting with Frama-C
 
The Cryptol Epilogue: Swift and Bulletproof VHDL
The Cryptol Epilogue: Swift and Bulletproof VHDLThe Cryptol Epilogue: Swift and Bulletproof VHDL
The Cryptol Epilogue: Swift and Bulletproof VHDL
 
Splint the C code static checker
Splint the C code static checkerSplint the C code static checker
Splint the C code static checker
 
Exploring the Cryptol Toolset
Exploring the Cryptol ToolsetExploring the Cryptol Toolset
Exploring the Cryptol Toolset
 
Specification of SNOW 3G in Cryptol
Specification of SNOW 3G in CryptolSpecification of SNOW 3G in Cryptol
Specification of SNOW 3G in Cryptol
 
Snort - capturar e dissecar o tráfego da rede
Snort - capturar e dissecar o tráfego da redeSnort - capturar e dissecar o tráfego da rede
Snort - capturar e dissecar o tráfego da rede
 
LDAP em VDM++
LDAP em VDM++LDAP em VDM++
LDAP em VDM++
 
Uso de Honeypots com Honeyd
Uso de Honeypots com HoneydUso de Honeypots com Honeyd
Uso de Honeypots com Honeyd
 
Apresentacao JML
Apresentacao JMLApresentacao JML
Apresentacao JML
 

Dernier

Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 

Dernier (20)

Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 

Automatic Test Generation for Space

  • 1. Automatic Test Generation for Space Ulisses Costa Daniela da Cruz Pedro Rangel Henriques SLATE’12 - Symposium on Languages, Applications and Technologies June 21, 2012 Ulisses Costa, Daniela da Cruz, Pedro Rangel Henriques Automatic Test Generation for Space
  • 2. Context Problem VST (Visionspace Technologies) provides services related to testing for ESA and wants to automate the test generation for the Operational Simulator platform. This presentation appears in the context of a master’s thesis that aims at: Generate automatically tests for the Operational Simulator Generate unit tests for the Operational Simulator language – C++ Parametrize the size of the generated data structures and be able to configure other attributes Ulisses Costa, Daniela da Cruz, Pedro Rangel Henriques Automatic Test Generation for Space
  • 3. Motivation Extract UML and OCL from the existing code Extract tests from the existing code Ulisses Costa, Daniela da Cruz, Pedro Rangel Henriques Automatic Test Generation for Space
  • 4. OCL Inference OCL is a language used to describe logic properties about UML models, typically in the form of invariants. The first step is to extract interesting invariants from the code and match them with requirements. Generate UML diagrams from the existing code (easy) Infer code invariants (hard) Relate the discovered invariants with the UML diagrams Relate the discovered diagrams with requirements Ulisses Costa, Daniela da Cruz, Pedro Rangel Henriques Automatic Test Generation for Space
  • 5. White vs. Black Box Testing Types of tests regarding the knowledge about the code White Box , there is knowledge about the code, and this knowledge is used to perform the test generation. Black Box , there is only knowledge about the requirements and about how each component should behave. Ulisses Costa, Daniela da Cruz, Pedro Rangel Henriques Automatic Test Generation for Space
  • 6. Approaches 1/2 Specification-based Generation Testing , aka Model Based Testing consists in testing a program based on the program specification or on the program model. Test cases can be generated from the specification, without consider the code. Ulisses Costa, Daniela da Cruz, Pedro Rangel Henriques Automatic Test Generation for Space
  • 7. Approaches 2/2 Constraint-based Generation Testing , can be used to select test cases that meet some variable restrictions. When combined with symbolic execution, gathers restrictions along the different paths in the CFG. It is possible to solve these restrictions and generate test cases. Ulisses Costa, Daniela da Cruz, Pedro Rangel Henriques Automatic Test Generation for Space
  • 8. Current state By now, we studied different approaches and tools, the more important to our goal are: Korat, is a mature framework to automatically construct complex structures for JAVA Pex is a White-box testing framework from Microsoft tool that tries to give total code coverage Ulisses Costa, Daniela da Cruz, Pedro Rangel Henriques Automatic Test Generation for Space
  • 9. Studied Tools - Pex 1 public class Program { 2 public static int BSearch ( int x , int n ) { 3 return BinarySearch (x , 0 , n ) ; 4 } 5 static int BinarySearch ( int x , int lo , int hi ) { 6 while ( lo < hi ) { 7 int mid = ( lo + hi ) /2; 8 Debug . Assert ( mid >= lo && mid < hi ) ; 9 if ( x < mid ) { hi = mid ; } else { lo = mid +1; } 10 } 11 return lo ; 12 } 13 } Result x n result Output/Exception 0 0 0 0 1 1 0 3 1 1073741888 1719676992 TraceAssertionException 1 6 2 50 96 51 Ulisses Costa, Daniela da Cruz, Pedro Rangel Henriques Automatic Test Generation for Space
  • 10. Studied Tools - Korat 1 public class LinkedList T { 2 public static class LinkedListElement T { 3 public T Data ; 4 public LinkedListElement T Prev ; 5 public LinkedListElement T Next ; 6 } 7 private LinkedListElement T Head ; 8 private LinkedListElement T Tail ; 9 private int size ; 10 } LinkedList class invariants (circular doubly linked list): ∀ l : l ∈ LinkedList : Head(l) ≡ null ∨ Tail(l) ≡ null ⇔ size(l) ≡ 0 (1) ∀ l : l ∈ LinkedList : Tail(l).Next ≡ null (2) ∀ l : l ∈ LinkedList : Head(l).Prev ≡ null (3) ∀ l : l ∈ LinkedList : size(l) ≡ 1 ⇔ Head(l) ≡ Tail(l) (4) ∀ l : l ∈ LinkedList : ∀ e1 , e2 : {e1 , e2 } ⊆ l : ∃ e : e ∈ l : e1 .Next ≡ e ∧ e2 .Prev ≡ e ⊆ ∈ (5) ∀ l : l ∈ LinkedList : ∀ e1 , e2 : {e1 , e2 } ⊆ l : e1 ≡ e2 ⇒ i(e1 ) ≡ i(e2 ) ⊆ (6) Ulisses Costa, Daniela da Cruz, Pedro Rangel Henriques Automatic Test Generation for Space
  • 11. Studied Tools - Pex - LinkedList (a) LinkedList instance (b) LinkedList instance generated by Pex to test generated by Pex to test the method Remove the method Find Figure: Examples of instances generated by Pex to the LinkedList class. Ulisses Costa, Daniela da Cruz, Pedro Rangel Henriques Automatic Test Generation for Space
  • 12. Studied Tools - Korat - LinkedList (a) LinkedList (b) LinkedList instance with 2 instance with 5 elements elements Ulisses Costa, Daniela da Cruz, Pedro Rangel Henriques Automatic Test Generation for Space
  • 13. Studied Tools - Summary Summary Pex uses static analysis and is very efficient in discovering all the possible execution paths in C# methods. Pex can also be used to generate classes testcases, but the generated instances does not keep the invariants of data structures. On the other hand, Korat is the ideal tool to generate data structures that meet the invariants. Ulisses Costa, Daniela da Cruz, Pedro Rangel Henriques Automatic Test Generation for Space
  • 14. Conclusion and Future work Pex has proved to be a powerful tool regarding full coverage. Korat is a very useful tool to generate complex data structures. A mix between the static analysis of Pex with Korat’s capability to generate useful data structures is the path we will follow. The study of pre- pos conditions inference using static analysis [Moy 2009] will be useful to infer OCL rules. Ulisses Costa, Daniela da Cruz, Pedro Rangel Henriques Automatic Test Generation for Space
  • 15. Korat repOK method for LinkedList 1 public boolean repOK () { 2 if ( Head == null || Tail == null ) 3 return size == 0; 4 if ( size == 1) return Head == Tail ; 5 if ( Head . Prev != null ) return false ; 6 if ( Tail . Next != null ) return false ; 7 LinkedListElement T last = Head ; 8 Set visited = new HashSet () ; 9 LinkedList workList = new LinkedList () ; 10 visited . add ( Head ) ; 11 workList . add ( Head ) ; 12 while (! workList . isEmpty () ) { 13 LinkedListElement T current = ( LinkedListElement T ) workList . removeFirst () ; 14 if ( current . Next != null ) { 15 if (! visited . add ( current . Next ) ) 16 return false ; 17 workList . add ( current . Next ) ; 18 if ( current . Next . Prev != current ) return false ; 19 last = current . Next ; 20 } 21 } 22 if ( last != Tail ) 23 return false ; 24 return ( visited . size () == size ) ; 25 } Ulisses Costa, Daniela da Cruz, Pedro Rangel Henriques Automatic Test Generation for Space