Effective Unit Testing

Size: px
Start display at page:

Download "Effective Unit Testing"

Transcription

1 Effective Unit Testing A guide forjava developers LASSE KOSKELA 11 MANNING Shelter Island

2 contents xv preface acknowledgments xvii about this book xix about the cover illustration xxiv Part 1 Foundations 1 The promise ofgood tests State of the union: writing better tests The value of having tests 5 Factors ofproductivity 8 The curve of design potential Tests as a design tool 10 Test-driven development 11 Behavior-driven development Summary 14 In search ofgood Readable code is maintainable code Structure helps make sense of things It's not good if it's testing the wrong things Independent tests run easily in solitude 21 ix

3 X CONTENTS 2.5 Reliable tests are reliable Every trade has its tools and tests are no exception Summary 26 Test doubles The power of a test double 28 Isolating the code under test 28 Speeding up Making execution deterministic 31 Simulating special conditions 32 Exposing hidden information 32 test execution Types of test doubles 33 Test stubs are unusually short things 34 Fake objects do it without side effects 35 Test spies steal your secrets 36 Mock objects object to surprises Guidelines for using test doubles 39 Pick the right double for the test 40 Arrange, act, assert 40 Check for behavior, not implementation 42 Choose your tools 42 Inject your dependencies Summary 44 Part 2 Catalog 45 Readability Primitive assertions 48 Example 48 What to do about it? 49 Summary Hyperassertions 51 Example 51 What to do about it 1 54 Summary Bitwise assertions 56 Example 56 What to do about it? 56 Summary Incidental details 57 Example 57 What to do about it? 58 Summary Split personality 60 Example 61 What to do about it? Split logic 64 Summary Magic Example 65 What to do about it? 66 Summary 69 numbers 70 Example 70 What to do about it? 71 Summary 71

4 CONTENTS 4.8 Setup sermon 72 Example 72 What to do about it? 73 Summary Overprotective tests 75 Example 75 What to do about it? 76 Summary Summary 76 Maintainability Duplication 79 Example 79 What to do about it? 80 Summary Conditional logic 82 Example 83 What to do about it? 83 Summary Flaky test 85 Example 85 What to do about it? 86 Summary Crippling file path 88 Example 88 What to do about it? 89 Summary Persistent temp files 91 Example 91 What to do about it? 92 Summary Sleeping snail 94 Example 94 What to do about it? 95 Summary Pixel perfection 97 Example 97 What to do about it? 98 Summary Parameterized mess 102 Example 103 What to do about it? 106 Summary Lack of cohesion in methods 108 Example 109 What to do about it? 110 Summary Summary 113 Trustworthiness Commented-out tests 116 Example 116 What to do about it? 117 Summary Misleading comments 118 Example 118 Wfiat to do about it? 119 Summary Never-failing tests 121 Example 121 What to do about it? 122 Summary 123

5 xii CONTENTS 6.4 Shallow promises 123 Example(s) 123 What to do about it"? 125 Summary Lowered expectations 127 Example 127 What to do about it? 128 Summary Platform prejudice 129 Example 129 What to do about it? 130 Summary Conditional tests 133 Example 133 Wliat to do about it? 134 Summary Summary 135 Part 3 Diversions 137 Testable design What's testable design? Testability Modular design 140 SOLID design principles 141 Modular design in context 143 Test-driving toward modular design 143 issues 143 Can't instantiate a class 144 Can't invoke a method 144 Can't observe the outcome 145 Can't substitute a collaborator 145 Can't override a method Guidelines for testable design 146 Avoid complex private methods 146 Avoid final methods 147 Avoid static methods 148 Use new with care 148 Avoid logic in constructors 149 Avoid the Singleton 150 Favor composition over inheritance. 151 Wrap external libraries 152 Avoid service lookups Summary 154 %) Writing tests in other JVM languages 156 f ^ 8.1 The premise of mixing JVM languages 157 General benefits 157 Writing tests Writing unit tests with Groovy 160 Simplified setup for tests 161 Groovier JUnit 4 tests 163

6 CONTENTS xiii 8.3 Expressive power with BDD tools 163 Groovy specs with easyb 164 Spock Framework: steroids for writing more expressive tests 165 Spock Framework's test doubles are on steroids, too Summary 168 Speeding up test execution Looking for a speed-up 171 The need for speed 171 Approaching the situation 172 Profiling a build 172 Profiling 9.2 Speeding up test code 178 tests 175 Don't sleep unless you 're tired 178 Beware the bloated base class 179 Watch out for redundant setup and teardown 181 Be picky about who you invite to your test 182 Stay local, stay fast 183 Resist the temptation to hit the database 184 There's no slower I/O than file I/O Speeding up the build 187 Faster I/O with a RAM disk 188 Parallelizing the build 189 Offload to a higher-powered CPU 194 Distribute the build Summary 200 appendix A appendix B JUnit primer 202 ExtendingJUnit 209 index 217

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

