Can Testing Be Automated?
Hi, my name is Clint. I am the current test lead at Haefele Software and I’m here today to talk to you about something that has been close to my heart for about 10 years now.
No, it hasn’t got anything to do with my stamp collection, or my unhealthy desire to want to buy every record ever pressed, but rather my appreciation for the software testing craft. More specifically around the idea that testing can be manual and that we can automate testing.
Firstly, I would like to say that the idea of calling testing manual and the idea that testing can be automated is a view that is disruptive to the craft of testing, and I begrudgingly use the terms today for clarity’s sake – Rant over (Well not quite).
Increasingly, I am finding the word automation being used alongside testing. From the perspective of many, it is as if automation is the silver bullet that will fix testing, allowing teams to release new functionality at speed without having the delay or cost of manual testing. Do not get me wrong, I love the idea of automation. If used correctly, it can give us yet another tool to help make informed decisions about our product and help further potentially mitigate some risk while providing useful information. There are many benefits to automation, but I strongly suggest not ignoring the idea of manual testing as part of your development processes.
What is Testing?
I could easily draft an entire article on what testing is but if I needed to wrap it into one sentence, I would say testing is the process of gathering information, learning about the system under test through experience, exploration, and experimentation to help our clients make informed decisions about their product. That in short is what my view of what testing is, writing test cases, managing test execution, reporting, and logging bugs are activities we might be doing to help support testing, but it cannot be defined as testing alone as it would be an injustice to testing as a whole. Our experiences and understanding guide us into asking better questions and exploring different ideas on what to test which simply cannot be automated.
Some software tester activities and attributes:
- Critical thinking
- Experienced decision making
- Learning how a user would use a product
- Interacting with a product and learning about it
- Questioning the product
- Finding ambiguity in requirements
- Making observations
- Collaborating with others
- Ability to understand and highlight risk
- Being a leader of testing in a team
- Output checking
- Applying test techniques
While automation will run at speed, it will also only do what you tell it to do and not consider anything outside of the realm of the test being run. The look and feel, as well as usability of an application, requires a human perspective which automation is unable to provide.
The industry seems to be obsessed with turning every tester into an automation tester as if everything else testers do does not exist. Oh, and we are also asked to do this and continue to do everything else we currently do with the same amount of quality. I am not against the idea of learning how to automate or learning new skills in general as it plays a fundamental part in our progression as testers. Learning how to code may lead us into asking better questions or guide our testing into areas we may not have considered or plan our testing based on how the system under test has been developed. However, not every tester may enjoy coding or be good at it, and not every tester will want to perform automation, but that does not mean that they are not great testers who should be rewarded and supported for what they do.
We need to make sure we do not end up with an unhappy tester feeling unappreciated and not doing the thing they are good at, the thing they enjoy, and the thing that the team values in them. Rather than focusing on producing poorly scripted automation scripts littered with its own set of bugs.
When we talk about automation what I think would be more useful is to understand what it is we would like to achieve through automation. Regression checking is normally a common candidate for automation when we talk about it. While running through regression we are trying to understand if the quality of a product has been affected in any way by the changes that have been made.
So now that we know what we would like to automate, we can now, along with the team, discuss how this goal can be achieved. Automation is very much a development activity that requires development skills so why not get your developers involved if the skills required to automate does not sit in your testing team. Have your testers define your regression pack as they are your domain experts and over time, as your test team improves their automation abilities slowly, hand the automation responsibilities to them to manage. Another approach is a new hire, someone with the skills required to support the testing team with regards to automation allowing your test team to continue doing the things they’re good at.
Before making any decision though make sure you fully discuss and understand the short-term and long-term impact of any decision. The ongoing daily time and effort required in maintaining any automation strategy should not be taken lightly. It requires constant attention so make sure you fully understand what you are getting your developers into and whether you are better off just hiring someone to support the team.
I know this may feel as if it is a bit of a rant but maybe that’s what we need. Fortunately, many of our skilled leaders within the testing community share similar views and it requires more of us to speak up in support of our craft. As much as I agree that as testers we need to constantly try to be better and learn new skills as it is fundamental to our growth, we also need to make sure it is not at the cost of losing what is at the core of being a great tester.
When we talk about automation let us talk about a technique that can be used within testing rather than something that is separate from testing. Let us look at automation as a tool to help testers with performing their automated checks. But most importantly, let us make sure we understand that testing is a human social exercise that cannot just be automated.
And lastly, I do not really have a stamp collection, but my wife does think I have way too many records for one person to own. I on the other hand completely disagree.