17
FitNesse On the Road to Success By Pierre Veragen [email protected]

FitNesse On the Road to Success By Pierre Veragen [email protected]

Embed Size (px)

Citation preview

Page 1: FitNesse On the Road to Success By Pierre Veragen pierre.veragen@comcast.net

FitNesse

On the Road to Success

By Pierre [email protected]

Page 2: FitNesse On the Road to Success By Pierre Veragen pierre.veragen@comcast.net

What we will cover today

What is FitNesse? Quick introduction How it works

Different types of tables

Principles you can use

Page 3: FitNesse On the Road to Success By Pierre Veragen pierre.veragen@comcast.net

Framework for Integrated Testing FitNesse, a wiki using Fit Defining Acceptance Tests, checking that “We are

building the right thing” Creating a feedback loop between customers,

testers and programmers

Provides a one-click test environment

Fit / FitNesse

Page 4: FitNesse On the Road to Success By Pierre Veragen pierre.veragen@comcast.net

Now some Demos

Simple Calculator

Discount Calculator

Page 5: FitNesse On the Road to Success By Pierre Veragen pierre.veragen@comcast.net

How it works

The text is interpreted so it can trigger the fixtures that call the System-Under-Test (SUT)

Fit interprets the results and display Pass/Fail in each cell

Proper syntax is key Not so hard to learn… …after you get going

Page 6: FitNesse On the Road to Success By Pierre Veragen pierre.veragen@comcast.net

Fixture ClassPublic Class CalculatorAsColFixture Inherits fit.ColumnFixture Public Number1 As Double Public Number2 As Double Private _oSUTCalculator As DemoSUT.SUTCalculator

Public Sub New() _oSUTCalculator = New DemoSUT.SUTCalculator End Sub

Public Function Product() As Double Return _oSUTCalculator.Multiply(Number1, Number2) End Function

End Class

System Under TestPublic Class SUTCalculator Public Function Multiply( _ ByVal firstNumber As Double, _ ByVal secondNumber As Double) _ As Double Return firstNumber * secondNumber End FunctionEnd Class

Table, Fit, and Fixture together

Fixture and SUT working together

The Actual Page

Page 7: FitNesse On the Road to Success By Pierre Veragen pierre.veragen@comcast.net

What we will cover today

What is FitNesse? Quick introduction How it works

Different types of tables

Principles you can use

Page 8: FitNesse On the Road to Success By Pierre Veragen pierre.veragen@comcast.net

Different Types of Tables

The most common: ColumnFixture, when a test case can be

expressed in a row with input/outputs RowFixture, when checking a list DoFixture, when doing

Actions alone Do, Column, and Row fixtures together

And many more ActionFixture, an old and limited DoFixture > stay away

from it

Page 9: FitNesse On the Road to Success By Pierre Veragen pierre.veragen@comcast.net

Examples - Testing

Column-based, could not find one Do fixture as actions Do Fixture as test driver, our preferred way Let the fixture generate all the combinations

Avoid these: A laundry list page Just tables, what is the purpose of the test? A page that does everything

Page 10: FitNesse On the Road to Success By Pierre Veragen pierre.veragen@comcast.net

Examples – Documentation

A page as “Executable Requirement” A FitNesse page is a good way to hold

current documentation, accessible by everyone

Page 11: FitNesse On the Road to Success By Pierre Veragen pierre.veragen@comcast.net

What we will cover today

What is FitNesse? Quick introduction How it works

Different types of tables

Principles you can use

Page 12: FitNesse On the Road to Success By Pierre Veragen pierre.veragen@comcast.net

Principles, related to fixtures…

Fixture should be as thin as possible No code duplication in fixture

>>> all good coding practices apply

Use business domain words for all public members displayed in pages >>> Ask the business people or let them drive.

Page 13: FitNesse On the Road to Success By Pierre Veragen pierre.veragen@comcast.net

Principles, related to pages

Most maintenance is going to be on the pages not the fixtures, if well designed

No table duplication >>> use the “!include” syntax to share a page among

other pages

Use business domain words Keep the page focused and simple

Page 14: FitNesse On the Road to Success By Pierre Veragen pierre.veragen@comcast.net

Some parallels

Decouple components

Avoid coupling tables to SUT

code

Avoid geeky talk and reflection

Use domain driven architecture

Use page structure driven by business domain

This isolates pages from SUT refactoring

Duplicate code Duplicate tables Duplication is more expensive in

FitNesse

Code being Tested

FitNesse Comments

Page 15: FitNesse On the Road to Success By Pierre Veragen pierre.veragen@comcast.net

How to get help

FitNesse on the web http://fitnesse.org/

Yahoo Group http://groups.yahoo.com/group/fitnesse/

Fit Web Site http://fit.c2.com/

A great book “Fit for Developing Software” with its samples http://www.vlagsma.com/fitnesse/

Ask others

Page 16: FitNesse On the Road to Success By Pierre Veragen pierre.veragen@comcast.net

Others have been busy

Fixtures: http://fitnesse.org/UsefulFixtures

Environments: http://benefit.sourceforge.net/ http://fitpro.sourceforge.net/ http://ase.cpsc.ucalgary.ca/ase/index.php/FitClipse

/FitClipse http://sourceforge.net/projects/profit

Page 17: FitNesse On the Road to Success By Pierre Veragen pierre.veragen@comcast.net

Some advice to get started

Use a scout and get help Work as a Team Test pages should look simple and straight to the

point Focus on expressing the intents (requirement) and

the corresponding acceptance tests Accept the fact that you will refactor page structure

and fixtures

Better sooner than later