Peli de Halleux Senior Research Software Design Engineer Microsoft Research.

Slides:



Advertisements
Similar presentations
Telecooperation/RBG Technische Universität Darmstadt Copyrighted material; for TUD student use only Introduction to Computer Science I Topic 0: Introduction.
Advertisements

Leonardo de Moura Microsoft Research. Z3 is a new solver developed at Microsoft Research. Development/Research driven by internal customers. Free for.
Objects and Classes David Walker CS 320. Advanced Languages advanced programming features –ML data types, exceptions, modules, objects, concurrency,...
Tutorial Pex4Fun: Teaching and Learning Computer Science via Social Gaming Nikolai Tillmann, Jonathan de Halleux, Judith Bishop, Michal.
SYDJS July What is HaXe? Multi-platform language Open source ( Community driven Version 2.07 (around since 2005) Single syntax for.
Yoshi
Automatic test case generation for programs that are coded against interfaces and annotations or use native code Mainul Islam Supervisor: Dr. Christoph.
CodeContracts & Clousot Francesco Logozzo - Microsoft Mehdi Bouaziz – ENS.
Software Engineering & Automated Deduction Willem Visser Stellenbosch University With Nikolaj Bjorner (Microsoft Research, Redmond) Natarajan Shankar (SRI.
1 Symbolic Execution for Model Checking and Testing Corina Păsăreanu (Kestrel) Joint work with Sarfraz Khurshid (MIT) and Willem Visser (RIACS)
E-commerce Project Erik Zeitler Erik Zeitler2 Lab 2  Will be anounced and scheduled later  We will deploy Java Server Pages on a Tomcat server.
11-Jun-15 Exceptions. 2 Errors and Exceptions An error is a bug in your program dividing by zero going outside the bounds of an array trying to use a.
Pexxxx White Box Test Generation for
Exceptions. Errors and Exceptions An error is a bug in your program –dividing by zero –going outside the bounds of an array –trying to use a null reference.
(Almost) Frictionless Testing: Removing the Pain from TDD Erik Peterson
Program Exploration with Pex Nikolai Tillmann, Peli de Halleux Pex
CS 61C L03 C Arrays (1) A Carle, Summer 2005 © UCB inst.eecs.berkeley.edu/~cs61c/su05 CS61C : Machine Structures Lecture #3: C Pointers & Arrays
Nikolaj Bjørner Leonardo de Moura Nikolai Tillmann Microsoft Research August 11’th 2008.
UWWD In our quest to eliminate bad websites, we present…. HALLELUJAH!!
Peli de Halleux, Nikolai Tillmann Research in Software Engineering Microsoft Research, Redmond, USA.
Richard Pugh, Commercial Director Building Applications in R 16 th July 2013, LondonR Richard Pugh, Commercial Director,
Analysis of Complex Data Structures with PEX Vadim Mutilin Evgeniy Gerlits Vladimir Fedotov Mentor: Patrice Godefroid.
Deep Dive into Pex How Pex works, implications for design of Code Hunt puzzles Nikolai Tillmann Principal Software Engineering Manager Microsoft, Redmond,
Separation of Concerns Tao Xie Peking University, China North Carolina State University, USA In collaboration with Nikolai Tillmann, Peli de Halleux, Wolfram.
Tao Xie (North Carolina State University) Nikolai Tillmann, Jonathan de Halleux, Wolfram Schulte (Microsoft Research, Redmond WA, USA)
DySy: Dynamic Symbolic Execution for Invariant Inference.
Formal Methods: Three suggestions for rapid adoption Wolfram Schulte RiSE, MSR Workshop on Usable Verification 11/15/2010.
COP1220/CGS2423 Introduction to C++/ C for Engineers Professor: Dr. Miguel Alonso Jr. Fall 2008.
Software Engineering 2003 Jyrki Nummenmaa 1 CASE Tools CASE = Computer-Aided Software Engineering A set of tools to (optimally) assist in each.
DEBUGGING CHAPTER Topics  Getting Started with Debugging  Types of Bugs –Compile-Time Bugs –Bugs Attaching Scripts –Runtime Errors  Stepping.
Teaching and Learning Programming and Software Engineering via Interactive Gaming Tao Xie University of Illinois at Urbana-Champaign In collaboration with.
Additional Topics. API Bindings Bindings Binding Native API’s Create Binding Project Drop Jar or.a Done.
Week 6 - Wednesday.  What did we talk about last time?  Exam 1 post-mortem  Recursive running time.
Test Driven Development Arrange, Act, Assert… Awesome Jason Offutt Software Engineer Central Christian Church
Effective Test Driven Database Development Gojko Adzic
Tao Xie North Carolina State University Nikolai Tillmann, Peli de Halleux, Wolfram Schulte Microsoft Research.
STOP UNIT TESTIN G. * * Sort of… STOP UNIT TESTIN G * * Sort of… Alec Wojciechowski Senior Consultant ILM Professional Services
Created By: Kevin Cherry. A library that creates a display to run on top of your game allowing you to retrieve/set values and invoke methods.
CS527 Topics in Software Engineering (Software Testing and Analysis) Darko Marinov September 22, 2011.
Tao Xie (North Carolina State University) Peli de Halleux, Nikolai Tillmann, Wolfram Schulte (Microsoft Research)
Nikolai Tillmann, Jonathan de Halleux Tao Xie Microsoft Research Univ. Illinois at Urbana-Champaign.
ModelPedia Model Driven Engineering Graphical User Interfaces for Web 2.0 Sites Centro de Informática – CIn/UFPe ORCAS Group Eclipse GMF Fábio M. Pereira.
Week 4 - Monday.  What did we talk about last time?  Queues  Implementing queues with circular arrays.
Finding Errors in.NET with Feedback-Directed Random Testing Carlos Pacheco (MIT) Shuvendu Lahiri (Microsoft) Thomas Ball (Microsoft) July 22, 2008.
Cooperative Developer Testing: Tao Xie North Carolina State University In collaboration with Xusheng ASE and Nikolai Tillmann, Peli de
Tao Xie (North Carolina State University) Nikolai Tillmann, Peli de Halleux, Wolfram Schulte (Microsoft Research)
A Test Case + Mock Class Generator for Coding Against Interfaces Mainul Islam, Christoph Csallner Software Engineering Research Center (SERC) Computer.
Fall 2015CISC/CMPE320 - Prof. McLeod1 CISC/CMPE320 RAD due Friday in your Wiki. Presentations week 6 – next week. Schedule on next slide. Today: –Operator.
Fall 2015CISC/CMPE320 - Prof. McLeod1 CISC/CMPE320 RAD due Friday in your Wiki. Presentations week 6 – next week. Schedule on next slide. Today: –Operator.
CUTE: A Concolic Unit Testing Engine for C Koushik SenDarko MarinovGul Agha University of Illinois Urbana-Champaign.
Unit Testing & Code Coverage Please download and install EclEmma (link in resources section…I recommend Option 2) Also snarf the junit code for today’s.
Advanced C# Course Introduction SoftUni Team Technical Trainers Software University
Logic Engines as a Service Leonardo de Moura and Nikolaj Bjørner Microsoft Research.
Week 6 MondayTuesdayWednesdayThursdayFriday Testing III Reading due Group meetings Testing IVSection ZFR due ZFR demos Progress report due Readings out.
Symbolic Execution in Software Engineering By Xusheng Xiao Xi Ge Dayoung Lee Towards Partial fulfillment for Course 707.
Clear Lines Consulting · clear-lines.comApril 21, 2010 · 1 The Joy of Pex
Test-driven development
Dynamic Symbolic Execution
Introduction to Unit Testing in JavaScript
Design David Evans cs205: engineering software
A Test Case + Mock Class Generator for Coding Against Interfaces
SharePoint-Hosted Apps and JavaScript
Code Contracts and Pex Peli de Halleux, Nikolai Tillmann
New Ideas Track: Testing MapReduce-Style Programs Christoph Csallner, Leonidas Fegaras, Chengkai Li Computer.
A quick introduction.
Automatic Test Generation SymCrete
Unit Testing Good Practices
CISC/CMPE320 - Prof. McLeod
Test-Driven Development
Presentation transcript:

Peli de Halleux Senior Research Software Design Engineer Microsoft Research

Pex is…  A Unit Test Generation Tool for.NET  That Uses Dynamic Symbolic Exception  Uses Constraint Solving

Pex is…  Developed at Microsoft Research  5 years x 2 developers Nikolai Tillmann Peli de Halleux  Z3 Constraint Solver - 5 years x 2 developers Nikolaj Bjorner Leonardo de Moura  downloads last year, 3000 forum posts, …

DISCLAIMER

Universal Low of Constraint Solving  “If you cannot collect constraints, you cannot solve them” Famous test generation guru

Closed with Friends internal void Test(int i) { if (i == 123) throw new BugException(); } Private!!! Easy challenge

Assertions Deficit Syndrome  “Your tool only finds null references”  “Do you have any assertion?”  “Assertion???” Conversation between a developer and a test generation tool writer

Hidden Complexity  “Why do something in a couple instructions, when you can do it in millions” CPU Spoiled Developer

String Arithmetics void Sum(int[] numbers) { string sum = “0”; foreach(int number in numbers) { sum = (int.Parse(sum) + number).ToString() } if (sum == “123”) throw new BugException(); } Hidden Complexity

XML “Mon Amour” void DoSomething(string xml) { var doc = new XmlDocument(xml); var node = = 5]”); if(node.Value == 123) throw new BugException(); } Hidden Complexity

