approval tests at agile 2012

24
An open source library for better Unit Testing Woody Zuill & Lynn Langit Agile 2012 – August 2012

Upload: lynn-langit

Post on 19-Jun-2015

3.379 views

Category:

Technology


1 download

DESCRIPTION

slides from our talk on Approval Tests at Agile 2012

TRANSCRIPT

Page 1: Approval Tests at Agile 2012

An open source library for better Unit Testing

Woody Zuill & Lynn Langit

Agile 2012 – August 2012

Page 2: Approval Tests at Agile 2012

Dan

Who wrote ApprovalTests?

Llewellyn

Page 3: Approval Tests at Agile 2012

Approval Tests and Test Types

Integration Tests

Unit Tests Unit Tests

Function Tests

Performance Tests

Acceptance Tests

Installation Tests

Page 4: Approval Tests at Agile 2012

DEMOGETTING STARTED

Page 5: Approval Tests at Agile 2012

Building your Testing Toolkit

Test Runner Test CodeLibraries Manual testsAutomated tests & tools

Page 6: Approval Tests at Agile 2012

TDD - Red, Green, Refactor

Page 7: Approval Tests at Agile 2012

Approval Tests make it EASY…

For Woody…• … for human evaluation of

test results• … to set up Tests • … to modify test output for

readability• … to maintain tests

For Lynn…• … in multiple languages• … with visual results…

Golden Master

Page 8: Approval Tests at Agile 2012

DEMOEXPRESSIVENESS

Page 9: Approval Tests at Agile 2012

Approving the Reported Result• Contents are serialized to a file as binary (to compare)• Rename *.received to *.approved• Right click ‘Use whole file’ • Copy ‘Move’ statement from Test Results to command window.

Page 10: Approval Tests at Agile 2012

More about

reporters…

Page 11: Approval Tests at Agile 2012

A Little About Reporters

• Reporters provide a rich, expressive, human-friendly view of a failed test.

• Reporters usually hook into DiffTools (Text, Image, Sound…)• Support for many diff tools included in Reporters• Can add hooks to your favorite diff tool

Page 12: Approval Tests at Agile 2012

Best test output has…?

Page 13: Approval Tests at Agile 2012

Best test output has...?

Granularity• What is the result of a break• What is the specific cause of a break

Feedback• Frequent (or even constant) feedback

Specification• What is this code supposed to do?• How do we use it?

Regression-Proofing• Did what I just do break something?

Automatic Design Process• TDD can be thought of as Test Driven Design

Page 14: Approval Tests at Agile 2012

DEMOARRAYS

Page 15: Approval Tests at Agile 2012

Approval Tests in Java…

Page 17: Approval Tests at Agile 2012

Code must be Testable

Page 18: Approval Tests at Agile 2012

Code must be Testable

Code must include Tests

Code should be written so that it is easy to write its required tests

“Reduce to Functional”

Code Tests must be kept runnable

Page 19: Approval Tests at Agile 2012

Unit Test Frameworks are Multi-Purpose

• Application code (components)New Code

• Functionality• Edge casesTesting APIs

• Locking tests• Characterization testsLegacy Code

• Scope• Functionality

Learning new APIs

Page 20: Approval Tests at Agile 2012

Legacy Code

How much of your code base is dead code?

Page 21: Approval Tests at Agile 2012

Locking Tests (Characterization Tests)

Test to enable

refactoring

Ensures system still works the

same

Most often used with

Legacy Code

Quickly results in high test coverage

Page 22: Approval Tests at Agile 2012

DEMOLegacy Code – Chart Smart

Page 23: Approval Tests at Agile 2012

For More Information

www.ApprovalTests.com

Pick your language & download

Pick your diff tool

Reference, Approve & Enjoy

Learn more – videos (.NET)

Podcast - HerdingCode

Page 24: Approval Tests at Agile 2012

Q & A

@LynnLangit@WoodyZuill