Shine a light

Most software testing, in my experience, is rushed and often under time pressure, typically driven by a desire to meet a metric or measure of questionable value. Yet to rush through the testing of a feature or product is to often miss the changing nature of that product (or your own changing nature).

If you are testing a capability of a product and look at it in one way (say with the mindset of trying to break it) you may find several issues. If you shine a light on the product in another way (say with the mindset of trying to use the product really quickly) you may spot other issues.

Also, if you test the product on one day you may miss something you may spot on another day. You change (mood, energy, focus) all the time, so expect this to affect your testing.

The product likely hasn’t changed, but the way you see it now has.

Tours, personas and a variety of other test ideas give you a way of re-shining your light. Use these ideas to see the product in different ways, but never forget that it’s often time that is against you. And time is one of the hardest commodities to argue for during your testing phase.

How much time you will need to re-shine your light in different ways will mostly be unknown, but try to avoid being so laser focused on completing a test for coverage sake, or reaching the end goal of X test run per day, that you miss the serendipity that sometimes comes from simply stopping and observing and re-focusing your attention.

Getting Hired – At Conferences

One of the things that I have observed from a number of testing conferences is that none of them have any sustained focus on hiring or getting hired *.

There have been one or two sessions about the topic of hiring but nothing sustained.

The occasional tracks that I have seen have been mostly focused around the hiring strategies of big corporates where bums on seats is sometimes more important than cultural team fit.

Most testers don’t know how to get hired – I wrote a book to help bridge that gap. Those that do know how to get hired are truly in the minority and appear, at least on the surface, to be overall better testers. Mostly this is not true – they are good, but they are often no better at testing than others, it’s just they are much better at getting hired. Getting hired is a skill.

Hiring and getting hired is a vast topic and one which is fraught with contextual challenges, but I believe that a dedicated set of talks from hiring managers from a wide variety of contexts, and maybe some sessions and tutorials on writing CVs, interviewing etc would go down well at most testing conferences. It’s great being good at testing but how do you then go on and get hired…

There are supporting topics such as social profiles, writing clear CVs, networking, self education and interpersonal communication that might also make interesting tracks. Or maybe they wouldn’t. Maybe people go to testing conferences to learn about testing and not the other stuff that comes with our working world…

What are your thoughts?

* The conferences that I have been to

No Test Case, No Bug

A while ago I remember Phil Kirkham mentioning that he’d found a bug that “fell” outside of the Test Cases he’d been given and someone was arguing that it wasn’t a bug. I found it incredibly interesting that someone would dismiss a serious bug because it was not found as part of a test case.

The test case is an abstract, it’s something we create to guide us (mostly), yet too many people take the test case to be the testing. The testing is a human process. The test case is a guide, an artefact, a crutch, something we may *have* to create, a container of information, a checklist or any other supporting element to our testing. The test case itself…is not testing.

About a year or so ago I wrote a short eBook on the problems with Testing. I set the main Test Manager character in a company who valued process over actual results. That process over results was similar to what I believe Phil saw.

This was originally going to be a decent sized blog post about process and test case management. Instead I thought I’d spent 5 minutes hacking together an Xtra Normal video to see if I could get the point across with animated characters instead (I also wanted an excuse to have a go at an Xtra Normal vid). (BTW – The Evil Tester did an Xtra Normal video here : http://www.eviltester.com/index.php/2010/03/03/hey-you-are-you-a-tester-the-m…

My video is by no means an award winning video, but it was actually quicker than writing out my thoughts. I think it conveys a similar meaning.

I’ve always wanted to be a film director too. I’ve got a lot of work to do to make that a paying reality 🙂

http://www.xtranormal.com/xtraplayr/13134755/no-test-case-no-bug

Good form design – ELMER

I’m a huge fan of keeping things simple, usable and accessible when it comes to developing stuff (if possible).

 

A cool source of ideas for building usable and accessible “forms” is the ELMER guidelines. These guidelines are aimed at those building public sector forms, but I think the guidelines are good for anyone having to build forms.

 

Here’s a little from the website:

“Simplification of public forms is important to improve communication between the users and the public sector. The proceeding transition to electronic reporting may be an important simplification measure for the respondents, but only if the Internet-based solutions are felt to be more user friendly than the old paper versions. By applying good pedagogical principles, electronic forms may also ensure a better understanding of the task, better control of the data before submission, and by that even better response quality and more efficient processing by the relevant authority.”

The guidelines aren’t that tough to read and they make a lot of sense. The forms that we ended up with when building against these guidelines just flowed well and felt much better than the original prototypes we’d built.

 

Here’s some of the “stand-out” ideas I took from the guidelines, which helped to build much better forms with greater usability and accessibility. I must also add that these excerpts below were taken from the guidelines about a year ago (I know…. my draft list of posts is too large). I’ve checked a few of them against the current guidelines and they are still the same, but some might have changed in the last year. Another document to re-read 🙂

 

“The page order in forms must be locked where:

 

   1) the order is significant with regard to response interpretation and quality, or
   2) the order will depend on responses given on previous pages.”

 

“User-requested help must appear when the user clicks on a standardised help icon in
connection with a question. The user can make the help text disappear from the
screen by clicking again on the same symbol, and must be replaced by a different text
if the user clicks on the icon connected to a different question”

 

“In forms where a significant number of questions are irrelevant for specific form filler
groups , or where different form filler groups shall complete significantly different

 

sets of questions, different tracks must be developed. Each individual user shall be

 

directed to the relevant track. Several tracks may consist of identical pages/question

 

