MS thesis/project ideas for MS students in the Department of Computer Science at the University of Minnesota Duluth suggestions by Dr Andrew Brooks, Heller.

Slides:



Advertisements
Similar presentations
Configuration management
Advertisements

Configuration management
SOFTWARE TESTING. INTRODUCTION  Software Testing is the process of executing a program or system with the intent of finding errors.  It involves any.
Chapter 1. The Phases of Software Development. Data Structure 2 Chapter outline  Objectives  Use Javadoc to write a method’s complete specification.
Symmetry-Aware Predicate Abstraction for Shared-Variable Concurrent Programs Alastair Donaldson, Alexander Kaiser, Daniel Kroening, and Thomas Wahl Computer.
Software Engineering and Design Principles Chapter 1.
Slides prepared by Rose Williams, Binghamton University Chapter 1 Getting Started 1.1 Introduction to Java.
Static and Dynamic Contract Verifiers For Java Hongming Liu.
Copyright © 2006 The McGraw-Hill Companies, Inc. Programming Languages 2nd edition Tucker and Noonan Chapter 18 Program Correctness To treat programming.
Michael Ernst, page 1 Improving Test Suites via Operational Abstraction Michael Ernst MIT Lab for Computer Science Joint.
Information Hiding and Encapsulation
1 Programming & Programming Languages Overview l Machine operations and machine language. l Example of machine language. l Different types of processor.
1 CMSC 132: Object-Oriented Programming II Nelson Padua-Perez William Pugh Department of Computer Science University of Maryland, College Park.
1 Advanced Material The following slides contain advanced material and are optional.
Chapter 1 Principles of Programming and Software Engineering.
C++ for Engineers and Scientists Third Edition
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Lecturer: Dr. AJ Bieszczad Chapter 76-1 Software engineering standards Standards for you Standards for others Matching design with implementation.
CODING Research Data Management. Research Data Management Coding When writing software or analytical code it is important that others and your future.
SE320: Introduction to Computer Games Week 8: Game Programming Gazihan Alankus.
Refactoring Lecture 5 CIS 6101 Software Processes and Metrics.
Topic #10: Optimization EE 456 – Compiling Techniques Prof. Carl Sable Fall 2003.
1 Software Construction and Evolution - CSSE 375 Exception Handling – Logging & Special Situations Steve Chenoweth Office: Moench Room F220 Phone: (812)
Introduction Algorithms and Conventions The design and analysis of algorithms is the core subject matter of Computer Science. Given a problem, we want.
Chapter 25 Formal Methods Formal methods Specify program using math Develop program using math Prove program matches specification using.
How to Design Error Steady Code Ivaylo Bratoev Telerik Corporation
The Daikon system for dynamic detection of likely invariants MIT Computer Science and Artificial Intelligence Lab. 16 January 2007 Presented by Chervet.
Dr. Tom WayCSC Testing and Test-Driven Development CSC 4700 Software Engineering Based on Sommerville slides.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 20 Slide 1 Critical systems development 3.
Software Engineering Experimentation Example Experimental Design Jeff Offutt Robert Nilsson.
CS Data Structures I Chapter 2 Principles of Programming & Software Engineering.
1 Test Selection for Result Inspection via Mining Predicate Rules Wujie Zheng
Software Testing and Quality Assurance Practical Considerations (4) 1.
Pre- and postconditions, Using assertions and exceptions 1 Pre- and postconditions Using assertions and exceptions.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Java Basics Hussein Suleman March 2007 UCT Department of Computer Science Computer Science 1015F.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
CSC 1051 M.A. Papalaskari, Villanova University Algorithms Dr. Mary-Angela Papalaskari Department of Computing Sciences Villanova University Course website:
13 Aug 2013 Program Verification. Proofs about Programs Why make you study logic? Why make you do proofs? Because we want to prove properties of programs.
CSCI1600: Embedded and Real Time Software Lecture 28: Verification I Steven Reiss, Fall 2015.
Survey of Tools to Support Safe Adaptation with Validation Alain Esteva-Ramirez School of Computing and Information Sciences Florida International University.
PROGRAMMING TESTING B MODULE 2: SOFTWARE SYSTEMS 22 NOVEMBER 2013.
Computer Science 320 A First Program in Parallel Java.
1 Introduction 1. Why Data Structures? 2. What AreData Structure? 3. Phases of Software Development 4. Precondition and Postcondition 5. Examples.
“Discipline is the refining fire by which talent becomes ability.” – Roy L. Smith Thought for the Day.
Defining Classes I Part B. Information hiding & encapsulation separate how to use the class from the implementation details separate how to use the class.
David Evans CS201j: Engineering Software University of Virginia Computer Science Lecture 10: Programming Exceptionally.
Testing Overview Software Reliability Techniques Testing Concepts CEN 4010 Class 24 – 11/17.
Structuring Redundancy for Fault Tolerance Chapter 2 Designed by: Hadi Salimi Instructor: Dr. Mohsen Sharifi.
1 Structured Programming Arab Academy for Science and Technology CC112 Dr. Sherif Mohamed Tawfik The Course.
Chapter 15 Running Time Analysis. Topics Orders of Magnitude and Big-Oh Notation Running Time Analysis of Algorithms –Counting Statements –Evaluating.
Section 3.3 Exceptional Situations. 3.3 Exceptional Situations Exceptional situation Associated with an unusual, sometimes unpredictable event, detectable.
Computer Science: A Structured Programming Approach Using C1 Objectives ❏ To understand the structure of a C-language program. ❏ To write your first C.
Week#3 Software Quality Engineering.
Testing and Debugging UCT Department of Computer Science Computer Science 1015F Hussein Suleman March 2009.
Introduction to Algorithms
Introduction to the C Language
Logger, Assert and Invariants
Principles of Programming and Software Engineering
Accessible Formal Methods A Study of the Java Modeling Language
FOR0383 Software Quality Assurance
Software Engineering Experimentation
Programming Languages 2nd edition Tucker and Noonan
Software Engineering Experimentation
Chapter 1 Introduction(1.1)
Introduction to Algorithms
(Computer fundamental Lab)
Truth tables: Ways to organize results of Boolean expressions.
Programming Languages 2nd edition Tucker and Noonan
Presentation transcript:

