Some say that Software Testing is hard, they are correct. What does ‘testing software’ mean? It really only means one thing, your software application works as it was intended to. Sounds really simple, right? 
 

Software Testing is Hard, Why?

To answer the ‘why’, we need to talk about the ‘what’ i.e. what is involved when testing software? On a high level software testing requires two forms of testing, Functional and Non-Functional. Areas such as Exploratory, Automation, browsers and devices are examples of Functional Testing. Non-functional testing includes Security, Performance and Compliance. Given that we are trying to highlight just some of the high level areas, you can see that there is a lot of ground to cover here.
 
Functional and Non-Functional testing requires a great deal of upfront skills and talent. Job roles such as ‘QA’, ‘Software Test Engineer’, ‘Automation Engineer’, and ‘SDET’ are just some roles designed to help deliver on both Functional and Non-Functional testing. 
 
Given the above, we still have not answered how Software Testing is Hard. Professionals that specialize in Software Testing need to have a library of knowledge. This includes (if not all) most testing areas of Functional and Non-Functional testing. Software Testers need to be able to use and grow these skills overtime as new strategies and technologies emerge. But wait, what about the Soft Skills?
 
What are Soft Skills? Basically, skills that cannot be measured on paper but can be observed through practice. Soft skills include the ability to diplomatically talking to Developers, prioritizing bugs, estimating further work etc. A Software Tester needs to have the ability to negotiate feature over fixes, explain why something may be a bug etc. Most importantly, the Software Tester acts as the glue between most of the team e.g. Developers, Product Owners etc.
 
Juggling all these technical and soft skills is not an easy task. In reality no Job is really ‘Easy’ but the question here is related to Software Testing i.e. Software Testing is Hard. 
 

Have You Found all The Bugs?

A very common question that almost every Software Tester has been asked is “Have you found all the bugs?”.
 
Firstly, this question cannot be quantified. Secondly, this is an impossible question to answer. Asking a Software Testing if they have found all the bugs in an application is a little bit like asking a Scrum Master the exact date when all the Stories in a backlog will be completed. Even if an answer was given, it is more likely to be incorrect. How is anyone supposed to know if an application is completely bug free.
 
Now, how is ‘have you found all the bugs’ related to ‘Software Testing is Hard’? When delivering an application to the end client, knowing how many bugs were found and fixed is one measurement of the confidence you have for the application. Since the quality of the application is directly tied to the role of the Software Tester, this question becomes very relevant. 
 
Finding all the bugs, although an almost impossible feat, is something that we must strive to achieve regardless of how difficult that is to do. Really, as Developers and Software Testers we need to do our best. 
 

Can Testing be Easier?

With the right tools, attitude and methods, yes. The process of testing an application and maintaining its quality overtime can become a little easier if areas such as Continuous Integration, Continuous Delivery, Automation, Performance, metrics on dashboard, Security etc are all paid attention to.
 
What sort of tools and techniques can you use? 
 
Let’s talk about automation first. Writing tests as part of each task will ensure that requirements are captured. Follow this up with running tests as part of your build process ensures all requirements are still passing. Additionally merging this code into Master and running the same tests again helps to ensure all requirements are working. As part of your build process, you can also run both Functional and Non-functional tests. 
 
On a more principle note, aim to deploy your application in a production like environment during its early development stage. If nothing else, this will force you to think about your entire pipeline and deploy process. No last minute surprises when you have a large portion of the application done but are not able to deploy it. Deploying early will get the team into a more customer focused form of development. In other words, each completed task must delivery something to the end client.
 
How about designing some metrics and setting alerts on them? For instance, if the response time on your application drops then an alert is sent to the entire team. This would then prompt the team to revisit the response time. We can also introduce hooks and gates. We can set a locked gate on the build if it ever goes red i.e. build fails. The only way to allow anyone to merge any code to Master is to first fix the current red build. This would force the team to jump on any broken builds.
 
The above are just some ways that would help to make Software Testing easier. Software Testing is hard but it can certainly be made easy.

Please follow and like us:

Leave a Reply