45
StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming participants should call 1-866-421-6339 International Non-streaming participants should call 1-

StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

Embed Size (px)

Citation preview

Page 1: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

StickyMinds.com and Better Software magazine presents…

Envisioning the Next Generation of Functional Test Tools

Sponsored by ThoughtWorks

Non-streaming participants should call 1-866-421-6339International Non-streaming participants should call 1-904-596-

2360

Page 2: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

Copyright 2008 Jennitta Andrea

Envisioning the Next Generation FTDD* Tools

*Functional Test Driven Development

[email protected] www.theandreagroup.ca

Page 3: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

What’s wrong with this generation?

Copyright 2008 Jennitta Andrea

Tool Users:• not picking appropriate tool• not using tool appropriately

Page 4: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

What’s wrong with this generation?

Tool Developers:• not building what is needed• feature / tool silos

Copyright 2008 Jennitta Andrea

Tool Users:• not picking appropriate tool• not using tool appropriately

Page 5: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

TDD: Red-Green-Refactor

FTDD

TDD Requirement Project Team Other

Copyright 2008 Jennitta Andrea

Page 6: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

Red

test api

throw notImplementedException(“not started”)

TDD Requirement Project Team Other

Copyright 2008 Jennitta Andrea

Page 7: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

Green

test apibusiness

logic

TDD Requirement Project Team Other

Copyright 2008 Jennitta Andrea

Page 8: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

Refactor

businesslogic

test api

TDD Requirement Project Team Other

Copyright 2008 Jennitta Andrea

Page 9: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

Beyond Red-Green-Refactor

FTDD

Requirement Specification

Project Characteristics

Team Characteristics

Other Needs

TDD Requirement Project Team Other

Copyright 2008 Jennitta Andrea

Page 10: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

FTDD: Big PictureBusiness Process

User Stories

Functional Tests

Unit Tests (API)

Unit Tests (detail)

red

green

refactor

red

green

refactor

red

green

refactor

red

green

refactor

red

green

refactor

red

green

refactor

red

green

refactor

red

green

refactor

red

green

refactor

red

green

refactor

red

green

refactor

red

green

refactor

red

green

refactor

red

green

refactor

red

green

refactor

red

green

refactor

red

green

refactor

red

green

refactor

red

green

refactor

red

green

refactor

red

green

refactor

red

green

refactor

red

green

refactor

red

green

refactorr

red

green

refactor

red

green

refactor

red

green

refactor

TDD Requirement Project Team Other

Copyright 2008 Jennitta Andrea

Page 11: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

FTDD: Context Diagram

FunctionalTest Tool

Author

TDD Requirement Project Team Other

Customer, Product Owner, Subject Matter Expert (SME), Tester, Business Analyst, Tech Writer, User Experience (Ux) Designer

Copyright 2008 Jennitta Andrea

Page 12: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

FTDD: Context Diagram

Functional Test Tool

Author Reader

TDD Requirement Project Team Other

Validate: Product Owner, Business Analyst, Compliance Officer

Develop: Programmer, Tester, Ux Designer, Operations Support

Other: Tech Writer, Trainer

Copyright 2008 Jennitta Andrea

Page 13: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

FTDD: Context Diagram

Functional Test Tool

Author Reader

Executor

TDD Requirement Project Team Other

FTDD: Tester, Programmer, SME, Operational support

Other: Marketing, Sales engineer, Tech writer

Copyright 2008 Jennitta Andrea

Page 14: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

FTDD: Context Diagram

Functional Test Tool

Author Reader

Executor Result Consumer

TDD Requirement Project Team Other

Programmer, Tester Operational Support, Release Manager, Continuous Integration System

Copyright 2008 Jennitta Andrea

Page 15: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

FTDD: Context Diagram

Functional Test Tool

Author Reader

Executor Result Consumer Report Consumer

TDD Requirement Project Team Other

Scrum Master, Project Manager, Release Manager, Compliance Officer, Auditor

Copyright 2008 Jennitta Andrea

Page 16: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

FTDD

Author FTDE

Read Locate

Display

Execute Multi env

Grouping

Debug

Result Pass/fail

Navigate

History

Report Coverage (code)

