Cory Foy St. Louis Code Camp May 6 th, 2005 Achieving Customer Zen with Fitnesse and.NET Fitnesse and.NET Achieving Customer.

Slides:



Advertisements
Similar presentations
Acceptance Testing vs. Unit Testing: A Developers Perspective Owen Rogers Rob Styles
Advertisements

Acceptance Testing.
Extreme Programming Alexander Kanavin Lappeenranta University of Technology.
Voyager Virtual Learning Environment ( Overview of the Voyager Learner Suite (runs automatically)
IE 423 Design of Decision Support System Designing Systems.
AN OVERVIEW BY JAMIE STARKE The Role of Prototyping.
CONFUSED? DON’T BE. IT’S ACTUALLY REALLY STRAIGHTFORWARD. RICK FREEMAN FEBRUARY 4, 2015 The HSPC Tier 1 & Tier 2 Technical Specification Explained.
1 FIT for Embedded System Test Development PRESENTER : Jingwen Chen.
Who is non-pro user? certain experience and skill-set not necessarily computer-related tied to the medium computer skills play a role, but maybe they shouldn’t.
Acceptance Testing CSSE 376, Software Quality Assurance Rose-Hulman Institute of Technology March 30, 2007.
About the Presentations The presentations cover the objectives found in the opening of each chapter. All chapter objectives are listed in the beginning.
SE 555 Software Requirements & Specification 1 SE 555 Software Requirements & Specification Prototyping.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
Computer Science 240 Principles of Software Design.
1 An introduction to design patterns Based on material produced by John Vlissides and Douglas C. Schmidt.
, TargetProcesswww.targetprocess.com1 TargetProcess:Suite Agile Project Management System Powers iterative development Focuses on Project Planning,
By John Boal  Continuous Integration [CI] ◦ Automating the build process ◦ Build the entire system each time any new.
Your Interactive Guide to the Digital World Discovering Computers 2012.
Glenn Cerny Chief Information Officer Lansing Community College Jennifer Pierce Portal/Web/HTML DB Developer Lansing Community College Scott Spendolini.
Software Development Concepts ITEC Software Development Software Development refers to all that is involved between the conception of the desired.
Introducing Java.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
Lecture 6 Software Testing and jUnit CS140 Dick Steflik.
Table-Driven Acceptance Testing Mario Aquino Principal Software Engineer Object Computing, Inc.
Agile Acceptance Testing Software development by example Gojko Adzic
Jordan Maxwell ADVANCED PROGRAMMING. DEFINITIONS PHP: A server side Programming language often used in websites. API: ( Application programming interface.
About Dynamic Sites (Front End / Back End Implementations) by Janssen & Associates Affordable Website Solutions for Individuals and Small Businesses.
From Concept to Release By:Kevin Cherry Co-Owner:Timothy Wright
Are Agile Projects Doomed to Half-Baked Design? Alex Chaffee Leslie Chicoine
© BJSS Limited Going Agile UK TMF - April 2011 Mark Crowther, Test Consultant.
Programming. What is a Program ? Sets of instructions that get the computer to do something Instructions are translated, eventually, to machine language.
PHP TUTORIAL. HISTORY OF PHP  PHP as it's known today is actually the successor to a product named PHP/FI.  Created in 1994 by Rasmus Lerdorf, the very.
Testing in Extreme Programming
Introduction to Programming Peggy Batchelor.
Merja & Pauli Rapid prototyping & other stuff.
Using Fit on an Agile J2EE Project John Tyler Houston Java Users Group January 30, 2008.
T Iteration Demo Team WiseGUI I2 Iteration
FitNesse On the Road to Success By Pierre Veragen
Brought to you in association with Catalogues, Shopping Carts, and Online Shops.
Build it Tweak it Use it Know it Love it. A tool to collaborate on projects What does Collaborate mean? To work together.
Guide to Programming with Python Chapter One Getting Started: The Game Over Program.
First BlueJ Day Houston, 2006 Unit Testing with BlueJ Bruce Quig Deakin University.
Test Automation For Web-Based Applications Portnov Computer School Presenter: Ellie Skobel.
Requirements Engineering Southern Methodist University CSE 7316 – Chapter 3.
Chapter 7 The Practices: dX. 2 Outline Iterative Development Iterative Development Planning Planning Organizing the Iterations into Management Phases.
CS5103 Software Engineering Lecture 02 More on Software Process Models.
Mohit Anand, Software Engineer Adobe 1 Selecting GUI Automation Testing Tool for Mobile Domain.
John Lockhart, WebTest Limited STANZ Wellington August 2010 Practical demonstration of FitNesse, FitLibrary and FitLibraryWeb.
May08-21 Model-Based Software Development Kevin Korslund Daniel De Graaf Cory Kleinheksel Benjamin Miller Client – Rockwell Collins Faculty Advisor – Dr.
Ivar Jacobson, Grady Booch, and James Rumbaugh The Unified Software Development Process Addison Wesley, : James Rumbaugh's OOMD 1992: Ivar Jacobson's.
Test-Driving ASP.NET Development Tampa Code Camp – July 15 th, 2006 Cory Foy
© 2012 LogiGear Corporation. All Rights Reserved FitNesseFitNesse Authors: Nghia Pham 1.
T EST T OOLS U NIT VI This unit contains the overview of the test tools. Also prerequisites for applying these tools, tools selection and implementation.
Northwest Arkansas.Net User Group Jay Smith Tyson Foods, Inc. Unit Testing nUnit, nUnitAsp, nUnitForms.
Interaction Design Workshop BIME 591 Winter 2014.
By Manish Shrotriya CSE MS 4 Point Agile Manifesto 1.Individuals and interactions over processes and tools 2.Working software over comprehensive.
Software Engineering Lecture 11 Software Testing Presenter: Josef Hallberg 1.
Testing under the Agile Method CSCI 521 Software Project Management based on the book Testing Extreme Programming by Lisa Crispin and Tip House.
1 User testing approaches: Practical techniques toward a more usable website Arc Worldwide 1.
Swift by Kevin Gamboa Teky Alvarado Hieu Tran Elizabeth Sanchez
Continuous Integration (CI)
Test Driven Development 1 November Agenda  What is TDD ?  Steps to start  Refactoring  TDD terminology  Benefits  JUnit  Mocktio  Continuous.
The Software Development Cycle
Advantages OF BDD Testing
Dynamics 365 Customer Engagement Deep Dive: Creating a Basic Plug-in
The Role of Prototyping
Teaching slides Chapter 6.
Flowcharts and Pseudo Code
Test Driven Lasse Koskela Chapter 9: Acceptance TDD Explained
The Software Development Cycle
Presentation transcript:

Cory Foy St. Louis Code Camp May 6 th, 2005 Achieving Customer Zen with Fitnesse and.NET Fitnesse and.NET Achieving Customer Zen With Fitnesse

Achieving Customer Zen with Fitnesse and.NET Cory Foy St. Louis Code Camp May 6 th, 2006 Overview The problem with customers… Figuring out what customers want Executable Specifications How Fitnesse can help Fitnesse Demos Wrap-up

Achieving Customer Zen with Fitnesse and.NET Cory Foy St. Louis Code Camp May 6 th, 2006 The Customer Problem If we don’t take care of the customers, maybe they’ll stop bugging us

Achieving Customer Zen with Fitnesse and.NET Cory Foy St. Louis Code Camp May 6 th, 2006 The Customer Problem Customers aren’t developers Developers aren’t (usually) customers Customers don’t know what they want until they see it

Achieving Customer Zen with Fitnesse and.NET Cory Foy St. Louis Code Camp May 6 th, 2006 What Customers Want How do we show customers what they want? –In a way they can understand –In a way that elicits immediate feedback –In a way that allows them to explore –Without building entire system

Achieving Customer Zen with Fitnesse and.NET Cory Foy St. Louis Code Camp May 6 th, 2006 What Customers Want Mock-Ups –Screen grabs –Sketches on paper or whiteboard –Visio Diagrams –Good for initial discussions –Allows customer to explore in some fashion –Hard to keep up with the latest state of the system

Achieving Customer Zen with Fitnesse and.NET Cory Foy St. Louis Code Camp May 6 th, 2006 What Customers Want Prototyping –Make a throw away version –Allows customer interaction at a more concrete level –More expensive than mock-ups –Customers may not understand difference between prototype and real system –May be hard to keep up with the real system

Achieving Customer Zen with Fitnesse and.NET Cory Foy St. Louis Code Camp May 6 th, 2006 What Customers Want Frequent Releases –Shows customer what is finished –Shows customer the current state of the system –Hard for customer to explore with –Customer has to wait for release to play with new version –Customer can only explore GUI elements

Achieving Customer Zen with Fitnesse and.NET Cory Foy St. Louis Code Camp May 6 th, 2006 What Customers Want Need something between prototype and actual release Ties domain concepts to code Proves when feature is done – in a repeatable fashion Customer-centric and developer friendly Ties as closely as possible to the real system

Achieving Customer Zen with Fitnesse and.NET Cory Foy St. Louis Code Camp May 6 th, 2006 Executable Specifications A way of modeling specifications in a way that allows them to be executed to prove the system meets the spec Abstract State Model –Any algorithm can be modeled at its natural abstraction level by an appropriate ASM –By being able to run the model, you can validate the algorithm

Achieving Customer Zen with Fitnesse and.NET Cory Foy St. Louis Code Camp May 6 th, 2006 Executable Specifications The appropriate abstraction level for business problems is usually a business (or domain) specific language By allowing the domain language to be executable, users get fast feedback Domain concepts can be translated directly into code

Achieving Customer Zen with Fitnesse and.NET Cory Foy St. Louis Code Camp May 6 th, 2006 How Fitnesse Helps Which is clearer? This? [Test] public void CreateRoomAddsRoomToRoomList() { Assert.AreEqual(0, chatApp.AvailableRooms.Count); chatApp.CreateRoom(“aRoom”, “aUser”); Assert.AreEqual(1, chatApp.AvailableRooms.Count); Room room = chatApp.AvailableRooms.GetRoomByName(“aRoom”); Assert.AreEqual(1, room.UserCount); Assert.IsTrue(room.Users.Contains(“aUser”)); }

Achieving Customer Zen with Fitnesse and.NET Cory Foy St. Louis Code Camp May 6 th, 2006 How Fitnesse Helps Or this? user enters username ofJohn user enters room name ofBasketball user pressesCreate list of rooms room nameuser countuser list Basketball1John

Achieving Customer Zen with Fitnesse and.NET Cory Foy St. Louis Code Camp May 6 th, 2006 How Fitnesse Helps So what is this magical Fitnesse? –Two pieces FIT (Framework for Integration Tests) Fitnesse –Allows specifications to be written in HTML, Excel or Wiki format –Can use any language underneath (runners for.NET, Java, Python, Ruby and others)

Achieving Customer Zen with Fitnesse and.NET Cory Foy St. Louis Code Camp May 6 th, 2006 How Fitnesse Helps Fitnesse –Uses Wiki format –Allows collaborative efforts between customers and developers –Is about communication first, testing second –Easy to use syntax –Straightforward to hook to the system being tested

Achieving Customer Zen with Fitnesse and.NET Cory Foy St. Louis Code Camp May 6 th, 2006 How Fitnesse Helps Different Types of Tables –ColumnFixture –RowFixture –DoFixture –ActionFixture –Custom Fixtures –Many others

Achieving Customer Zen with Fitnesse and.NET Cory Foy St. Louis Code Camp May 6 th, 2006 How Fitnesse Helps Helps solve 3 major problems –Communication –Agility –Balance Side effect benefits –Regression tests –Domain concepts exposed

Achieving Customer Zen with Fitnesse and.NET Cory Foy St. Louis Code Camp May 6 th, 2006 Chat Application Demo Chat Application –Customer wants a simple chat application where users can create rooms and join existing ones –Specifications are being captured into Fitnesse fixtures and hooked to the system under test

Achieving Customer Zen with Fitnesse and.NET Cory Foy St. Louis Code Camp May 6 th, 2006 Chat Application Demo Specification Example ChatTests.Application startChatTests.Application list of rooms room nameuser countuser list user enters username ofJohn user enters room name ofBasketball user pressesCreate list of rooms room nameuser countuser list Basketball1John

Achieving Customer Zen with Fitnesse and.NET Cory Foy St. Louis Code Camp May 6 th, 2006 Chat Application Demo Customer found a hole in the specification by writing Fitnesse tests When the last user leaves, the room should be deleted

Achieving Customer Zen with Fitnesse and.NET Cory Foy St. Louis Code Camp May 6 th, 2006 Chat Application Demo Because the domain concepts are translated into code, the developers can quickly write the corresponding unit test

Achieving Customer Zen with Fitnesse and.NET Cory Foy St. Louis Code Camp May 6 th, 2006 Chat Application Demo And then get the unit test to pass by writing the code

Achieving Customer Zen with Fitnesse and.NET Cory Foy St. Louis Code Camp May 6 th, 2006 Chat Application Demo And because Fitnesse ties into the system under test, we can see our change meets the specification immediately

Achieving Customer Zen with Fitnesse and.NET Cory Foy St. Louis Code Camp May 6 th, 2006 Business Rules Demo The table based nature of Fitnesse is excellent for communicating Business Rules If you can capture the concepts in a table form, you can write it in Fitnesse

Achieving Customer Zen with Fitnesse and.NET Cory Foy St. Louis Code Camp May 6 th, 2006 Business Rules Demo Business Holidays –Different businesses have different days which they may count as holidays –Interfacing with them may mean having to know what holiday applies to what business –Sounds like a good Fitnesse test!

Achieving Customer Zen with Fitnesse and.NET Cory Foy St. Louis Code Camp May 6 th, 2006 Business Rules Demo Fitnesse Test and Code

Achieving Customer Zen with Fitnesse and.NET Cory Foy St. Louis Code Camp May 6 th, 2006 Business Rules Demo Shipping Charges –Online store with shopping cart –Shipping Charges are based on order amounts –Customers get free shipping if they are over a set amount, or if they have preferred customer status

Achieving Customer Zen with Fitnesse and.NET Cory Foy St. Louis Code Camp May 6 th, 2006 Business Rules Demo We want an initial user list we can reuse throughout our tests

Achieving Customer Zen with Fitnesse and.NET Cory Foy St. Louis Code Camp May 6 th, 2006 Business Rules Demo Our other fixtures can now make use of our setup code

Achieving Customer Zen with Fitnesse and.NET Cory Foy St. Louis Code Camp May 6 th, 2006 Wrap-up Focus on using Fitnesse to communicate with your customers first Then use Fitnesse as a regression testing tool Having Fitnesse tests shouldn’t be an excuse not to write unit tests

Achieving Customer Zen with Fitnesse and.NET Cory Foy St. Louis Code Camp May 6 th, 2006 Wrap-up Fitnesse Resources –Fit for Developing Software by Rick Mugridge and Ward Cunningham –Fitnesse website ( –Fitnesse mailing list ( –Fitnesse tutorials (