Exploratory Testing - TUNI€¦ · @maaretp Exploratory testing is a systematic approach for...

32
@maaretp http://maaretp.com Exploratory Testing an API by Maaret Pyhäjärvi

Transcript of Exploratory Testing - TUNI€¦ · @maaretp Exploratory testing is a systematic approach for...

Page 1: Exploratory Testing - TUNI€¦ · @maaretp Exploratory testing is a systematic approach for discovering risks using rigorous analysis techniques coupled with testing heuristics.

@maaretp http://maaretp.com

Exploratory Testing an API

by Maaret Pyhäjärvi

Page 2: Exploratory Testing - TUNI€¦ · @maaretp Exploratory testing is a systematic approach for discovering risks using rigorous analysis techniques coupled with testing heuristics.

@maaretp http://maaretp.com

Testers don’t break your code, they break your

illusions about the code. -- adapted from James Bach

Page 3: Exploratory Testing - TUNI€¦ · @maaretp Exploratory testing is a systematic approach for discovering risks using rigorous analysis techniques coupled with testing heuristics.

@maaretp http://maaretp.com

Exploratory testing is a systematic approach for discovering risks using

rigorous analysis techniques coupled with testing heuristics.

Page 4: Exploratory Testing - TUNI€¦ · @maaretp 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

Page 5: Exploratory Testing - TUNI€¦ · @maaretp Exploratory testing is a systematic approach for discovering risks using rigorous analysis techniques coupled with testing heuristics.

@maaretp http://maaretp.com

An application programming interface (API) is a set of

routines, protocols, and tools for building software and

applications.

Page 6: Exploratory Testing - TUNI€¦ · @maaretp Exploratory testing is a systematic approach for discovering risks using rigorous analysis techniques coupled with testing heuristics.

@maaretp http://maaretp.com

Product is my external imagination

I am my developer’s external imagination

Page 7: Exploratory Testing - TUNI€¦ · @maaretp Exploratory testing is a systematic approach for discovering risks using rigorous analysis techniques coupled with testing heuristics.

@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?

Page 8: Exploratory Testing - TUNI€¦ · @maaretp Exploratory testing is a systematic approach for discovering risks using rigorous analysis techniques coupled with testing heuristics.

@maaretp http://maaretp.com

Example A Unit Testing Library

Page 9: Exploratory Testing - TUNI€¦ · @maaretp Exploratory testing is a systematic approach for discovering risks using rigorous analysis techniques coupled with testing heuristics.

@maaretp http://maaretp.com

The Test Target

Page 10: Exploratory Testing - TUNI€¦ · @maaretp Exploratory testing is a systematic approach for discovering risks using rigorous analysis techniques coupled with testing heuristics.

@maaretp http://maaretp.com

Page 11: Exploratory Testing - TUNI€¦ · @maaretp Exploratory testing is a systematic approach for discovering risks using rigorous analysis techniques coupled with testing heuristics.

@maaretp http://maaretp.com

Page 12: Exploratory Testing - TUNI€¦ · @maaretp Exploratory testing is a systematic approach for discovering risks using rigorous analysis techniques coupled with testing heuristics.

@maaretp http://maaretp.com

Page 13: Exploratory Testing - TUNI€¦ · @maaretp Exploratory testing is a systematic approach for discovering risks using rigorous analysis techniques coupled with testing heuristics.

@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

Page 14: Exploratory Testing - TUNI€¦ · @maaretp Exploratory testing is a systematic approach for discovering risks using rigorous analysis techniques coupled with testing heuristics.

@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

Page 15: Exploratory Testing - TUNI€¦ · @maaretp Exploratory testing is a systematic approach for discovering risks using rigorous analysis techniques coupled with testing heuristics.

@maaretp http://maaretp.com I LEARNED ABOUT THE ENVIRONMENT

Page 16: Exploratory Testing - TUNI€¦ · @maaretp Exploratory testing is a systematic approach for discovering risks using rigorous analysis techniques coupled with testing heuristics.