sequences”

 

“Both labels and input fields for response dependent questions must be greyed on the
form pages and only be opened for completion if previous answers indicate that they
are relevant”

 

“Each individual page should be delimited with a view to avoid an unreasonably long
download time. The download time is affected by such factors as graphics use, the
amount and type of controls and the number of fields.”

 

“If there are several interim sums which are not simultaneously visible to the user, a
separate summations group should be created at the bottom of the page. If the interim

 

sums are located on different pages, they should be transferred to a summary page”

 

“Fonts, font sizes, colours and other graphic elements, must be used consistently and
uniformly in all forms issued by the same inquirer. The forms must differentiate

 

clearly between various types of elements (headings, category headings, labels, error

 

messages and warnings, etc.). As a general rule, sans serif fonts should be used and

 

colours should provide good contrast.”

 

Links to information that is irrelevant to the form completion should be avoided. “
“The readability of help texts should be increased through use of typographic means.
Except for very brief phrases, the texts should be broken into a series of easily read-

 

able chunks with highlighted headings and keywords.”

 

“In cases of incorrect completion of individual fields, an error message must appear
automatically as soon as possible after the error has occurred. The text must appear in
the information area and the relevant field must be clearly marked. Messages presented
in a separate window (dialogue boxes or pop-ups) must not be used”

 

 

As you can see, there are some interesting ideas that might work for you.

Volunteering – a good way to learn Testing

I often get asked by people new to Software Testing what the best approach to learning more about Testing is.

Is it certification, books, blogs or other courses? These are the usual categories that get listed.

 

I very rarely hear people ask whether “practice” is a good approach to learning. I think this stems from many people thinking that “practice” and “work” are the same thing. That one cannot exist without the other.

 

How can I get experience in Testing unless I have a job Testing?

 

I think this view is out-dated. I practice my testing outside of work. I practice my testing inside of work. If you want to get good at something..practice.

 

Over the last year I’ve been working with a great organisation who are building wonderful technology, mainly aimed at people without access to the basic infrastructure that many people take for granted. It’s got a great user base and is making a positive change to many people’s lives.

 

Over the last year I have been trying to organise some Testing for this organisation. The group of Testers I’d gathered are great; a mixture of domain experience, general testing experience and a few new to the scene.

 

Last week it all came together and hopefully this year we’ll starting adding a load of value for our client. And all of this is free, outside of work and purely voluntary.

 

My stock response for the last few years to the question “How can I learn more about Testing?” has been “Volunteer your time”.

3859852439_ca615b8876_z

There are so many organisations out there building software that *could* benefit from your enthusiasm and skills.

You’ll potentially learn loads about testing, working with people, time management, commitments, decision making, technology, reporting/articulating your testing and how to work within constraints.

 

It’s all great for your CV.

So how to do it?

  • Find an organisation that you feel some synergy towards.
  • Get in touch with them and volunteer your time and energy.
  • Be sure to set expectations about levels of testing, time and experience you are offering.
  • If you need a more experienced person to help you get it started then head to The Software Testing Club and ask for help, or drop me a line.
  • Persevere – communication can often be tough, expectations may need aligning and relationships will need to be built.
  • Commit and deliver on your promise.
  • Ask for help in the community if you get stuck or you realise there is too much work for you.
  • Document and audit your learning. (any good interviewer will ask you about your experience)

There are so many organisations, open source projects, charities and not for profits that would benefit from some volunteer help….so what are you waiting for?

Image courtesy of wblj – http://www.flickr.com/photos/imageclectic/

Observing to help our Testing

Whilst on the train a few months back I spent some time observing how people were using technology.

Some were using the tech as I assume it was intended, some were “street hacking” the products, whilst others had adopted unique ways of utilising technology (and other devices) to fit the context they found themselves in.

I often wonder how effective testing can be (and overall design and development) when we have little insight or understanding of how our applications/systems are used in everyday life.

 

We can make sure it’s “functionally complete” or “performant” or “meeting requirements” but that doesn’t mean we’ve helped to create a great product right for the audience it’s aimed at.

I think Testers can help greatly in this respect, either by simply asking questions at all stages of the design and build process but also by getting out and seeing end users in situ (if you can).

 

Many of us assume, predict or speculate how our end users are using the software, it’s often all we can do, but I wonder how much of this speculation is accurate. I often hear it said that Testers “pretend” to be the end user, which is fine if you know who your end user is, and in what context they will use your product but this approach should never be used as an absolute point of view.

No-one will ever be able to use your applications in exactly the same way as your real end users, but we can certainly work hard to get close to it.

 

