Upload
solomon-simpson
View
215
Download
0
Embed Size (px)
Citation preview
What we will cover today
What is FitNesse? Quick introduction How it works
Different types of tables
Principles you can use
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
Now some Demos
Simple Calculator
Discount Calculator
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
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
What we will cover today
What is FitNesse? Quick introduction How it works
Different types of tables
Principles you can use
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
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
Examples – Documentation
A page as “Executable Requirement” A FitNesse page is a good way to hold
current documentation, accessible by everyone
What we will cover today
What is FitNesse? Quick introduction How it works
Different types of tables
Principles you can use
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.
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
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
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
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
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