Introduction to C++/CLI 3. What C++/CLI can do for you 6 The rationale behind the new syntax Hello World in C++/CLI 13

Introduction to C++/CLI 3. What C++/CLI can do for you 6 The rationale behind the new syntax Hello World in C++/CLI 13 contents preface xv acknowledgments xvii about this book xix PART 1 THE C++/CLI LANGUAGE... 1 1 Introduction to C++/CLI 3 1.1 The role of C++/CLI 4 What C++/CLI can do for you 6 The rationale behind the

More information

BDD in Action. Behavior-Driven Development for. the whole software lifecycle JOHN FERGUSON SMART MANNING. Shelter Island

BDD in Action. Behavior-Driven Development for. the whole software lifecycle JOHN FERGUSON SMART MANNING. Shelter Island BDD in Action Behavior-Driven Development for the whole software lifecycle JOHN FERGUSON SMART 11 MANNING Shelter Island contents foreword xvii preface xxi acknowledgements about this book xxv xxiii about

More information

JAVA MOCK TEST JAVA MOCK TEST III

JAVA MOCK TEST JAVA MOCK TEST III http://www.tutorialspoint.com JAVA MOCK TEST Copyright tutorialspoint.com This section presents you various set of Mock Tests related to Java Framework. You can download these sample mock tests at your

More information

Contents. Figures. Tables. Examples. Foreword. Preface. 1 Basics of Java Programming 1. xix. xxi. xxiii. xxvii. xxix

Contents. Figures. Tables. Examples. Foreword. Preface. 1 Basics of Java Programming 1. xix. xxi. xxiii. xxvii. xxix PGJC4_JSE8_OCA.book Page ix Monday, June 20, 2016 2:31 PM Contents Figures Tables Examples Foreword Preface xix xxi xxiii xxvii xxix 1 Basics of Java Programming 1 1.1 Introduction 2 1.2 Classes 2 Declaring

More information

Design patterns using Spring and Guice

Design patterns using Spring and Guice Design patterns using Spring and Guice Dhanji R. Prasanna MANNING contents 1 Dependency 2 Time preface xv acknowledgments xvii about this book xix about the cover illustration xxii injection: what s all

More information

Foundations of object orientation

Foundations of object orientation Foreword Preface List of projects discussed in detail in this book Acknowledgments Part 1 Chapter 1 Chapter 2 Foundations of object orientation Objects and classes 1.1 Objects and classes 1.2 Creating

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

Objects First with Java

Objects First with Java ^ Objects First with Java A Practical Introduction using BlueJ David J. Barnes and Michael Kolling Second edition PEARSON Prentice Hall Harlow, England London New York Boston San Francisco Toronto Sydney

More information

C++/CLI in Action NISHANT SIVAKUMAR MANNING. Greenwich (74 w. long.)

C++/CLI in Action NISHANT SIVAKUMAR MANNING. Greenwich (74 w. long.) C++/CLI in Action NISHANT SIVAKUMAR 11 MANNING Greenwich (74 w. long.) brief contents PART 1 THE C++/CLI LANGUAGE 1 1 IntroductiontoC++/CLI 3 2 Getting into the CLI: properties, delegates and arrays 46

More information

Spring Persistence. with Hibernate PAUL TEPPER FISHER BRIAN D. MURPHY

Spring Persistence. with Hibernate PAUL TEPPER FISHER BRIAN D. MURPHY Spring Persistence with Hibernate PAUL TEPPER FISHER BRIAN D. MURPHY About the Authors About the Technical Reviewer Acknowledgments xii xiis xiv Preface xv Chapter 1: Architecting Your Application with

More information

C++ Concurrency in Action

C++ Concurrency in Action C++ Concurrency in Action Practical Multithreading ANTHONY WILLIAMS 11 MANNING Shelter Island contents preface xv acknowledgments xvii about this booh xix about the cover illustration xxii ~1 Hello, world

More information

Whom Is This Book For?... xxiv How Is This Book Organized?... xxiv Additional Resources... xxvi

Whom Is This Book For?... xxiv How Is This Book Organized?... xxiv Additional Resources... xxvi Foreword by Bryan Hunter xv Preface xix Acknowledgments xxi Introduction xxiii Whom Is This Book For?... xxiv How Is This Book Organized?... xxiv Additional Resources... xxvi 1 Meet F# 1 F# in Visual Studio...

More information

JUnit 3.8.1, 64. keep it simple stupid (KISS), 48

JUnit 3.8.1, 64. keep it simple stupid (KISS), 48 Index A accessor methods, 11, 152 add parameter technique, 189 190 add() method, 286 287, 291 algorithm, substituting, 104 105 AND logical operator, 172 architectural design patterns, 277 278 architecture,

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

Pro JPA 2. Mastering the Java Persistence API. Apress* Mike Keith and Merrick Schnicariol