Here are some of the things I observed:

  • Several people were using multiple mobile phone handsets. Work and Play? Feature versus Feature? Or simply taking advantage of the best tariff? 
    • What about data on each phone? Did it need to be synched?
  • One person was swapping sim-cards in and out of one handset to make use of the best tariffs.
  • Two people were using a technique called “flashing” or “beeping” to communicate with someone else via mobile phone. (flashing is where you ring a phone and then hang up before they answer. There are all sorts of social norms growing around this practice – good article here: http://mobileactive.org/mobile-phones-beeping-call-me)
  • One person was trying desperately to get a good photo out of the window on his mobile phone whilst the train was moving. I’m not sure he was happy with any of them. Misplaced expectations?
  • One lady was using a USB expansion device blue-tacked to her laptop lid. I “assume” she was doing this to expand the capacity and/or maybe to reduce the overall width of the machine (the two USBs she was extending were bigger than the expansion USB itself). Street hack? Do we need to test any usages like this (i.e. overloading original intention)
  • The person next to me complained that his phone was running out of power too quickly. He’d been playing Angry Birds for the entire journey whilst using the phone to play music.
    • Expectations of battery life needing to be longer to support modern multi-usage?
    • How did both apps perform?
    • Which one used the most power?
    • Should we be thinking about how much power our apps consume on mobile devices?
    • Can we realistically even measure it?
    • Should we rely on the underlying platform to manage such usages?
  • Many of us live in an age of “smart phones”. How does this “one for all” device fit with other electronic devices like eBook readers, Tablets, Laptops etc
    • Can we read something on a Kindle and start reading where we left off on an iPad at home or Laptop at work? 
    • Can we seamlessly share information between devices?
    • How is our information distributed, stored, secured, managed, protected? Do we care?
  • Another lady caused minor fits of giggles as she took out her “early designed” portable DVD player. It was pretty huge by modern standards. She proceeded to play episodes of Friends on it as she slept for the journey. Old tech and usages is a major challenge for many Testers.
    • At what point do we stop supporting old tech or old versions of our software?
    • Do we need to test all versions?
    • Are there techniques for testing many platforms/versions at once?
    • At what point does this old tech stop being “acceptable” in society….which society?
    • How do we know what versions our customers use?
  • One man was reading his Kindle on the train. He had created a hook for his Kindle. The hook was made from a coat hanger. This hook was suspended around the ceiling hand rail so he could essentially suspend the Kindle at eye height. At the bottom of this bizarre Kindle concoction was a ribbon so he could stop the Kindle swinging around with one of his hands. Street Hack?
    • Could we have ever envisaged it being used this way?
    • Would it have changed the way we tested or designed or implemented?
  • Whilst on the train it is inevitable that the phone signal will come and go. With bridges, buildings and shady coverage it would be ambitious to assume total connection for extended periods. Yet I observed a number of people “hating” (i.e. swearing and getting annoyed with) their devices when they lost connectivity.
    • Two people physically threw their phones on the tray table when they lost a voice signal. Others uttered offensive and angry rants at their devices.
    • Yet the problem existed outside of the device or software in use; it existed in the infrastructure. Are expectations outgrowing reality?
    • The infrastructure no longer supporting the norm and expectations of device usage. This is an interesting challenge for those creating devices relying on technology infrastructure like broadband and mobile networking.
    • What’s the minimum connectivity? What’s the risk of it going down? What happens if it does go down? Does it recover? Do we lose data? Does it matter?
  • One person was drinking heavily whilst attempting to use a Smart Phone keyboard. I won’t repeat what he said, but he struggled to type his SMS. One interesting point he made was that he used to be able to type whilst drunk on his old phone. Loss of capability? Extreme contexts? Trustworthy observation?
  • Two people were “chatting” to each other via their mobile phones (maybe Skype or other chat system). They were sat opposite each other.
    • Are cultural changes in communication reflected in your products?
  • I was sat in a quiet carriage. As usual there were a few complaints and confrontations about noise. One of which was about the noise being made by the keyboard of someone’s laptop.
    • At what point do we pass social thresholds of acceptability? Do we need to do more Inclusive Design?
    • Should we consider more extreme contexts when testing or write these off as edge cases?
    • Could we ever imagine all of the contexts our products may be used in?
  • I kept turning on my wireless hotspot on my phone to sync my field notes (Evernote) as the train stopped at each station. This raises questions of synchronisation, offline working issues, data storage on the cloud and a whole host of privacy issues. There are some interesting examples of how people are using tools like Evernote in the wild.
    • Do you have stories of how people are using your applications?
    • Do you actively seek stories from end users?
    • Do you use this data to build user profiles and system expectations?

Does this really have anything to do with Testing?

There are a few people starting to talk about social sciences in Testing and I believe the application of many areas of social science are going to grow and diversify as Testers seek to find out more about people and technology and how our products can find the right audience(s).

Social sciences can give us a deep insight to ourselves, culture, mass media, communication, research, language and a whole lot more.

Observing people is just one element of research. Research will give you insights, clues and information about the things you research.

Observations and research will help you to make decisions on what to focus on, and what to overlook.

Testers are also natural skeptics; we should help to experiment, prototype and challenge simple assumptions and social categorisation (i.e. all young people use Twitter, wear hoodies and listen to hip-hop) *

Observing people in every-day life is often the biggest eye opener for any Tester wanting to learn more about people and tech.

 

Why not have a go? Focus on the world around you. I bet you’ll see stuff you never saw before. I bet you’ll see people using tech in ways you’d never seen before. I bet you’ll learn something new.

The challenge is how you can bring what you learn to your Testing.

 

As usual, if you have a go, let me know what you think.

 

* This is a real generalisation I heard someone say at a technology, culture and local council meeting!

Them and Us and big feedback loops

I presented at a conference last year where I talked about large feedback loops and how agile attempts to shorten these loops. Ideas such as Acceptance Test Driven Development, Test Driven Development and agile sprint durations are *some* reasons why agile achieves shorter feedback loops. (not exclusive to agile though).

I also suggested that long feedback loops make it acceptable to build an “us versus them” environment and to use static tools like Defect Tracking systems as a form of communication.

In environments where we see lots of “Us Versus Them” mentality between Programmers and Testers (and there are plenty of these environments), do we also see large feedback loops and/or system in use that encourage slower feedback?

Or, in environments with large feedback loops, do we see more “Us Versus Them” mentality.

I suspect both are true and I wonder which comes first.

No matter which way the cause and effect is, it’s clear to me that we need to work hard to break down these walls by incressing the speed at which we provide feedback.

For some, this is easier said than done, but I firmly believe that short feedback loops can do wonders for your whole Development team. Thoughts?

 

 

What’s in the news today?

In my experience there can often be, especially amongst testers, a desire to hear the bad news, the gossip or the failings. Get to any mainstream Testing conference to hear stories of Testers gleeful at delays, failings and horror stories of late releases; the stereotypes of negative Testers did start somewhere and is very much alive in some industries.

I don’t believe this is a good strategy at all, but I’ll save that rant for another post. A lot of the negativity, delays and grief can often come from the way we report our testing. Often innocent reporting of findings can result in a witch hunt, panic and stress. I’ve seen whole management teams mobilised because of lose comments about quality, especially when a product is nearing it’s release date.

When we report our test findings we need to be careful not to sensationalise the information, or underplay the importance of the findings.

So in a sense, just because some people crave tales of disaster, rework, bad designs, mistakes and trouble ahead it’s not always constructive to give them this news. Now, don’t get me wrong. I’m not advocating that we don’t give the truth. Not at all. What I am saying is be careful how you deliver this news.

Be careful to keep your information factual. Try not to add a personal or political balance to it (unless you have an agenda) – this is a lot harder than you think.

Becareful of the language used. Emotive words will flavour the meaning.

Think about the information you are providing. Sit and read it and then write down 5 questions you could realistically expect to be asked about this information. Then answer these questions. Add this further information to your reporting. Then try to find 5 more questions. Not only will you prepare yourself for inevitable questions about your reporting, but you will also fine tune your information in the process. It may seem over-kill but I have wasted countless hours in uneccessary meetings because someone over-sensationalised their findings.

Keep the data clean, minimalist, simple and to the point.

Think about what context you find your project in. Is it the last day? Is it the first day? Are you working overtime? Are you under lots of pressure? Is it going well? These factors may make a difference to how your information in interpreted.

Make your information gel nicely with the context. Or make it contradict for a reason.

But always be conscious of the effect your information *could* have. Even stopping to think about what you’re reporting is a very effective filter. And remember:

“What interests the project team, might not be in the interest of the project team”

Testing is dead, that’s what they said in the news

Testing is dead, that’s what they said in the news.

 

I disagree, but I think it’s getting confused.

There has been a lot of talk on whether or not “testing” is dead.

At EuroSTAR last year it was an over-riding theme and it generated a lot of talk about what the future holds for Testers.

 

Trying to predict what Testing will look like in the future will always be limited by our inability to gain an agreed definition of what Testing currently looks like. I don’t believe that trying to pigeon hole Testing is a good idea anyway (but that’s a different post)

 

So to talk about a future of Testing when we aren’t even sure what the current view of Testing is seems to me to be a fruitless task. I know; I’ve tried in the past and failed hence I focus now on what trends I see and what challenges we may face.

 

What becomes so painfully clear when widening your awareness to understand how Testing is done in other companies and domains is that Testing is incredibly diverse (and often surprising).

A future idea about Testing (or techniques for achieving good Testing) for one person could be an old fashioned approach for another person. Both may be valid for their contexts and both may or may not be future orientated; it depends where you personally stand.

 

For example human tickbox testing (often called “checking”) is very much alive and well in some industries and it shows no sign of going away (sadly). It’s a very buoyant market and a huge number of “Checkers” are employed doing it. I can’t see this market going away soon; so is Testing dead?

I don’t believe Checking is Testing, but now we’re arguing Semantics when we talk about Testing is Dead (i.e. do we mean Checking is dead?).

 

Exploratory Testing is the future for some people, but a tried and tested approach for others.

 

Testing is not dead. It’s just changing…for some people, in some industries. Just like the world is changing…for some people, in some industries.

Good Testers will do good Testing no matter how their world changes. They may just approach it differently, with a different mindset and different set of tools and techniques and approaches.

Those that don’t adapt will find their value diminishing, but that doesn’t mean Testing is dead.

 

Unit testing is testing. Acceptance testing is testing. UX testing is testing. AB testing is testing. Testing in live is testing. Design reviewing is testing. A Story chat is a form of testing.

 

Testing is changing (for some people). The people doing testing are changing. But Testing is still happening. And Testing will continue to happen.

 

Talking to people at EuroSTAR it became increasingly clear there were two very distinct camps of thinking about the death of Testing, with a number of blended ideas in-between.

 

Camp 1 was people who were terrified of the future and what it might bring. Camp 2 was people who embraced the future and all of the change it could bring.

 

I for one am firmly in Camp 2. I’m excited about the change and challenges and the technology we’ve yet to see. Yet I know there are many who are scared. I think a lot of this fear comes from not knowing what the future may hold and not being able to visualise yourself working in these new environments.

 

The biggest problem for most people around the future of testing is an inability to forecast themselves and their skills into a job they don’t believe exists (or are willing to believe exists).

This comes out as resistance to change; Cloud will never come to their domain: Agile will never work where they work: Sitting with Programmers will never work in their environments: Virtualisation will never work because it’s BLAH BLAH BLAH.

 

But the world IS changing and a key skill a good tester needs to possess is the ability to understand how their world is changing, how their skills will be valued in this changing world and what they need to do to future proof themselves. A good Tester will adapt.

 

At EuroSTAR a lady said that Cloud and Agile would never come to her industry because it’s impossible to achieve and the industry wouldn’t accept it. Her industry is Call Centre software. Well guess what? I work in the Call Centre Industry and our product is cloud based and we develop it in an Agile/Lean approach. Testing is never as Black and White as we may initial think. There is never a Best and only way.

 

Refusing the future will not work either. Predicting the future is impossible also. But being adaptable in your approach, your skills, your understanding and your learning will certainly help the future seem less scary.

 

The only constant is change.

The future will happen.

Testing will still happen.

The only question is: “Will it be you doing this testing?”

 

More Testing Is Dead posts:

Scott Barber – http://scott-barber.blogspot.com/2011/11/on-alleged-death-of-testing.html

Ben Kelly – http://testjutsu.com/2011/11/software-testing-still-not-going-away/

Matt Heusser – http://www.softwaretestpro.com/Item/5352

Google GTAC conference – http://www.youtube.com/watch?v=X1jWe5rOu3g

Arborosa on Testing is Dead – http://arborosa.org/2012/01/11/is-testing-dead/

http://rvansteenbergen.blogspot.com/2011/12/testing-is-dead-because.html

Isn’t it better to try and change something than settle for mediocre?

At EuroSTAR last week it was sad to see a “them versus us” culture still thriving in the software development community. I thought things were changing, especially with the on-set of Agile heading mainstream but it seems not.

 

I got embroiled in a conversation which stole an hour of my life. An hour in which I heard the virtues of “them versus us”. An hour in which this “Test Manager” extolled the positives around an “Independent” test team, who “distrusted” everyone and treated programmers with “contempt”.

It boosted Testers morales apparently. It made the team function as it should; as a separate, impartial and hated department. A department who would ruin projects. But it was never the Test Manager (or teams fault), it was the project teams or management.

 

I got the following vibe:

 

The Testers were frightened of the Management.
The Management didn’t like the Programmers or the Project Team, though they could live with the Testers.
The Programmers were indifferent to the Project Team but were terrified of the Testers and hated the Management.
The Management were seriously affected by the Programmers terror of the Testers.
The Project Team were nervous of the possibility of a Management – Tester alliance, spurred on by the indifference of the Programmers, and they shared everybody else’s dislike of the Management.
Or something like that.

Releasing software seemed to be a constant struggle for this chap. Testing was always an after-thought.

 

This was a scarily common theme and the blame was always put on other people.

 

Is change that difficult?

Isn’t it better to try and change something (relationships, approach, team, people, environment, structure, etc), than settle for mediocre? What are your thoughts?

Gravitate to people like you

I believe that one of the biggest mistakes a Hiring Manager (Test Manager etc) can do for a team is to hire in people with the same set of views and opinions. I’m not talking about “Yes” people who don’t have the confidence or inclination to disagree. I’m talking about people who are pretty much in line with your thoughts and thinking, or don’t have any particular views they want to air.

It’s natural for people to gravitate to those who support your ideas. It’s natural to want support for your ideas and respect for your approach; but that’s only valuable if your approach and ideas are right.

 

Instead I think it’s important to hire in people who are in alignment with your Goals and Objectives, but don’t necessarily hold the same views and opinions of how to get there. Sure, you need some form of alignment in your approach, but to have no criticism, no objections and no discussions about the ‘right’ way is to fall in to the trap of Group Think. To have a team incapable of thinking up new and interesting ways to solve problems is to create a group who will forever need your guidance. And is that really want you want?

 

So when recruiting a team it’s always a challenge to take a step back from your point of view on Testing and hire in the “right” people for the job. People who have a point of view, but have the personality to discuss constructively.

 

I worked somewhere where the Team Lead said something along the lines of

 

“We tell them what to do, and they will do it”.

 

I disagreed with this approach then, and I still do now. As a manager (or Leader?) it’s important to be able to ask your team for their points of view, thoughts and opinions.

 

Each team member will have a different view, a different perspective, difference experiences and skills and a different way of thinking about a problem. Truly diverse and creative solutions will emerge (assuming you have an environment that supports that process). Diversity is a good thing. Right?

 

I think it was Adam Knight the other week who said on Twitter that he is struggling to find Testers with diverse enough skills and thoughts. I absolutely agree. There’s one thing standardising yourself to conform to the mainstream testing industry (a stereotype?), but for many jobs now the fact you have something different to offer is a positive trait.

 

So my advice is don’t hire people who are just like you; seek diversity.

And as a Tester, don’t be just like everyone else.

Of course, I may not be right at all and may spend all of my day arguing…time will tell. 🙂

Cloud as a Test enabler

One of the interesting changes I see in the Testing industry is that many new companies, with newly formed Development teams (i.e. Programmers, Testers, Product etc), are automatically looking to the cloud for Testing solutions and tools.

It’s a natural process as many of these companies often power their entire infrastructure through Cloud tech. It’s an interesting change to a market which I expect to keep accelerating as teams look to cheaper, more flexible and more process agnostic tools to aid testing.

 

I have seen this happening for a number of years now and even see the same trend happening in the adoption of the Cloud product I test on. It seems new companies are using Cloud as an enabler and so automatically look to the Cloud for most of their software stack.

There could be a number of reasons for this but I suspect some of the main reasons are cost, the ability to scale, the freedom to change quickly and to also enable the formation of a distributed team. A central office is becoming less common and some companies are picking the “best” people for the job, rather than the “best” people within 20 miles of the office.

 

Reaching out to Free and Open Source software is also trending at the moment as companies strive to achieve their Testing goals with a number of considerations in mind; ease of use, support from the community, reliable SLA from commercial companies supporting Open Source, short term tie in, process agnostic solutions, niche tool solutions and a general lowering of overall operating and purchasing costs. Some of the most exciting, interesting and useful products come from the community.

 

It’s also worth bearing in mind for cloud, that you are buying a service which is considered an operating cost (i.e. OpEx) and not a product to add to the capital expense list (i.e. CapEx).

OpEx versus CapEx is an over simplified difference between cloud and a purchased outright tool, but it does have a number of positive financial points. A good article on the costing can be found here. Well worth a read if you’re interested in the financial side of Cloud.

 

There are many companies reaching out to more flexible and cost effective solutions, predominantly hosted in the cloud and offering a SaaS pricing and adoption model.

 

Test Management players Testuff and Practitest instantly spring to mind, along with a host of bug tracking solutions and services like Pivotal Tracker and Fogbugz.

NOTE: There are plenty of other providers too. There is a growing number of tools listed in The Software Testing Club wiki and a growing number of companies listed in The Testing Planet directory too.

 

Cloud technology has enabled these companies to provide a service at a cost effective price point, which when backed with SaaS payment model means Test teams can scale up or down when they need to. The tools are also flexible, offer data storage online and integrate well with other cloud based systems. These tools often have fewer features than the mainstream on premise or client based solutions, but this too is often a positive selling point.

Many big vendors are stuck with large software products requiring on-premise kit all bundled with large licence fees. They are unable to roll out new feature to their products very easily and the turnaround between customer requests and new features in the systems can be measured in years, not days. Flexibility, change and adaptive processes are the key to success for many businesses, which is why the free, Open Source and/or Cloud based products are gathering momentum.

That’s not to say the mainstream players aren’t good or successful; there are many Test teams using these tools very effectively. I’m just observing a trend. A trend I suspect will be played out with some of the offering we will see at EuroSTAR next month in Manchester. We’re already seeing some excellent cloud based tools and systems disturbing the market.

 

Not all teams can take advantage, or want to take advantage of cloud though. Existing hardware and in-house processes that work are good reasons not to jump.

 

But if you’re starting from scratch wouldn’t the cloud an obvious choice?

 

Let me know your thoughts on this. I’m obviously fairly biased on this through the product I test and the markets I work in.

 

Is cloud an enabler?
Do you use cloud products?
Are they cheaper?
Are they more flexible?
What are the downsides of the cloud?

Consistent User Actions

This morning I was in my local Tesco supermarket and noticed a classic case of inconsistency between the message and the action.

I am a seriously big fan of the self service checkouts in Supermarkets. Not only have they reduced queues but they’ve made it entirely possible to dehumanise the entire experience of food shopping; which, when the customer service is often so bad, can actually be a positive thing.

I’m also a fan of using my own bags, so I press the “Are You Using Your Own Bags?” option. At this point I receive two messages which don’t match the action:

A voice suggests I place my bags on the packing section and then press “Go”

The screen suggests I place my bags on the packing section and then press “Go” but shows me a button labelled “Continue”

It may seem trivial to point this out, that both mediums suggests “Go” and the actual next step saying “Continue” but it had me scanning the real estate for a few seconds before realising it was a mistake. Other users may not find this so trivial.

And in many contexts, this simply doesn’t matter, but as a Tester it’s important to check for consistency between prompts, advice, help, information, guidance and the actual action or process.

In some contexts this consistency could be very important.

Push The Button

During a conversation with a group of testers at an event I soon found myself outnumbered in my views around “enhancements” to the product. I was the only one who saw a Tester’s role as more than just verification.

I was a little amazed at how this group of Tester’s (or shall we call them Checker’s?) narrowed the focus of their roles down to simply following a script, clicking buttons and ticking boxes. They were also incredibly passionate about not suggesting improvements to the process or product. It’s not so clear to me though where the line is between enhancement and bug. It’s not always easy to categorise.

Through sheer persistence and the use of pursuasive language and examples of real bug stories I convinced them that there was more to Software Testing than checking. I also bought them all a drink, but I don’t suspect that had anything to do with it. 🙂 I’m not saying they weren’t doing a good job, far from it, but to not look at the wider context around your checks is to ignore the purpose of the system.

I promised to blog about the things we talked about, and here it is, about a year later than it should have been.

This post stemmed from a point one of the guys made “A button is a button. It’s the same in every system. We test it does what the spec says it should do.”

At a basic level this is absolutely correct, but to look at a button with this narrow focus is to miss the point of Testing (as I see it). The button is just one action, or element, or interaction in a much bigger process or system. It may fire off something or trigger an event but the interesting questions for me are:

  • Why would I click the button?
  • What are my expectation?
  • Do I have any choices around clicking the button?
  • Will I like what happens?
  • How will you encourage me, force me or convince me to click the button?

And a whole lot more. To ignore the context of the button is to not question the system it lives in. To check the button does what the spec says, is to put too much trust in the spec. So I blurted out a few ideas about testing, which actually cross over in to design. I’ve included as many as I could remember here in this post. Some may be helpful for you, some may not.

  Is the button accessible to all users?

  • Should it be?
  • Do certain users get more or fewer buttons? Why?
  • For example, admin users or permissions based systems.

 

Why would someone click this button?

  • Are there other choices?
  • What will drive someone to click this button?
  • What happens in the grand scheme of things if they don’t click it?

 

How will your users “feel” before and after clicking the button?

  • Do you know?
  • Does it matter?
  • Can you redesign to cater for this “feeling”?
  • For example, submitting your tax returns will give your users a different feeling to submitting a newsletter subscription form

 

Is this behaviour monitored or detected or regulated?

  • Does this change the button form?
  • Does this change the behaviour?
  • Who detects it and why?
  • Are there privacy issues or data protection concerns?
  • What is done with this data?
  • For example, audit trails in systems.

 

If your users access the site via a mobile device, does the button still have the same look and feel?

  • Does it still do the same thing?
  • In the same way?
  • Should it?

Do previous choices or data entered alter the button choice and action?

  • Should it alter it?
  • Could it alter it to get a better outcome for all?
  • When does it alter it, and when doesn’t it?

 

Does the button have the potential to do damage and therefore require more consideration or a confirmation?

  • Status updates?
  • Sending personal details?
  • Firing missiles?
  • Turning off life saving machines or devices?

Do you need further steps in the process or is clicking this button enough?

 

Is it possible to design the overall page and the button to deter or encourage certain behaviour?

  • For example, to eliminate the “Donkey” vote the candidate voting lists are often randomised

Does anything surrounding the button affect the choice or decision?

  • Should it?
  • Could it?
  • Can we affect choice by anchoring adverts or information or other users choices?
  • For example, peer review scoring on sites like Amazon

Could the button or process be disabled but visible to encourage upgrades, add ons or extra steps?

  • Should it?
  • Does it fit with the business model?
  • Would your users appreciate this?

Is the action the button performs pleasurable for the user? Or negative?

  • Could this process be sweetened if negative?
  • Or rewarded if good?

Is the button consistent with other buttons in the process or system?

  • If not, why?
  • If yes, should it be?
  • Would it be better with a different design..to stand out maybe?

Does it matter whether you are the first person to click this button?

  • Do you get extra features?
  • Do you disable a process for other users?
  • Is the outcome clearly communicated?
  • For example, one time downloads or data collections.

Can you click the button more than once?

  • Why?
  • How?
  • Does it function consistently?
  • How does this affect the system or data or process?
  • For example, submitting a form more than once

 

Does the button support multiple users?

  • Can more than one user click their own button at the same time?
  • At different times?
  • At all?

Can you double click the button?

  • What does it do?
  • Should it be possible?
  • Could you deter this behaviour with warnings or informational text?
  • For example, some users click hyperlinks twice.

Is the design of the button modern, or old?

  • Can it be skinned?
  • Does it look old for a reason (functional, to encourage upgrades etc)

Do you need supporting help text?

  • Is it obvious it’s help text?
  • Can it be on or off?
  • Or on all the time?
  • Is it obvious the text is relating to this button or process?
  • Is the help system being designed against a recommended compliance like the elmer guidelines for form design?

Can you create an emotional attachment when the user clicks on the button?

  • Can you get buy in, repeat business or a brand fan?
  • Do you want to?
  • Do you need to?
  • For example, the Like button on Facebook

What action does the button perform and is that consistent with what your users want to do?

  • Submit, next, back, details, open, close, print, etc
  • For example, the final submission button in a wizard should not be called continue, unless it has supporting text to inform the user what that button will do.

Is there a time limit surrounding the button?

  • A limit before clicking or does it start a timer?
  • How would this affect the design and testing?

Is the button grouped with other like minded buttons, or dejected and lonely?

  • Is the like minded group logical?
  • Does it convey the right message?
  • Is the lonely button there for a reason..to draw attention?
  • For example, all text formatting buttons should be logically grouped, rather than spread across a busy toolbar.

How does the button perform with no supported visuals?

  • Text only
  • Screen readers
  • Accessibility

Are you using colour to symbolise or signify meaning?

  • Red for danger
  • Green for go
  • Are these signs common amongst your users?
  • Ambiguous?
  • Should you be using colour? Accessibility? Colour blind?
  • Do they display well on different monitors?
  • If you had no colour could you still use the system?

Does the button actually do what the user expects?

  • Regardless of the spec, is the button action logical?
  • Are the expectations wrong?
  • Is the action wrong?
  • Is your oracle wrong?
  • Is it by design, fake affordance maybe?

Is the button part of a sequence?

  • How is the sequence represented?
  • Is the sequence logical?
  • Can the sequence be tricked, skipped or broken?
  • Is the sequence communicated well?

Does the action of the button mirror actions or features in other systems?

  • Will users see a link between systems, for example a status update in Facebook?
  • Could you redesign to take advantage of that association?
  • Would you want the association?
  • Is it worth redesigning a common process, or will the baby duck syndrome kick in

Is the process surrounding the button common?

  • For example installers.
  • Does the process require much thought or is an almost natural process of unthinking clicking.
  • For example, the browser add on tools that are hidden in the middle of a software installer. They work on the basis that you will not read it and hence install the browser add on.
  • What could you do to encourage more thought around the process? Make it harder?

Does the button itself represent the action?

  • Delete icon, rubbish bin icon, cross, plus sign.
  • Are they logical?
  • Are they repeated on the same screen adding ambiguity?
  • Are the symbols universal to your audience?

If there is a breadcrumb trail, how will clicking this button affect that?

Does the button require data fields to be completed?

  • Should the button be visible until all fields are complete?
  • Is that clearly communicated?
  • Greyed out? Disabled? Button text change? Disappear/Reappear
  • When does it validate? Where? How?
  • Is it consistent?

Does the button recall previous data?

  • What happens when clicked more than once?
  • How is the data represented or affected

Is the button generating real time feedback?

  • How real time?
  • Does this affect performance?
  • Is it required?

Does the button work under multiple instances?

  • Multiple browsers and/or tabs?

What lies beneath the button?

  • Can you glean any further information about the button by using a tool like Firebug?
  • Does it have alt text?
  • Is it logically labelled and suitable for automation?
  • Are there any comments in the code or other clues?

Is the button the final action?

  • Does the user need to know anything before they click the button?
  • Do they get a confirmation?
  • Are they reassured enough to click it?

If the button is part of a process, would it better to push the process through a wizard?

  • Will the user experience be better? Less prone to mistakes?
  • Will the process be done in one go, or can they save and return?

Does the button need an undo?

  • Does the action need a reverse or opposite action?

Is the button multilingual?

  • What happens to the button when it tries to show different languages or locales?
  • Does it still make sense?
  • Does it hold longer text?

Can the user press this button without using the mouse?

  • Mobile devices. No right clicks. Etc
  • Shortcut keys? Tab order?
  • Should they be able to?

Can it be made easier or harder to press the button depending on your objectives?

  • Many large organisations appear to be making it hard to find the button which leads the user to the telephone numbers or listings.  Self service is cheaper but is it always better?
  • Big red buttons with lots of “click me” appeal
  • Button in the middle of the page, or hidden in the top corner.

If you removed the button and that part of the process how would it affect your system?

  • Would it make it better?
  • Unshippable?
  • Un-usable?
  • Better?

A lot of these ideas come about when reading about design ethnography and UX, particularly around lenses, but for each one I’ve always been able to relate this back to a bug or “enhancement” I’ve seen in systems I test.

Questions about the bigger process will lead to more test ideas about the button (and the bigger process also). The button is a part of a bigger system, which is operating in a context. I think it is at this level that individual actions start to make more sense as a whole, and you can begin to question who, what, why, where and when.

If you find yourself working in an environment where you’re not allowed to raise questions about the checks you are running and you really want to (and attempts have fallen on deaf ears), then it may be time to move on and see what else is out there.

Professional Skeptics, Dispeller of Illusions and Questioner

Bear with me as a clear a few posts out of draft. This is my last one for a few weeks. Promise.

 

This one came about as response to James Bach’s excellent Open Lecture presentation. I took away a number of lessons from that lecture. (including the title – Professional Skeptics, Dispeller of Illusions and Questioner)

 

Off the back of that I decided to post some questions about “Testing the Spec” as an intriguing LinkedIn forum post got me thinking about why “Testing the Spec” is so common. “Testing the Spec” is where a Tester takes the spec and the system and then validates/verifies that the spec is correct. Yes, you read that correctly….that the spec is correct.

It got me thinking and asking a couple of questions:

  1. What benefits will you receive by testing the system against the spec?
  2. What don’t you know about the system? Will the spec help you?
  3. Do you have any other information sources or Oracles?
  4. Is the information sufficient? Or is it insufficient? Or redundant? Or contradictory?
  5. Would a system diagram suffice?
  6. At what point do you know you are complete? Once every page of the Spec has been “tested” – what about other parts of the system not covered by the spec?
  7. Have you seen a system like this before? Will it help you?
  8. Have you seen a slightly different system? Will it help you?
  9. Who has asked you to do this?
  10. What value do they see in you doing this?
  11. Does the spec accurately depict the system? (I guess this is what they were testing for….)
  12. Would it matter if the spec didn’t match the system? (which one would give you most value; the spec or the system?)
  13. Is it essential to bring the spec up-to-date to match the system?
  14. Will the spec tell you everything you need to know about the system under test?
  15. Would the spec tell you anything that the system wouldn’t?
  16. Do you know how out-of-date the spec is?
  17. Is the spec important as a communication medium? Or just something that gets produced?
  18. How would you communicate your findings? In Bug Reports? Or in a report?
  19. How would you know what was a bug and what wasn’t?
  20. Could the spec confuse you more than simply exploring the system?
  21. Are you using the spec as a crutch or a guide or an Oracle?
  22. How much of the unknown can you determine?
  23. Can you derive something useful from the information you have?
  24. Do you have enough information to model the system in your mind?
  25. Have you used all the information?
  26. Have you taken into account all essential notions in the problem?
  27. How can you visualise or report the results and progress?
  28. Can you see the result? How many different kinds of results can you see?
  29. How many different ways have you tried to solve the problem?
  30. What have others done in the past that might help?
  31. Where should you do your Testing?
  32. When should it be done and by whom?
  33. Who will be responsible for what?
  34. What milestones can best mark your progress?
  35. How will you know when you are successful?
  36. How will you know when you are done?

I’m not doubting the fact that testing a spec against a system is valuable. It *could* be the best thing you can do. But I would ask a lot of questions first. The system is always different to the spec, but in context, your spec could be used as the main reference point, so only you will know whether “Testing the Spec” is valuable for yourself.

 

I rattled out this list through a combination of the Phoenix Checklist but also after watching the very excellent video of James Bach doing an Open Lesson on Testing.

 

As with all things, I tend to sketch and draw as both a record of my thoughts, but also as a way of distilling some ideas. I read better in visuals so these rubbish doodles aid my learning and increase the chance I will revisit these points. You might struggle to see some of the text in the image but there are plenty of tools for opening images and zooming.

 

Note: The diagram is my take-aways from James’ lecture. There are many more lessons  which I’ve taken away earlier from James’ blogs and talks. I *may* have interpreted some things differently to how you would, or even how James intended, but they are my take-aways. I share them here just for completeness and urge you to watch the video