Exploratory Testing - TUNI · @maaretp Exploratory testing is a systematic approach for...
Transcript of Exploratory Testing - TUNI · @maaretp Exploratory testing is a systematic approach for...
@maaretp http://maaretp.com
Exploratory Testing an API
by Maaret Pyhäjärvi
@maaretp http://maaretp.com
Testers don’t break your code, they break your
illusions about the code. -- adapted from James Bach
@maaretp http://maaretp.com
Exploratory testing is a systematic approach for discovering risks using
rigorous analysis techniques coupled with testing heuristics.
@maaretp http://maaretp.com
Teaching Exploratory Testing in a Mob
@maaretp http://maaretp.com
An application programming interface (API) is a set of
routines, protocols, and tools for building software and
applications.
@maaretp http://maaretp.com
Product is my external imagination
I am my developer’s external imagination
@maaretp http://maaretp.com
How to Explore
• Do something with it • Find out what is the common thing to do with it • Find out what you could do with it
• Reflect after anything and everything – make notes – What do we know from other connections? – What do we know from empirical evidence? – How do we turn it all into empirical evidence?
@maaretp http://maaretp.com
Example A Unit Testing Library
@maaretp http://maaretp.com
The Test Target
@maaretp http://maaretp.com
@maaretp http://maaretp.com
@maaretp http://maaretp.com
@maaretp http://maaretp.com
Approvers do • Formatting • Sorting • File Extensions • Scrubbing (removing common inconsistencies) • Serialization(saving to a file) • Mocking • Proxying • Rendering • Execution (e.g. retrieve the URL) • Aggregating test cases • File naming • PRINCIPLE: ”Every time you handle this type of object, you do
these things to it.”
I LEARNED ABOUT FUNCTIONS
@maaretp http://maaretp.com
Reporters do
• Waiting • Scrubbing (removing common inconsistencies) • Execution • Launching • Serialization • Decompilation • Chain of responsibility • Creating Approved file • Environmental awareness
I LEARNED ABOUT FUNCTIONS
@maaretp http://maaretp.com I LEARNED ABOUT THE ENVIRONMENT
@maaretp http://maaretp.com
Patterns of Exploration for APIs
Lessons Distilled
@maaretp http://maaretp.com
Working with limited understanding: Focus!
@maaretp http://maaretp.com
Calls and Operations. Inputs and Outputs.
Exceptions.
@maaretp http://maaretp.com
Target of your testing vs. the environment
it depends on
@maaretp http://maaretp.com
Specific user with a specific purpose
@maaretp http://maaretp.com
Why would anyone use this?
@maaretp http://maaretp.com
Think lifecycle Versioning and Deprecation
@maaretp http://maaretp.com
Google for Concepts like “Conservative Overloading Strategy”
@maaretp http://maaretp.com
Fast-track your understanding:
collaborate
@maaretp http://maaretp.com
Documentation Matters a Lot for APIs
@maaretp http://maaretp.com
Explore to create documentation
@maaretp http://maaretp.com
Some patterns become visible with repetition
@maaretp http://maaretp.com
Disposable test automation
@maaretp http://maaretp.com
What Testing gives Us U
nit T
estin
g
Expl
orat
ory T
estin
g
SPEC FEEDBACK REGRESSION GRANULARITY
GUIDANCE UNDERSTANDING
MODELS SERENDIPITY Testing as
artifact creation
Testing as performance
@maaretp http://maaretp.com
Before implementing
While implementing
Before production
While in production
Testing as artifact creation
Testing as performance (exploration)
Ways to think of testing peak at different moments with regards to adding a capability
TOTALS
Testing is Everywhere!
@maaretp http://maaretp.com
The value of another’s experience is to give us
hope, not to tell us how or whether to proceed
- Peter Block
Experience Reports over Definitions or Methods
@maaretp http://maaretp.com
Maaret Pyhäjärvi Email: [email protected] Twitter: @maaretp Web: maaretp.com Blog: visible-quality.blogspot.fi (please connect with me through Twitter or LinkedIn)