Unit testing basics & more...

Size: px
Start display at page:

Download "Unit testing basics & more..."

Transcription

1 Unit testing basics & more... by Papapetrou P.Patroklos Twitter hashtag : Thessaloniki Java Meetup - December 2014

2 Agenda Unit testing introduction Differences with other types of tests Key concepts Rules - things to remember A developer s toolset Live coding - hmm unit testing actually

3 Unit testing? Why bother? Code without tests is bad code. It doesn t matter how well written it is; it doesn t matter how pretty or object-oriented or well-encapsulated it is. With tests, we can change the behavior of our code quickly and verifiably. Without them, we really don t know if our code is getting better or worse. Michael Feathers Working Effectively With Legacy Code (2004)

4 Unit testing? Why bother? Code without unit tests is like American breakfast without eggs & bacon. Patroklos Papapetrou (2014)

5

6 What is unit testing? A practice of testing certain functions and areas or units of our code.

7 Advantages Identify failures in our algorithms and/or logic Approaching development from a unit testing perspective is that you'll likely be writing code that is easy to test Prevent future changes from breaking functionality ( safety pillow )

8 Unit testing vs?? We are here

9 (Good) Unit tests characteristics Run fast Isolated Repeatable Automatable Easy to write Easy to understand

10 Unit test structure Setup 1 Prepare input 2 Invoke method 3 Tear down Assert output 4 5

11 Assertions? What is that? Assertion -> A way to validate expected output / behavior of a method Examples Assert.assertEquals (a, b) Assert.assertTrue ( bool ) Each unit test should include only one assertion

12

13 Mocks / Stubs / Fakes Simulated objects that mimic the behavior of real objects in controlled ways.

14 Best Practices - Readability Setup and teardown methods are not abused. It s better to use factory methods for readability Each test tests one thing only Check for good and consistent naming conventions Make sure that only meaningful assert messages are used, or none at all (meaningful test names are better)

15 Best Practices - Readability Asserts are separated from actions (different lines). Tests don t use magic strings and values as inputs. use the simplest inputs possible to prove your point. There is consistency in location of tests. make it easy to find related tests for a method, or a class, or a project.

16 Best Practices - Maintainability Unit tests are isolated from each other and repeatable Testing private or protected methods is not the norm (public is always better) Tests are not over-specified State-based testing is preferred over using interaction testing

17 Best Practices - Maintainability Strict mocks are used as little as possible (leads to over specification and fragile tests) There is no more than one mock per test Tests do not mix mocks and regular asserts in the same test (testing multiple things)

18 Best Practices - Maintainability Unit Tests verify mock calls only on the single mock object in the test, and not on all the fake objects in the tests Unit Tests verify only on a single call to a mock object. Verifying multiple calls on a mock object is either over specification or testing multiple things.

19 Best Practices - Trust Tests does not contain logic or dynamic values Check coverage by playing with values (booleans or constants) Unit tests are separated from integration tests Unit tests don t use things that keep changing in a unit test (like DateTime.Now ). Use fixed values.

20 Best Practices - Trust Unit tests don t assert with expected values that are created dynamically - you might be repeating production code. Unit tests should not do exception handling.

21 Java Developer s toolset Basic Framework -> JUnit VS TestNG Mocking Framework -> Mockito VS PowerMock VS EasyMock Assertions Framework -> Hamcrest Matchers VS Fest Assert VS AssertJ My Choice -> JUnit + Mockito + PowerMockito + AssertJ

22 Let s write some tests

23 References JUnit : TestNG : Mockito : PowerMock : PowerMockito : com/p/powermock/wiki/mockitousage13 EasyMock :

24 References Hamcrest Matchers : Fest Assertions : AssertJ:

Introduction to Software Engineering: Tools and Environments. Session 5. Oded Lachish

Introduction to Software Engineering: Tools and Environments. Session 5. Oded Lachish Introduction to Software Engineering: Tools and Environments Session 5 Oded Lachish Room: Mal 405 Visiting Hours: Wednesday 17:00 to 20:00 Email: oded@dcs.bbk.ac.uk Module URL: http://www.dcs.bbk.ac.uk/~oded/tools2012-2013/web/tools2012-2013.html

More information

Don t give up on mocking

Don t give up on mocking Don t give up on mocking - Why do people give up? - Mocking: the big step from classic way of testing - Let s take a step back and don t give up! by Szczepan Faber (a certified mock tamer) Interaction

More information

JUnit in EDA Introduction. 2 JUnit 4.3

JUnit in EDA Introduction. 2 JUnit 4.3 Lunds tekniska högskola Datavetenskap, Nov 25, 2010 Görel Hedin EDA260 Programvaruutveckling i grupp projekt Labb 3 (Test First): Bakgrundsmaterial JUnit in EDA260 1 Introduction The JUnit framework is