Functional Test Dev Env (FTDE) •code completion• dynamic syntax validation• refactoring• version control

• search … browse

• IDE, FTDE, build script

• IDE, FTDE• functional test -> code

• multiple views

• failure -> functional test -> code

• static• dynamic (priority, failures, area,…)

Copyright 2008 Jennitta Andrea

Page 17: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

Requirement Specification

Requirement Specification

Copyright 2008 Jennitta Andrea

Page 18: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

FT’s must be more readable1. Start at the Maintain Titles page2. Page title should be: Video Store Admin – Maintain

Movie Titles3. Click the Add New Title button4. Page title should be: Video Store Admin – Add New Title5. Enter text Star Wars into the field labelled Title6. Select Science Fiction from Category selection list7. Select DVD from Media Type selection list8. Click the Save button9. Page title should be Video Store Admin – Maintain

Movie Titles10. Message should be New title successfully added11. Titles should be listed as:

12. …..13. …..14. …..

224VideoChildrenAladdin

000VideoChildrenToy Story

000DVDSci FiStar Wars

011DVDSci FiStar Trek

# Rented

# In Store

# Copies

Media Type

Category

Title

Test Script

TDDRequirement Project Team Other

Copyright 2008 Jennitta Andrea

Page 19: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

FT’s must be more readable1. Start at the Maintain Titles page2. Page title should be: Video Store Admin – Maintain

Movie Titles3. Click the Add New Title button4. Page title should be: Video Store Admin – Add New Title5. Enter text Star Wars into the field labelled Title6. Select Science Fiction from Category selection list7. Select DVD from Media Type selection list8. Click the Save button9. Page title should be Video Store Admin – Maintain

Movie Titles10. Message should be New title successfully added11. Titles should be listed as:

12. …..13. …..14. …..

224VideoChildrenAladdin

000VideoChildrenToy Story

000DVDSci FiStar Wars

011DVDSci FiStar Trek

# Rented

# In Store

# Copies

Media Type

Category

Title

Test Script 1. Add Movie Title (Star Wars, Sci Fi, DVD)2. Verify Title Inventory

3. Add Movie Title (Star Wars, Sci Fi, DVD)4. Verify Add Movie Title Message ( “Error: The movie title Star Wars already

exists”)

224VideoChildren

Aladdin

000VideoChildren

Toy Story

000DVDSci FiStar Wars

011DVDSci FiStar Trek

# Rented

# In Store

# Copies

Media Type

Category

Title

Domain Specific Language

TDDRequirement Project Team Other

Copyright 2008 Jennitta Andrea

Page 20: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

FT’s must be more readable1. Start at the Maintain Titles page2. Page title should be: Video Store Admin – Maintain

Movie Titles3. Click the Add New Title button4. Page title should be: Video Store Admin – Add New Title5. Enter text Star Wars into the field labelled Title6. Select Science Fiction from Category selection list7. Select DVD from Media Type selection list8. Click the Save button9. Page title should be Video Store Admin – Maintain

Movie Titles10. Message should be New title successfully added11. Titles should be listed as:

12. …..13. …..14. …..

224VideoChildrenAladdin

000VideoChildrenToy Story

000DVDSci FiStar Wars

011DVDSci FiStar Trek

# Rented

# In Store

# Copies

Media Type

Category

Title

Test Script 1. Add Movie Title (Star Wars, Sci Fi, DVD)2. Verify Title Inventory

3. Add Movie Title (Star Wars, Sci Fi, DVD)4. Verify Add Movie Title Message ( “Error: The movie title Star Wars already

exists”)

224VideoChildren

Aladdin

000VideoChildren

Toy Story

000DVDSci FiStar Wars

011DVDSci FiStar Trek

# Rented

# In Store

# Copies

Media Type

Category

Title

Domain Specific Language

1. Given inventory contains:Star Wars, scifi, DVD2. When add movie title: Star Wars, sci fi, DVD3. Then inventory unchanged4. And message: “Error: The movie title Star Wars

already exists”)

Declarative, Behavior Driven

TDDRequirement Project Team Other

Copyright 2008 Jennitta Andrea

Page 21: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

