Purpose, noun, the reason for which something is done. Recently a discussion was started by one of the Testing co-blogger at LinkedIn “What drives Quality Assurance? What is the purpose of Software Testing?” A relevant discussion indeed. They say “If you’re not working with purpose, you’re doing it wrong.” This triggered me to put on the thinking hat and pen down my perspective of ‘Software Testing Goals’. Identify bugs? Ensure Quality? Business readiness? What about time & budget? Process improvements? Product enhancement? What is it?
Before finding a purpose, it’s important to first understand the origins. Unless you are aware of the Software Testing evolution, we cannot find a purpose. How Software Testing started as a discipline? When did it change to Quality Assurance? Where is it heading?
The Origin | Purpose of Software Testing
Once upon a time when ‘Software Testing’ wasn’t discovered, developers used to test their own developed code & find defects. The process was known as ‘debugging’. Sometimes the roles were swapped within the team – one of the team-mate checked the code developed by a peer. Can you guess what happened then? Yeah! They couldn’t identify so-many defects in their own code. Why? The ‘I am Right’ tendency. After all the mentality is set as ‘to develop’, not ‘to find defects’ 🙂 the result – In 1979, ‘Software Testing’ got its independence from Software development (debugging). The pioneer fighter was Glenford J. Myers who initiated the concept of ‘Testing is an activity focused on finding defects’. It initiated a series of discussions and finally in 1988 Dave Gelperin and William C. Hetzel defined the constitution – the goals & phases of Software testing as an independent activity.
As per Wikipedia: Quality assurance (QA) is a way of preventing mistakes or defects in manufactured products and avoiding problems when delivering solutions or services to customers; providing confidence that quality requirements will be fulfilled. This defect prevention in quality assurance differs subtly from defect detection and rejection in quality control, and has been referred to as a shift left as it focuses on quality earlier in the process. Quality Control & Assurance started from the manufacturing sector and slowly percolated in the Technology industry as well.
The result: Quality Control, Quality Assurance and Software Testing are now used interchangeably in the Information Technology domain. Amazon calls it Quality Assurance. Microsoft calls it Developer in Test. Google calls it Software engineer in Test. Some call it QA/QC professionals. Others simply ‘Software Tester’. In general, the difference has been blurring – at least with respect to the roles demanded by IT organizations. Some do have separate roles for dedicated QA/QC/Test professionals but overall the industry has seen mingling up of these concepts. As a result, the purpose of each of these specialist tracks have also mingled into one. Or in other words, the singleton purpose of Software Testing to find defects in the product has been diversified to cover other areas as well. Let’s have a look at each of those…
Note: To be clear, we will be using ‘Software Testing’ henceforth.
Assess Quality | The primary purpose
The project is initiated, requirements are discussed & communicated, the product/software is developed and then delivered to the Test team. Any idea why? Yeah! To assess its quality with respect to certain standards and to ascertain its ability to meet the expected customer requirements. We are the quality gate-keepers, i.e. assess the product and then either reject it or accept it. Reject as in the defects to be fixed.
Find Defects | The secondary purpose
Whatever be the evolution, the secondary purpose of Software Testing remains the same till now – To find defects. Anyone moving away from the primary goal is confusing himself/herself in light of so many different terminologies. The concept of Software Testing was initiated as “‘Testing is an activity focused on finding defects’, full stop! Everything else revolves around the ‘Defect’ – be it prevention, control, delivery or success. I like to put it this way,
“To make it right, first identify what’s wrong.”
Now expanding on this purpose, a defect can be in the software itself, or the process of building a software, the expectations, product delivery or a service. It can be a fault, shortcoming, deficiency or a failure. The purpose of Software Testing is to identify (& rectify) maximum defects before delivering a product/service to the end-users!
Find Success | Requirements work
Software Testing is inherently considered a negative capability. Yes, we help to prevent, identify & rectify the defects but we are not done yet. What about the positive outlook? It’s not like we always show defects. The most relevant purpose of Software Testing is to find success, i.e. confirm that the system is functioning as it was expected to work. Requirements are the starting point for any software development & testing project. Apart from the defects, we as testers need to make sure that the software, product or service is implemented as per the business requirements – be it functional, performance, security, usability, reliability, etc. It’s like the last appraisal meeting you have had with your leader,
“Well done. Great job. Keep up the good work. Happy with your performance. And here are the ‘improvement areas’ you need to start working on.”
Software Testing serves dual purpose – Ensuring that the product is built as per the requirements (well done!) and finding the shortcomings in parallel (the improvement areas). This dual purpose ensures that the product can be delivered successfully!
Time & Budget are important
Let’s face the fact! Though important still enterprises don’t have all the time & money to spend on Software Testing. Everything has a constraint attached to it. You cannot work 26-hours a day. Happiness has no price tag. Everything is mortal. The two biggest constraints for any enterprise are time & money. No organization can succeed without balancing these two. And Software Testing is no different. One of the important purpose of Software Testing is to manage everything else within the constraints of time & budget. Sometimes it might need prioritization & base-lining of the activities involved. Neither do I like late delivery of my ordered products nor paying anything extra other than what was agreed upon. I guess same applies to all of us – any delay or cost runs in our ordered products/services drags us to the level of frustration that we post complaints on the Social networks, thrash the customer care executives or bad-mouth the products/services.
The Voice Matters
“Software Testing is a blessing in disguise”
Software Testing measures the quality of your deliverable. One of the important purpose of Software Testing existence is to verify & validate that the ultimate product delivered is useful & meets (rather exceeds) the business requirements. Voice your opinions about the usefulness & clarity of the requirements and propose value-add that can enhance the overall user experience. Be the voice of quality. Raise any risks that you foresee. As a tester, we need effective communication with all the stakeholders involved – business, client, development, vendors, leadership, etc. Silently finding & fixing the defects is not enough, be the voice that is heard & responded to. As quality ambassadors it is our purpose to communicate the related attributes effectively.
Great Software | Happy Customer
How do you differentiate between companies when ordering any product? Yeah! The quality, price & the service. The eventual goal of any Software development & testing project is to deliver a great product in order to retain the trust of existing customers and to gain confidence of would-be customers. The best marketing tool you can ever use is the quality of your delivered products/services. Software Testing has its share of activities to achieve this ultimate goal. One defect and everything else you did doesn’t matter. It’s a human nature. The only way to ensure your customers keep coming back is ‘Quality’.
Test with a Goal | Purpose of Software Testing
“A highly trained and competent test team can provide much greater value to the organization beyond the simple bug-finding job.”
In a way Software Testers are the Brand ambassadors of any enterprise. Defective delivery & your brand is screwed. Quality deliverable & your brand value increases in the technology market. Software Testing, as it stands today, doesn’t have a singleton goal. It’s a multi-faceted discipline. It’s when multiple goals converge that you get the true value out of a Test team. We as testers need to understand that these goals percolate from the enterprise level to the project, to the Test team and you as an individual contributor. It doesn’t matter if you are a functional, performance or a security tester. Just like a ‘vote in democracy’, even a single tester’s contribution counts to the overall purpose of running an effective & efficient enterprise!
So the next time someone asks you about the purpose of Software Testing, don’t just quote the bookish antiquated view of testing. Instead expand your perspective around Software Testing in order to establish it as a professional discipline. Got a purpose to add/edit/delete in the list above? Just comment…