More information

The Art of Unit Testing

The Art of Unit Testing The Art of Unit Testing with Examplee in.net Roy Oeberove 11 MANNING Greenwich (74 w. long.) Contents foreword t xv preface xvii acknowledgments xix about this book xx about the cover illustration XXIII

More information

Checking Current Code Coverage

Checking Current Code Coverage Junit Tests Checking Current Code Coverage We use onap Sonar to track code coverage (sonar.onap.org) To see the appc coverage, click on the appc project on the front page (make sure you choose the most

More information

MOCKING TO FACILITATE UNIT TESTING. Abstract

MOCKING TO FACILITATE UNIT TESTING. Abstract MOCKING TO FACILITATE UNIT TESTING Abstract Unit Testing is easy if the object you're testing has no dependencies. In reality, however, objects have dependencies, often making it di!cult, if not impossible,

More information

Accessibility. Adding features to support users with impaired vision, mobility, or hearing

Accessibility. Adding features to support users with impaired vision, mobility, or hearing Accessibility Adding features to support users with impaired vision, mobility, or hearing TalkBack TalkBack is an Android screen reader made by Google. It speaks out the contents of a screen based on what

More information

Unit Testing and JUnit

Unit Testing and JUnit Unit Testing and JUnit Moinul Hossain CS 791Z 03/02/2015 Outline What is Software Testing? What and Why Unit Testing? JUnit JUnit features and Examples Test Driven Development (TDD) What is Software Testing?

More information

The Power of Unit Testing and it s impact on your business. Ashish Kumar Vice President, Engineering

The Power of Unit Testing and it s impact on your business. Ashish Kumar Vice President, Engineering The Power of Unit Testing and it s impact on your business Ashish Kumar Vice President, Engineering Agitar Software, 2006 1 The Power of Unit Testing Why Unit Test? The Practical Reality Where do we go

More information

Test Isolation and Mocking

Test Isolation and Mocking Test Isolation and Mocking Technion Institute of Technology 236700 1 Author: Assaf Israel Unit Testing: Isolation The bigger the test subject the harder it is to understand the reason of a bug from a test

More information

Unit Testing & Testability

Unit Testing & Testability CMPT 473 Software Quality Assurance Unit Testing & Testability Nick Sumner - Fall 2014 Levels of Testing Recall that we discussed different levels of testing for test planning: Unit Tests Integration Tests

More information

Mock Objects and the Mockito Testing Framework Carl Veazey CSCI Friday, March 23, 12

Mock Objects and the Mockito Testing Framework Carl Veazey CSCI Friday, March 23, 12 Mock Objects and the Mockito Testing Framework Carl Veazey CSCI 5828 Introduction Mock objects are a powerful testing pattern for verifying the behavior and interactions of systems. This presentation aims

More information

Utilizing Fast Testing to Transform Java Development into an Agile, Quick Release, Low Risk Process

Utilizing Fast Testing to Transform Java Development into an Agile, Quick Release, Low Risk Process Utilizing Fast Testing to Transform Java Development into an Agile, Quick Release, Low Risk Process Introduction System tests, often called slow tests, play a crucial role in nearly every Java development

More information

Testing on Android. Mobile Application Development. Jakob Mass MTAT Fall MTAT

Testing on Android. Mobile Application Development. Jakob Mass MTAT Fall MTAT Testing on Android Mobile Application Development MTAT.03.262 2017 Fall Jakob Mass jakob.mass@ut.ee Introduction. Perfect codewriting...or? Conventional (unit) Java testing with JUnit How is mobile/android

More information

Simplifying Development and Testing of GUIs with SAF (JSR 296) and FEST. Michael Hüttermann Training & Consulting Alex Ruiz Oracle Corporation

Simplifying Development and Testing of GUIs with SAF (JSR 296) and FEST. Michael Hüttermann Training & Consulting Alex Ruiz Oracle Corporation Simplifying Development and Testing of GUIs with SAF (JSR 296) and FEST Michael Hüttermann Training & Consulting Alex Ruiz Oracle Corporation Agenda Why do we need a Swing framework? Introducing the Swing

More information

Unit Testing. SWEN-610 Foundations of Software Engineering. Department of Software Engineering Rochester Institute of Technology

Unit Testing. SWEN-610 Foundations of Software Engineering. Department of Software Engineering Rochester Institute of Technology Unit Testing SWEN-610 Foundations of Software Engineering Department of Software Engineering Rochester Institute of Technology There are many levels of software testing. The developer of the software has

More information

A Guided Tour of Test Automation

A Guided Tour of Test Automation A Guided Tour of Test Automation My slides are available for you at: http://idiacomputing.com/publications.html A Test, Check, or Scenario Arrange Act Assert Given When Then Arrange Given The preconditions

More information

Test-driven development

Test-driven development Test-driven development And how we do it at WIX Mantas Indrašius Software Engineer WIX.COM Agenda Tests overview Test-driven development (TDD) The Bowling Game demo Kickstarting a project using TDD How

More information

Junit Overview. By Ana I. Duncan

Junit Overview. By Ana I. Duncan Junit Overview By Ana I. Duncan 1 What Is Junit Why Junit, Why test? Junit Lifecycle Junit Examples from CM Other Testing frameworks Resources Before After Agenda 2 JUnit is a member of the xunit testing

More information

Unit Testing. SWEN-261 Introduction to Software Engineering. Department of Software Engineering Rochester Institute of Technology

Unit Testing. SWEN-261 Introduction to Software Engineering. Department of Software Engineering Rochester Institute of Technology Unit Testing SWEN-261 Introduction to Software Engineering Department of Software Engineering Rochester Institute of Technology There are many levels of software testing. The developer of the software

More information

Double Objects. Mariana Bravo Translation: Paulo Cheque. Summer 2009

Double Objects. Mariana Bravo Translation: Paulo Cheque. Summer 2009 Double Objects Mariana Bravo marivb@agilcoop.org.br Translation: Paulo Cheque Summer 2009 License: Creative Commons: Attribution-Share Alike 3.0 Unported http://creativecommons.org/licenses/by-sa/3.0/

More information

C07: Testing and JUnit

C07: Testing and JUnit CISC 3120 C07: Testing and JUnit Hui Chen Department of Computer & Information Science CUNY Brooklyn College 9/19/2017 CUNY Brooklyn College 1 Outline Recap and issues Grades and feedback Assignments &

More information

Philosophy of Unit Testing

Philosophy of Unit Testing Unit Testing in.net Philosophy of Unit Testing What? Where? Why? How? What it is not? Test individual components (units) in isolation isolate and validate verify to confirm preexisting specification. Inputs

More information

Testing beyond the default click-paths. Wim Selles & Mischa Dasberg

Testing beyond the default click-paths. Wim Selles & Mischa Dasberg Testing beyond the default click-paths Wim Selles & Mischa Dasberg Content About us Test beyond the default click-paths tools Installation + coffee break Get your hands dirty About us wim Selles testing

More information

Effective Unit Testing

Effective Unit Testing Effective Unit Testing A guide forjava developers LASSE KOSKELA 11 MANNING Shelter Island contents xv preface acknowledgments xvii about this book xix about the cover illustration xxiv Part 1 Foundations

More information

Import Statements, Instance Members, and the Default Constructor

Import Statements, Instance Members, and the Default Constructor Import Statements, Instance Members, and the Default Constructor Introduction In this article from my free Java 8 course, I will be discussing import statements, instance members, and the default constructor.

More information

1B1b Classes in Java Part I

1B1b Classes in Java Part I 1B1b Classes in Java Part I Agenda Defining simple classes. Instance variables and methods. Objects. Object references. 1 2 Reading You should be reading: Part I chapters 6,9,10 And browsing: Part IV chapter

More information

Test Driven Development: Pair programming to the max. Klaas van Gend, 040coders.nl, March 15, 2018

Test Driven Development: Pair programming to the max. Klaas van Gend, 040coders.nl, March 15, 2018 Test Driven Development: Pair programming to the max Klaas van Gend, 040coders.nl, March 15, 2018 1 Klaas van Gend Hobby: Hobby: {040coders.nl} Hobby: 2 3 1949 1953 4 source optics 4 meter stage more optics

More information

Fast, Sexy, and Svelte: Our Kind of Rails Testing. Dan Manges (ThoughtWorks) zak (unemployed)

Fast, Sexy, and Svelte: Our Kind of Rails Testing. Dan Manges (ThoughtWorks) zak (unemployed) Fast, Sexy, and Svelte: Our Kind of Rails Testing Dan Manges (ThoughtWorks) zak (unemployed) a translation without buzzwords notes short build times maintainable comprehensive coverage this talk: how to

More information

Completely

Completely Completely Test-Driven ian.truslove@nsidc.org @iantruslove UCAR Software Engineering Assembly, Feb 21, 2012 What s In It For Me? So, that TDD sounds great and all, but what about ? See some techniques

More information

Chapter 4 Defining Classes I

Chapter 4 Defining Classes I Chapter 4 Defining Classes I This chapter introduces the idea that students can create their own classes and therefore their own objects. Introduced is the idea of methods and instance variables as the

More information

Software Engineering. Top-Down Design. Bottom-Up Design. Software Process. Top-Down vs. Bottom-Up 15/06/2011

Software Engineering. Top-Down Design. Bottom-Up Design. Software Process. Top-Down vs. Bottom-Up 15/06/2011 CS/ENGRD 2110 Object-Oriented Programming and Data Structures Spring 2011 Thorsten Joachims Lecture 7: Software Design Software Engineering The art by which we start with a problem statement and gradually

More information

Automated GUI testing. How to test an interactive application automatically?

Automated GUI testing. How to test an interactive application automatically? Automated GUI testing How to test an interactive application automatically? Some GUI facts Software testing accounts for 50-60% of total software development costs GUIs can constitute as much as 60% of

More information

It s good to be here... I almost wasn t. Beautiful Tests by Bruce A. Tate icanmakeitbe*er

It s good to be here... I almost wasn t. Beautiful Tests by Bruce A. Tate icanmakeitbe*er It s good to be here... I almost wasn t. Beautiful Tests by Bruce A. Tate icanmakeitbe*er Test all of your code with beautiful, dry, fast tests Test all of your code with beautiful, dry, fast tests Many

More information

Testing Mobile Apps CS 4720 Mobile Application Development

Testing Mobile Apps CS 4720 Mobile Application Development Testing Mobile Apps Mobile Application Development Testing! The most important thing we never teach you to do! Consider how most projects go in your undergrad career: Requirements elicitation? We give

More information

CS 370 Statements D R. M I C H A E L J. R E A L E F A L L

CS 370 Statements D R. M I C H A E L J. R E A L E F A L L CS 370 Statements D R. M I C H A E L J. R E A L E F A L L 2 0 1 5 Overview In these slides, we ll talk about good practices related to programming statements: Organizing straight-line code Using conditionals

More information

CS159. Nathan Sprague. September 30, 2015

CS159. Nathan Sprague. September 30, 2015 CS159 Nathan Sprague September 30, 2015 Testing Happens at Multiple Levels Unit Testing - Test individual classes in isolation. Focus is on making sure that each method works according to specification.

More information

Agenda. JUnit JaCoCo Project. CSE 4321, Jeff Lei, UTA

Agenda. JUnit JaCoCo Project. CSE 4321, Jeff Lei, UTA Agenda JUnit JaCoCo Project 1 JUnit Introduction A JUnit Example Major APIs Practical Tips 2 Unit Testing Test individual units of source code in isolation Procedures, functions, methods, and classes Engineers

More information

Software LEIC/LETI. Lecture 5

Software LEIC/LETI. Lecture 5 Software Engineering @ LEIC/LETI Lecture 5 Last Lecture Verification and Validation Reviews and Inspections Software Testing Coverage Statement, branch, and path coverage Equivalence partitioning Boundary

More information

Mockito is a mocking framework that tastes really good.

Mockito is a mocking framework that tastes really good. Mockito Mockito is a mocking framework that tastes really good. It lets you write beautiful tests with clean & simple API. Mockito doesn't give you ha angover because the tests are very readable and they

More information

After completing Matchers, you will be able to: Describe the advantages of encapsulating verification logic in

After completing Matchers, you will be able to: Describe the advantages of encapsulating verification logic in CHAPTER 3 MATCHERS OBJECTIVES After completing Matchers, you will be able to: Describe the advantages of encapsulating verification logic in matchers. Use built-in matchers from the Hamcrest library. Create

More information

Software Engineering I (02161)

Software Engineering I (02161) Software Engineering I (02161) Week 3 Assoc. Prof. Hubert Baumeister DTU Compute Technical University of Denmark Spring 2013 Recap Requirements Engineering user- / system requirements functional- / non-functional

More information

Testing. UW CSE 160 Winter 2016

Testing. UW CSE 160 Winter 2016 Testing UW CSE 160 Winter 2016 1 Testing Programming to analyze data is powerful It s useless (or worse!) if the results are not correct Correctness is far more important than speed 2 Famous examples Ariane

More information

Beyond JUnit: Introducing TestNG The Next Generation in Testing

Beyond JUnit: Introducing TestNG The Next Generation in Testing Beyond JUnit: Introducing TestNG The Next Generation in Testing Hani Suleiman CTO Formicary http://www.formicary.net hani@formicary.net TS 3097 2006 JavaOne SM Conference Session TS-3097 Testing Renewed

More information

Programmieren II. Unit Testing & Test-Driven Development. Alexander Fraser.

Programmieren II. Unit Testing & Test-Driven Development. Alexander Fraser. Programmieren II Unit Testing & Test-Driven Development Alexander Fraser fraser@cl.uni-heidelberg.de (Based on material from Lars Vogel and T. Bögel) July 2, 2014 1 / 62 Outline 1 Recap 2 Testing - Introduction

More information

CS201 - Assignment 3, Part 1 Due: Friday February 28, at the beginning of class

CS201 - Assignment 3, Part 1 Due: Friday February 28, at the beginning of class CS201 - Assignment 3, Part 1 Due: Friday February 28, at the beginning of class One of the keys to writing good code is testing your code. This assignment is going to introduce you and get you setup to

More information

05. SINGLETON PATTERN. One of a Kind Objects

05. SINGLETON PATTERN. One of a Kind Objects BIM492 DESIGN PATTERNS 05. SINGLETON PATTERN One of a Kind Objects Developer: What use is that? Guru: There are many objects we only need one of: thread pools, caches, dialog boxes, objects that handle

More information

COMP1730/COMP6730 Programming for Scientists. Testing and Debugging.

COMP1730/COMP6730 Programming for Scientists. Testing and Debugging. COMP1730/COMP6730 Programming for Scientists Testing and Debugging. Overview * Testing * Debugging * Defensive Programming Overview of testing * There are many different types of testing - load testing,

More information

These are notes for the third lecture; if statements and loops.

These are notes for the third lecture; if statements and loops. These are notes for the third lecture; if statements and loops. 1 Yeah, this is going to be the second slide in a lot of lectures. 2 - Dominant language for desktop application development - Most modern

More information

3 Continuous Integration 3. Automated system finding bugs is better than people

3 Continuous Integration 3. Automated system finding bugs is better than people This presentation is based upon a 3 day course I took from Jared Richardson. The examples and most of the tools presented are Java-centric, but there are equivalent tools for other languages or you can

More information

2 Steps Building the Coding and Testing Infrastructure

2 Steps Building the Coding and Testing Infrastructure CSI 333 Prog. HW/SW Interface Projects 5 Spring 2007 Professor Chaiken Simple Recursive Regular Expression Matcher in ASM Due: Oct 23 and Oct 30 (see below) The numbered items specify what will be graded

More information

Test Execution and Automation. CSCE Lecture 15-03/20/2018

Test Execution and Automation. CSCE Lecture 15-03/20/2018 Test Execution and Automation CSCE 747 - Lecture 15-03/20/2018 Executing Tests We ve covered many techniques to derive test cases. How do you run them on the program? You could run the code and check results

More information

Test First Software Development

Test First Software Development Test First Software Development Jacob Kristhammar Roger Schildmeijer D04, Lund Institute of Technology, Sweden {d04jk d04rp}@student.lth.se 2008-02-06 Abstract In this in-depth study we will try to explain

More information

Functional Testing (Testování funkčnosti)

Functional Testing (Testování funkčnosti) Functional Testing (Testování funkčnosti) http://d3s.mff.cuni.cz Pavel Parízek parizek@d3s.mff.cuni.cz CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics Nástroje pro vývoj software Functional

More information

Friendship in Service of Testing

Friendship in Service of Testing Friendship in Service of Testing Gábor Márton, martongabesz@gmail.com Zoltán Porkoláb, gsd@elte.hu 1 / 47 Agenda Introduction, principals Case study Making the example better Vision 2 / 47 Functional Programming

More information

Array Based Lists. Collections

Array Based Lists. Collections Array Based Lists Reading: RS Chapter 15 1 Collections Data structures stores elements in a manner that makes it easy for a client to work with the elements Specific collections are specialized for particular

More information

Tools for Unit Test - JUnit

Tools for Unit Test - JUnit Tools for Unit Test - JUnit Conrad Hughes School of Informatics Slides thanks to Stuart Anderson 15 January 2010 Software Testing: Lecture 2 1 JUnit JUnit is a framework for writing tests Written by Erich

More information

JUnit tes)ng. Elisa Turrini