FTDD Req Spec

Author FTDE 3rd party

DSTL

Format

Read Locate

Display

Locate+

Execute Multi env

Grouping

Debug

3rd party

personas

Result Pass/fail

Navigate

History

Navigate+

Report Coverage (code)

Coverage (req)

• excel, word, drawing tool, etc

• navigation: req/story <-> test • search: tests covering req/story

• failure -> functional test -> DSTL -> code

Domain Specific Test Lang (DSTL)• navigate … refactor … uses of … completion … dynamic validation …

• browser, etc

• declarative run-time variations

Copyright 2008 Jennitta Andrea

Page 22: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

Project Characteristics

Project Characteristics

Copyright 2008 Jennitta Andrea

Page 23: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

FT’s must live as long or longer.

Project team

Time

R 1

GreenfieldDevelopment

GreenfieldPhase

multiple years, multiple projects, and multiple teams

TDD Requirement Project Team Other

Copyright 2008 Jennitta Andrea

Page 24: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

Minor Enhancements& Bug Fixes

R 1.1 R 1.2 R 2.1 R 2.2

OperationsPhase

FT’s must live as long or longer.

Project team

Operations team

Time

R 1

GreenfieldDevelopment

GreenfieldPhase

multiple years, multiple projects, and multiple teams

TDD Requirement Project Team Other

Copyright 2008 Jennitta Andrea

Page 25: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

Minor Enhancements& Bug Fixes

R 1.1 R 1.2

OperationsPhase

FT’s must live as long or longer.

Project team

Operations team

Time

R 1

GreenfieldDevelopment

GreenfieldPhase

Major Enhancement

R 2

Freeze

merge

EnhancementPhase

multiple years, multiple projects, and multiple teams

TDD Requirement Project Team Other

Copyright 2008 Jennitta Andrea

Page 26: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

Minor Enhancements& Bug Fixes

R 1.1 R 1.2 R 2.1 R 2.2

OperationsPhase

FT’s must live as long or longer.

Project team

Operations team

Time

R 1

GreenfieldDevelopment

GreenfieldPhase

Major Enhancement

R 2

Freeze

merge

EnhancementPhase

Legacy Upgrade

R 3

Freeze

merge

LegacyPhase

multiple years, multiple projects, and multiple teams

TDD Requirement Project Team Other

Copyright 2008 Jennitta Andrea

Page 27: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

FTDD Req Spec

Proj Context

Author FTDE 3rd party

DSTL

Format

Format+

Record

Branching

Read Locate

Display

Locate+ Locate++

Execute Multi env

Grouping

Debug

3rd party

personas

touch-pts

Result Pass/fail

Navigate

History

Navigate+

Report Coverage (code)

Coverage (req)

• diff team -> diff format• domain -> multi modal

• same test against• ui (legacy)• api (port)

• find all functional tests associated with code

• not green-field• end-end workflow

• branch … compare … merge (test + DSTL)

Copyright 2008 Jennitta Andrea

Page 28: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

Team Characteristics

Team Characteristics

Copyright 2008 Jennitta Andrea

Page 29: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

FTDD Req Spec

Proj Context

Team Context

Author FTDE 3rd party

DSTL

Format

Format+

Record

Branching

Format++

Read Locate

Display

Locate+ Locate++ Format++

MultiDetail

Execute Multi env

Grouping

Debug

3rd party

personas

touch-pts

Result Pass/fail

Navigate

History

Navigate+

Report Coverage (code)

Coverage (req)

user specific• tabular• textual• graphical• wire frame

Diff fmt than original

Inline DSTL

Copyright 2008 Jennitta Andrea

Page 30: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

Other Needs

Other Needs

Copyright 2008 Jennitta Andrea

Page 31: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

FTDD Req Spec

Proj Context

Team Context

Other

Author FTDE 3rd party

DSTL

Format

Format+

Record

Branching

Format++ Decorate

Meta data

Read Locate

Display

Locate+ Locate++ Format++

MultiDetail

Execute Multi env

Grouping

Debug

3rd party

personas

touch-pts What if

Stop/start

Screens

Result Pass/fail

Navigate

History

Navigate+

Report Coverage (code)

