Taking the 30 Days of Testing challenge
The Ministry of Testing are running a 30 Days of Testing challenge throughout July. This is a list of (relatively) small tasks, designed to get people interacting with the wider testing community. It's such a clever idea, which tugs perfectly at my obsessive completionist tendencies!
Even though I already have something of a voice in the community, there's a really interesting variety of challenges, some of which are going to push me outside of my comfort zone!
I'm going to update this blog post every day throughout July, to help motivate myself to complete the full list. I'm cautiously optimistic...
The list of activities for 30 Days Of Testing
Day 1: Buy one testing related book and read it by Day 30
I suffer terribly from tsundoku, so I'd hoped that this would be the perfect opportunity to clear an existing title from my bedside table. However, the task clearly states that you have to buy a book on day 1, so that pile will have to wait a bit longer!
The book I opted for was Humble Inquiry, which I first heard about during Karen Johnson's talk at last year's TestBash Brighton. This was relatively straightforward; I opted for the Kindle version so that I didn't have to wait for delivery, but I forgot that Kindle defaults to 1-click purchase. My card expired at the end of June, so there was a painful process which involved waiting for my order to be processed, cancelling it, and placing it again - during which time Amazon wouldn't let me buy it again.
So that's the first task half-completed, but I can't tick it off until I've read it!
Day 2: Take a photo of something you are doing at work
It's Saturday, so I had to do some careful planning here. I took a photo on Friday, then took a photo of the photo on July 2nd, thereby achieving the goal of being a photo of something I'm doing at work!
Friday was a fairly typical day, therefore it's a fairly generic photo. I'm working on some career planning guides for Compare The Market's SDET community, whilst also trying to keep an eye on a pair programming session that's happening on the big screen next to me. Of course there were 101 other (commercially-sensitive) things happening on that day, some of which I wish I could share with you, but they'll have to wait for another day!
Day 3: Listen to a testing podcast
This is easy for me, as I'm a regular podcast listener! I live in the countryside, where my every-day "walk around the block" is a 4-mile, 1-hour yomp around some fields, so I tend to cram through a bunch of podcasts along the way.
Currently I'm catching-up with back episodes of Gem Hill's Let's Talk About Tests, Baby; on this morning's walk I listened to episodes 17 to 21. If you've not listened before, I heartily encourage you to check it out - episodes are normally 10-20 minutes in length, and are self-contained, so you can jump into any episode which interests you.
Day 4: Share a testing blog post with a non-tester
Alan Richardson recently blogged about a game he's created, called RestMud. It's a variation on the classic text adventure dungeon game, with a testing/technical twist: many of the puzzles can only be solved by reading source-code, modifying API requests etc. For instance, the game might insist that there is no exit to the west, but if you fire an API request to
/go/W then you might discover a secret room!
I shared the game with a developer game, primarily as an easy way to complete today's challenge, but also because I think it's an equally apt game for developers. For testers, it's a useful way to develop new technical skills; for developers, it allows them to supplement their technical skills with learning some of the methodical, exploratory techniques which are required by testers every day.
Day 5: Read and comment on one blog post
I read blog posts every day (there's a great list of testing feeds on Ministry of Testing if you're looking for ideas) but, for me, I tend to treat this as a one-way relationship too much. There's been a "commenting challenge" on Twitter for a while now - leaving a comment on one blog every day for a week - but I've been very slack at getting involved. I'm going to use today's challenge as a springboard into that!
Thankfully, today's task was made easier by John Stevenson's blog post Introverts and Extroverts - stop labeling yourself which is a subject that's been interesting me for some time now. As someone who is introverted in nature, I find myself fighting back against some of the stigma which John highlights (it doesn't mean that you're shy or a recluse). I gave a talk in Brighton recently which touched on some of these points, and I'm planning something more public in the next few weeks.
Day 6: Perform a crazy test
There are many different definitions of "crazy", but I opted for the one which means "senseless" or "impractical". I decided to test Google Search's built-in calculation parsing (if you search for a sum, the results page shows you the result of the calculation). I harnessed automation to generate data for checking thousands of combinations, all the way from
50+50. My script did this for addition, subtraction and multiplication (the business rules for outputting the results of division were a little too complex for this quick task).
The script took a couple of hours to write, but nine hours to run! It was absolute overkill, going deep in an area where breadth might be more valuable, but it did identify a series of interesting edge cases!
The following searches do not return a calculator/sum at the top of the results page, presumably because Google believes there's a much higher probability that people are searching for companies/events instead:
4 * 4
7 - 11
9 - 11(ditto for
9/11, though it's happy to calculate
18 - 30
30 - 30(??? There's an app and a charity called 30/30)
Also of note, I've finished reading Humble Inquiry, my book challenge from Day 1. I'm still digesting it, but I've already noticed that it's altered my tone in conversation, so I'm experiencing real benefit already!
Day 7: Find an accessibility bug
I've blogged about the challenges of accessibility testing before, but for today's challenge, I decided to put myself under the microscope. I ran WebAIM's WAVE tool against my own site, and found a series of simple-to-fix issues which would greatly improve the experience for anybody visiting my site with an accessibility tool.
Most of the problems are within the site template I'm using, which is hosted on Github, so I'm going to fix those changes tonight and submit them back to the repository owner.
Day 8: Download a mobile app, find 5 bugs and send the feedback to the creator
I'd hoped that I'd be able to test the new augmented reality game Pokémon GO for today's challenge, however (despite being released in many major territories) it's not officially available in the UK yet! So instead, I utilised the Play Store's new "Early Access" section, which contains many applications which are in the early stages of development.
The app I picked was Readfeed, primarily as I'm already a user of a similar application (Goodreads) so felt that I would be able to jump into testing with a fair degree of pre-existing domain knowledge. This certainly helped, although the app is easy-to-use even without that knowledge. I had to work surprisingly hard to locate the required five issues, but I was pleased with what I found.
Day 9: Create a mindmap
I draw mind-maps all the time, but I was struggling to come up with a topic for an impromptu one! In the end, I decided to sketch the navigation for Untappd, an app which I use a lot (I'm on the beta channel and have sent them a few bugs in the past. Maybe I should have taken a look at them yesterday!)
It took a lot longer than I expected, as there were many more touchpoints than I realised. This is an exercise which was very useful in revealing some features that I didn't previously know existed, and it would form a useful basis for a Product Coverage Outline - a topic I'm going to be covering in an upcoming Weekend Testing session.
As a bonus note, I'd like to thank the developers of Readfeed for taking the time to reply to the email I sent them yesterday. A lot of companies would have ignored it or taken offence, or (worse?) incorporated my feedback without recognition. It was great to hear about their passion for quality and user experience, and I'm hoping to help them more in the future!
Day 10: Find an event to attend (online or face to face)
I took this challenge to mean that we only had to find it today, it didn't have to occur today. I thought about pairing this with Day 16, except I'd already found my Day 16 event so my conscience prevented me from doing that!
Then I stumbled across Agile Northants. They're a new meetup (only three previous sessions) in my home county, and this month's session is their first which is explicitly testing-focused. The event itself still falls within the 30 Days challenge, so stay tuned for a report on the 26th/27th!
Day 11: Take a picture of your team
It sounds cheesy, but when I think about "my" team, I don't think about the test team, or just the individual product team that I work on. At Compare The Market, we're very much about cross-team collaboration, so the best way to capture this is by showing you a quick photo of our company-wide Monday morning stand-up!
Day 12: Doodle a problem
I'm certifiably terrible at doodling. (In fact, that was almost the subject of my doodle.) Normally I'll stick with formats with which I'm more comfortable, namely lists and mind-maps. I decided that I needed something a little out of the ordinary to stimulate my creative brain, so I opted to outline the state-of-play in a play-by-email game of Civilization V which is currently occupying my time. Of course, knowing that my opponent was going to see the tweet, I included a few deliberate falsehoods...
Day 13: Find a user experience problem
This has been bugging newcomers to our office for a long time, and it's not even as if it's a complicated problem to solve! User design champion Don Norman has been writing about the poor design of some push/pull doors for thirty years now (The Design Of Everyday Things was first published in 1988), but still we insist on giving confusing messages, such as the pull bar on this already-tricky door.
Day 14: Step outside of your comfort zone
After a successful weight-loss mission earlier in the year (I dropped 25kg, and have successfully kept it off), I've certainly plateaued into a fitness "comfort zone". I generally walk 4-5 miles a day (which is surprisingly easy when your nearest pub is several miles away), but at the gym I'll tend to only run/cycle until I feel I've reached my limit.
Today, spurred on by the challenge, I ran far past that limit - and am definitely feeling the pain now! I've never run more than 5km before, so to reach 10km is a definite achievement, even if the time is decidedly unimpressive. Now that I know I can do it, I can work to get better at it, which is what getting beyond your comfort zone is all about!
Day 15: Find a problem with an e-commerce website
I was planning to do this testing later today (Amazon's an easy target - it's a high-quality website, but there's usually something broken in plain sight) but happened upon many problems on this e-commerce site whilst purchasing tickets for my Day 16 challenge!
As with most security issues, it started with a small problem (password emailed in plain text) and then unravelled into a bunch of other issues. I'm going to attempt to highlight these with the site's owners, but I think it'll be a fairly thankless task.
Day 16: Go to a non-testing event
..And here's the event for which I was trying to purchase tickets yesterday! A great non-testing day was had, although I did still complete some activities with a tangential relationship to testing: I finished reading Weinberg on Writing (an excellent book about structuring and processing your thoughts), and continued to participate in a global stress-test of Pokemon Go (the game was offline most of the afternoon due to exceeding capacity).
Of all the acts I saw, the best was folk singer Pembroke Tenneson, who also doubled as a compere for the remainder of the day - a sterling effort!
Day 17: Find and share a quote that inspires you
This TED talk (and the book it's adapted from, The Happiness Advantage) is my go-to resource when I need inspiration. It's a reminder that we are often the biggest barriers to our own success, and that the world has conditioned us to believe we need to be successful in order to achieve happiness. As Shawn illustrates, this formula is back-to-front. Happy people achieve more success. Read (or listen) to Shawn for some great advice on how to keep happiness at the forefront of your daily life.
Day 18: Find a broken link, and report it
I've used a few different automated spidering tools in my time, but Dead Link Checker is one of the simplest and most elegant. Like many tools, it's prone to false positives (some sites will reject bot-like traffic, causing Unauthorized or Timeout messages) but it can easily identify some breakages that you wouldn't otherwise find.
As with the accessibility task, I made today easier for myself by running Dead Link Checker against this very site. It found several broken links - including one from earlier in the challenge!
Day 19: Find and use a new tool
I heard about Android's Accessibility Scanner from a fellow #30DaysOfTesting participant, and today seemed like the perfect chance to try it out!
As with most accessibility tools, there are few hard-and-fast rules to follow, but Accessibility Scanner does a great job of identifying issues which might be worthy of further investigation. You can drill into an issue to discover exactly what the problem is (e.g.
"This clickable item's speakable text: "Ghostbusters" is identical to that of 1 other item(s).") and jump to online help which explains exactly why it's a problem. There's even an Export option which will deliver you a formatted email, perfect for inserting into a bug report.
Day 20: Find a good place to perform some security tests
I have some amount of experience with security testing; we've run several Weekend Testing sessions on the subject (most notably WTEU-52 and WTEU-56, so this task proved surprisingly difficult as I wanted to find an environment I hadn't used before.
Thankfully we have a
#security channel on our company Slack network, and within it I discovered Root Me. I've started on its web client challenges, as that's the area with which I'm most experienced, but I can see that it quickly ventures into areas which will be new to me. I'm setting a personal goal of scoring 100 points before the end of the month!
Day 21: Pair test with someone
#30DaysOfTesting Day 21: Pairing to make automated unit & integration checks more robust in our CI. Mostly involved *deleting* code 😄— Neil Studd (@neilstudd) July 21, 2016
This one felt a bit like cheating, as my team practices mobbing/pairing sessions almost every day, so I didn't have to do anything out of the ordinary. (I blogged about this recently on the Peterborough Tech Community website: Mob Programming: Put down the pitchforks and pick up a keyboard.)
Today's task sat squarely in the category of "seemingly mundane things which are actually really important". We finally achieved the milestone of making our Cucumber BDD scenarios run alongside our existing unit tests (rather than having to be executed ad-hoc when somebody remembers). This was no mean feat, as it involved making all of our AWS/Docker infrastructure interact nicely with each other, with robustness to connectivity issues. (If you're a BT Broadband customer in the UK, you'll know there have been a LOT of connectivity issues lately.)
As I mentioned in the tweet, the most satisfying thing about stabilising these tests was how little new code was required - in fact, it mostly involved refactoring and consolidating existing code, with the Delete key getting a good workout! We now have faster, more reliable tests running in the same codebase, and I couldn't be happier about it.
Day 22: Share your favourite testing tool
This was a difficult one to choose! In the end, I opted for Sublime Text because of the range of different functions that I find myself performing using it on a daily basis.
To elaborate on the uses which I mentioned in my tweet:
- Note-taking - Sometimes I'll scribble on a piece of paper, and sometime I'll create some more structured text using a mind-map or Rapid Reporter. For all other times, just give me a blank text file - and Sublime's speed/ease of editing puts it above others for me.
- Macros - Sublime allows you to perform text editing on steroids. For instance, if you want to reformat a structured file, you can use record-and-playback functionality to reformat a single line of the file, and then repeat the same actions against every line. This is frequently a lifesaver for potentially mundane tasks.
- Test data creation - Basically, the above two combined! In conjunction with plugin support, and add-ins such as Text Pastry, you can programatically generate unique sequences of data which are shaped for your testing needs.
If you're a Windows user then you're spoiled for choice, as Notepad++ is just as good (the lack of a Mac version is what drove me to Sublime, though).
Day 23: Help someone test better
OK, this one is a bit cheeky, but I choose to believe it's a successful completion of the challenge in spirit! Tomorrow it's Weekend Testing time, so today I helped someone to test better by producing the content for tomorrow's session, which will aid their learning.
And through the power of hyperlinks and time-travel (or editing this article a day later), here's a link to the resources from that session, so you can review those learning opportunities for yourself!
Day 24: Connect with a tester who you haven't previously connected with
As a regular facilitator for Weekend Testing Europe, today was the perfect day to run a session! It meant that not only could I complete this task for myself (about one-third of this month's attendees were newcomers), but I could also help other people to complete this task! It was a special anniversary edition for us, so we presented live on-camera for the first time - you can read more about the session and more about what it means to run a live webinar.
Day 25: Contribute to a testing discussion
This is another challenge which I could've really rolled into yesterday's challenge, given how much time I spent chairing a testing discussion! Instead, for today's task I contributed to the "Origin Stories" survey for Gem Hill's Let's Talk About Tests, Baby podcast.
I've not really written about my origins on here before, though it's come up a few times when I've been giving talks. I'm somebody else who "fell into" testing, though the route was slightly more logical than it might first appear! I graduated in Journalism, but after deciding that reporting wasn't the job for me, I joined a local startup firm which created websites for events and conferences. By working on their customer service team, I soon discovered that they had some real challenges regarding quality; they needed somebody to proof-read the websites before they were sent to clients. This allowed me to engage the sub-editing skills that I'd sharpened at university, and before you could say "quality control", I'd created a checklist which every site would have to pass. And from there, the only way was up!
Day 26: Invite a non-tester to a test event
Annoyingly (particularly after its earlier mention on Day 10) I wasn't actually able to make it to Agile Northants as I arrived back from work to find an infestation of bees in my attic room! But it was good to get some positive reaction from the non-testers in our organisation.
Day 27: Say something nice about the thing you just tested
#30DaysOfTesting Day 27: Tested some great well-encapsulated code, implemented using TDD, and directly addressing problem. I wrote it ;)— Neil Studd (@neilstudd) July 27, 2016
I didn't intend for today to be so self-congratulatory, but this was the only thing I tested today! It was quite a neat piece of work though: I identified a production issue (thankfully one with no customer impact) using our monitoring system, created some test data which demonstrated the problem, wrapped a failing unit test around it, implemented a fix, and reviewed the fix with our developers. All in a day's work!
Day 28: Summarise an issue in 140 characters or less
I think I managed to convey quite a lot of information here, given that I'd also lost 25 characters to the hashtag/intro! I found a problem in one of my favourite websites, managed to convey the extent of the issue, and gave an example with an expected result. I ran a few characters short of being able to tick-off all of RIMGEA, but as bug reports go, I'm hopeful they'll notice/fix it!
Day 29: Find an out by one error
It seems that I have something of a reputation for finding these! Indeed, I found another one last night, but I already had my eye on the Google Now issue, as it had been making errors in my countdown for the past few days.
Google Now is a combination of clever, creepy and scary: it tracks information by (among other things) monitoring your emails, calendar and search history. (It can, of course, be disabled if it creeps you out that much.) But I'm not sure why it thinks I'm starting my holiday a day early; my current theory is that it's because I'm starting my journey very early on the 4th, so that at Google HQ (8hrs behind the UK) they would think that my journey starts on the 3rd. Though I would expect Google to have solved the problem of timezones by now :)
Day 30: Give someone positive feedback
So, I guess this also serves as a conclusion to 30 Days Of Testing. It was daunting looking at an empty checklist on day one, but with determination (and support from others who have been sharing their progress on Twitter) we've reached the end!
It's been a month of Twitter records for me. I gained 82 new followers - the most I've ever received in a single month. My tweet impressions and profile visitors both peaked at new levels (save for last month when a silly little joke about the Microsoft-LinkedIn merge was retweeted by Swift On Security). Most tellingly, I've found myself conversing with a whole new bunch of testers, and it's been a much more positive experience than much of the drama in my feed of late.
The most elaborate exercise was certainly my "crazy test". The automation may only have taken an hour to write, but the nature of the test meant that it took over 9 hours to run!
I was expecting that the hardest challenge would be finding 5 bugs in a mobile app, but actually that was one of the most enjoyable and rewarding, not least because I received a grateful response from the app creator.
One more massive THANK YOU to the Ministry Of Testing crew for deciding upon the idea for 30 Days Of Testing. Here's hoping they return with something even bigger! (How about #52WeeksOfTesting in 2017...?)
Bonus: Share your 30 Day Challenge experience in a blog post
You're reading it :)