JUnit tes)ng. Elisa Turrini JUnit tes)ng Elisa Turrini Automated Tes)ng Code that isn t tested doesn t work Code that isn t regression tested suffers from code rot (breaks eventually) If it is not automated it is not done! Boring

More information

Topics covered. Introduction to JUnit JUnit: Hands-on session Introduction to Mockito Mockito: Hands-on session. JUnit & Mockito 2

Topics covered. Introduction to JUnit JUnit: Hands-on session Introduction to Mockito Mockito: Hands-on session. JUnit & Mockito 2 JUnit & Mockito 1 Topics covered Introduction to JUnit JUnit: Hands-on session Introduction to Mockito Mockito: Hands-on session JUnit & Mockito 2 Introduction to JUnit JUnit & Mockito 3 What is JUnit?

More information

Pieter van den Hombergh Stefan Sobek. April 18, 2018

Pieter van den Hombergh Stefan Sobek. April 18, 2018 Pieter van den Hombergh Stefan Sobek Fontys Hogeschool voor Techniek en Logistiek April 18, 2018 /FHTenL April 18, 2018 1/13 To mock or not to mock In many cases, a class (system under test or SUT) does

More information

Testers can write good code too. Corina

Testers can write good code too. Corina Testers can write good code too Corina Pip https://iamalittletester.wordpress.com/ Twitter: Blog: https://iamalittletester.wordpress.com/ Travel blog: https://travelwithcori.wordpress.com/ Photos: https://www.flickr.com/photos/capreoara

