Testing – The Understated Hero of Development

Hardik Patel — 11 March, 2022

Software testing is a process of determining whether a software product meets the business requirements, and ensuring that the product is bug-free. The Test Team not only verify that the software functionality meets the business requirements, they also seeks out any errors, gaps, or missing functionality in comparison with the specified requirements.

As business requirements become more complex day by day, so too does the software to meet those requirements. This increased complexity means there’s a greater chance that critical bugs may become present in the software. Human error or misunderstanding can lead to issues at any stage of the software development lifecycle, hence testing needs to be performed throughout the project lifespan. The Test Team works to identify any bugs before the software product gets shipped to users, as well as perform software testing to comply with legal requirements, such as industry-specific standards within the Aviation or the Automobile industry.

Testers occupy a space alongside developers, approaching the software project with a different mind-set. They will possess specific testing knowledge and qualifications for the role, and have an understanding of how to apply various testing techniques and draw on their experience in testing similar products to verify the requirements and find bugs. Engaging a non-tester to test the software isn’t considered good practice and may ultimately be a false saving. Although quality is everyone’s responsibility in the team, the software tester’s job is to find any missed bugs.  

The Test Team can guide the customer to reflect on what quality means to them, by asking a series of relevant questions related to their specific organisation. Different businesses will have different definitions of this. For example, what defines quality for an e-commerce website will be different to what defines quality for an educational learning portal. Based on defined quality attributes and the project objectives, the Test Team will define a unique testing approach that is tailored to the application. Once everyone in the project team agrees to the approach, then the testing activities start. Additionally, the Test Team may also review the project contract, to ensure quality-related aspects are covered during the implementation and support phase.

Over time the fundamentals of software testing have remained the same, but as the practice has matured it has become more embedded in the product development journey. In the olden days the focus of traditional testing was to perform functional testing and reduce quality risk. Today, however, there is an increased focus on ensuring the business aspects of customers’ real needs are met – and better user experience is achieved through iterative feedback cycles and continuous testing.

Testing has many benefits – and one of the most important ones is cost-effectiveness. When the Test Team get involved early in the project lifecycle, it helps to reduce defect injection rate. The team will review requirements and contribute to improving the proposed design by providing ongoing feedback to the development team throughout project implementation, thereby reducing wasted effort if bugs are unchecked or requirements are misunderstood.

Fixing bugs at an earlier stage is not only simpler, it helps the project save money and ensures the project meets the timeline. It is therefore important to start testing as early as possible. Throughout the test planning and execution, the Test Team prioritizes test execution and defect fixes, so that critical items are addressed in a timely manner and the developers’ efforts are focussed on the critical areas. With the aid of automated testing, the development team doesn’t need to wait for the time-consuming manual regression test suite to be run by the Test Team.

There are a wide range of test types can be performed to manage different aspects of the software system. Tests can range from basic functional system testing to more specialized non-functional testing such as accessibility or usability testing. Different levels of testing occur at various stages throughout the project, varying from API testing to Production Verification Testing. During the User Acceptance Testing phase, the Test Team guides and supports business users who are unfamiliar with verification processes, helping them to define and manage their critical and frequently used business requirement test scenarios and reported defects. They also walk users through the implemented system, which can help them test it effectively. During the short period of the Product Verification Testing phase, the Test Team draw business users’ attention to areas that are critical and where they need to take precautions in the live environment. 

Each testing phase has predefined entry and exit criteria for quality checks, and each stage covers the verification of all aspects of the software, from checking the basic functionality to testing a system for unexpected conditions. Unexpected conditions can be as simple as a user inputting an incorrect data type or may be caused by a more intentional piracy attack. Testing provides a means to ensure that the system can handle these situations in an appropriate way. The Test Team also reports any quality-related issues and risks to the project team, and works with them to implement a suitable solution. 

Towards the end of the project, the Test Team also shares their test artifacts, including open defects (with resolution plan) and residual risks. Sharing this with the support team ensures that they can aid the business efficiently during the support and maintenance periods. 

Without testing, there is a risk of delivering poor quality products into a live environment. This can lead to users having difficulty using the software and can increase the overhead cost of supporting the application. Subsequent releases will be necessary to address critical open bugs in production, and these are not cheap to fix. It will require a lot of coordination between various teams, can jeopardize business operations, and will unduly financially burden the client. 

Software testing not only improves the product quality, but also helps organisations to gain customer confidence. When the user has a positive experience with the application, it reflects upon the business, and they will view the organization reliable and in a favourable light. In this competitive era, every business wants their customer to have a positive user experience and stay longer on their system for better business growth – and software testing helps in achieving that goal. In this sense, it is worth keeping in mind that the price of failure of software can be extreme, putting the entire organization’s reputation and business at risk.

e.g. Suncorp Bank – In February 2017, a malfunction during a routine upgrade caused the disappearance of money from customers’ bank accounts. Additional customer complaints included overdrawn and locked out accounts.

Testing is ultimately an integral element in providing a high-quality environment to the customer, and in turn building their trust in the business that provides the software. Testing means lower maintenance costs, results in more accurate, consistent and reliable product, ensures high-performance software operation – and ultimately impacts directly on the business bottom line.