MS thesis/project ideas for MS students in the Department of Computer Science at the University of Minnesota Duluth suggestions by Dr Andrew Brooks, Heller Hall /17/2014Dr Andrew Brooks - MS thesis/project ideas

background research article 10/17/20142 Kanewala, U.; Bieman, J.M., "Techniques for testing scientific programs without an oracle," Software Engineering for Computational Science and Engineering (SE-CSE), th International Workshop on, pp.48-57, 2013 doi: /SECSE Some presentation material drawn directly from article(s). Dr Andrew Brooks - MS thesis/project ideas

10/17/20143 A Taxonomy for Test Oracles, Douglas Hoffman, Software Quality Week (QW’98), 1998, 8pp. A gentle introduction to oracles: Some presentation material drawn directly from article(s). Chapter 6 Assertion facility, in JDK 1.4 Tutorial, Greg Travis, Manning Publications Company, A gentle introduction to assertions: Dr Andrew Brooks - MS thesis/project ideas

the difficulty of testing software Dr Andrew Brooks - MS thesis/project ideas4 Test case identifierTest case valuesExpected resultsActual results 1[2,7,0]11 2[0,7,2]10 How do we calculate the expected results? (and know that they are correct) The oracle is the mechanism used to generate expected results. 10/17/2014

Oracle methods used by Hoffman A human calculates the expected results. A separate program implementing the same algorithm is used to calculate the expected results. A simulation is used to calculate the expected results. A hardware simulator is used to calculate the expected results. An earlier version of the software is used to calculate the expected results. The same version of the software on a different hardware platform is used to calculate the expected results. A check is made on the consistency of generated values and end points. A sample of values can be checked against independently generated expected results from existing commercial or open-source software. 10/17/20145Dr Andrew Brooks - MS thesis/project ideas

the difficulty of testing scientific software 10/17/20146 “The existence of an oracle is often assumed in software testing.” “But in many situations, especially for scientific programs, oracles do not exist or they are too hard to implement.” Kanewala and Bieman, 2013 Scientists often write programs to discover answers that are previously unknown. Dr Andrew Brooks - MS thesis/project ideas

Metamorphic Testing (a way around the oracle problem) A metamorphic relation specifies how a particular change to the input of the program would change the output. 10/17/20147 failure Dr Andrew Brooks - MS thesis/project ideas

examples of metamorphic relations 10/17/20148Dr Andrew Brooks - MS thesis/project ideas

Is it possible to replicate an experiment? A report should contain enough detail so that another researcher can repeat the experiment and obtain similar results with similar conclusions. 10/17/2014Dr Andrew Brooks - MS thesis/project ideas9

MS thesis/project idea 1. First begin by replicating in part or in full one of the previous experiments on metamorphic testing. – References to several emprical studies are given by Kanewala and Bieman. 10/17/201410Dr Andrew Brooks - MS thesis/project ideas

MS thesis/project idea 1. Then tackle one of the problems described by Kanewala and Bieman. – automatic detection of metamorphic relations some recent work has been done by Kanewala and Bieman – identifying the most effective metamorphic relations – identifying the most effective combinations of metamorphic relations – understanding why some program mutations could not be killed using metamorphic testing 10/17/ deliberately introduced mistakes Dr Andrew Brooks - MS thesis/project ideas

Assertion Testing (a way around the oracle problem) Assertions are embedded into source code and evaluated when a test case is executed. 10/17/ An assertion is a predicate placed in a program to indicate that the developer thinks that the predicate is always true at that place. Dr Andrew Brooks - MS thesis/project ideas

13 package asserting; public class First { public static void main(String[] args) { int j = 10; assert j>10; } simple Java example Exception in thread "main" java.lang.AssertionError at asserting.First.main(First.java:7) What happens when you run this program? console 10/17/2014

Dr Andrew Brooks - MS thesis/project ideas14 Assertion basics (Greg Travis chapter) Preconditions should be true at the start of a method. Postconditions should be true at the end of a method. Invariants should always be true. – A speed should not be faster than light speed... 10/17/2014

MS thesis/project idea 2. First begin by replicating in part or in full one of the previous experiments on assertion testing. – References to several empirical studies are given by Kanewala and Bieman. 10/17/201415Dr Andrew Brooks - MS thesis/project ideas

MS thesis/project idea 2. Then tackle one of the problems described by Kanewala and Bieman. – automatic invariant detection can yield spurious invariants can ways be found to reduce or eliminate these? – the effectiveness of assertion checking seems all or nothing depending on the method can we understand why? – many more experiments are needed working with specifications to identify assertions rewriting program comments as assertions 10/17/201416Dr Andrew Brooks - MS thesis/project ideas