Coverage (req)

Progress

Audit

• Performance … Ux ….

• assigned to … status … priority …

• business analysis (impacts of proposed change)

• exploratory testing … demo … training …

• marketing … training …

Copyright 2008 Jennitta Andrea

Page 32: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

FTDD Req Spec

Proj Context

Team Context

Other

Author FTDE 3rd party

DSTL

Format

Format+

Record

Branching

Format++ Decorate

Meta data

Read Locate

Display

Locate+ Locate++ Format++

MultiDetail

Execute Multi env

Grouping

Debug

3rd party

personas

touch-pts What if

Stop/start

Screens

Result Pass/fail

Navigate

History

Navigate+

Report Coverage (code)

Coverage (req)

Progress

Audit

Copyright 2008 Jennitta Andrea

Page 33: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

Envisioning Next Generation

Core:FTDD

Req’s

Context:Project

Team

Other:

Copyright 2008 Jennitta Andrea

Page 34: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

[email protected] www.theandreagroup.ca

Copyright 2008 Jennitta Andrea

“Envisioning the Next Generation Functional Testing Tools”

A call to improve the state of the art of functional test driven development by: reflecting on where we are now, describing processes and scenarios within the full application lifecycle, and painting a vision for the next generation functional testing tools(IEEE Software, May 2007)

“Brushing Up On Functional Test Effectiveness”

Explains how to make a functional test into an effective requirements specification by refactoring a test script into a declarative, succinct, autonomous, sufficient, and locatable specification (Better Software, November/December 2005)

“Some Assembly Required: Piecing Together the Truth About TDD”

Teams that naively adopt test driven development frequently run into serious problems. This article applies a magnifying glass to the TDD fine print and suggests paths to safely navigate some key landmines (Better Software, January 2008)

Agile Alliance Functional Test Tool Program (aa-ftt)

http://tech.groups.yahoo.com/group/aa-ftt/ Agile Alliance Functional Test Tool Program (aaftt) yahoo discussion group. The first workshop was held in October 2007. Videos of demos and lightening talks can be found at http://video.google.com/videosearch?q=AAFTT

Page 35: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

Masters of Un-done Software

Ward CunninghamAboutUs.orgFebruary 2008

Page 36: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

Wield the Computer’s Power

• Masters know what to do next by reading the un-done program

• What the un-done program does is meaningful even if not desirable

• The whole team cooperates to master modern programs

• Masterful teams use tests to guide their collaboration

Page 37: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

Example One: WyCash• Financial application had to get calculations right• Interactive reports felt like spreadsheets with objects behind each row• Fit-style tests slipped into WyCash as new kind of row• Lesson: Abstracted conversions valuable, but uncommon• Lesson: Analyst & developer can pair-program• http://c2.com/doc/oopsla91.html• http://c2.com/doc/oopsla92.html

Page 38: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming
Page 39: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

Example Two: IoGame• Multi-player game in a powerful but unfamiliar language• New assert semantics can test objects while compiling• Test-Accelerated development calls for tests only when uncertain• Lesson: Way too much of test code is about being separate• Lesson: Tests explain what is expected better than types• http://c2.com/~ward/io/IoGame• http://c2.com/~ward/io/IoGamesUnitTests.pdf

Page 40: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

setu

pru

n

chec

k

Page 41: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

Example Three: Eclipse Portal• Automation of long-running collaborations• Test scripts capture screen fragments to tell collaboration story• Post processing organizes fragments as a swim-lane diagram• Lesson: Plenty of web technology to visualize complex situations• Lesson: Deploy tests as documentation to keep both up-to-date• http://portal.eclipse.org• http://c2.com/pnsqc2007/paper.pdf

Page 42: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

This slide to be replaced with presentation url:http://c2.com/pnsqc2007/example/

Page 43: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming
Page 44: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

Lessons

• Test against the interface that best exposes your fears

• Couple test results to decision making• Accept that tests are part of your product and

invest accordingly

Page 45: StickyMinds.com and Better Software magazine presents… Envisioning the Next Generation of Functional Test Tools Sponsored by ThoughtWorks Non-streaming

Have a question for the speakers? Ask now.

Q & A