MAJOR: An Efficient and Extensible Tool for Mutation Analysis in a Java Compiler
|
|
- Whitney Alexander
- 5 years ago
- Views:
Transcription
1 MAJOR: An Efficient and Extensible Tool for Mutation Analysis in a Java Compiler René Just 1, Franz Schweiggert 1, and Gregory M. Kapfhammer 2 1 Ulm University, Germany 2 Allegheny College, USA 26th International Conference on Automated Software Engineering Lawrence, Kansas, USA November 6-12, 2011
2 Overview of MAJOR A Tool for Mutation Analysis
3 Overview of MAJOR Compiler- Integrated A Tool for Mutation Analysis
4 Overview of MAJOR Compiler- Integrated A Tool for Mutation Analysis Fast and Scalable
5 Overview of MAJOR Compiler- Integrated Domain Specific Language A Tool for Mutation Analysis Fast and Scalable
6 Overview of MAJOR Compiler- Integrated Domain Specific Language A Tool for Mutation Analysis Fast and Scalable Configurable and Extensible
7 Overview of MAJOR Compiler- Integrated Mutation Coverage Information Domain Specific Language A Tool for Mutation Analysis Fast and Scalable Configurable and Extensible
8 Overview of MAJOR Compiler- Integrated Mutation Coverage Information Domain Specific Language A Tool for Mutation Analysis Fast and Scalable Enables Optimized Workflow Configurable and Extensible
9 Overview of Mutation Analysis Mutation Analysis
10 Overview of Mutation Analysis Methodically inject small syntactical faults into the program under test Mutation Analysis
11 Overview of Mutation Analysis Methodically inject small syntactical faults into the program under test Mutation Analysis Unbiased and powerful method for assessing test oracles and input values
12 Overview of Mutation Analysis Methodically inject small syntactical faults into the program under test Mutation Analysis Unbiased and powerful method for assessing test oracles and input values Useful method for fault seeding during the empirical study of testing techniques
13 Overview of Mutation Analysis public int eval(int x){ int a=3, b=1, y; y = a * x; y += b; return y; public int max(int a, int b){ int max = a; if(b>a){ max=b; return max;
14 Overview of Mutation Analysis public int eval(int x){ int a=3, b=1, y; y = a * x; y += b; return y; public int max(int a, int b){ int max = a; if(b>a){ max=b; return max;
15 Overview of Mutation Analysis public int eval(int x){ int a=3, b=1, y; y = a * x; y += b; return y; public int max(int a, int b){ int max = a; if(b>a){ max=b; = = y = a - x; y = a + x; y = a / x; if(b < a) if(b!= a) if(b == a) return max;
16 MAJOR s Compiler MAJOR s Compiler
17 MAJOR s Compiler MAJOR s Compiler Enhanced Standard Java Compiler
18 MAJOR s Compiler Source Files MAJOR s Compiler Enhanced Standard Java Compiler
19 MAJOR s Compiler Common Compiler Options Source Files MAJOR s Compiler Enhanced Standard Java Compiler
20 MAJOR s Compiler Common Compiler Options Domain Specific Language Source Files MAJOR s Compiler Enhanced Standard Java Compiler
21 MAJOR s Compiler Common Compiler Options Domain Specific Language Source Files MAJOR s Compiler Bytecode with Embedded Mutants Enhanced Standard Java Compiler
22 MAJOR s Domain Specific Language // variable declaration listcor={&&,, ==,!=; // Define replacement list BIN(+)<"org"> -> {-,*; BIN(*)<"org"> -> {/,%; // Define own operator myop{ BIN(&&) -> listcor; BIN( ) -> listcor; COR; LVR; // Enable built-in operator AOR AOR<"org">; // Enable operator myop myop<"java.lang.system@println">;
23 MAJOR s Domain Specific Language // variable declaration listcor={&&,, ==,!=; // Define replacement list BIN(+)<"org"> -> {-,*; BIN(*)<"org"> -> {/,%; // Define own operator myop{ BIN(&&) -> listcor; BIN( ) -> listcor; COR; LVR; // Enable built-in operator AOR AOR<"org">; // Enable operator myop myop<"java.lang.system@println">; Specify mutation operators in detail
24 MAJOR s Domain Specific Language // variable declaration listcor={&&,, ==,!=; // Define replacement list BIN(+)<"org"> -> {-,*; BIN(*)<"org"> -> {/,%; // Define own operator myop{ BIN(&&) -> listcor; BIN( ) -> listcor; COR; LVR; // Enable built-in operator AOR AOR<"org">; // Enable operator myop myop<"java.lang.system@println">; Specify mutation operators in detail Define own mutation operator groups
25 MAJOR s Domain Specific Language // variable declaration listcor={&&,, ==,!=; // Define replacement list BIN(+)<"org"> -> {-,*; BIN(*)<"org"> -> {/,%; // Define own operator myop{ BIN(&&) -> listcor; BIN( ) -> listcor; COR; LVR; // Enable built-in operator AOR AOR<"org">; // Enable operator myop myop<"java.lang.system@println">; Specify mutation operators in detail Define own mutation operator groups Enable operators for a specific package, class, or method
26 Optimized Mutation Analysis Process 1 Embed and compile all mutants 2 Run test suite on instrumented program 3 Sort tests according to their runtime 4 Perform mutation analysis with reordered test suite
27 Optimized Mutation Analysis Process 1 Embed and compile all mutants 2 Run test suite on instrumented program 3 Sort tests according to their runtime 4 Perform mutation analysis with reordered test suite
28 Optimized Mutation Analysis Process 1 Embed and compile all mutants 2 Run test suite on instrumented program 3 Sort tests according to their runtime 4 Perform mutation analysis with reordered test suite
29 Optimized Mutation Analysis Process 1 Embed and compile all mutants 2 Run test suite on instrumented program 3 Sort tests according to their runtime 4 Perform mutation analysis with reordered test suite
30 Conclusion Key Concepts and Features: Compiler-integrated solution Furnishes its own domain specific language Provides mutation coverage information
31 Conclusion Key Concepts and Features: Compiler-integrated solution Furnishes its own domain specific language Provides mutation coverage information Characteristics of MAJOR: Fast and scalable technique Configurable and extensible mutation tool Enables an optimized workflow for mutation analysis
32 Figure: Multiple mutated binary expression as the right hand side of an assignment statement. public int eval(int x){ int a = 3, b = 1, y; y = (M_NO==1)? a - x: (M_NO==2)? a + x: (M_NO==3)? a % x: (M_NO==0 && COVERED(1,3))? a * x : a * x; // original if(m_no==4){ y -= b; else if(m_no==0 && COVERED(4,4)){ y += b; else{ y += b; // original return y; Figure: Collecting coverage information. Figure: Integration of the conditional mutation approach into the compilation process. listcor={&&,, ==,!=; method ="java.lang.system@println"; myop{ BIN(&&) -> listcor; BIN( ) -> listcor; COR; LVR; // Define replacement list BIN(+)<"org"> -> {-,*; BIN(*)<"org"> -> {/,%; // Enable built-in operator AOR AOR<"org">; // Enable operator myop myop<method>; Figure: DSL script to define the mutation process. package major.mutation; public class Driver{ public static int MAX_NO = ; public static int[] COV = new int[max_no]; public static int M_NO=0; public static boolean COVERED (int from, int to){ for(int i=from; i<=to; ++i){ COV[i]++; return false; Figure: Simple driver class implementation. Figure: Minimizing the runtime of mutation analysis by means of test prioritization and mutation coverage. Figure: Compiler runtime to generate and compile the mutants for all of the projects. Figure: Runtime of the mutation analysis processes. Do you want to learn more details about MAJOR? MAJOR: An Efficient and Extensible Tool for Mutation Analysis in a Java Compiler René Just 1 and Franz Schweiggert 1 and Gregory M. Kapfhammer 2 1 Department of Applied Information Processing, Ulm University 2 Department of Computer Science, Allegheny College IMPORTANT CONTRIBUTIONS Enhances the Java 6 Standard Edition compiler Provides its own domain specific language (DSL) Easily applicable in all Java development environments Effectively reduces mutant generation time to a minimum CONDITIONAL MUTATION Transforms the program s abstract syntax tree (AST) Encapsulates the mutations within conditional statements ASSIGN IDENT COND-EXPR y ASSIGN THEN COND ELSE IDENT BINARY BINARY (M NO ==1) COND-EXPR y * - a x a x THEN COND ELSE BINARY (M NO ==2) BINARY + * a x a x SUPPORTED FEATURES Simple compiler options enable the mutation analysis Configurable mutation operators by means of a DSL Determination of mutation coverage by running the original code MUTATION COVERAGE It is impossible to kill a mutant if it is not reached and executed Additional instrumentation determines the covered mutations Mutation coverage is only examined if the tests execute the original code An external driver efficiently records the covered mutations as ranges Only those mutants covered by a test case are executed IMPLEMENTATION DETAILS OPTIMIZED MUTATION ANALYSIS PROCESS 1. Embed and compile all mutants into the original program 2. Run tests on original program to gather runtime and coverage 3. Sort tests in ascending order according to their runtime 4. Perform mutation analysis while employing the reordered test suite and the mutation coverage information Compiler runtime in seconds Number of killed mutants RUNTIME OF MAJOR S COMPILER Number of mutants apache ant jfreechart itext java pathfinder commons math commons lang numerics4j Negligible overhead for generating and compiling the mutants Applicable on commodity workstations, even for large projects EVALUATION OF MUTATION ANALYSIS PROCESSES optimized order (using coverage information) 40 random order (using coverage information) original order (using coverage information) optimized order (without coverage information) 20 random order (without coverage information) original order (without coverage information) FUTURE WORK Runtime in seconds Implementing new mutation operators at the semantic level Extending the domain specific language to support new operators Integrating conditional mutation into the new Java 7 compiler rene.just@uni-ulm.de 26th IEEE/ACM International Conference on Automated Software Engineering (ASE 2011) gkapfham@allegheny.edu See you tomorrow for a live demonstration!
Using Non-Redundant Mutation Operators and Test Suite Prioritization to Achieve Efficient and Scalable Mutation Analysis
Using Non-Redundant Mutation Operators and Test Suite Prioritization to Achieve Efficient and Scalable Mutation Analysis René Just Dept. of Computer Science and Engineering University of Washington rjust@cs.washington.edu
More informationThe Major Mutation Framework
The Major Mutation Framework Version 1.3.2 May 31, 2017 Contents 1 Overview 3 1.1 Installation.................................... 3 1.2 How to get started................................ 4 2 Step by Step
More informationOn Effective and Efficient Mutation Analysis for Unit and Integration Testing
Universität Ulm Institut für Angewandte Informationsverarbeitung On Effective and Efficient Mutation Analysis for Unit and Integration Testing Dissertation Dissertation zur Erlangung des Doktorgrades Dr.
More informationComputing Science 114 Solutions to Midterm Examination Tuesday October 19, In Questions 1 20, Circle EXACTLY ONE choice as the best answer
Computing Science 114 Solutions to Midterm Examination Tuesday October 19, 2004 INSTRUCTOR: I E LEONARD TIME: 50 MINUTES In Questions 1 20, Circle EXACTLY ONE choice as the best answer 1 [2 pts] What company
More informationWhat is Mutation Testing? Mutation Testing. Test Case Adequacy. Mutation Testing. Mutant Programs. Example Mutation
What is Mutation Testing? Mutation Testing Breaking the application to test it n Mutation Testing is a testing technique that focuses on measuring the adequacy of test cases n Mutation Testing is NOT a
More informationMTAT : Software Testing
MTAT.03.159: Software Testing Lecture 04: White-Box Testing (advanced) Part1 Dietmar Pfahl Spring 2018 email: dietmar.pfahl@ut.ee White-Box Testing Techniques Control-Flow Testing Data-Flow Testing Mutation
More informationFault-based testing. Automated testing and verification. J.P. Galeotti - Alessandra Gorla. slides by Gordon Fraser. Thursday, January 17, 13
Fault-based testing Automated testing and verification J.P. Galeotti - Alessandra Gorla slides by Gordon Fraser How good are my tests? How good are my tests? Path testing Boundary interior testing LCSAJ
More informationCSE 413 Languages & Implementation. Hal Perkins Winter 2019 Structs, Implementing Languages (credits: Dan Grossman, CSE 341)
CSE 413 Languages & Implementation Hal Perkins Winter 2019 Structs, Implementing Languages (credits: Dan Grossman, CSE 341) 1 Goals Representing programs as data Racket structs as a better way to represent
More informationProgram Representations
Program Representations 17-654/17-765 Analysis of Software Artifacts Jonathan Aldrich Representing Programs To analyze software automatically, we must be able to represent it precisely Some representations
More informationProgram-based Mutation Testing
Program-based Mutation Testing CS 4501 / 6501 Software Testing [Ammann and Offutt, Introduction to Software Testing, Ch. 9.2] 1 Applying Syntax-Based Testing to Programs Test requirements are derived from
More informationWhite Box Testing III
White Box Testing III Outline Today we continue our look at white box testing methods, with mutation testing We will look at : definition and role of mutation testing what is a mutation? how is mutation
More informationMutation Testing. Leaving the Stone Age
Mutation Testing Leaving the Stone Age 2017 whoami ios Developer by day compiler hacker by night https://twitter.com/1101_debian https://lowlevelbits.org https://systemundertest.org Outline Quality of
More informationJava Software Solutions for AP Computer Science 3rd Edition, Lewis et al. 2011
A Correlation of AP Computer Science 3rd Edition, Lewis et al. 2011 To the INTRODUCTION This document demonstrates how AP (Advanced Placement) Computer Science, 3rd Edition 2011, Lewis et al. meets the
More informationCoverage Metrics for Post-Silicon Validation. Tim Cheng, Ming Gao, and Peter Lisherness Univ. of California, Santa Barbara
Coverage Metrics for Post-Silicon Validation Tim Cheng, Ming Gao, and Peter Lisherness Univ. of California, Santa Barbara Coverage Metrics for Post-Si Validation PI: Cheng 2 Inadequacy of Existing Metrics
More informationReview for Test 1 (Chapter 1-5)
Review for Test 1 (Chapter 1-5) 1. Introduction to Computers, Programs, and Java a) What is a computer? b) What is a computer program? c) A bit is a binary digit 0 or 1. A byte is a sequence of 8 bits.
More informationClass-Component Testability Analysis
Class-Component Testability Analysis SUPAPORN KANSOMKEAT Faculty of Engineering, Chulalongkorn University Bangkok, 10330, THAILAND WANCHAI RIVEPIBOON Faculty of Engineering, Chulalongkorn University Bangkok,
More informationPart I: Preliminaries 24
Contents Preface......................................... 15 Acknowledgements................................... 22 Part I: Preliminaries 24 1. Basics of Software Testing 25 1.1. Humans, errors, and testing.............................
More informationMuClipse Requirements Specification
MuClipse Requirements Specification v0.4 Project Team: 12/6/2006 Document Author(s): Project Sponsor: Dr. Laurie Williams 1. Introduction There are already several open source Java mutation (JMutation)
More informationCS152 Programming Language Paradigms Prof. Tom Austin, Fall Syntax & Semantics, and Language Design Criteria
CS152 Programming Language Paradigms Prof. Tom Austin, Fall 2014 Syntax & Semantics, and Language Design Criteria Lab 1 solution (in class) Formally defining a language When we define a language, we need
More informationUsing Mutation to Automatically Suggest Fixes for Faulty Programs
2010 Third International Conference on Software Testing, Verification and Validation Using Mutation to Automatically Suggest Fixes for Faulty Programs Vidroha Debroy and W. Eric Wong Department of Computer
More informationCMPSCI 521/621 Homework 2 Solutions
CMPSCI 521/621 Homework 2 Solutions Problem 1 Direct data dependencies: 3 is directly data dependent on 1 and 5 5 is directly data dependent on 1,3, and 5 7 is directly data dependent on 1,3, and 5 Note,
More informationIntroduction to Software Testing Chapter 5.1 Syntax-based Testing
Introduction to Software Testing Chapter 5.1 Syntax-based Testing Paul Ammann & Jeff Offutt http://www.cs.gmu.edu/~offutt/ softwaretest/ Ch. 5 : Syntax Coverage Four Structures for Modeling Software Graphs
More informationTesting & Symbolic Execution
Testing & Symbolic Execution Software Testing The most common way of measuring & ensuring correctness Input 2 Software Testing The most common way of measuring & ensuring correctness Input Observed Behavior
More informationAutomatic Recovery from Runtime Failures. presenter name(s) removed for FERPA considerations
Automatic Recovery from Runtime Failures presenter name(s) removed for FERPA considerations Key Idea Use automatic recovery tools to generate alternative ways to achieve the same functionality of code
More informationComparing the effectiveness of automated test generation tools EVOSUITE and Tpalus
Comparing the effectiveness of automated test generation tools EVOSUITE and Tpalus A THESIS SUBMITTED TO THE FACULTY OF THE GRADUATE SCHOOL UNIVERSITY OF MINNESOTA BY Sai Charan Raj Chitirala IN PARTIAL
More information4. Functional Programming Language-Oriented Programming
4. Functional Programming Language-Oriented Programming Prof. Dr. Bernhard Humm Faculty of Computer Science Hochschule Darmstadt University of Applied Sciences 1 Retrospect: LOP the big picture What is
More informationThe Impact of Equivalent, Redundant and Quasi Mutants on Database Schema Mutation Analysis. Chris J. Wright Gregory M. Kapfhammer Phil McMinn
The Impact of Equivalent, Redundant and Quasi Mutants on Database Schema Mutation Analysis Chris J. Wright Gregory M. Kapfhammer Phil McMinn The Impact of Equivalent, Redundant and Quasi Mutants on Database
More informationMTAT : Software Testing
MTAT.03.159: Software Testing Lecture 04: Static Analysis (Inspection) and Defect Estimation, Mutation Testing (Textbook Ch. 10 & 12) Spring 2015 Dietmar Pfahl email: dietmar.pfahl@ut.ee Structure of Lecture
More informationSSA Based Mobile Code: Construction and Empirical Evaluation
SSA Based Mobile Code: Construction and Empirical Evaluation Wolfram Amme Friedrich Schiller University Jena, Germany Michael Franz Universit of California, Irvine, USA Jeffery von Ronne Universtity of
More informationIntermediate Code Generation
Intermediate Code Generation In the analysis-synthesis model of a compiler, the front end analyzes a source program and creates an intermediate representation, from which the back end generates target
More informationTest Case Specifications and Test adequacy. Research Methods - Barbara Russo SwSE - Software and Systems Engineering
Test Case Specifications and Test adequacy Research Methods - Barbara Russo SwSE - Software and Systems Engineering 1 Test Case Selection How do we create tests? Test are defined in terms of their adequacy
More informationTest Automation. 20 December 2017
Test Automation 20 December 2017 The problem of test automation Testing has repetitive components, so automation is justified The problem is cost-benefit evaluation of automation [Kaner] Time for: test
More informationCSE450. Translation of Programming Languages. Lecture 11: Semantic Analysis: Types & Type Checking
CSE450 Translation of Programming Languages Lecture 11: Semantic Analysis: Types & Type Checking Structure Project 1 - of a Project 2 - Compiler Today! Project 3 - Source Language Lexical Analyzer Syntax
More informationUNIT I Programming Language Syntax and semantics. Kainjan Sanghavi
UNIT I Programming Language Syntax and semantics B y Kainjan Sanghavi Contents Bird s eye view of programming language concepts Syntax Semantics Pragmatics Programming Language Concepts A programming language
More informationIs Coincidental Correctness Less Prevalent in Unit Testing? Wes Masri American University of Beirut Electrical and Computer Engineering Department
Is Coincidental Correctness Less Prevalent in Unit Testing? Wes Masri American University of Beirut Electrical and Computer Engineering Department Outline Definitions Weak CC vs. Strong CC Causes of Coincidental
More informationOutline. Introduction Concepts and terminology The case for static typing. Implementing a static type system Basic typing relations Adding context
Types 1 / 15 Outline Introduction Concepts and terminology The case for static typing Implementing a static type system Basic typing relations Adding context 2 / 15 Types and type errors Type: a set of
More informationIndicate the answer choice that best completes the statement or answers the question. Enter the appropriate word(s) to complete the statement.
1. C#, C++, C, and Java use the symbol as the logical OR operator. a. $ b. % c. ^ d. 2. errors are relatively easy to locate and correct because the compiler or interpreter you use highlights every error.
More informationComputer Components. Software{ User Programs. Operating System. Hardware
Computer Components Software{ User Programs Operating System Hardware What are Programs? Programs provide instructions for computers Similar to giving directions to a person who is trying to get from point
More informationAutomatic Detection of Potential Layout Faults in Responsive Web Pages
Thomas A. Walsh*, Phil McMinn* and Gregory M. Kapfhammer + University of Sheffield*, Allegheny College + www.thomaswalsh.co.uk The Web - Past and Present https://blog.pivotal.io/labs/labs/an-introduction-to-qa-at-xtreme-labs
More informationAspect-oriented Response Injection: an Alternative to Classical Mutation Testing
Aspect-oriented Response Injection: an Alternative to Classical Mutation Testing Bartosz Bogacki, Bartosz Walter Institute of Computing Science, Pozna University of Technology, Poland {Bartosz Bogacki,
More informationWhat is software testing? Software testing is designing, executing and evaluating test cases in order to detect faults.
ϖοιδ τεσταδδανδχουντ() { ασσερ τεθυαλσ(1, ο.αδδανδχουντ(νεω ΑρραψΛιστ()); ϖοιδ τεσταδδανδχουντ() { ασσερ τεθυαλσ(1, ο.αδδανδχουντ(νεω ΑρραψΛιστ()); ιντ αδδανδχουντ(λιστ λιστ) { ρετυρν λιστ.σιζε(); ιντ
More informationTesting, Fuzzing, & Symbolic Execution
Testing, Fuzzing, & Symbolic Execution Software Testing The most common way of measuring & ensuring correctness Input 2 Software Testing The most common way of measuring & ensuring correctness Input Observed
More informationWhat is a compiler? var a var b mov 3 a mov 4 r1 cmpi a r1 jge l_e mov 2 b jmp l_d l_e: mov 3 b l_d: ;done
What is a compiler? What is a compiler? Traditionally: Program that analyzes and translates from a high level language (e.g., C++) to low-level assembly language that can be executed by hardware int a,
More informationCSE 307: Principles of Programming Languages
1 / 26 CSE 307: Principles of Programming Languages Names, Scopes, and Bindings R. Sekar 2 / 26 Topics Bindings 1. Bindings Bindings: Names and Attributes Names are a fundamental abstraction in languages
More informationIntroduction to Computer Science Midterm 3 Fall, Points
Introduction to Computer Science Fall, 2001 100 Points Notes 1. Tear off this sheet and use it to keep your answers covered at all times. 2. Turn the exam over and write your name next to the staple. Do
More informationOntology mutation testing
Ontology mutation testing February 3, 2016 Cesare Bartolini Interdisciplinary Centre for Security, Reliability and Trust (SnT), University of Luxembourg Outline 1 Mutation testing 2 Mutant generation 3
More informationCS 360 Programming Languages Interpreters
CS 360 Programming Languages Interpreters Implementing PLs Most of the course is learning fundamental concepts for using and understanding PLs. Syntax vs. semantics vs. idioms. Powerful constructs like
More informationMulti-Objective Higher Order Mutation Testing with Genetic Programming
Multi-Objective Higher Order Mutation Testing with Genetic Programming W. B. Langdon King s College, London W. B. Langdon, Crest 1 Introduction What is mutation testing 2 objectives: Hard to kill, little
More informationAN EVALUATION OF MUTATION OPERATORS FOR EQUIVALENT MUTANTS. Maryam Umar
AN EVALUATION OF MUTATION OPERATORS FOR EQUIVALENT MUTANTS By Maryam Umar Supervised By Mark Harman A project submitted to the Department of Computer Science. King s College, London. In partial fulfilment
More informationProgramming by Delegation
Chapter 2 a Programming by Delegation I. Scott MacKenzie a These slides are mostly based on the course text: Java by abstraction: A client-view approach (4 th edition), H. Roumani (2015). 1 Topics What
More informationMTAT : Software Testing
MTAT.03.159: Software Testing Lecture 03: White-Box Testing (Textbook Ch. 5) Spring 2013 Dietmar Pfahl email: dietmar.pfahl@ut.ee Lecture Chapter 5 White-box testing techniques (Lab 3) Structure of Lecture
More informationTowards Practical Program Repair with On-Demand Candidate Generation
Towards Practical Program Repair with On-Demand Candidate Generation The University of Texas at Austin, USA {lisahua,mengshi.zhang,kaiyuanw,khurshid}@utexas.edu ABSTRACT Effective program repair techniques,
More informationThe Substitution Model
The Substitution Model Prof. Clarkson Fall 2017 Today s music: Substitute by The Who Review Previously in 3110: simple interpreter for expression language abstract syntax tree (AST) evaluation based on
More informationCSE413: Programming Languages and Implementation Racket structs Implementing languages with interpreters Implementing closures
CSE413: Programming Languages and Implementation Racket structs Implementing languages with interpreters Implementing closures Dan Grossman Fall 2014 Hi! I m not Hal J I love this stuff and have taught
More informationSelf-checking software insert specifications about the intent of a system
Assertions Reading assignment A. J. Offutt, A Practical System for Mutation Testing: Help for the Common Programmer, Proceedings of the 12th International Conference on Testing Computer Software, Washington,
More informationProf. Mohamed Hamada Software Engineering Lab. The University of Aizu Japan
Language Processing Systems Prof. Mohamed Hamada Software Engineering Lab. The University of Aizu Japan Semantic Analysis Compiler Architecture Front End Back End Source language Scanner (lexical analysis)
More informationhttps://asd-pa.perfplusk12.com/admin/admin_curric_maps_display.aspx?m=5507&c=618&mo=18917&t=191&sy=2012&bl...
Page 1 of 13 Units: - All - Teacher: ProgIIIJavaI, CORE Course: ProgIIIJavaI Year: 2012-13 Intro to Java How is data stored by a computer system? What does a compiler do? What are the advantages of using
More informationμmt: A Data Mutation Directed Metamorphic Relation Acquisition Methodology
1 st International Workshop on Metamorphic Testing (MET 2016) In conjunction with ICSE 2016, Austin, TX, May 16, 2016 μmt: A Data Mutation Directed Metamorphic Relation Acquisition Methodology Chang-ai
More informationClass 17. Discussion. Mutation analysis and testing. Problem Set 7 discuss Readings
Class 17 Questions/comments Graders for Problem Set 6 (4); Graders for Problem set 7 (2-3) (solutions for all); will be posted on T-square Regression testing, Instrumentation Final project presentations:
More informationTesting: Coverage and Structural Coverage
Testing: Coverage and Structural Coverage Testing, Quality Assurance, and Maintenance Winter 2017 Prof. Arie Gurfinkel based on slides by Prof. Marsha Chechik and Prof. Lin Tan How would you test this
More informationShiftLeft. Real-World Runtime Protection Benchmarking
ShiftLeft Real-World Runtime Protection Benchmarking Table of Contents Executive Summary... 02 Testing Approach... 02 ShiftLeft Technology... 04 Test Application... 06 Results... 07 SQL injection exploits
More information4. Semantic Processing and Attributed Grammars
4. Semantic Processing and Attributed Grammars 1 Semantic Processing The parser checks only the syntactic correctness of a program Tasks of semantic processing Checking context conditions - Declaration
More informationApplications. Cloud. See voting example (DC Internet voting pilot) Select * from userinfo WHERE id = %%% (variable)
Software Security Requirements General Methodologies Hardware Firmware Software Protocols Procedure s Applications OS Cloud Attack Trees is one of the inside requirement 1. Attacks 2. Evaluation 3. Mitigation
More informationSemantic Analysis. Lecture 9. February 7, 2018
Semantic Analysis Lecture 9 February 7, 2018 Midterm 1 Compiler Stages 12 / 14 COOL Programming 10 / 12 Regular Languages 26 / 30 Context-free Languages 17 / 21 Parsing 20 / 23 Extra Credit 4 / 6 Average
More informationCSE341: Programming Languages Lecture 17 Implementing Languages Including Closures. Dan Grossman Autumn 2018
CSE341: Programming Languages Lecture 17 Implementing Languages Including Closures Dan Grossman Autumn 2018 Typical workflow concrete syntax (string) "(fn x => x + x) 4" Parsing Possible errors / warnings
More informationIntroduction to Programming Using Java (98-388)
Introduction to Programming Using Java (98-388) Understand Java fundamentals Describe the use of main in a Java application Signature of main, why it is static; how to consume an instance of your own class;
More informationCh. 7: Control Structures
Ch. 7: Control Structures I. Introduction A. Flow of control can be at multiple levels: within expressions, among statements (discussed here), and among units. B. Computation in imperative languages uses
More informationCSE 12 Abstract Syntax Trees
CSE 12 Abstract Syntax Trees Compilers and Interpreters Parse Trees and Abstract Syntax Trees (AST's) Creating and Evaluating AST's The Table ADT and Symbol Tables 16 Using Algorithms and Data Structures
More informationCIS 194: Homework 3. Due Wednesday, February 11, Interpreters. Meet SImPL
CIS 194: Homework 3 Due Wednesday, February 11, 2015 Interpreters An interpreter is a program that takes another program as an input and evaluates it. Many modern languages such as Java 1, Javascript,
More information(Not Quite) Minijava
(Not Quite) Minijava CMCS22620, Spring 2004 April 5, 2004 1 Syntax program mainclass classdecl mainclass class identifier { public static void main ( String [] identifier ) block } classdecl class identifier
More informationA Specifications-Based Mutation Engine for Testing Programs in C#
A Specifications-Based Mutation Engine for Testing Programs in C# Andreas S. Andreou Department of Electrical Engineering and Information Technology, Cyprus University of Technology Limassol, Cyprus email:
More informationCS16 Exam #1 7/17/ Minutes 100 Points total
CS16 Exam #1 7/17/2012 75 Minutes 100 Points total Name: 1. (10 pts) Write the definition of a C function that takes two integers `a` and `b` as input parameters. The function returns an integer holding
More information5 The Control Structure Diagram (CSD)
5 The Control Structure Diagram (CSD) The Control Structure Diagram (CSD) is an algorithmic level diagram intended to improve the comprehensibility of source code by clearly depicting control constructs,
More informationAASHTOWare Safety Analyst. Version Application Infrastructure Component List
AASHTOWare Safety Analyst Version 5.1.1 Application Infrastructure Component List Submitted by Peraton January 2, 2019 Application Infrastructure Component List AASHTOWare Safety Analyst Version 5.1.1
More informationAn Empirical based Object Oriented Coverage Analysis Using XML
An Empirical based Object Oriented Analysis Using XML Sasanko Sekhar Gantayat, Srinivas Prasad, K. Koteswar Rao Department of Computer Science & Engineering, GMR Institute of Technology, Rajam, Andhra
More information3. Logical Values. Boolean Functions; the Type bool; logical and relational operators; shortcut evaluation
140 3. Logical Values Boolean Functions; the Type bool; logical and relational operators; shortcut evaluation Our Goal 141 int a; std::cin >> a; if (a % 2 == 0) std::cout
More information1 Lexical Considerations
Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Spring 2013 Handout Decaf Language Thursday, Feb 7 The project for the course is to write a compiler
More informationCS61C Machine Structures. Lecture 3 Introduction to the C Programming Language. 1/23/2006 John Wawrzynek. www-inst.eecs.berkeley.
CS61C Machine Structures Lecture 3 Introduction to the C Programming Language 1/23/2006 John Wawrzynek (www.cs.berkeley.edu/~johnw) www-inst.eecs.berkeley.edu/~cs61c/ CS 61C L03 Introduction to C (1) Administrivia
More informationSecuring Software Applications Using Dynamic Dataflow Analysis. OWASP June 16, The OWASP Foundation
Securing Software Applications Using Dynamic Dataflow Analysis Steve Cook OWASP June 16, 2010 0 Southwest Research Institute scook@swri.org (210) 522-6322 Copyright The OWASP Foundation Permission is granted
More informationTest Oracles and Mutation Testing. CSCE Lecture 23-11/18/2015
Test Oracles and Mutation Testing CSCE 740 - Lecture 23-11/18/2015 Software Testing - Back to the Basics Tests are sequences of stimuli and observations. We care about input and output. (I 1 O 1 ) (I 2
More informationCrafting a Compiler with C (II) Compiler V. S. Interpreter
Crafting a Compiler with C (II) 資科系 林偉川 Compiler V S Interpreter Compilation - Translate high-level program to machine code Lexical Analyzer, Syntax Analyzer, Intermediate code generator(semantics Analyzer),
More informationChapter 2. C++ Syntax and Semantics, and the Program Development Process. Dale/Weems 1
Chapter 2 C++ Syntax and Semantics, and the Program Development Process Dale/Weems 1 Chapter 2 Topics Programs Composed of Several Functions Syntax Templates Legal C++ Identifiers Assigning Values to Variables
More information3. Logical Values. Our Goal. Boolean Values in Mathematics. The Type bool in C++
Our Goal 3. Logical Values Boolean Functions; the Type bool; logical and relational operators; shortcut evaluation int a; std::cin >> a; if (a % 2 == 0) std::cout
More information3. Logical Values. Our Goal. Boolean Values in Mathematics. The Type bool in C++
148 Our Goal 149 3. Logical Values Boolean Functions; the Type bool; logical and relational operators; shortcut evaluation int a; std::cin >> a; if (a % 2 == 0) std::cout
More informationThe Environment Model
The Environment Model Prof. Clarkson Fall 2017 Today s music: Selections from Doctor Who soundtracks by Murray Gold Review Previously in 3110: Interpreters: ASTs, evaluation, parsing Formal syntax: BNF
More informationCS313D: ADVANCED PROGRAMMING LANGUAGE
CS313D: ADVANCED PROGRAMMING LANGUAGE Computer Science Department Lecture 3: C# language basics Lecture Contents 2 C# basics Conditions Loops Methods Arrays Dr. Amal Khalifa, Spr 2015 3 Conditions and
More informationSEMANTIC ANALYSIS TYPES AND DECLARATIONS
SEMANTIC ANALYSIS CS 403: Type Checking Stefan D. Bruda Winter 2015 Parsing only verifies that the program consists of tokens arranged in a syntactically valid combination now we move to check whether
More informationCMSC 330: Organization of Programming Languages. Formal Semantics of a Prog. Lang. Specifying Syntax, Semantics
Recall Architecture of Compilers, Interpreters CMSC 330: Organization of Programming Languages Source Scanner Parser Static Analyzer Operational Semantics Intermediate Representation Front End Back End
More informationTesting Methods: White Box Testing II
Testing Methods: White Box Testing II Outline Today we continue our look at white box testing with more code coverage methods, and a data coverage method We ll look at : - code coverage testing - decision
More information10/18/18. Outline. Semantic Analysis. Two types of semantic rules. Syntax vs. Semantics. Static Semantics. Static Semantics.
Outline Semantic Analysis In Text: Chapter 3 Static semantics Attribute grammars Dynamic semantics Operational semantics Denotational semantics N. Meng, S. Arthur 2 Syntax vs. Semantics Syntax concerns
More informationConcepts of Programming Design
Concepts of Programming Design Scala and Lightweight Modular Staging (LMS) Alexey Rodriguez Blanter, Ferenc Balla, Matthijs Steen, Ruben Meerkerk, Ratih Ngestrini 1 Scala and Lightweight Modular Staging
More informationJAVA PERFORMANCE. PR SW2 S18 Dr. Prähofer DI Leopoldseder
JAVA PERFORMANCE PR SW2 S18 Dr. Prähofer DI Leopoldseder OUTLINE 1. What is performance? 1. Benchmarking 2. What is Java performance? 1. Interpreter vs JIT 3. Tools to measure performance 4. Memory Performance
More informationA Comparative Study on Mutation Analysis for Java Applications
1 UTM Computing Proceedings Innovation in Computing Technology and Applications Volume: 2 Year: 2017 ISBN: 978-967-0194-95-0 A Comparative Study on Mutation Analysis for Java Applications Nur Zatilzaida
More informationCS558 Programming Languages
CS558 Programming Languages Winter 2017 Lecture 7b Andrew Tolmach Portland State University 1994-2017 Values and Types We divide the universe of values according to types A type is a set of values and
More informationProgram Testing and Analysis: Manual Testing Prof. Dr. Michael Pradel Software Lab, TU Darmstadt
Program Testing and Analysis: Manual Testing Prof. Dr. Michael Pradel Software Lab, TU Darmstadt Partly based on slides from Peter Müller, ETH Zurich 1 Warm-up Quiz What does the following code print?
More informationCooperari A tool for cooperative testing of multithreaded Java programs
Cooperari A tool for cooperative testing of multithreaded Java programs Eduardo R. B. Marques, Francisco Martins, Miguel Simões! LASIGE/Departamento de Informática Faculdade de Ciências da Universidade
More informationTypes and Static Type Checking (Introducing Micro-Haskell)
Types and Static (Introducing Micro-Haskell) Informatics 2A: Lecture 13 Alex Simpson School of Informatics University of Edinburgh als@inf.ed.ac.uk 16 October, 2012 1 / 21 1 Types 2 3 4 2 / 21 Thus far
More informationA PROGRAM IS A SEQUENCE of instructions that a computer can execute to
A PROGRAM IS A SEQUENCE of instructions that a computer can execute to perform some task. A simple enough idea, but for the computer to make any use of the instructions, they must be written in a form
More informationTesting, Debugging, and Verification exam DIT082/TDA567. Day: 9 January 2016 Time: Will be published mid February or earlier
Testing, Debugging, and Verification exam DIT08/TDA567 Responsible: Day: 9 January 016 Time: 14 00 18 00 Atze van der Ploeg Results: Extra aid: Will be published mid February or earlier Only dictionaries
More informationPYTHIA: Generating Test Cases with Oracles for JavaScript Applications
PYTHIA: Generating Test Cases with Oracles for JavaScript Applications Shabnam Mirshokraie Ali Mesbah Karthik Pattabiraman University of British Columbia Vancouver, BC, Canada {shabnamm, amesbah, karthikp}@ece.ubc.ca
More information