More information

Java Programming Training for Experienced Programmers (5 Days)

Java Programming Training for Experienced Programmers (5 Days) www.peaklearningllc.com Java Programming Training for Experienced Programmers (5 Days) This Java training course is intended for students with experience in a procedural or objectoriented language. It

More information

Annotations in Java (JUnit)

Annotations in Java (JUnit) Annotations in Java (JUnit) Produced by: Eamonn de Leastar (edeleastar@wit.ie) Dr. Siobhán Drohan (sdrohan@wit.ie) Department of Computing and Mathematics http://www.wit.ie/ What are Annotations? They

More information

The one bit everyone forgets: with JUnit. John Stegeman Xchanging

The one bit everyone forgets: with JUnit. John Stegeman Xchanging The one bit everyone forgets: Testing your ADF application with JUnit http://groups.google.com/group/adf-methodology ADF EMG A place to discuss best practices and methodologies for JDeveloper ADF enterprise

More information

Comp215: Enums / Testing

Comp215: Enums / Testing Comp215: Enums / Testing Dan S. Wallach (Rice University) Copyright 2015, Dan S. Wallach. All rights reserved. edu.rice.regex.namedmatcher You first write something like this: enum TokenType implements

More information

Spock - The Logical Enterprise Testing Tool

Spock - The Logical Enterprise Testing Tool NFJS Software Symposium Series 2013 Spock - The Logical Enterprise Testing Tool Ken Sipe About Speaker http://kensipe.blogspot.com/ http://del.icio.us/kensipe twitter: @kensipe ken.sipe@gmail.com Developer:

More information

All code must follow best practices. Part (but not all) of this is adhering to the following guidelines:

All code must follow best practices. Part (but not all) of this is adhering to the following guidelines: Java Coding Guidelines Version 1.3.2 All code must follow best practices. Part (but not all) of this is adhering to the following guidelines: Development For code development, I recommend the following

More information

API Design as if Unit Testing Mattered. Michael Feathers Object Mentor, Inc Miami, FL

API Design as if Unit Testing Mattered. Michael Feathers Object Mentor, Inc Miami, FL API Design as if Unit Testing Mattered Michael Feathers Object Mentor, Inc Miami, FL mfeathers@objectmentor.com Problem: How do you gain control over code? Easy in pure code System Environment What if

More information

CMSC 132: OBJECT-ORIENTED PROGRAMMING II

CMSC 132: OBJECT-ORIENTED PROGRAMMING II CMSC 132: OBJECT-ORIENTED PROGRAMMING II Program Testing Department of Computer Science University of Maryland, College Park Debugging Is Harder Than Coding! Debugging is twice as hard as writing the code

More information

Test Driven Development (TDD), and Working with Legacy Code Using C# Workshop ( 4 days)

Test Driven Development (TDD), and Working with Legacy Code Using C# Workshop ( 4 days) Test Driven Development (TDD), and Working with Legacy Code Using C# Workshop ( 4 days) HOTEL DUBAI GRAND April 16 to 19-2018 Monday to Thursday ) (4 days) 9 am to 4 pm ISIDUS TECH TEAM FZE PO Box 9798

