SlideShare una empresa de Scribd logo
1 de 15
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

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
 

La actualidad más candente (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)
 

Similar a 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
 

Similar a 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
 

Más 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
 

Más 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
 

Último

The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
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
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
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
 
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
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
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
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
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
 
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
 
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
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 

Último (20)

The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
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
 
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
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
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
 
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
 
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
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 

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