Testing Is An Ever Evolving Field …
… And yesterday I was able to clarify something that wasn’t exactly new to me but needed phrasing accurately. you might have noticed but recently I have been writing a bit more about testing (see here, here and here). Here we go again…
At 3am yesterday morning I woke up to the sound of water dripping in my apartment; never a good middle-of-the-night noise.
I discovered that while our laundry was running the main drainage pipe had spontaneously blocked and the backed up water was all over the kitchen and laundry room.
Luckily Israeli floors are marble tiles so the biggest problem was waking up enough to mop up the mess and not to wake up the kids.
A Good Story, What’s The Punchline?
- Punchline#1 is I owe a big thank you to The Missus who stayed home and had to deal with the aftermath of the plumber snaking the drain with nary a gripe.
- Punchline#2 is I spent part of the morning drinking large amounts of espresso to stave off my exhaustion and considering what the plumber was doing.
Our plumber explained to The Missus after snaking out some pretty vile stuff from the drains that due to a mind-bogglingly stupid construction flaw the drainpipe runs uphill and will block about once every couple of years.
The first conclusion is Doh! Whatever happened to building to spec? More importantly whoever defined the spec took for granted the “implementation team” knew that water cannot drain uphill for long without depositing the waste it carries. Having background (but basic) technical knowledge related to one’s job description is often taken for granted but this is a secondary point.
Everyone who tests software (client, web or mobile apps) knows to test functionality and I’m not talking about UI element verification or basic behavioral responses.
A second and slightly more intricate layer of testing is applying tests to business logic; the tester needs to get into the head of the different people who will use the product under test and understand the hows and whys of their use cases.
The Warptest POV
What occurred to me thinking about all this was that this was an accurate description of a third layer of testing, test the unimpeded flow of data from entry to exit point of each process. In an allegorical nutshell “no blocked pipes”.
Most if not all apps we encounter are data driven whether it’s a Checkin, a Status, a post, a purchase or something else. Whichever, data is valuable and as such our testing needs to reflect how it moves, behaves and is handled. The best methodology to apply is subject to a variety of factors but that’s for a different post.
I’m sure some of you are struggling not to yell out the other various types of testing I haven’t mentioned here. I’m not ignoring them nor do I when testing.
Thanks to my plumber I was able to visualize and grasp this idea properly:
So the next time you are writing your test cases keep your plumber in mind and if you need a good plumber and live nearby contact me, I have a strong recommendation for ours.