did-you-know? rent-now

Amazon no longer offers textbook rentals. We do!

did-you-know? rent-now

Amazon no longer offers textbook rentals. We do!

We're the #1 textbook rental company. Let us show you why.

9780321269348

Fit for Developing Software Framework for Integrated Tests

by ;
  • ISBN13:

    9780321269348

  • ISBN10:

    0321269349

  • Edition: 1st
  • Format: Paperback
  • Copyright: 2005-06-29
  • Publisher: Pearson
  • Purchase Benefits
  • Free Shipping Icon Free Shipping On Orders Over $35!
    Your order must be $35 or more to qualify for free economy shipping. Bulk sales, PO's, Marketplace items, eBooks and apparel do not qualify for this offer.
  • eCampus.com Logo Get Rewarded for Ordering Your Textbooks! Enroll Now
List Price: $64.99 Save up to $5.38
  • Digital
    $59.61
    Add to Cart

    DURATION
    PRICE

Supplemental Materials

What is included with this book?

Summary

An example-based book that introduces an effective open source framework for building better software by incorporating automated testing.

Author Biography

Rick Mugridge runs his own company, Rimu Research, and is an associate professor in the Department of Computer Science at the University of Auckland, New Zealand. He specializes in Agile software development, automated testing, test-driven development, and user interfaces. Rick is one of the world's leading developers of Fit fixtures and tools, and is the creator of the FitLibrary.

Ward Cunningham is widely respected for his contributions to the practices of object-oriented development, Extreme Programming, and software agility. Cofounder of Cunningham & Cunningham, Inc., he has served as Director of R&D at Wyatt Software and as principal engineer at the Tektronix Computer Research Laboratory. Ward led the creation of Fit, and is responsible for innovations ranging from the CRC design method to WikiWikiWeb.



Table of Contents