More information

JUnit Testing Framework Architecture

JUnit Testing Framework Architecture JUnit Testing Framework Architecture Unit under test (usually a class or a small number of classes) Test environment (fixture) Program state (e.g., some collection of variables/objects that will be used

More information

Tools for Unit Test JUnit

Tools for Unit Test JUnit Tools for Unit Test JUnit Stuart Anderson JUnit is a framework for writing tests JUnit 1 Written by Erich Gamma (Design Patterns) and Kent Beck (extreme Programming) JUnit uses Java s reflection capabilities

More information

Testing with JUnit 1

Testing with JUnit 1 Testing with JUnit 1 What are we doing here? Learning the mechanics of how to write tests in Java using JUnit Without considering issues like coverage Using JUnit is sometimes called unit testing Unit

More information

CSE 143. Computer Programming II

CSE 143. Computer Programming II Adam Blank Lecture 17 Winter 2015 CSE 143 Computer Programming II CSE 143: Computer Programming II Recursive Backtracking Recursive Backtracking Outline 1 Sentence Splitter 2 Playing With Boolean Expressions

More information

CSE 142/143 Unofficial Commenting Guide Eric Arendt, Alyssa Harding, Melissa Winstanley

CSE 142/143 Unofficial Commenting Guide Eric Arendt, Alyssa Harding, Melissa Winstanley CSE 142/143 Unofficial Commenting Guide Eric Arendt, Alyssa Harding, Melissa Winstanley In Brief: What You Need to Know to Comment Methods in CSE 143 Audience o A random person you don t know who wants

More information

15-498: Distributed Systems Project #1: Design and Implementation of a RMI Facility for Java

15-498: Distributed Systems Project #1: Design and Implementation of a RMI Facility for Java 15-498: Distributed Systems Project #1: Design and Implementation of a RMI Facility for Java Dates of Interest Assigned: During class, Friday, January 26, 2007 Due: 11:59PM, Friday, February 13, 2007 Credits

More information

CSE 403 Lecture 16. Continuous Integration; Integration Testing. Reading:

CSE 403 Lecture 16. Continuous Integration; Integration Testing. Reading: CSE 403 Lecture 16 Continuous Integration; Integration Testing Reading: Continuous Integration (Fowler) The Art of Unit Testing, Ch. 1, 3, 4-5 (Osherove) Code Complete, Ch. 29 (McConnell) slides created

More information

Rails + Legacy Databases Brian Hogan - RailsConf 2009 twitter: bphogan IRC: hoganbp

Rails + Legacy Databases Brian Hogan - RailsConf 2009 twitter: bphogan IRC: hoganbp Rails + Legacy Databases Brian Hogan - RailsConf 2009 twitter: bphogan IRC: hoganbp So the main thing I want you to take away from this talk is... Please don t do it! Questions? Just kidding. The point

More information

Anders Fröberg TDDD80 STORAGE AND TESTING

Anders Fröberg TDDD80 STORAGE AND TESTING Anders Fröberg anders.froberg@liu.se TDDD80 STORAGE AND TESTING 1 Agenda: Test Unit testing vs Traditional Testing Debugging and Refactoring Deployment (Test Driven Development (TDD)) (Acceptance Test

More information

Construction: High quality code for programming in the large

Construction: High quality code for programming in the large Construction: High quality code for programming in the large Paul Jackson School of Informatics University of Edinburgh What is high quality code? High quality code does what it is supposed to do......

More information

16.410: Jump Starting With Java

16.410: Jump Starting With Java 16.410: Jump Starting With Java by Robert Effinger and Shannon Dong Introduction This jumpstart shows you the basics of getting Java started, running simple programs, and simple editing and debugging.

More information

CS 112 Introduction to Computing II. Wayne Snyder Computer Science Department Boston University

CS 112 Introduction to Computing II. Wayne Snyder Computer Science Department Boston University CS 112 Introduction to Computing II Wayne Snyder Department Boston University Today: Java expressions and operators concluded Java Statements: Conditionals: if/then, if/then/else Loops: while, for Next

More information

Framework for Enhancing the Performance of Unit Testing in Java Based Projects

Framework for Enhancing the Performance of Unit Testing in Java Based Projects Framework for Enhancing the Performance of Unit Testing in Java Based Projects Thesis submitted in partial fulfillment of the requirements for the award of degree of Master of Engineering in Computer Science

More information

STQA Mini Project No. 1

STQA Mini Project No. 1 STQA Mini Project No. 1 R (2) C (4) V (2) T (2) Total (10) Dated Sign 1.1 Title Mini-Project 1: Create a small application by selecting relevant system environment/ platform and programming languages.

More information

CS201 - Assignment 3, Part 2 Due: Wednesday March 5, at the beginning of class

CS201 - Assignment 3, Part 2 Due: Wednesday March 5, at the beginning of class CS201 - Assignment 3, Part 2 Due: Wednesday March 5, at the beginning of class For this assignment we will be developing a text-based Tic Tac Toe game 1. The key to this assignment is that we re going

More information

What is it? CMSC 433 Programming Language Technologies and Paradigms Spring Approach 1. Disadvantage of Approach 1

What is it? CMSC 433 Programming Language Technologies and Paradigms Spring Approach 1. Disadvantage of Approach 1 CMSC 433 Programming Language Technologies and Paradigms Spring 2007 Singleton Pattern Mar. 13, 2007 What is it? If you need to make sure that there can be one and only one instance of a class. For example,

More information

Want Better Software? TEST it! (and thenwrite it) Tame defects before they appear You Rise/Bugs Fall

Want Better Software? TEST it! (and thenwrite it) Tame defects before they appear You Rise/Bugs Fall Want Better Software? TEST it! (and thenwrite it) Tame defects before they appear You Rise/Bugs Fall Introduction TDD had its origins as an integral part of Extreme Programming TDD, BDD, DDD and the coming

More information

Phake - PHP Mocking Framework Documentation

Phake - PHP Mocking Framework Documentation Phake - PHP Mocking Framework Documentation Release 1.0.3 Mike Lively Sep 06, 2017 Contents 1 Introduction to Phake 1 2 Getting Started 5 2.1 Composer Install.............................................

More information

EECS 280 C++ Coding Standards

EECS 280 C++ Coding Standards EECS 280 C++ Coding Standards The goal of coding standards is to make code easier to understand and maintain. Refer to these guidelines as you are writing code, not just at the end, to develop good coding

More information

Computer Science 210 Data Structures Siena College Fall Topic Notes: Complexity and Asymptotic Analysis

Computer Science 210 Data Structures Siena College Fall Topic Notes: Complexity and Asymptotic Analysis Computer Science 210 Data Structures Siena College Fall 2017 Topic Notes: Complexity and Asymptotic Analysis Consider the abstract data type, the Vector or ArrayList. This structure affords us the opportunity

More information

Mock Objects and Distributed Testing

Mock Objects and Distributed Testing Mock Objects and Distributed Testing Making a Mockery of your Software Brian Gilstrap Once, said the Mock Turtle at last, with a deep sigh, I was a real Turtle. (Alice In Wonderland, Lewis Carroll) The

More information

Effective Testing with API Simulation and (Micro)Service Virtualisation

Effective Testing with API Simulation and (Micro)Service Virtualisation Effective Testing with API Simulation and (Micro)Service Virtualisation Andrew Morgan Daniel Bryant @Spectolabs 1 tl;dr Testing distributed systems is hard Many of us building distributed systems (microservices)

More information

Overview. Iteration 4 kinds of loops. Infinite Loops. for while do while foreach

Overview. Iteration 4 kinds of loops. Infinite Loops. for while do while foreach Repetition Overview Iteration 4 kinds of loops for while do while foreach Infinite Loops Iteration One thing that computers do well is repeat commands Programmers use loops to accomplish this 4 kinds of

More information

Unit Testing J2EE from JRuby. Evan Light

Unit Testing J2EE from JRuby. Evan Light Unit Testing J2EE from JRuby Evan Light http://evan.tiggerpalace.com Who I am Professional developer since 1996 Java since 1999 J2EE since 2000 Ruby since 2006 Some yutz with Keynote and a remote control

More information

TEST DRIVEN DEVELOPMENT

TEST DRIVEN DEVELOPMENT PERSONAL SOFTWARE ENGINEERING PROJECT: TEST DRIVEN DEVELOPMENT Kirsi Männistö kirsi.mannisto@welho.com 60114V PSEA_Test_driven_development.rtf Page 1 of 1 RoadRunners Change history Version Description

More information

Week 7. Statically-typed OO languages: C++ Closer look at subtyping

Week 7. Statically-typed OO languages: C++ Closer look at subtyping C++ & Subtyping Week 7 Statically-typed OO languages: C++ Closer look at subtyping Why talk about C++? C++ is an OO extension of C Efficiency and flexibility from C OO program organization from Simula

More information

Managing Complexity. Programming is more than just syntax. 23-Nov-15

Managing Complexity. Programming is more than just syntax. 23-Nov-15 Managing Complexity Programming is more than just syntax 23-Nov-15 Learning things that matter Things change rapidly in computer science Languages go in and out of popularity, operating systems change,

More information

Stage 11 Array Practice With. Zip Code Encoding

Stage 11 Array Practice With. Zip Code Encoding A Review of Strings You should now be proficient at using strings, but, as usual, there are a few more details you should know. First, remember these facts about strings: Array Practice With Strings are

More information

Advanced Java Testing. What s next?

Advanced Java Testing. What s next? Advanced Java Testing What s next? Vincent Massol, February 2018 Agenda Context & Current status quo Coverage testing Testing for backward compatibility Mutation testing Environment testing Context: XWiki

More information

2/12/17. Goals of this Lecture. Historical context Princeton University Computer Science 217: Introduction to Programming Systems

2/12/17. Goals of this Lecture. Historical context Princeton University Computer Science 217: Introduction to Programming Systems Princeton University Computer Science 217: Introduction to Programming Systems The C Programming Language Part 1 For Your Amusement C is quirky, flawed, and an enormous success. While accidents of history

More information