approvaltests a library for you - agile alliance · 2019-12-16 · agile 2012 – august 2012 . dan...

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

Upload: others

Post on 20-Jun-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ApprovalTests a library for you - Agile Alliance · 2019-12-16 · Agile 2012 – August 2012 . Dan Who wrote ApprovalTests? Llewellyn . Approval Tests and Test Types ... •TDD can

An open source library for better Unit Testing

Woody Zuill & Lynn Langit

Agile 2012 – August 2012

Page 2: ApprovalTests a library for you - Agile Alliance · 2019-12-16 · Agile 2012 – August 2012 . Dan Who wrote ApprovalTests? Llewellyn . Approval Tests and Test Types ... •TDD can

Dan

Who wrote ApprovalTests?

Llewellyn

Page 3: ApprovalTests a library for you - Agile Alliance · 2019-12-16 · Agile 2012 – August 2012 . Dan Who wrote ApprovalTests? Llewellyn . Approval Tests and Test Types ... •TDD can

Approval Tests and Test Types

Integration Tests

Unit Tests Unit Tests

Function Tests

Performance Tests

Acceptance Tests

Installation Tests

Page 4: ApprovalTests a library for you - Agile Alliance · 2019-12-16 · Agile 2012 – August 2012 . Dan Who wrote ApprovalTests? Llewellyn . Approval Tests and Test Types ... •TDD can

DEMO GETTING STARTED

Page 5: ApprovalTests a library for you - Agile Alliance · 2019-12-16 · Agile 2012 – August 2012 . Dan Who wrote ApprovalTests? Llewellyn . Approval Tests and Test Types ... •TDD can

Building your Testing Toolkit

Test Runner

Test Code

Libraries

Manual tests

Automated tests & tools

Page 6: ApprovalTests a library for you - Agile Alliance · 2019-12-16 · Agile 2012 – August 2012 . Dan Who wrote ApprovalTests? Llewellyn . Approval Tests and Test Types ... •TDD can

TDD - Red, Green, Refactor

Page 7: ApprovalTests a library for you - Agile Alliance · 2019-12-16 · Agile 2012 – August 2012 . Dan Who wrote ApprovalTests? Llewellyn . Approval Tests and Test Types ... •TDD can

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: ApprovalTests a library for you - Agile Alliance · 2019-12-16 · Agile 2012 – August 2012 . Dan Who wrote ApprovalTests? Llewellyn . Approval Tests and Test Types ... •TDD can

DEMO EXPRESSIVENESS

Page 9: ApprovalTests a library for you - Agile Alliance · 2019-12-16 · Agile 2012 – August 2012 . Dan Who wrote ApprovalTests? Llewellyn . Approval Tests and Test Types ... •TDD can

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: ApprovalTests a library for you - Agile Alliance · 2019-12-16 · Agile 2012 – August 2012 . Dan Who wrote ApprovalTests? Llewellyn . Approval Tests and Test Types ... •TDD can

More about

reporters…

Page 11: ApprovalTests a library for you - Agile Alliance · 2019-12-16 · Agile 2012 – August 2012 . Dan Who wrote ApprovalTests? Llewellyn . Approval Tests and Test Types ... •TDD can

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: ApprovalTests a library for you - Agile Alliance · 2019-12-16 · Agile 2012 – August 2012 . Dan Who wrote ApprovalTests? Llewellyn . Approval Tests and Test Types ... •TDD can

Best test output has…?

Page 13: ApprovalTests a library for you - Agile Alliance · 2019-12-16 · Agile 2012 – August 2012 . Dan Who wrote ApprovalTests? Llewellyn . Approval Tests and Test Types ... •TDD can

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: ApprovalTests a library for you - Agile Alliance · 2019-12-16 · Agile 2012 – August 2012 . Dan Who wrote ApprovalTests? Llewellyn . Approval Tests and Test Types ... •TDD can

DEMO ARRAYS

Page 15: ApprovalTests a library for you - Agile Alliance · 2019-12-16 · Agile 2012 – August 2012 . Dan Who wrote ApprovalTests? Llewellyn . Approval Tests and Test Types ... •TDD can

Approval Tests in Java…

Page 17: ApprovalTests a library for you - Agile Alliance · 2019-12-16 · Agile 2012 – August 2012 . Dan Who wrote ApprovalTests? Llewellyn . Approval Tests and Test Types ... •TDD can

Code must be Testable

Page 18: ApprovalTests a library for you - Agile Alliance · 2019-12-16 · Agile 2012 – August 2012 . Dan Who wrote ApprovalTests? Llewellyn . Approval Tests and Test Types ... •TDD can

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: ApprovalTests a library for you - Agile Alliance · 2019-12-16 · Agile 2012 – August 2012 . Dan Who wrote ApprovalTests? Llewellyn . Approval Tests and Test Types ... •TDD can

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

Page 20: ApprovalTests a library for you - Agile Alliance · 2019-12-16 · Agile 2012 – August 2012 . Dan Who wrote ApprovalTests? Llewellyn . Approval Tests and Test Types ... •TDD can

Legacy Code

How much of your code base is dead code?

Page 21: ApprovalTests a library for you - Agile Alliance · 2019-12-16 · Agile 2012 – August 2012 . Dan Who wrote ApprovalTests? Llewellyn . Approval Tests and Test Types ... •TDD can

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: ApprovalTests a library for you - Agile Alliance · 2019-12-16 · Agile 2012 – August 2012 . Dan Who wrote ApprovalTests? Llewellyn . Approval Tests and Test Types ... •TDD can

DEMO Legacy Code – Chart Smart

Page 23: ApprovalTests a library for you - Agile Alliance · 2019-12-16 · Agile 2012 – August 2012 . Dan Who wrote ApprovalTests? Llewellyn . Approval Tests and Test Types ... •TDD can

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: ApprovalTests a library for you - Agile Alliance · 2019-12-16 · Agile 2012 – August 2012 . Dan Who wrote ApprovalTests? Llewellyn . Approval Tests and Test Types ... •TDD can

Q & A

@LynnLangit

@WoodyZuill