@maaretp http://maaretp.com

Patterns of Exploration for APIs

Lessons Distilled

Page 17: Exploratory Testing - TUNI€¦ · @maaretp Exploratory testing is a systematic approach for discovering risks using rigorous analysis techniques coupled with testing heuristics.

@maaretp http://maaretp.com

Working with limited understanding: Focus!

Page 18: Exploratory Testing - TUNI€¦ · @maaretp Exploratory testing is a systematic approach for discovering risks using rigorous analysis techniques coupled with testing heuristics.

@maaretp http://maaretp.com

Calls and Operations. Inputs and Outputs.

Exceptions.

Page 19: Exploratory Testing - TUNI€¦ · @maaretp Exploratory testing is a systematic approach for discovering risks using rigorous analysis techniques coupled with testing heuristics.

@maaretp http://maaretp.com

Target of your testing vs. the environment

it depends on

Page 20: Exploratory Testing - TUNI€¦ · @maaretp Exploratory testing is a systematic approach for discovering risks using rigorous analysis techniques coupled with testing heuristics.

@maaretp http://maaretp.com

Specific user with a specific purpose

Page 21: Exploratory Testing - TUNI€¦ · @maaretp Exploratory testing is a systematic approach for discovering risks using rigorous analysis techniques coupled with testing heuristics.

@maaretp http://maaretp.com

Why would anyone use this?

Page 22: Exploratory Testing - TUNI€¦ · @maaretp Exploratory testing is a systematic approach for discovering risks using rigorous analysis techniques coupled with testing heuristics.

@maaretp http://maaretp.com

Think lifecycle Versioning and Deprecation

Page 23: Exploratory Testing - TUNI€¦ · @maaretp Exploratory testing is a systematic approach for discovering risks using rigorous analysis techniques coupled with testing heuristics.

@maaretp http://maaretp.com

Google for Concepts like “Conservative Overloading Strategy”

Page 24: Exploratory Testing - TUNI€¦ · @maaretp Exploratory testing is a systematic approach for discovering risks using rigorous analysis techniques coupled with testing heuristics.

@maaretp http://maaretp.com

Fast-track your understanding:

collaborate

Page 25: Exploratory Testing - TUNI€¦ · @maaretp Exploratory testing is a systematic approach for discovering risks using rigorous analysis techniques coupled with testing heuristics.

@maaretp http://maaretp.com

Documentation Matters a Lot for APIs

Page 26: Exploratory Testing - TUNI€¦ · @maaretp Exploratory testing is a systematic approach for discovering risks using rigorous analysis techniques coupled with testing heuristics.

@maaretp http://maaretp.com

Explore to create documentation

Page 27: Exploratory Testing - TUNI€¦ · @maaretp Exploratory testing is a systematic approach for discovering risks using rigorous analysis techniques coupled with testing heuristics.

@maaretp http://maaretp.com

Some patterns become visible with repetition

Page 28: Exploratory Testing - TUNI€¦ · @maaretp Exploratory testing is a systematic approach for discovering risks using rigorous analysis techniques coupled with testing heuristics.

@maaretp http://maaretp.com

Disposable test automation

Page 29: Exploratory Testing - TUNI€¦ · @maaretp Exploratory testing is a systematic approach for discovering risks using rigorous analysis techniques coupled with testing heuristics.

@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

Page 30: Exploratory Testing - TUNI€¦ · @maaretp Exploratory testing is a systematic approach for discovering risks using rigorous analysis techniques coupled with testing heuristics.

@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!

Page 31: Exploratory Testing - TUNI€¦ · @maaretp Exploratory testing is a systematic approach for discovering risks using rigorous analysis techniques coupled with testing heuristics.

@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

Page 32: Exploratory Testing - TUNI€¦ · @maaretp Exploratory testing is a systematic approach for discovering risks using rigorous analysis techniques coupled with testing heuristics.

@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)