What is software testing? Software testing is the practice of assessing and ensuring that a software product or application functions as intended. Effective testing helps identify and prevent bugs, enhances performance, and ensures the application meets user requirements by verifying and validating its quality.
Software testing stands as a cornerstone in the realm of development, serving a pivotal role that goes beyond mere error detection. At its core, software testing is instrumental in delivering reliable data that informs critical decision-making processes. This data is not only crucial during the initial development stages but also throughout the entire lifecycle of the system.
The Three Pillars Upheld by Software Testing
The practice of software testing is not just about finding bugs; it is about certifying the integrity of three fundamental aspects that are integral to any business-supporting system:
Quality Assurance: Software testing is key to ensuring that the product meets the predefined standards of quality. It is about affirming that the software behaves as expected and provides a seamless user experience.
Risk Management: By identifying potential issues and vulnerabilities early on, software testing helps mitigate risks that could lead to system failures or security breaches, thus protecting the interests of the business and its customers.
Compliance with Requirements: Testing ensures that the software adheres to the specified requirements, aligning with both the business objectives and customer needs.
Are we building the right thing?
This might seem a bit of a funny question, but it is one that is decided right at the beginning of the life cycle – well before a line of code has been developed. After all, what is the point in coding something that is flawed when we will clearly have spent time and money in analysis, specification, design and build, only to find out later it is wrong? Just how much will we have spent, and do we spend getting it wrong such that our time to get is right is seriously compromised.
With a little foresight and engagement of professional testers we could flaws ironed-out from the outset. Essentially, this imperative considers the functional needs of the business and non-functional needs of how a system is to operate and underpin an SLA.
Are we building the thing right?
Yep, this looks very similar to the previous question, but it is one with a clearly different intent and outcome. So, what might the tester mean by this? If we consider that more money is spent on maintaining systems than the original cost of development, we can see that it makes good sense for the tester to be engaged to help ensure the thing is built right in the first place.
It is the testers role to help build in maintainability for the long-term. This includes design, build and test asset management for future reuse. Often not considered, the future of a system and how it is maintained and tested is key to business success – and the test team play a huge part in that.
Does it do it right?
Too many systems are build that either don’t do what the business needs or do it in such a manner that makes them difficult to use. In any case, we want something that is simple to use and which meet needs and works as planned on implementation.
Your Test Team will build in quality initiatives throughout to secure sensible outcomes that offer the much sought-after return on investment and acceptance of the solution by the business.
Essentially, this imperative considers the ‘usability’ side of systems delivery. You might have succeeded with ‘Are we building the right thing’, but if you haven’t considered how it will be used then at best success will be compromised, as worst failure the likely outcome.
Pretty much all Test Managers and Testers will use these key imperatives within their software testing strategy, planning, execution and reporting to provide assurance and inform decision-making about the relative welfare (or not) of a systems development or maintenance activity.
Indeed, what they do in all forms and guises of testing to fulfil the three key imperatives are now recognised by:
- The Business, who want a return on their substantial investment in IT systems, and see testing and the certified tester as a way of getting it;
- CIO’s as the discipline that keeps the development team honest and on track with the required solution;
- HR as a career path up the ladder (and about time, too).
What are the different types of software testing?
Over the years, the number of distinct types of software testing has exploded to over 100 for use in Agile, DevOps, Waterfall and other methods.
The majority of these are used by organisations that develop or procure systems to underpin their business operations. Typically, testing types can be loosely categorised into three classes, that include but are not limited to:
Pre-build and overarching software testing and controls to provide a baseline for acceptance criteria, measurement, risk and information management
- Requirements Validation: that requirements make sense, are complete and what the business needs and which can be signed off by all stakeholders to provide a baseline for systems development and software testing;
- Phase level documentation: reflects requirements inclusion and test case plans and materials reflect those requirements and acceptance criteria
- Traceability matrices: to ensure that for every requirement there is a test and for every test there is a requirement throughout a life cycle or sprint;
- Risk and issue management;
- Information management and reporting for informed decision-making.
Functional software testing asserts that the characteristics of a system reflect business need (requirements) have been met:
- Unit testing
- Integration testing
- System testing
- Sanity testing
- Smoke testing
- Interface testing
- Regression testing
- Beta/Acceptance testing
Non-functional software testing asserts that operational characteristics of a system’s operability, reliability and usability requirements are met:
- Performance Testing
- Load testing
- Stress testing
- Volume testing
- Security testing
- Compatibility testing
- Install testing
- Recovery testing
- Reliability testing
- Usability testing
- Compliance testing
- Localization testing
Clearly, there is much for the Test Manager and his or her team to consider in software testing to fulfil and provide information about the state of a system in each of the imperatives listed.
It is also true to say that the skills to plan and execute these types of testing at the right time cannot be vested in one individual or group of individuals with either functional or non-functional skills. No, a blend is vital as some people will excel at functional testing whereas others will be more naturally inclined to the technically challenging non-functional testing arena.
What Makes a Good Software Tester
Among the myriad answers we might consider are:
- An analytical mind;
- The ability to see things independently and from all points of view;
- To be able to talk the different languages spoken by IT and the Business, and to understand where each is coming from;
- One who has proven their skills to a certifiable standard, namely the ISTQB Foundation in Software Testing and the ISTQB Advanced certificates;
- To bring testing design and acceptance criteria into business analysis, systems specification and design.
But in addition, software testers need that extra something in their minds that allows them to manage the end-goal; but to also see:
- How to fulfil the three imperatives and the pitfalls along the way;
- If the business requirements ask for something that is sensible and will
underpin its day-to-day operations. The same is equally true of omissions, too; - If what is agreed with the business can be translated into something that IT can build and will be both deliverable and usable;
- How to plan testing at each phase of the life cycle so that acceptance criteria are met with the minimum of spend;
- Risk and mitigation before or when things are going pear-shaped.
The software tester is the conduit who makes things happen, by operating as the all-seeing independent witness and finding problems with analysis, specification and design – long before we’ve wasted money coding flawed solutions.
How to get into Software Testing
There are many ways to become a software tester, and how long it takes depends upon the route selected by an individual or the company they work for. Consider:
- Getting thrown in at the deep end;
- Working it out;
- Undertaking certificated software testing training;
- Getting coaching and mentoring from someone with the right qualifications and experience.
The first two of these methods will provide a baptism by fire, but they are most unlikely to provide a solid basis for software testing to build an individual’s career or provide stakeholders with the confidence they need to accept new or modified systems as solutions to underpin their business.
Points 3 and 4, however, provide the most recognised and accepted route to becoming a certified software tester with increased organisational value who can move up the corporate ladder. Indeed, if we expect testing success then equally we will need to invest in software testing courses and mentoring over the longer term, as professional software testing training and qualifications yield better results than those who have not had the benefit of formal software testing training.
The most recognised software testing training schemes in the UK, Europe and beyond include those offered by the International Software Testing Qualification Board (ISTQB) or the International Software Quality Institute (iSQI). Once you’ve invested, you’ll find that your team:
- Talk a common language;
- Can provide sensible estimates that can be relied upon;
- Understand and use the correct and effective processes;
- Know what and how to plan and run testing that proves your system is fit for purpose; or if not then the risks and workarounds for going live;
- Have identified the risk and impact of failure, and how to both prioritise and mitigate both;
- Put the right controls in place to ensure that things start and remain on track;
- Understand how to measure and provide confidence to stakeholders, be they from the Business. IT, external suppliers of other third-parties, such as a Regulatory Body;
- How to engage and drive everyone to the right result – with the three key imperatives at the fore;
- Provides information that informs cogent decision-making.
What Software Testing Training to take?
There is no doubt that ISTQB Software Testing Certification and iSQI Software Testing Certification schemes have moved the software testing world on in terms of maturity, approach and success, but it is important that the right blend of training is provided based on career stage, software testing role and corporate need be considered.
The following table plots the relevant certificated and practical training courses that are recommended by software tester role.
There is no doubt that ISTQB Software Testing Certification and iSQI Software Testing Certification schemes have moved the software testing world on in terms of maturity, approach and success, but it is important that the right blend of training is provided based on career stage, software testing role and corporate need be considered. The following table plots the relevant certificated and practical training courses that are recommended by software tester role.
From the diagram, we can plot a route for certification that begins with ISTQB Foundation, and which leads on to ISTQB Advanced Certifications, Agile Certifications and multiple choices to build both individual and organisational capability.
Why Train and Certify
Systems development is clearly a very expensive business that is manned by expensive teams to deliver solutions for business that will keep it ahead of the competition.
The responsibility of the tester is both wide-reaching and key to success. Like professionals in other careers, such as Civil Engineering, Medicine and countless others we consider business critical, you would expect them to come with the right qualifications, right? That is, certified by their governing body to have reached a standard that you can rely on.
In my experience of systems delivery, I have seen many development and maintenance programmes deliver 80% of what is needed for 150% of the budgeted cost; and in almost all instances the common-factor has been the lack of a professional software testing team or one that has not been listened to and isolated from key decision points. Why, when one considers IT spend on systems development and the cost of failure to business, would you risk have uncertified people overseeing your business-critical programmes? It is not a matter of what software testing training costs, but what it costs not to do it.
Don’t get left behind: Decent software testing that yields results needs investment in training.