Technology Soup  “XML, XAML, Linq, Javascript, Aspx, Silverlight,.NET, COM, C/C++, Java, PHP, …….” Pex

The life of a generated test  “What do we do with the generated tests?” A developer in front of 100 generated tests

Test Poetry  “Your tool generated Foo001. I don’t like it.”  “What did you expect?”  “ Foo_Should_Fail_When_The_Bar_Is_N egative.” Conversation between a developer and a test generation tool writer

Test Poetry II  “Your tool generated “\0” ”  “What did you expect?”  “ ”Marc”.” Conversation between a developer and a test generation tool writer

Dangers of a Great Demo  “Your tool is Magic!” A developer wowed by a cool demo

Toxic Code Challenge  “New Testing Tools are always evaluated against toxic code”

Last Week’s Bug Challenge  “New Testing Tools are evaluated against previously found bugs”

Unit Testing Utopia  “I do not need test generation, I already practice Unit Testing (and/or TDD)” A Unit Testing Enthusiast

Test Driven Development Dogma  “Test Generation does not fit into the TDD process” TDD Convert

Dr Unit vs Mr Integration  “Most Unit Tests are Integration Tests in disguise” Testing tool writer gut feeling

Isolate First Development  “Test Generation cannot work without Isolation” Peli’s gut feeling

Welded Coding void ReadFile(string fileName) { if(!File.Exists(fileName)) throw new FileNotFoundException();... } Hard coded dependency

The Change Function Find a project with lots of pain Make it as easy as possible to get started

The Chicken and The Egg  “Who is using your tool?”  “Do you want to be the first?”  “I love your tool but no.”

Conclusions  Test Generation one piece of the puzzle  Isolation is key  Testing is an “integrated experience”