Fairly early in my testing journey, I attended (and
interacted with) the Rapid Software Testing course, showing me the power of
consciously introducing mnemonics
into your testing (and life) toolset.
After this initial experience I noted that even in the most
linear of environments where the testing process was seemingly restrictive
these techniques could be leveraged. On even further reflection I realised we
are all using mnemonics to complete certain testing tasks in a subconscious
manner and not acknowledging their fallibility.
So 3 years on, having used a number of the mnemonics created
by others I thought I would give it a try. I picked something I have worked on
a great deal recently, creating test approaches for and executing testing of
Application Programming Interfaces (API’s), henceforth referred to as, ‘the
service.’
So, without further ado, I can now reveal:
ICE OVER
MAD!
Integration
– How will consumers integrate with the service? When will consumers integrate
with the service? Is it intended to be rendered on a browser? Output into a
file and then consumed?
Consumers
- Who will be consuming the service? Is the end user a human or a machine? What
problem does the service solve for each consumer?
Endpoints
– What form does the endpoint take and how is it reached? Is it a single
endpoint, multiple endpoints or routed through a load balancer. What level of
security is applied?
Operations
– What business functions does the service perform? Can they be mapped to
current functions performed via a user interface for example? Are the
operations descriptively named and readable for both human and machine? Do the
operations handle sensitive data?
Volume
- Will the service be used at high volume concurrently or sparingly with single
high value requests? Are the single transaction sizes an issue? How will API
sessions be managed? Is the target architecture clustered?
Error
Handling – How will the service handle server side errors? How will the service
handle client side errors? Are errors informative and/or verbose? If database
connectivity is lost is that handled?
RESTful
– does the service have the characteristics of a RESTful service? Is this
desirable in context? http://en.wikipedia.org/wiki/Representational_state_transfer
Modularity
– How are the components of the service distributed? How do they interact? Can
they exist on their own? Can they fail over to one another?
Authentication
– how do users authenticate within the service? What permissions are applicable
and how does that change the operation of the service? What levels of security
are used? Is data sent or received encrypted?
Definitions
– What defines the inputs and outputs to the service? Is a WSDL, WADL, XSD,
XSLT or Other used? What limits does this impose on the service? Which HTTP
methods are used and for what purpose?
While I was creating this, it felt like I could have added a
great deal more to the mnemonic but to be effective (and memorable) I have
focussed on (what I believe to be) the key areas. So, please feel free to give
this a try. Amend, enhance and critique as you see fit.
Thank you... reached this page from Katrina's API Pathway
ReplyDeleteThank you very much. Intresting article. Simple and easily understandable.
ReplyDeleteMay I translate it to Russian and publish in my blog?
I will link my translation to your original post
Please do, as long as the original work is referenced I am happy. :)
DeleteThis post is great Learning experience. Thanks a lot for doing this. I reached your post from @DannyDainton's recent tweet.
ReplyDeleteIts a great article, Showed a new way of thinking and learning about API testing.
ReplyDeleteThank you for writing this.
I am here now and would just like to say thanks for a remarkable post and a all-round enjoyable blog (I also love the theme/design), I don’t have time to look over it all at the minute but I have saved it and also added your RSS feeds, so when I have time I will be back to read much more, Please do keep up the superb job. Checkout my blog Hostarmada Discount Code
ReplyDelete