Also take a look at other projects and papers that use or extend Pex, and papers relating to Pex4Fun.
Jonathan de Halleux and Nikolai Tillmann, Moles: tool-assisted environment isolation with closures, in TOOLS'10, Springer Verlag, July 2010
Isolating test cases from environment dependencies is often desirable, as it increases test reliability and reduces test execution time. However, code that calls non-virtual methods or consumes sealed classes is often impossible to test in isolation. Moles is a new lightweight framework which addresses this problem. For any .NET method, Moles allows test-code to provide alternative implementations, given as .NET delegates, for which C# provides very concise syntax while capturing local variables in a closure object. Using code instrumentation, the Moles framework will redirect calls to provided delegates instead of the original methods. The Moles framework is designed to work together with the dynamic symbolic execution tool Pex to enable automated test generation. In a case study, testing code programmed against the Microsoft SharePoint Foundation API, we achieved full code coverage while running tests in isolation without an actual SharePoint server. The Moles framework integrates with .NET and Visual Studio.Nikolai Tillmann and Jonathan de Halleux, Pex - White Box Test Generation for .NET, in Proc. of Tests and Proofs (TAP'08), Springer Verlag, Prato, Italy, April 2008
Pex automatically produces a small test suite with high code coverage for a .NET program. To this end, Pex performs a systematic program analysis (using dynamic symbolic execution, similar to path-bounded model-checking) to determine test inputs for Parameterized Unit Tests. Pex learns the program behavior by monitoring execution traces. Pex uses a constraint solver to produce new test inputs which exercise different program behavior. The result is an automatically generated small test suite which often achieves high code coverage. In one case study, we applied Pex to a core component of the .NET runtime which had already been extensively tested over several years. Pex found errors, including a serious issue.
Nikolai Tillmann and Wolfram Schulte, Parameterized Unit Tests, in Proceedings of the 10th European Software Engineering Conference held jointly with 13th ACM SIGSOFT International Symposium on Foundations of Software Engineering, Association for Computing Machinery, Inc., 2005
Parameterized unit tests extend the current industry practice of using closed unit tests defined as parameterless methods. Parameterized unit tests separate two concerns: 1) They specify the external behavior of the involved methods for all possible test arguments. 2) Test cases can be re-obtained as traditional closed unit tests by instantiating the parameterized unit tests. Symbolic execution and constraint solving can be used to automatically choose a minimal set of inputs that exercise a parameterized unit test with respect to possible code paths of the implementation. In addition, parameterized unit tests can be used as symbolic summaries which allows symbolic execution to scale for arbitrary abstraction levels. We have developed a prototype tool which computes test cases from parameterized unit tests; it is integrated into the forthcoming Visual Studio Team System product. We report on its first use to test parts of the .NET base class library.Tao Xie, Nikolai Tillmann, Peli de Halleux, and Wolfram Schulte, Fitness-Guided Path Exploration in Dynamic Symbolic Execution, in Proc. the 39th Annual IEEE/IFIP International Conference on Dependable Systems and Networks (DSN 2009), IEEE, June 2009
Dynamic symbolic execution is a structural testing technique that systematically explores feasible paths of the program under test by running the program with different test inputs to improve code coverage. To address the space-explosion issue in path exploration, we propose a novel approach called Fitnex, a search strategy that uses state-dependent fitness values (computed through a fitness function) to guide path exploration. The fitness function measures how close an already discovered feasible path is to a particular test target (e.g., covering a not-yet-covered branch). Our new fitness-guided search strategy is integrated with other strategies that are effective for exploration problems where the fitness heuristic fails. We implemented the new approach in Pex, an automated structural testing tool developed at Microsoft Research. We evaluated our new approach by comparing it with existing search strategies. The empirical results show that our approach is effective since it consistently achieves high code coverage faster than existing search strategies.
2013
- Konrad Jamrozik, Gordon Fraser, Nikolai Tillmann, and Jonathan de Halleux, Generating Test Suites with Augmented Dynamic Symbolic Execution, in Proceedings of the 7th International Conference on Tests & Proofs, June 2013
- Tao Xie, Nikolai Tillmann, and Jonathan de Halleux, Educational Software Engineering: Where Software Engineering, Education, and Gaming Meet, in Proc. 3rd International Workshop on Games and Software Engineering (GAS 2013), May 2013
- Nikolai Tillmann, Jonathan De Halleux, Tao Xie, Sumit Gulwani, and Judith Bishop, Teaching and Learning Programming and Software Engineering via Interactive Gaming, in Proc. 35th International Conference on Software Engineering (ICSE 2013), Software Engineering Education (SEE), May 2013
2012
- Nikolai Tillmann, Jonathan de Halleux, Tao Xie, and Judith Bishop, Pex4Fun: Teaching and Learning Computer Science via Social Gaming, in Proc. 24th IEEE-CS Conference on Software Engineering Education and Training (CSEE&T 2012), Tutorial, April 2012
- Linghao Zhang, Xiaoxing Ma, Jian Lu, Nikolai Tillmann, Jonathan de Halleux, and Tao Xie, Environment Modeling for Automated Testing of Cloud Applications, in IEEE Software, Special Issue on Software Engineering for Cloud Computing, vol. 29, no. 2, pp. 30–35, 2012
- Dries Vanoverberghe, Jonathan de Halleux, Nikolai Tillmann, and Frank Piessens, State Coverage: Software Validation Metrics beyond Code Coverage, in Proceedings of the 38th international conference on Current Trends in Theory and Practice of Computer Science , 2012
- Konrad Jamrozik, Gordon Fraser, Nikolai Tillmann, and Jonathan De Halleux, Augmented dynamic symbolic execution, in Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering, ACM, New York, NY, USA, 2012
2011
- Suresh Thummalapenta, Tao Xie, Nikolai Tillmann, Jonathan de Halleux, and Zhendong Su, Synthesizing Method Sequences for High-Coverage Testing, in Proc. ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA 2011), October 2011
- Kunal Taneja, Tao Xie, Nikolai Tillmann, and Jonathan de Halleux, eXpress: Guided Path Exploration for Efficient Regression Test Generation, in Proc. 2011 International Symposium on Software Testing and Analysis (ISSTA 2011), July 2011
- Xusheng Xiao, Tao Xie, Nikolai Tillmann, and Jonathan de Halleux, Covana: Precise Identification of Problems in Pex, in Proc. 33rd International Conference on Software Engineering (ICSE 2011), Demonstration, May 2011
- Xi Ge, Kunal Taneja, Tao Xie, and Nikolai Tillmann, DyTa: Dynamic Symbolic Execution Guided with Static Verification Results, in Proc. 33rd International Conference on Software Engineering (ICSE 2011), Demonstration, May 2011
- Xusheng Xiao, Tao Xie, Nikolai Tillmann, and Jonathan de Halleux, Precise Identification of Problems for Structural Test Generation, in Proc. Proceedings of the 33rd International Conference on Software Engineering (ICSE 2011), May 2011
- Nikolai Tillmann, Jonathan de Halleux, and Tao Xie, Pex for Fun: Engineering an Automated Testing Tool for Serious Games in Computer Science, no. MSR-TR-2011-41, March 2011
- Suresh Thummalapenta, Madhuri Marri, Tao Xie, Nikolai Tillmann, and Jonathan de Halleux, Retrofitting Unit Tests for Parameterized Unit Testing, in Proc. International Conference on Fundamental Approaches to Software Engineering (FASE 2011), March 2011
- Cristian Cadar, Patrice Godefroid, Sarfraz Khurshid, Corina S. Pasareanu, Koushik Sen, Nikolai Tillmann, and Willem Visser, Symbolic execution for software testing in practice: preliminary assessment, in ICSE, 2011
- Nikolai Tillmann, Jonathan de Halleux, and Tao Xie, Pex4Fun: Teaching and learning computer science via social gaming, in CSEE&T, 2011
2010
- Tao Xie, Nikolai Tillmann, Jonathan de Halleux, and Wolfram Schulte, Future of Developer Testing: Building Quality in Code, in Proc. FSE/SDP Workshop on the Future of Software Engineering Research (FoSER 2010), November 2010
- Kiran Lakhotia, Nikolai Tillmann, Mark Harman, and Jonathan de Halleux, FloPSy - Search-Based Floating Point Constraint Solving for Symbolic Execution, in Proceedings of 22nd IFIP International Conference on Testing Software and Systems, Springer Verlag, November 2010
- Tao Xie, Jonathan de Halleux, Nikolai Tillmann, and Wolfram Schulte, Teaching and Training Developer-Testing Techniques and Tool Support , in of the 25th Annual ACM Conference on Systems, Programming, Languages, and Applications: Software for Humanity (SPLASH 2010), Educators' and Trainers' Symposium, Reno/Tahoe Nevada, Association for Computing Machinery, Inc., October 2010
- Lingming Zhang, Tao Xie, Lu Zhang, Nikolai Tillmann, Jonathan de Halleux, and Hong Mei, Test Generation via Dynamic Symbolic Execution for Mutation Testing, in Proceedings of the 26th IEEE International Conference on Software Maintenance, September 2010
- Kunal Taneja, Nuo Li, Madhuri Marri, Tao Xie, and Nikolai Tillmann, MiTV: Multiple-Implementation Testing of User-Input Validators for Web Applications, in Proceedings of the 25th IEEE/ACM International Conference on Automated Software Engineering , September 2010
- Rahul Pandita, Tao Xie, Nikolai Tillmann, and Jonathan de Halleux, Guided Test Generation for Coverage Criteria, in Proceedings of the 26th IEEE International Conference on Software Maintenance , September 2010
- Jonathan de Halleux and Nikolai Tillmann, Moles: tool-assisted environment isolation with closures, in TOOLS'10, Springer Verlag, July 2010
- Suresh Thummalapenta, Jonathan Halleux, Nikolai Tillmann, and Scott Wadsworth, DyGen: Automatic Generation of High-Coverage Tests via Mining Gigabytes of Dynamic Traces, in TAP'10, Springer Verlag, July 2010
- Margus Veanes, Peli de Halleux, and Nikolai Tillmann, Rex: Symbolic Regular Expression Explorer, in Third International Conference on Software Testing, Verification and Validation (ICST) , IEEE, April 2010
2009
- Nuo Li, Tao Xie, Nikolai Tillmann, Jonathan de Halleux, and Wolfram Schulte, Reggae: Automated Test Generation for Programs using Complex Regular Expressions , in Proceedings of the 24th IEEE/ACM International Conference on Automated Software Engineering , November 2009
- Suresh Thummalapenta, Tao Xie, Nikolai Tillmann, Peli de Halleux, and Wolfram Schulte, MSeqGen: Object-Oriented Unit-Test Generation via Mining Source Code, in Proc. 7th joint meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering (ESEC/FSE 2009), Association for Computing Machinery, Inc., August 2009
- Tao Xie, Nikolai Tillmann, Peli de Halleux, and Wolfram Schulte, Fitness-Guided Path Exploration in Dynamic Symbolic Execution, in Proc. the 39th Annual IEEE/IFIP International Conference on Dependable Systems and Networks (DSN 2009), IEEE, June 2009
- Madhuri R Marri, Tao Xie, Nikolai Tillmann, Jonathan de Halleux, and Wolfram Schulte, An Empirical Study of Testing File-System-Dependent Software with Mock Objects, in Proc. 4th International Workshop on Automation of Software Test (AST 2009), Business and Industry Case Studies, IEEE Computer Society, May 2009
- Kunal Taneja, Tao Xie, Nikolai Tillmann, Jonathan de Halleux, and Wolfram Schulte, Guided Path Exploration for Regression Test Generation, in Proc. 31th International Conference on Software Engineering (ICSE 2009), IEEE, May 2009
- Michael Barnett, Manuel Fahndrich, Francesco Logozzo, Peli de Halleux, and Nikolai Tillmann, Exploiting the Synergy between Automated-Test-Generation and Programming-by-Contract, in Proc. 31st International Conference on Software Engineering (ICSE'2009) , IEEE, May 2009
- Margus Veanes, Pavel Grigorenko, Peli de Halleux, and Nikolai Tillmann, Symbolic Query Exploration, no. MSR-TR-2009-65, May 2009
- Soonho Kong, Nikolai Tillmann, and Jonathan de Halleux, Automated Testing of Environment-Dependent Programs - A Case Study of Modeling the File System for Pex, in Proc. 6th International Conference on Information Technology: New Generations (ITNG'09), IEEE, April 2009
- Tao Xie, Nikolai Tillmann, Peli de Halleux, and Wolfram Schulte, Mutation Analysis of Parameterized Unit Tests, in Proc. International Conference on Software Testing, Verification and Validation Workshops, 2009. ICSTW '09., IEEE, April 2009
- Dries Vanoverberghe, Nikolai Tillmann, and Frank Piessens, Test Input Generation for Programs with Pointers, in Proc. Tools and Algorithms for the Construction and Analysis of Systems (TACAS), 15th International Conference, TACAS 2009, Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009, Springer Verlag, March 2009
- Nikolaj Bjørner, Nikolai Tillmann, and Andrei Voronkov, Path Feasibility Analysis for String-Manipulating Programs, in Proc. Tools and Algorithms for the Construction and Analysis of Systems (TACAS), 15th International Conference, TACAS 2009, Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009, Springer Verlag, 2009
2008
- Patrice Godefroid, Peli de Halleux, Michael Y. Levin, Aditya V. Nori, Sriram K. Rajamani, Wolfram Schulte, and Nikolai Tillmann, Automated Software Testing Using Program Analysis, in IEEE Software, IEEE Computer Society, October 2008
- Nikolaj Bjorner, Nikolai Tillmann, and Andrei Voronkov, Path Feasibility Analysis for String-Manipulating Programs, no. MSR-TR-2008-153, October 2008
- Tao Xie, Nikolai Tillmann, Peli de Halleux, and Wolfram Schulte, Fitness-Guided Path Exploration in Dynamic Symbolic Execution, no. MSR-TR-2008-123, September 2008
- Nikolai Tillmann and Jonathan de Halleux, Pex - White Box Test Generation for .NET, in Proc. of Tests and Proofs (TAP'08), Springer Verlag, Prato, Italy, April 2008
- Jonathan de Halleux and Nikolai Tillmann, Parameterized Unit Testing with Pex (Tutorial), in Proc. of Tests and Proofs (TAP'08), Springer Verlag, Prato, Italy, April 2008
- Nikolai Tillmann and Jonathan de Halleux, White-box testing of behavioral web service contracts with Pex, in TAV-WEB '08: Proceedings of the 2008 workshop on Testing, analysis, and verification of web services and applications, Association for Computing Machinery, Inc., New York, NY, USA, 2008
- Christoph Csallner, Nikolai Tillmann, and Yannis Smaragdakis, DySy: Dynamic Symbolic Execution for Invariant Inference, in ICSE '08: Proceedings of the 30th international conference on Software engineering, Association for Computing Machinery, Inc., New York, NY, USA, 2008
- Dries Vanoverberghe, Nikolaj Bjørner, Jonathan de Halleux, Wolfram Schulte, and Nikolai Tillmann, Using Dynamic Symbolic Execution to Improve Deductive Verification, in Proc. 15th International SPIN Workshop, Springer Verlag, 2008
- Saswat Anand, Patrice Godefroid, and Nikolai Tillmann, Demand-Driven Compositional Symbolic Execution, in Proc. International conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS), 2008, Springer Verlag, 2008
2007
- Christoph Csallner, Nikolai Tillmann, and Yannis Smaragdakis, DySy: Dynamic Symbolic Execution for Invariant Inference, no. MSR-TR-2007-151, November 2007
- Saswat Anand, Patrice Godefroid, and Nikolai Tillmann, Demand-Driven Compositional Symbolic Execution, no. MSR-TR-2007-138, October 2007
- Nicolas Kicillof, Wolfgang Grieskamp, Nikolai Tillmann, and Victor Braberman, Achieving both model and code coverage with automated gray-box testing, in A-MOST '07: Proceedings of the 3rd international workshop on Advances in model-based testing, Association for Computing Machinery, Inc., New York, NY, USA, 2007
2006
- Nikolai Tillmann and Wolfram Schulte, Unit Tests Reloaded: Parameterized Unit Testing with Symbolic Execution, in IEEE Software, vol. 23, no. 4, pp. 38-47, IEEE, July 2006
- Nikolai Tillmann, Feng Chen, and Wolfram Schulte, Discovering Likely Method Specifications, no. MSR-TR-2005-146, March 2006
- Nikolai Tillmann, Feng Chen, and Wolfram Schulte, Discovering Likely Method Specifications, in Proceedings of the 8th International Conference on Formal Engineering Methods (ICFEM’06), LNCS , Springer Verlag, 2006
- Nikolai Tillmann and Wolfram Schulte, Mock-object generation with behavior, in Automated Software Engineering, 2006. ASE '06. 21st IEEE/ACM International Conference on, IEEE Computer Society, 2006
- Wolfgang Grieskamp, Nikolai Tillmann, and Wolfram Schulte, XRT- Exploring Runtime for .NET Architecture and Applications, in Electr. Notes Theor. Comput. Sci., vol. 144, no. 3, pp. 3-26, 2006
2005
- Nikolai Tillmann and Wolfram Schulte, Parameterized Unit Tests with Unit Meister, in Proceedings of the 10th European Software Engineering Conference held jointly with 13th ACM SIGSOFT International Symposium on Foundations of Software Engineering, Association for Computing Machinery, Inc., 2005
- Nikolai Tillmann and Wolfram Schulte, Parameterized Unit Tests, in Proceedings of the 10th European Software Engineering Conference held jointly with 13th ACM SIGSOFT International Symposium on Foundations of Software Engineering, Association for Computing Machinery, Inc., 2005

