Tao Xie (North Carolina State University) Peli de Halleux, Nikolai Tillmann, Wolfram Schulte (Microsoft Research)

Slides:



Advertisements
Similar presentations
WHAT IS THE MOST IMPORTANT THING THAT WE HAVE LEARNED ABOUT QUALITY AND COST? The factors that lead to increased student learning and increased student.
Advertisements

Thomas Ball Microsoft Research. C# 3.0C# 3.0 Visual Basic 9.0Visual Basic 9.0 OthersOthers.NET Language Integrated Query LINQ to Objects LINQ to DataSets.
Tutorial Pex4Fun: Teaching and Learning Computer Science via Social Gaming Nikolai Tillmann, Jonathan de Halleux, Judith Bishop, Michal.
Peli de Halleux Senior Research Software Design Engineer Microsoft Research.
Software Development Life-Cycle Models
© Devon M.Simmonds, 2007 CSC 550 Graduate Course in Software Engineering ______________________ Devon M. Simmonds Computer Science Department University.
Senior Project – CSc 190 Senior Project Coordinator Professor Buckley Riverside 3002 Day 2!!!
1 CSC 221: Computer Programming I Fall 2006 See online syllabus (also accessible via Blackboard): Course goals:  To develop.
The Rhapsody in C++ Tool Training "Essential" © I-Logix v2.3 25/9/2000 EI-1 “Essential” Rhapsody in C++ Introduction.
Pexxxx White Box Test Generation for
The Education of a Software Engineer Mehdi Jazayeri Presented by Matthias Hauswirth.
1 Teaching Portfolio of Vandana P. Janeja Information Technology Major PhD in Management Rutgers University - Newark.
Program Exploration with Pex Nikolai Tillmann, Peli de Halleux Pex
"Come to the edge of the cliff," he said "We're afraid," they said "Come to the edge of the cliff," he said "We're afraid," they said "Come to the edge.
Mid-term evaluation. Midterm evaluation meeting Purpose of the meeting is to evaluate individuals and their contribution to the team effort Grading pass/fail.
1 CSc Senior Project Software Testing. 2 Preface “The amount of required study of testing techniques is trivial – a few hours over the course of.
European Workshop on Microelectronics Education, May 12, 2010, Kjell JeppsonPage 1 Implementing Constructive Alignment in a CDIO-oriented Master’s Program.
Section 01Resources1 HSQ - DATABASES & SQL 01 Resources And Franchise Colleges Name :MANSHA NAWAZ room :G 0/32
Separation of Concerns Tao Xie Peking University, China North Carolina State University, USA In collaboration with Nikolai Tillmann, Peli de Halleux, Wolfram.
JavaScript Basics Course Introduction SoftUni Team Technical Trainers Software University
Introduction to RUP Spring Sharif Univ. of Tech.2 Outlines What is RUP? RUP Phases –Inception –Elaboration –Construction –Transition.
Tao Xie North Carolina State University Supported by CACC/NSA Related projects supported in part by ARO, NSF, SOSI.
Automated Testing of System Software (Virtual Machine Monitors) Tao Xie Department of Computer Science North Carolina State University
Tao Xie (North Carolina State University) Nikolai Tillmann, Jonathan de Halleux, Wolfram Schulte (Microsoft Research, Redmond WA, USA)
BMAN Integrative Team Project Professor Linda A Macaulay.
COMP 111 Programming Languages 1 First Day. Course COMP111 Dr. Abdul-Hameed Assawadi Office: Room AS15 – No. 2 Tel: Ext. ??
EECE 310 Software Engineering Lecture 0: Course Orientation.
1 General Introduction CPRE 416-Software Evolution and Maintenance-Lecture 1.
Course Introduction CSCI Software Engineering II Fall 2014 Bill Pine.
Z26 Project Management Introduction lecture 1 13 th January 2005
Document Automation About 10 minutes. About Me Notes – page 7 Early years to early adulthood – India; British influence Education – engineering, math,
PBL in Team Applied to Software Engineering Education Liubo Ouyang Software School, Hunan University CEIS-SIOE, January 2006, Harbin.
Introduction to Information Systems and Technology MIS 213, Spring 2015 CIS 2005, CIS 1007.
Teaching and Learning Programming and Software Engineering via Interactive Gaming Tao Xie University of Illinois at Urbana-Champaign In collaboration with.
B. Prabhakaran1 Multimedia Systems Textbook Any/Most Multimedia Related Books Reference Papers: Appropriate reference papers discussed in class from time.
IT Project Management MIS 492/592, Fall 2013 CIS 1013.
Tao Xie North Carolina State University Nikolai Tillmann, Peli de Halleux, Wolfram Schulte Microsoft Research.
Code Contracts Parameterized Unit Tests Tao Xie. Example Unit Test Case = ? Outputs Expected Outputs Program + Test inputs Test Oracles 2 void addTest()
1 CSC 221: Computer Programming I Fall 2005 See online syllabus (also accessible via Blackboard): 
Academy for Teaching and Learning Excellence (ATLE) Diane R. Williams, Ph.D. Department of Math & Statistics Fran Hopf, Ph.D. National Center for Academic.
Nikolai Tillmann, Jonathan de Halleux Tao Xie Microsoft Research Univ. Illinois at Urbana-Champaign.
Computer Music Technology. Course 1 st Year ICM & Programming 2 nd Year A. Music Programming & A. Programming 3 rd Year Generative Music (& Project ?)
INTRODUCTION TO PROGRAMMING ISMAIL ABUMUHFOUZ | CS 146.
Chapter 8 Lecture 1 Software Testing. Program testing Testing is intended to show that a program does what it is intended to do and to discover program.
Cooperative Developer Testing: Tao Xie North Carolina State University In collaboration with Xusheng ASE and Nikolai Tillmann, Peli de
Teaching UML Using Umple: Applying Model-Oriented Programming in the Classroom CSEE&T 2011 Timothy C. Lethbridge, Gunter Mussbacher, Andrew Forward and.
Workshop #1: Introduction to Graduation Project Wednesday September 2 nd at 10 am Capstone Committee Department of Computer Science.
Web Fundamentals (HTML and CSS) Course Introduction Svetlin Nakov Technical Trainer Software University
Tao Xie (North Carolina State University) Nikolai Tillmann, Peli de Halleux, Wolfram Schulte (Microsoft Research)
Web Fundamentals (HTML and CSS)
Parameterized Unit Testing in the Open Source Wild Wing Lam (U. Illinois) In collaboration with Siwakorn Srisakaokul, Blake Bassett, Peyman Mahdian and.
Course Introduction MIS 3501, Spring 2016 Jeremy Shafer Department of MIS Fox School of Business Temple University 1/12/2016.
LRC Lab’s Target Population The Underprepared Student.
IT Job Roles. ICT Technician An ICT technician is a person who works in an IT based environment and their job is to fix any computer that is not functioning.
1 Sean Aluoto Anthony Keeley Eric Werner. 2 Project Plan Overview Project Lifecycle model Time line Deliverables Organization plan Risk management Design.
CSC4841/6841 Computer Animation Administrative Issues & Course Overview Ying Zhu.
School of Mechanical, Materials and Manufacturing Engineering What is this course? Product design is an exciting profession.
Water and people in a changing world Yhd ; Spring
Course Overview Robotics in Construction Automation Instructor Prof. Shih-Chung Kang 2008 Spring.
IT Project Management MIS419/576 Fall 2017.
Proposal for Term Project
Project planning Unit 3 Employability and Professional Development
Meredith A. Henry, M.S. Department of Psychology
Code Contracts and Pex Peli de Halleux, Nikolai Tillmann
CSCE 315 Programming Studio
Tonga Institute of Higher Education IT 141: Information Systems
Tonga Institute of Higher Education IT 141: Information Systems
About the Course Software Testing & Verification
Presentation transcript:

Tao Xie (North Carolina State University) Peli de Halleux, Nikolai Tillmann, Wolfram Schulte (Microsoft Research)

var list = new List(); list.Add(item); var list = new List(); list.Add(item); Assert.AreEqual(1, list.Count); } Assert.AreEqual(1, list.Count); }  Three essential ingredients (e.g., testing List.Add(int)):  Data  Method Sequence  Assertions void TestAdd() { int item = 3; void TestAdd() { int item = 3;

void TestAdd(List list, int item) { Assume.IsTrue(list != null); var count = list.Count; list.Add(item); Assert.AreEqual(count + 1, list.Count); } void TestAdd(List list, int item) { Assume.IsTrue(list != null); var count = list.Count; list.Add(item); Assert.AreEqual(count + 1, list.Count); }  Parameterized Unit Test = Unit Test with Parameters  Separation of concerns  Data is generated by a tool (e.g., Pex)  Developer can focus on functional (algebraic) spec [Tillmann&Schulte ESEC/FSE 05]

void TestAdd() { int item = 3; var list = new List(); list.Add(item); Assert.AreEqual(1, list.Count); } void TestAdd() { int item = 3; var list = new List(); list.Add(item); Assert.AreEqual(1, list.Count); } void TestAdd(List list, int item) { Assume.IsTrue(list != null); var count = list.Count; list.Add(item); Assert.AreEqual(count + 1, list.Count); } void TestAdd(List list, int item) { Assume.IsTrue(list != null); var count = list.Count; list.Add(item); Assert.AreEqual(count + 1, list.Count); } Required skill set Abstraction Generalization, Experimentation, Comprehension, …

 Graduate software testing course (CSC 712) at North Carolina State University  2008, 2009, 2010 Fall semesters (20, 18, and 27 students)  Lectures: two 75-minute lectures per week  Mons: foundation/coverage criteria instructed based on “Introduction to Software Testing” by Ammann and Offutt  Weds: practical/hands-on testing techniques/tools, with Pex, Code Contracts, and Nmodel  Assignments/projects  Test generalization + writing new PUTs

Using industrial-strength tools and technologies (e.g., Pex)  reduce the “debugging” overhead imposed on both the students and teaching staff  give students experiences that they could immediately benefit from when they took on their industrial jobs Over using academic research prototypes  lack support for dealing with various types of real-world code features  encounter many faults in prototypes  lack timely technical support or fixing of reported faults

 One/half-day tutorials (10-25 practitioners)  inside MS, e.g., internal training of MS developers  outside MS, e.g., invited tutorials at.NET user groups  Inside Microsoft (in a training lab at Microsoft)  Attendees using lab computers installed w/ Pex  Slides + demos + intensive hands-on exercises  Outside Microsoft (in a meeting room)  Attendees often not having computers installed w/ Pex  Slides + demos

 Set realistic expectations right away  Tools/technologies have limitations, not “panacea”  Need teach developers about limitations  Don’t try to change deeply ingrained beliefs  … at least not all at once  Example: Believers in TDD (Test-Driven-Development)  Emphasize how new techniques relates to existing ones, how they complement

 Trainees with different incentives of learning (inducing different emphasis on technology adoption)  Univ: earn good course grades, learning various skills  Industry: “come and watch”, learning what is going on  Training with different durations  Univ: one semester  Industry: full/half day

 Accessibility  Visual Studio vs. Browser  Active learning  Doing with feedback  Contributing back  Social aspects  Ranking  Livefeed  Competitive environment

 us/vstudio/bb aspx us/vstudio/bb aspx

 Testing real-world code (not just “toy” code examples)  Different projects for different teams  Allow learning from each other in real-world complications  Effort focused on testing, not code development  Fully exploit limited course period time  Student team selects a real open-source project to test  Equipped with existing conventional unit tests  Project milestones  Midterm: test generalization; final: new PUT writing  Drawback  Not “real” develop testing!