Pro JPA 2. Mastering the Java Persistence API. Apress* Mike Keith and Merrick Schnicariol Pro JPA 2 Mastering the Java Persistence API Mike Keith and Merrick Schnicariol Apress* Gootents at a Glance g V Contents... ; v Foreword _ ^ Afooyt the Author XXj About the Technical Reviewer.. *....

More information

Extension Web Publishing 3 Lecture # 1. Chapter 6 Site Types and Architectures

Extension Web Publishing 3 Lecture # 1. Chapter 6 Site Types and Architectures Chapter 6 Site Types and Architectures Site Types Definition: A public Web site, an Internet Web site, an external Web site or simply a Web site is one that is not explicitly restricted to a particular

More information

The Design Process. General Development Issues. C/C++ and OO Rules of Thumb. Home

The Design Process. General Development Issues. C/C++ and OO Rules of Thumb. Home A l l e n I. H o l u b & A s s o c i a t e s Home C/C++ and OO Rules of Thumb The following list is essentially the table of contents for my book Enough Rope to Shoot Yourself in the Foot (McGraw-Hill,

More information

GitHub code samples. Appendix B

GitHub code samples. Appendix B Appendix B GitHub code samples The vast majority of the code samples in this book were taken from Microsoft Visual Studio 2013 solutions. Although not all of them are directly runnable, they can all be

More information

Agile Model-Driven Development with UML 2.0 SCOTT W. AM BLER. Foreword by Randy Miller UNIFIED 1420 MODELING LANGUAGE. gile 1.

Agile Model-Driven Development with UML 2.0 SCOTT W. AM BLER. Foreword by Randy Miller UNIFIED 1420 MODELING LANGUAGE. gile 1. THE OBJECT PRIMER THIRD EDITION Agile Model-Driven Development with UML 2.0 SCOTT W. AM BLER Foreword by Randy Miller UNIFIED 1420 MODELING LANGUAGE gile 1 odeling Contents Acknowledgments Foreword Preface

More information

Microsoft Visual Basic 2005: Reloaded

Microsoft Visual Basic 2005: Reloaded Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 10 Creating Classes and Objects Objectives After studying this chapter, you should be able to: Define a class Instantiate an object from a class

More information

OSGi in Action. RICHARD S. HALL KARL PAULS STUART McCULLOCH DAVID SAVAGE CREATING MODULAR APPLICATIONS IN JAVA MANNING. Greenwich (74 w. long.

OSGi in Action. RICHARD S. HALL KARL PAULS STUART McCULLOCH DAVID SAVAGE CREATING MODULAR APPLICATIONS IN JAVA MANNING. Greenwich (74 w. long. OSGi in Action CREATING MODULAR APPLICATIONS IN JAVA RICHARD S. HALL KARL PAULS STUART McCULLOCH DAVID SAVAGE 11 MANNING Greenwich (74 w. long.) contents foreword xiv preface xvii acknowledgments xix about

More information

"Charting the Course... Java Programming Language. Course Summary

Charting the Course... Java Programming Language. Course Summary Course Summary Description This course emphasizes becoming productive quickly as a Java application developer. This course quickly covers the Java language syntax and then moves into the object-oriented

More information

A Tutorial Introduction 1

A Tutorial Introduction 1 Preface From the Old to the New Acknowledgments xv xvii xxi 1 Verilog A Tutorial Introduction 1 Getting Started A Structural Description Simulating the binarytoeseg Driver Creating Ports For the Module

More information

With great power comes great responsibility

With great power comes great responsibility Developer Guide / dev_guide / unit-testing JavaScript is a dynamically typed language which comes with great power of expression, but it also come with almost no-help from the compiler. For this reason

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

Delphi in Depth: FireDAC, Copyright 2017 Cary Jensen ISBN: ISBN-10: , ISBN-13: ,

Delphi in Depth: FireDAC, Copyright 2017 Cary Jensen  ISBN: ISBN-10: , ISBN-13: , Chapter Titles v Chapter Titles Chapter Titles... v Table of Contents... vii About the Author... xvii About the Technical Reviewers... xix Acknowledgements... xxi Introduction... 1 Chapter 1 Overview of

More information

A guide for Java developers

A guide for Java developers A guide for Java developers MANNING LASSE KOSKELA Effective Unit Testing Effective Unit Testing A GUIDE FOR JAVA DEVELOPERS LASSE KOSKELA MANNING SHELTER ISLAND For online information and ordering of

More information

in Action RabbitMQ Distributed Messaging for Everyone ALVARO VIDELA JASON J.W. WILLIAMS /II MANNING Shelter Island

in Action RabbitMQ Distributed Messaging for Everyone ALVARO VIDELA JASON J.W. WILLIAMS /II MANNING Shelter Island RabbitMQ in Action Distributed Messaging for Everyone ALVARO VIDELA JASON J.W. WILLIAMS /II MANNING Shelter Island contents foreword xv preface xvii acknowledgments xix about this book xxi about the cover

More information

Programming in Scala Second Edition

Programming in Scala Second Edition Programming in Scala Second Edition Martin Odersky, Lex Spoon, Bill Venners artima ARTIMA PRESS WALNUT CREEK, CALIFORNIA Contents Contents List of Figures List of Tables List of Listings Foreword Foreword

More information

Magento Technical Guidelines

Magento Technical Guidelines Magento Technical Guidelines Eugene Shakhsuvarov, Software Engineer @ Magento 2018 Magento, Inc. Page 1 Magento 2 Technical Guidelines Document which describes the desired technical state of Magento 2

More information

Welcome to Design Patterns! For syllabus, course specifics, assignments, etc., please see Canvas

Welcome to Design Patterns! For syllabus, course specifics, assignments, etc., please see Canvas Welcome to Design Patterns! For syllabus, course specifics, assignments, etc., please see Canvas What is this class about? While this class is called Design Patterns, there are many other items of critical

More information

Unit testing basics & more...

Unit testing basics & more... Unit testing basics & more... by Papapetrou P.Patroklos Twitter hashtag : Thessaloniki Java Meetup - December 2014 Agenda Unit testing introduction Differences with other types of tests Key concepts Rules

More information

object/relational persistence What is persistence? 5

object/relational persistence What is persistence? 5 contents foreword to the revised edition xix foreword to the first edition xxi preface to the revised edition xxiii preface to the first edition xxv acknowledgments xxviii about this book xxix about the

More information

Application Development

Application Development Pro Single Page Application Development Using Backbone.js and ASP.NET Gil Fink Ido Flatow Apress- Contents J About the Authors About the Technical Reviewers Acknowledgments Introduction xvii xix xxi xxiii

More information

IN PRACTICE. Daniele Bochicchio Stefano Mostarda Marco De Sanctis. Includes 106 practical techniques MANNING

IN PRACTICE. Daniele Bochicchio Stefano Mostarda Marco De Sanctis. Includes 106 practical techniques MANNING IN PRACTICE Daniele Bochicchio Stefano Mostarda Marco De Sanctis Includes 106 practical techniques MANNING contents preface xv acknowledgments xvii about this book xix about the authors xxiii about the

More information

Learn Windows PowerShell 3 in a Month of Lunches

Learn Windows PowerShell 3 in a Month of Lunches Learn Windows PowerShell 3 in a Month of Lunches Second Edition DON JONES JEFFERY HICKS 11 MANN I NG Shelter Island contents preface xx'ii about this booh author online xx xix about the authors acknowledgments

More information

Contents in Detail. Foreword by Xavier Noria

Contents in Detail. Foreword by Xavier Noria Contents in Detail Foreword by Xavier Noria Acknowledgments xv xvii Introduction xix Who This Book Is For................................................ xx Overview...xx Installation.... xxi Ruby, Rails,

More information

Introduction. Assessment Test. Part I The Programmer s Exam 1

Introduction. Assessment Test. Part I The Programmer s Exam 1 4276FM.fm Page ix Thursday, October 2, 2003 11:22 AM at a Glance Introduction Assessment Test xix xxv Part I The Programmer s Exam 1 Chapter 1 Language Fundamentals 3 Chapter 2 Operators and Assignments

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

PROCESS DEVELOPMENT METHODOLOGY The development process of an API fits the most fundamental iterative code development

PROCESS DEVELOPMENT METHODOLOGY The development process of an API fits the most fundamental iterative code development INTRODUCING API DESIGN PRINCIPLES IN CS2 Jaime Niño Computer Science, University of New Orleans New Orleans, LA 70148 504-280-7362 jaime@cs.uno.edu ABSTRACT CS2 provides a great opportunity to teach an

More information

Preface... (vii) CHAPTER 1 INTRODUCTION TO COMPUTERS

Preface... (vii) CHAPTER 1 INTRODUCTION TO COMPUTERS Contents Preface... (vii) CHAPTER 1 INTRODUCTION TO COMPUTERS 1.1. INTRODUCTION TO COMPUTERS... 1 1.2. HISTORY OF C & C++... 3 1.3. DESIGN, DEVELOPMENT AND EXECUTION OF A PROGRAM... 3 1.4 TESTING OF PROGRAMS...

More information

Hovedopgave. Bringing a Legacy System under Test Control. Master i informationsteknologi Linien i softwarekonstruktion

Hovedopgave. Bringing a Legacy System under Test Control. Master i informationsteknologi Linien i softwarekonstruktion DATALOGISK INSSTITUT DET NATURVIDENSKABELIGE FAKULTET AARHUS UNIVERSITET Hovedopgave Master i informationsteknologi Linien i softwarekonstruktion Bringing a Legacy System under Test Control Af Niels Hauge

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

Pro JavaScript. Development. Coding, Capabilities, and Tooling. Den Odell. Apress"

Pro JavaScript. Development. Coding, Capabilities, and Tooling. Den Odell. Apress Pro JavaScript Development Coding, Capabilities, and Tooling Den Odell Apress" Contents J About the Author About the Technical Reviewers Acknowledgments Introduction xv xvii xix xxi Chapter 1: Object-Oriented

More information

Excel Programming with VBA (Macro Programming) 24 hours Getting Started

Excel Programming with VBA (Macro Programming) 24 hours Getting Started Excel Programming with VBA (Macro Programming) 24 hours Getting Started Introducing Visual Basic for Applications Displaying the Developer Tab in the Ribbon Recording a Macro Saving a Macro-Enabled Workbook

More information

"Charting the Course to Your Success!" MOC D Querying Microsoft SQL Server Course Summary

Charting the Course to Your Success! MOC D Querying Microsoft SQL Server Course Summary Course Summary Description This 5-day instructor led course provides students with the technical skills required to write basic Transact-SQL queries for Microsoft SQL Server 2014. This course is the foundation

More information

The Verilog Hardware Description Language

The Verilog Hardware Description Language Donald Thomas Philip Moorby The Verilog Hardware Description Language Fifth Edition 4y Spri nnger Preface From the Old to the New Acknowledgments xv xvii xxi 1 Verilog A Tutorial Introduction Getting Started

More information

Information Security: Principles and Practice Second Edition. Mark Stamp

Information Security: Principles and Practice Second Edition. Mark Stamp Information Security: Principles and Practice Second Edition Mark Stamp August 10, 2009 Contents Preface Second Edition Preface About The Author Acknowledgments xvii xix xxiii xxv 1 Introduction 1 1.1

More information

Introduction to Testing and Maintainable code

Introduction to Testing and Maintainable code Introduction to Testing and Maintainable code Reasons not to write unit tests 1. I don't know how to write tests. 2. Writing tests is too hard. 3. I don't have enough time to write tests. 4. Testing is

More information

The Verilog Hardware Description Language, Fifth Edition

The Verilog Hardware Description Language, Fifth Edition The Verilog Hardware Description Language, Fifth Edition The Verilog Hardware Description Language, Fifth Edition Donald E. Thomas ECE Department Carnegie Mellon University Pittsburgh, PA Philip R. Moorby

More information

C# in Depth THIRD EDITION

C# in Depth THIRD EDITION C# in Depth THIRD EDITION JON SKEET MANNING SHELTER ISLAND brief contents PART 1 PREPARING FOR THE JOURNEY...1 1 The changing face of C# development 3 2 Core foundations: building on C# 1 29 PART 2 C#

More information

Getting MEAN. with Mongo, Express, Angular, and Node SIMON HOLMES MANNING SHELTER ISLAND

Getting MEAN. with Mongo, Express, Angular, and Node SIMON HOLMES MANNING SHELTER ISLAND Getting MEAN with Mongo, Express, Angular, and Node SIMON HOLMES MANNING SHELTER ISLAND For online information and ordering of this and other Manning books, please visit www.manning.com. The publisher

More information

Comprehensive AngularJS Programming (5 Days)

Comprehensive AngularJS Programming (5 Days) www.peaklearningllc.com S103 Comprehensive AngularJS Programming (5 Days) The AngularJS framework augments applications with the "model-view-controller" pattern which makes applications easier to develop

More information

Quality Code. Software Testing Principles, Practices, and Patterns. Stephen Vance. AAddison-Wesley

Quality Code. Software Testing Principles, Practices, and Patterns. Stephen Vance. AAddison-Wesley Quality Code Software Testing Principles, Practices, and Patterns Stephen Vance AAddison-Wesley Upper Saddle River, NJ Boston Indianapolis San Francisco New York Toronto Montreal London Munich Paris Madrid

More information

Jim Jackson II Ian Gilman

Jim Jackson II Ian Gilman Single page web apps, JavaScript, and semantic markup Jim Jackson II Ian Gilman FOREWORD BY Scott Hanselman MANNING contents 1 HTML5 foreword xv preface xvii acknowledgments xx about this book xxii about

More information

SOFTWARE MODELING AND DESIGN. UML, Use Cases, Patterns, and. Software Architectures. Ki Cambridge UNIVERSITY PRESS. Hassan Gomaa

SOFTWARE MODELING AND DESIGN. UML, Use Cases, Patterns, and. Software Architectures. Ki Cambridge UNIVERSITY PRESS. Hassan Gomaa SOFTWARE MODELING AND DESIGN UML, Use Cases, Patterns, and Software Architectures Hassan Gomaa George Mason University, Fairfax, Virginia Ki Cambridge UNIVERSITY PRESS Contents Preface P"U

More information

Client Code - the code that uses the classes under discussion. Coupling - code in one module depends on code in another module

Client Code - the code that uses the classes under discussion. Coupling - code in one module depends on code in another module Basic Class Design Goal of OOP: Reduce complexity of software development by keeping details, and especially changes to details, from spreading throughout the entire program. Actually, the same goal as

More information

Installing and Administering a Satellite Environment

Installing and Administering a Satellite Environment IBM DB2 Universal Database Installing and Administering a Satellite Environment Version 8 GC09-4823-00 IBM DB2 Universal Database Installing and Administering a Satellite Environment Version 8 GC09-4823-00

More information

POJOs in Action DEVELOPING ENTERPRISE APPLICATIONS WITH LIGHTWEIGHT FRAMEWORKS CHRIS RICHARDSON MANNING. Greenwich (74 w. long.)

POJOs in Action DEVELOPING ENTERPRISE APPLICATIONS WITH LIGHTWEIGHT FRAMEWORKS CHRIS RICHARDSON MANNING. Greenwich (74 w. long.) POJOs in Action DEVELOPING ENTERPRISE APPLICATIONS WITH LIGHTWEIGHT FRAMEWORKS CHRIS RICHARDSON MANNING Greenwich (74 w. long.) contents PART 1 1 preface xix acknowledgments xxi about this book xxiii about

More information

Software Exorcism: A Handbook for Debugging and Optimizing Legacy Code

Software Exorcism: A Handbook for Debugging and Optimizing Legacy Code Software Exorcism: A Handbook for Debugging and Optimizing Legacy Code BILL BLUNDEN Apress About the Author Acknowledgments Introduction xi xiii xv Chapter 1 Preventative Medicine 1 1.1 Core Problems 2

More information

In this Lecture you will Learn: Design Patterns. Patterns vs. Frameworks. Patterns vs. Frameworks

In this Lecture you will Learn: Design Patterns. Patterns vs. Frameworks. Patterns vs. Frameworks In this Lecture you will Learn: Design Patterns Chapter 15 What types of patterns have been identified in software development How to apply design patterns during software development The benefits and

More information

Test, Code, Design: Inverting the Waterfall

Test, Code, Design: Inverting the Waterfall Test, Code, Design: Inverting the Waterfall Agenda Design Change Testing Code Reviews Refactoring Who am I? John Deters jadeters@comcast.net Son of a programmer Programming computers all my life I have

More information

Designing for Testability. John A. Deters

Designing for Testability. John A. Deters John A. Deters 9/26/2017 Designing for Testability... 3 Summary... 3 The current state of testing... 3 Fragile tests... 5 Testing taxonomy... 6 Test Frameworks... 8 Test framework architecture... 8 Test

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

Slide 1 CS 170 Java Programming 1 Testing Karel

Slide 1 CS 170 Java Programming 1 Testing Karel CS 170 Java Programming 1 Testing Karel Introducing Unit Tests to Karel's World Slide 1 CS 170 Java Programming 1 Testing Karel Hi Everybody. This is the CS 170, Java Programming 1 lecture, Testing Karel.

More information

Extreme programming XP 6

Extreme programming XP 6 Extreme programming XP 6 Planning Game 3 Planning Game Independent: Stories should be as independent as possible. When thinking of independence it is often easier to think of order independent. In other

More information

"Charting the Course... Agile Database Design Techniques Course Summary

Charting the Course... Agile Database Design Techniques Course Summary Course Summary Description This course provides students with the skills necessary to design databases using Agile design techniques. It is based on the Scott Ambler book Agile Database Techniques: Effective

More information

List of Examples List of Figures List of Tables. Acknowledgments 1. VERIFICATION GUIDELINES 1

List of Examples List of Figures List of Tables. Acknowledgments 1. VERIFICATION GUIDELINES 1 Contents List of Examples List of Figures List of Tables Preface Acknowledgments xiii xxvii xxix xxxi xxxvii 1. VERIFICATION GUIDELINES 1 1.1 The Verification Process 2 1.2 The Verification Methodology

More information

The following topics will be covered in this course (not necessarily in this order).

The following topics will be covered in this course (not necessarily in this order). The following topics will be covered in this course (not necessarily in this order). Introduction The course focuses on systematic design of larger object-oriented programs. We will introduce the appropriate

More information

Object-Oriented Design

Object-Oriented Design Object-Oriented Design Lecture 14: Design Workflow Department of Computer Engineering Sharif University of Technology 1 UP iterations and workflow Workflows Requirements Analysis Phases Inception Elaboration

More information

Chapter 1: Programming Principles

Chapter 1: Programming Principles Chapter 1: Programming Principles Object Oriented Analysis and Design Abstraction and information hiding Object oriented programming principles Unified Modeling Language Software life-cycle models Key

More information

Build Testable Client and Service Applications

Build Testable Client and Service Applications Build Testable Client and Service Applications Brian Noyes IDesign Inc (www.idesign.net) brian.noyes@idesign.net About Brian Chief Architect IDesign Inc. (www.idesign.net) Microsoft Regional Director MVP

More information

XGL Device Pipeline Porting Guide

XGL Device Pipeline Porting Guide XGL Device Pipeline Porting Guide Loadable Interfaces Version 4.1 2550 Garcia Avenue Mountain View, CA 94043 U.S.A. A Sun Microsystems, Inc. Business Copyright 1996 Sun Microsystems, Inc., 2550 Garcia

More information

CONTENTS. INTRODUCTION xvii

CONTENTS. INTRODUCTION xvii INTRODUCTION xvii SECTION I: AN INTRODUCTION TO JAVA FOR RPG PROGRAMMERS 1 CHAPTER 1: JAVA FOR RPG PROGRAMMERS 3 AS/400 LIBRARIES AND JAVA PACKAGES 3 IMPORT 6 A PROGRAM WITH CLASS 7 LET S START HERE 7

More information

Practical C++ Programming

Practical C++ Programming SECOND EDITION Practical C++ Programming Steve Oualline O'REILLY' Beijing Cambridge Farnham Koln Paris Sebastopol Taipei Tokyo Preface xv Part I. The Basics 1. What Is C++? 3 A Brief History of C++ 3 C++

More information

Object-Oriented Design

Object-Oriented Design Object-Oriented Design Department of Computer Engineering Lecture 12: Object-Oriented Principles Sharif University of Technology 1 Open Closed Principle (OCP) Classes should be open for extension but closed

More information

Acknowledgments Introduction. Chapter 1: Introduction to Access 2007 VBA 1. The Visual Basic Editor 18. Testing Phase 24

Acknowledgments Introduction. Chapter 1: Introduction to Access 2007 VBA 1. The Visual Basic Editor 18. Testing Phase 24 Acknowledgments Introduction Chapter 1: Introduction to Access 2007 VBA 1 What Is Access 2007 VBA? 1 What s New in Access 2007 VBA? 2 Access 2007 VBA Programming 101 3 Requirements-Gathering Phase 3 Design

More information

Lessons Learned. Johnny Bigert, Ph.D., Skype/Microsoft October 26, 2011

Lessons Learned. Johnny Bigert, Ph.D., Skype/Microsoft October 26, 2011 Lessons Learned Johnny Bigert, Ph.D., Skype/Microsoft johnny.bigert@skype.net October 26, 2011 Why do we do the things we do? Software Development Object-orientation, design principles, timeboxing, teams,

More information

Fundamentals of the Java Programming Language

Fundamentals of the Java Programming Language Fundamentals of the Java Programming Language Student Guide SL-110 REV E D61798GC10 Edition 1.0 2009 D62399 Copyright 2006, 2009, Oracle and/or its affiliates. All rights reserved. Disclaimer This document

More information

Refactoring Tested Code: Has Mocking. RefTest. Managing Refactoring in a Test. Driven World. Gone Wrong? Ben Stopford Royal Bank of Scotland

Refactoring Tested Code: Has Mocking. RefTest. Managing Refactoring in a Test. Driven World. Gone Wrong? Ben Stopford Royal Bank of Scotland RefTest Refactoring Tested Code: Has Mocking Driven World Gone Wrong? Managing Refactoring in a Test Ben Stopford Royal Bank of Scotland I've always been a old fashioned classic TDDer and thus far I don't

More information

JUnit Testing Patterns: Mocking and Doubles

JUnit Testing Patterns: Mocking and Doubles JUnit Testing Patterns: Mocking and Doubles Produced by: Eamonn de Leastar (edeleastar@wit.ie) Dr. Siobhán Drohan (sdrohan@wit.ie) Department of Computing and Mathematics http://www.wit.ie/ Unit Test Patterns:

More information

Beginning Perl. Third Edition. Apress. JAMES LEE with SIMON COZENS

Beginning Perl. Third Edition. Apress. JAMES LEE with SIMON COZENS Beginning Perl Third Edition JAMES LEE with SIMON COZENS Apress About the Author... About the Technical Reviewers Acknowledgements Suitrod yetion «. xvi xvii xviii «xix. Chapter 1: First Steps in Perl..

More information

JAVA CONCEPTS Early Objects

JAVA CONCEPTS Early Objects INTERNATIONAL STUDENT VERSION JAVA CONCEPTS Early Objects Seventh Edition CAY HORSTMANN San Jose State University Wiley CONTENTS PREFACE v chapter i INTRODUCTION 1 1.1 Computer Programs 2 1.2 The Anatomy

More information

Designing Object-Oriented C++ Applications

Designing Object-Oriented C++ Applications Designing Object-Oriented C++ Applications Using the Booch Method Robert Cecil Martin Object Mentor Associates Technieche Universftat Dermstadt FACHBEREUCH INFORMATIK B1BL1OTHEK Sachgebtete: Stendort Cliffs,

More information

Test-Driven Development (TDD)

Test-Driven Development (TDD) Test-Driven Development (TDD) CS 4501 / 6501 Software Testing [Lasse Koskela, Test Driven, Chapters 2-3] 1 Agile Airplane Testing Test harness: Appearance matches Color coding in place Fly 6ft (or 2m)

More information

foreword to the first edition preface xxi acknowledgments xxiii about this book xxv about the cover illustration

foreword to the first edition preface xxi acknowledgments xxiii about this book xxv about the cover illustration contents foreword to the first edition preface xxi acknowledgments xxiii about this book xxv about the cover illustration xix xxxii PART 1 GETTING STARTED WITH ORM...1 1 2 Understanding object/relational

More information

List of Code Samples. xiii

List of Code Samples. xiii xiii List of Code Samples Sample 1-1 Driving the APB pins 16 Sample 1-2 A task to drive the APB pins 17 Sample 1-3 Low-level Verilog test 17 Sample 1-4 Basic transactor code 21 Sample 2-1 Using the logic

More information

"Charting the Course... SharePoint 2007 Hands-On Labs Course Summary

Charting the Course... SharePoint 2007 Hands-On Labs Course Summary Course Summary Description This series of 33 hands-on labs allows students to explore the new features of Microsoft SharePoint Server, Microsoft Windows, Microsoft Office, including Microsoft Office Groove,

More information

Pro ASP.NET MVC 2 Framework

Pro ASP.NET MVC 2 Framework Pro ASP.NET MVC 2 Framework Second Edition Steven Sanderson Apress TIB/UB Hannover 89 133 297 713 Contents at a Glance Contents About the Author About the Technical Reviewers Acknowledgments Introduction

More information

John Hunt and Alex McManus. Key Java. Advanced Tips and Techniques

John Hunt and Alex McManus. Key Java. Advanced Tips and Techniques John Hunt and Alex McManus Key Java Advanced Tips and Techniques Preface xiii Part 1 Java Development 1 Introduction 3 1.1 Introduction 3 1.2 A Brief History of Java 3 1.3 The Three Stages of Java 4 1.4

More information

SOLID Principles. Equuleus Technologies. Optional Subheading October 19, 2016

SOLID Principles. Equuleus Technologies. Optional Subheading October 19, 2016 SOLID Principles Optional Subheading October 19, 2016 Why SOLID Principles? The traits of well designed software are as follows Maintainability - The ease with which a software system or component can

More information

Beginning Microsoft Office 2010

Beginning Microsoft Office 2010 Beginning Microsoft Office 2010 IB I IP TECHNISCHI= ^\ 'NFORMATIONSBIBLIOTHEK UNIVERSITATSBIBLIOTHEK HANNOVER Guy Hart-Davis Apress* TIB/UB Hannover 89 133 299 783 ill! IWIlilltllw i ttis f0k^fsll^»m*r~

More information

Inside Relational Databases with Examples in Access

Inside Relational Databases with Examples in Access Inside Relational Databases with Examples in Access Inside Relational Databases with Examples in Access Mark Whitehorn and Bill Marklyn 123 Mark Whitehorn Applied Computing Division, University of Dundee,

More information

PYTHON. p ykos vtawynivis. Second eciitiovl. CO Ve, WESLEY J. CHUN

PYTHON. p ykos vtawynivis. Second eciitiovl. CO Ve, WESLEY J. CHUN CO Ve, PYTHON p ykos vtawynivis Second eciitiovl WESLEY J. CHUN. PRENTICE HALL Upper Saddle River, NJ Boston Indianapolis San Francisco New York Toronto Montreal London Munich Paris Madrid Capetown Sydney

More information

Acknowledgments Introduction. Part I: Programming Access Applications 1. Chapter 1: Overview of Programming for Access 3

Acknowledgments Introduction. Part I: Programming Access Applications 1. Chapter 1: Overview of Programming for Access 3 74029ftoc.qxd:WroxPro 9/27/07 1:40 PM Page xiii Acknowledgments Introduction x xxv Part I: Programming Access Applications 1 Chapter 1: Overview of Programming for Access 3 Writing Code for Access 3 The

More information

The Software Design Process. CSCE 315 Programming Studio, Fall 2017 Tanzir Ahmed

The Software Design Process. CSCE 315 Programming Studio, Fall 2017 Tanzir Ahmed The Software Design Process CSCE 315 Programming Studio, Fall 2017 Tanzir Ahmed Outline Challenges in Design Design Concepts Heuristics Practices Challenges in Design A problem that can only be defined

More information

The Unified Modeling Language User Guide

The Unified Modeling Language User Guide The Unified Modeling Language User Guide Grady Booch James Rumbaugh Ivar Jacobson Rational Software Corporation TT ADDISON-WESLEY Boston San Francisco New York Toronto Montreal London Munich Paris Madrid

More information

CROSS-REFERENCE TABLE ASME A Including A17.1a-1997 Through A17.1d 2000 vs. ASME A

CROSS-REFERENCE TABLE ASME A Including A17.1a-1997 Through A17.1d 2000 vs. ASME A CROSS-REFERENCE TABLE ASME Including A17.1a-1997 Through A17.1d 2000 vs. ASME 1 1.1 1.1 1.1.1 1.2 1.1.2 1.3 1.1.3 1.4 1.1.4 2 1.2 3 1.3 4 Part 9 100 2.1 100.1 2.1.1 100.1a 2.1.1.1 100.1b 2.1.1.2 100.1c

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