Agile2016: Exploratory Testing an API

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

Transcript of Agile2016: Exploratory Testing an API

Page 1: Agile2016: Exploratory Testing an API

@maaretp http://maaretp.com

Exploratory Testing an API

by Maaret Pyhäjärvi

Page 2: Agile2016: Exploratory Testing an API

@maaretp http://maaretp.com

Testers don’t break your code, they break your

illusions about the code. -- adapted from James Bach

Page 3: Agile2016: Exploratory Testing an API

@maaretp http://maaretp.com

Exploratory testing is a systematic approach for discovering risks using

rigorous analysis techniques coupled with testing heuristics.

Page 4: Agile2016: Exploratory Testing an API

@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 5: Agile2016: Exploratory Testing an API

@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 6: Agile2016: Exploratory Testing an API

@maaretp http://maaretp.com

An application programming interface (API) is a set of

routines, protocols, and tools for building software and

applications.

Page 7: Agile2016: Exploratory Testing an API

@maaretp http://maaretp.com

Product is my external imagination

I am my developer’s external imagination

Page 8: Agile2016: Exploratory Testing an API

@maaretp http://maaretp.com

Teaching Exploratory Testing in a Mob

Page 9: Agile2016: Exploratory Testing an API

@maaretp http://maaretp.com

Let’s Test! A Unit Testing Library

Page 10: Agile2016: Exploratory Testing an API

@maaretp http://maaretp.com

The Test Target

Page 11: Agile2016: Exploratory Testing an API

@maaretp http://maaretp.com

Mob Testing – Rules for the Exercise

No thinking as the driver

Yes, and… Kindness, consideration and respect

Page 12: Agile2016: Exploratory Testing an API

@maaretp http://maaretp.com

From Michael Sahota STIC

KY

NO

TE

S D

ON

E R

IGH

T

Page 13: Agile2016: Exploratory Testing an API

@maaretp http://maaretp.com

Takeaways Exploratory Testing an API

Page 14: Agile2016: Exploratory Testing an API

@maaretp http://maaretp.com

Page 15: Agile2016: Exploratory Testing an API

@maaretp http://maaretp.com

Page 16: Agile2016: Exploratory Testing an API

@maaretp http://maaretp.com

Page 17: Agile2016: Exploratory Testing an API

@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 18: Agile2016: Exploratory Testing an API

@maaretp http://maaretp.com

Structure Function

Data Platform

Operations Time

SFDPOT heuristics from James Bach / Michael Bolton, Rapid Software Testing

Page 19: Agile2016: Exploratory Testing an API

@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 20: Agile2016: Exploratory Testing an API

@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 21: Agile2016: Exploratory Testing an API

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

Page 22: Agile2016: Exploratory Testing an API

@maaretp http://maaretp.com

Page 23: Agile2016: Exploratory Testing an API

@maaretp http://maaretp.com

A Few Ideas of Exploratory Testing

•  It’s not just about GUI and finalized features –  You can explore an API –  You can adapt to known limitations

•  It’s not just for functional –  You should do exploratory performance/security …

testing •  It’s not without automation –  Sometimes you need to do things humans can’t do! –

exploratory test automation •  Repeating is seldom an issue –  Vary the data, the environment, the story around your

testing – exploratory regression testing

Page 24: Agile2016: Exploratory Testing an API

@maaretp http://maaretp.com

Patterns of Exploration for APIs

Lessons Distilled

Page 25: Agile2016: Exploratory Testing an API

@maaretp http://maaretp.com

Working with limited understanding: Focus!

Page 26: Agile2016: Exploratory Testing an API

@maaretp http://maaretp.com

Calls and Operations. Inputs and Outputs.

Exceptions.

Page 27: Agile2016: Exploratory Testing an API

@maaretp http://maaretp.com

Target of your testing vs. the environment

it depends on

Page 28: Agile2016: Exploratory Testing an API

@maaretp http://maaretp.com

Specific user with a specific purpose

Page 29: Agile2016: Exploratory Testing an API

@maaretp http://maaretp.com

Why would anyone use this?

Page 30: Agile2016: Exploratory Testing an API

@maaretp http://maaretp.com

Think lifecycle Versioning and Deprecation

Page 31: Agile2016: Exploratory Testing an API

@maaretp http://maaretp.com

Google for Concepts like “Conservative Overloading Strategy”

Page 32: Agile2016: Exploratory Testing an API

@maaretp http://maaretp.com

Fast-track your understanding:

collaborate

Page 33: Agile2016: Exploratory Testing an API

@maaretp http://maaretp.com

Documentation Matters a Lot for APIs

Page 34: Agile2016: Exploratory Testing an API

@maaretp http://maaretp.com

Explore to create documentation

Page 35: Agile2016: Exploratory Testing an API

@maaretp http://maaretp.com

Some patterns become visible with repetition

Page 36: Agile2016: Exploratory Testing an API

@maaretp http://maaretp.com

Disposable test automation

Page 37: Agile2016: Exploratory Testing an API

@maaretp http://maaretp.com

#MobProgrammingGuidebook

Page 38: Agile2016: Exploratory Testing an API

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