Free beer* and testing
*Free beer not included
We test to either...
verify what is expected...
We test to either...
verify what is expected...
We test to either...
or to learn something completely new
<insert cliche stock photo here>
...asserting actual response against expected outcome
requirements and specifications...
...what we normally think of as Testing
https://msdn.microsoft.com
Unit Tests
Functional Tests
Acceptance Tests
Performance Tests SLAs
...exploratory testing
...learning something completely new
structured exploratory testing
answering a specific
“What does the system do under
these conditions?”
“What is the user’s experience when
making a transaction with a gift card?”
“How many transactions can it
handle?”
system under test
Testing is observation or inspection of the system under test in different, controlled conditions
system under test
only one change at a time
system under test
Quantitative (Measurable)
system under test
Qualitative (Descriptive)
system under test
Testing is the Feed
Testing is the Feed back into the next iteration...
...the bringing of the “outside” into the system
Testing is the cornerstone of...
DRUMMER WANTED https://www.facebook.com/TheEmpiricalMethod
XP test driven development test driven development
XP test driven development
start with what it should do
XP test driven development
start with what it should do
XP test driven development
unit through integration
BDD acceptance test driven development
executing requirements
full stack
As early as possible
like when the requirements are being specified
write once, test once
did something change?
did something change?
analyze impact of change to system
well structured code (SOLID) eliminates dependency between conditions and minimizes tests
use impact and conditional analysis to
determine the structure of your
code
the cost of development
AUTOMATION
testing is a craft...
analyze relevant conditions and their dependencies
analyze
design minimum number of test scripts to exercise all conditions and dependencies
design
Equivalence Class Partitioning
Boundary
value
analysis
defined behavior
GIVEN WHEN THEN
well written tests are more important than
well written code because with them the system is defined and
can always be recreated
...or refactored
the system is defined by its tests, NOT its implementing software