Approval tests agile_aug_2012

Preview:

Citation preview

An open source library for better Unit Testing

Woody Zuill & Lynn Langit

Agile 2012 – August 2012

Dan

Who wrote ApprovalTests?

Llewellyn

Approval Tests and Test Types

Integration Tests

Unit Tests Unit Tests

Function Tests

Performance Tests

Acceptance Tests

Installation Tests

DEMO GETTING STARTED

Building your Testing Toolkit

Test Runner

Test Code

Libraries

Manual tests

Automated tests & tools

TDD - Red, Green, Refactor

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

DEMO EXPRESSIVENESS

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.

More about

reporters…

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

Best test output has…?

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

DEMO ARRAYS

Approval Tests in Java…

Code must be Testable

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

Unit Test Frameworks are Multi-Purpose

• Application code (components) New Code

• Functionality

• Edge cases Testing APIs

• Locking tests

• Characterization tests Legacy Code

• Scope

• Functionality

Learning new APIs

Legacy Code

How much of your code base is dead code?

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

DEMO Legacy Code – Chart Smart

For More Information

www.ApprovalTests.com

Pick your language & download

Pick your diff tool

Reference, Approve & Enjoy

Learn more – videos (.NET)

Podcast - HerdingCode

Q & A

@LynnLangit

@WoodyZuill

Recommended