Foreword xxi
Preface xxiii
Acknowledgments xxv
About the Authors xxvii
Introduction
1(6)
The Need for Fit
1(1)
The Value of Fit Tables
2(1)
Fit and Business Roles
3(2)
Organization of the Book
5(1)
The Book's Use of Color
6(1)
PART I Introducing Fit Tables
7(80)
Communicating with Tables
9(4)
Fit Tables
9(1)
Tables for Communicating
10(1)
Tables for Testing
11(1)
Tables, Fixtures, and a System Under Test
11(1)
Reading Fit Tables
11(2)
Testing Calculations with ColumnFixture Tables
13(10)
Calculating Discount
13(1)
Reports: Traffic Lights
14(2)
Calculating Credit
16(3)
Selecting a Phone Number
19(1)
Summary
20(1)
Exercises
21(2)
Testing Business Processes with ActionFixture Tables
23(8)
Buying Items
23(3)
Actions on a Chat Server
26(2)
Summary
28(1)
Exercises
29(2)
Testing Lists with RowFixture Tables
31(8)
Testing Lists Whose Order Is Unimportant
31(3)
Testing Lists Whose Order Is Important
34(2)
Summary
36(1)
Exercises
36(3)
Testing with Sequences of Tables
39(10)
Chat Room Changes
39(4)
Discount Group Changes
43(3)
Summary
46(1)
Exercises
47(2)
Creating Tables and Running Fit
49(8)
Using Spreadsheets for Tests
49(1)
Organizing Tests in Test Suites
50(2)
Using HTML for Tests
52(2)
Summary
54(1)
Exercises
55(2)
Using FitNesse
57(10)
Introduction
57(1)
Getting Started
58(3)
Organizing Tests with Subwikis
61(1)
Test Suites
62(1)
Ranges of Values
63(1)
Other Features
64(1)
Summary
64(1)
Exercises
64(3)
Expecting Errors
67(4)
Expected Errors with Calculations
67(2)
Expected Errors with Actions
69(1)
Summary
69(2)
FitLibrary Tables
71(10)
Flow-Style Actions with DoFixture
71(3)
Expected Errors with DoFixture
74(1)
Actions on Domain Objects with DoFixture
75(1)
Setup
76(2)
CalculateFixture Tables
78(1)
Ordered List Tables
78(1)
Testing Parts of a List
79(1)
Summary
79(1)
Exercises
80(1)
A Variety of Tables
81(6)
Business Forms
81(1)
Testing Associations
82(1)
Two-Dimensional Images
83(2)
Summary
85(1)
Exercises
85(2)
PART II Developing Tables for RentAPartySoftware
87(88)
Introducing Fit at RentAPartySoftware
89(6)
RentAPartySoftware
89(1)
Development Issues
90(1)
An Initial Plan
90(1)
The Cast
91(1)
The Rest of This Part
92(1)
Summary
92(1)
Exercises
93(2)
Getting Started: Emily and Don's First Table
95(8)
Introduction
95(1)
Choosing Where to Start
95(1)
The Business Rule
96(1)
Starting Simple
97(1)
Adding the Grace Period
98(1)
Adding High-Demand Items
99(1)
Reports
100(1)
Seth's Return
101(1)
Summary
101(1)
Exercises
102(1)
Testing a Business Process: Cash Rentals
103(12)
Introduction
103(1)
Cash Rentals
104(3)
Split and Restructure
107(2)
Which Client
109(2)
Summary
111(1)
Exercises
112(3)
Tests Involving the Date and Time
115(12)
Introduction
115(1)
Charging a Deposit
115(3)
Dates
118(1)
Business Transactions
119(2)
Sad Paths
121(1)
Reports
122(2)
Summary
124(1)
Exercises
124(3)
Transforming Workflow Tests into Calculation Tests
127(10)
Introduction
127(1)
Testing Calculations Instead
128(3)
Using Durations
131(1)
Reports
132(1)
Summary
133(1)
Exercises
134(3)
Story Test-Driven Development with Fit
137(18)
Introduction
137(2)
The Stories
139(1)
The First Storytests
140(3)
The Planning Game
143(4)
Adding to the Storytests
147(1)
Progress During the Iteration
148(3)
Exploratory Testing at Iteration End
151(1)
Summary
151(2)
Exercises
153(2)
Designing and Refactoring Tests to Communicate Ideas
155(16)
Principles of Test Design
155(1)
Fit Tests for Business Rules
156(5)
Workflow Tests
161(4)
Calculation Tests
165(2)
List Tests
167(1)
Tests and Change
168(2)
Automation of Tests
170(1)
Summary
170(1)
Closing for Nonprogrammers
171(4)
The Value of Fit Tables
171(1)
Getting Fit at RentAPartySoftware
171(4)
PART III Introducing Fit Fixtures
175(78)
Connecting Tables and Applications
177(2)
Writing Fixtures
177(1)
Fixtures and Traffic Lights
178(1)
Column Fixtures
179(8)
Fixture CalculateDiscount
179(3)
Extending Credit
182(2)
Selecting a Phone Number
184(1)
ColumnFixture in General
185(1)
Summary
186(1)
Exercises
186(1)
Action Fixtures
187(8)
Buying Items
187(3)
Changing State of Chat Room
190(2)
ActionFixture in General
192(1)
Summary
193(1)
Exercises
194(1)
List Fixtures
195(8)
Testing Unordered Lists
195(2)
Testing Ordered Lists
197(4)
Testing a List with Parameters
201(1)
Summary
202(1)
Exercises
202(1)
Fixtures for Sequences of Tables
203(10)
Chat Room Fixtures
203(5)
Discount Group Fixtures
208(3)
Summary
211(1)
Exercises
212(1)
Using Other Values in Tables
213(6)
Standard Values
213(1)
Values of Money
214(3)
Values in FitNesse and the Flow Fixtures
217(1)
Summary
217(1)
Exercises
217(2)
Installing and Running Fit
219(4)
Installing Fit and FitLibrary
219(1)
Running Fit on Folders
219(1)
Running Fit on HTML Files
220(1)
Running Tests During the Build
220(1)
Other Ways to Run Tests
220(1)
Summary
221(2)
Installing FitNesse
223(4)
Installation
223(1)
Locating the Code
223(1)
Larger-Scale Use with Virtual Wiki
224(1)
Debugging FitNesse Tests
224(1)
Summary
225(1)
Exercises
225(2)
FitLibrary Fixtures
227(20)
Flow-Style Actions with DoFixture
227(4)
DoFixtures as Adapters
231(1)
Using SetFixture
232(1)
Expected Errors with DoFixture
232(2)
Actions on Domain Objects with DoFixture
234(3)
DoFixture in General
237(2)
Setup
239(3)
CalculateFixture Tables
242(1)
Ordered-List Tables
243(1)
Testing Parts of a List
244(1)
Using Other Values in Flow Tables
245(1)
Summary
245(1)
Exercises
245(2)
Custom Table Fixtures
247(6)
Business Forms
247(1)
Testing Associations
248(3)
Two-Dimensional Images
251(1)
Summary
252(1)
PART IV Developing Fixtures for RentAPartySoftware
253(52)
Fixtures and Adapting the Application
255(6)
Introduction
255(1)
The Programmers' Perspective
255(1)
System Architecture
256(2)
Test Infecting for Improvements
258(2)
The Rest of This Part
260(1)
Emily's First Fixture
261(6)
The Table
261(1)
Developing the Fixture
262(3)
Summary
265(1)
Exercises
266(1)
Fixtures Testing Through the User Interface
267(10)
Introduction
267(2)
Spike
269(1)
The Fixtures
270(1)
The Adapter
271(3)
Showing Others
274(1)
Summary
275(2)
Restructuring the System for Testing
277(12)
Test Infecting
277(1)
Slow Tests
278(1)
Setup
278(2)
Barriers to Testing
280(2)
Transactions
282(1)
Transaction Fixture
283(2)
Split Domain and Data Source Layers
285(1)
Reduce Interdependencies
286(1)
Summary
287(2)
Mocks and Clocks
289(6)
Introduction
289(2)
Changing the Date
291(1)
Time-Related Object Interactions
292(1)
Date Formatting
292(1)
Changing the Application in Small Steps
293(1)
Summary
294(1)
Running Calculation Tests Indirectly
295(6)
Testing Directly
295(2)
Testing Indirectly
297(3)
Summary
300(1)
Closing for Programmers at RPS
301(4)
The Value of Fit Tables
301(1)
Getting Fit at RPS
301(4)
PART V Custom Development
305(28)
The Architecture of Fit
307(6)
Running Fit
307(1)
Parse Tree
308(1)
doTable()
309(1)
Counts in Class Fixture
310(1)
The Fixture Subclasses
310(1)
TypeAdapter
311(1)
Summary
312(1)
Exercises
312(1)
Developing Custom Fixtures
313(6)
Using SetUpFixture
313(1)
SetUpFixture
314(1)
ImageFixture
314(2)
Summary
316(3)
Custom Runners
319(6)
Runners
319(1)
Calculator Runner
319(1)
Reading Tests from a Text File
320(2)
Reading Tests from a Spreadsheet
322(2)
Summary
324(1)
Model-Based Test Generation
325(8)
Symmetries: Operations That Cancel Each Other
325(1)
Generate a Simple Sequence
326(3)
Generate an Interleaved Sequence
329(3)
Summary
332(1)
Exercises
332(1)
PART VI Appendices
333(8)
A. Background Material
335(2)
A.1 Testing
335(1)
A.2 Agile Software Development
335(1)
A.3 Ubiquitous Language
336(1)
B. Book Resources Web Site
337(2)
C. Fit and Other Programming Languages
339(2)
C.1 Table Portability
339(1)
C.2 Other Programming Languages
339(2)
Bibliography 341(4)
Index 345

