Why would you start Test Automation?
After working in IT for several years, seeing the common pitfalls when build and releasing software I just wondered what is your experience?
- Have you seen defects go back and forth between a test and development department?
- Have you seen a delivery to production with lots of defects?
- Have you seen a delivery to production with a lot of stress from the team or other departments?
- Have you experienced downtime during or after the release?
- Have you heard testers complain they cannot test everything on time?
If you have answered yes on one or more of the questions up here. Ask yourself the next question as well…
Have you accepted that the team did NOT spend time on test automation?
Did you push the team to focus on functionality instead of quality? Other side, did you accept that a product owner, manager or whoever pushed you or encouraged you to skip creating tests?
Together we are responsible for delivering high quality, reliable software on a sustainable pace. The only way a team is able to do that is by automating tests. Else now way they have enough time to test the entire application over and over again each time they want to ship it.
To illustrate what can happen when you do not automate your tests I have made a small animation.
When you look at continuous delivery you often see six stages, were the last one is production. In the animation you see five conveyer belts for each stage towards production. Take your time to look for the details in the animation what do you see happening?
- The box is upside down and no body notice it. When you do not have your tests automated an error like you can miss this because time is limited or the pressure to release is high.
- Second step an integration test takes place. The small boxes fit, but the big box is expanded to the right. Another error that can be missed when you do not have the time to test the entire application.
- The third step is an exploratory test. But in this case, a butterfly can distract people. In real life this can be anything so an error can me missed easily.
- Fourth step the user acceptance test takes place. I see a lot of situations where there is no customer involved to test or the “business” does not have time to test.
- The fifth stage is were load an performance tests should take place. But in many cases that is the least of the teams worries so they don’t take place at all.
The result is a crappy product with unhappy customers. It is scary how often this extreme example is reality.
So what is to gain?
So what possibilities do you gain when your test automation is in order? Well, I also made an animation for that scenario as well.
Take your time to look for the details in this animation as well. What do you gain when you do automate your tests?
- The quality of your product increases. You still need to have test expertise, not to repeatedly do manual tests but to make sure the right tests are automated to reduce the risk on failure in production.
- A very important result of automating your tests is fast feedback. You can prevent something from going to production because wrongs come out every step of the way. Result is better quality, a more stable product and reduction of costs.
- Exploratory tests can go down to some random check every now and then to validate stuff that is hard to automate. It is also wise to do this when you release large new functionality.
- Validation by customers/business is still interesting but also could take place earlier to fasten the feedback loop.
Beside al benefits mentioned earlier also the barrier between development and test can go down. Because developers and testers need to work together to think about what and how to test. This helps breaking down silo’s that exist sometimes even within scrum teams.
So I think my message is clear. Time spent on test automation is time well spent. Focus on the long term, what is the lifetime of this application? How often are we going to expand or change functionality? Then decide if it is smart to skip test automation to reach that deadline…?