Supplemental Materials

What is included with this book?

The New copy of this book will include any supplemental materials advertised. Please check the title of the book to determine if it should include any access cards, study guides, lab manuals, CDs, etc.

The Used, Rental and eBook copies of this book are not guaranteed to include any supplemental materials. Typically, only the book itself is included. This is true even if the title states it includes any access cards, study guides, lab manuals, CDs, etc.

Excerpts

Fitness, agility, and balance apply as much to software development as they do to athletic activities. We can admire the movements of a highly skilled dancer, skier, or athlete. Gracefulness comes from wasting no energy on unnecessary tension or balance recovery, so that effort can be focused exactly where it is needed, exactly when it is needed. The expert is continuously making small adjustments to stay aligned and in balance. Agile responses to unexpected changes distinguish the expert from the nonexpert, as their rebalancing adjustments are fluid and subtle and go unnoticed by nonexperts. Injury, pain, distractions, and poor concentration can wreck balance, reducing the expert's ability to respond well in a focused way. Much more effort is required to perform even at a substandard level. A high degree of fitness and practice is needed in order to build the required concentration, balance, agility, and focused power. This, inevitably, is a process of refinement over time, with attention given to more subtle aspects of risk assessment and response as expertise increases. The achievements of athletes have continued to improve over time, sometimes through changes that break assumptions about the activity or how best to train. Big changes are often met with skepticism but will slowly become accepted as the norm as they prove their worth. When we look at the efforts of most software developers, we see a lot of energy being wasted. In the rush to get software completed, there is often little time to reflect on how to improve the way we do things, how to get that special fitness, balance, and agility that allow us to be graceful in our intellectual efforts in order to achieve inspired results with less effort. We get unbalanced when we have to fix old bugs, losing flow. We often have to speculate about what's needed, and feedback is too slow. Our software becomes less than elegant and is difficult to change, with tensions and stresses building up in us and in our software. This book is intended to help improve your fitness and agility in two areas of software development where we can make huge improvements to current practice. First, improving communication between the people who need the software and the people who develop it, as well as show you how to express the business rules that are at the heart of a software solution. Second, how to use automated testing to provide immediate and effective feedback so we can maintain balance and agility and avoid "injury." The book also questions some common assumptions about the way in which software is developed. But we don't expect that you'll make a big leap of faith: We start with current practice and show how you make small yet effective improvements. Just like the dancer and the athlete, you will have to do more than simply read about how to do this. It is also necessary to practice. Rick Mugridge Ward Cunningham 0321269349P06012005

Rewards Program