Software quality assurance is a major part of ensuring that the software meets the requirements for the job it’s intended to do. While it’s normal for software to have a couple of minor bugs on release, these should be minimized as much as possible — ideally eliminated — and detecting and identifying bugs is the role of software QA and maintenance.
Some bugs are minor and annoying, such as a button not registering the first press. Others are more destructive and could lead to major losses, such as an e-commerce website creating faulty totals or — worse — a piece of medical software not displaying results correctly, resulting in misdiagnosis. in some cases, it can result in records being deleted, which is a major problem if you are in charge of criminal records.
Good quality assurance systems ensure these bugs do not make it into the end product, and maintenance helps prevent and resolve potential future conflicts with new software and operating system upgrades.
Software providers generally follow a fixed quality model, and one of the key standards is ISO/IEC 25010. Those following this protocol look at eight core quality characteristics:
- Functional stability
- Performance efficiency
While it’s possible to do all of this near the end of the process, it’s much more effective to do this throughout the process — preferably with the QA team being integrated into the process at all levels.
Functional stability simply means how well the functions within the software cover the needs of the user and the tasks specified, how well it creates results and to what degree of accuracy, and how well it allows users to do this. These can be simplified as completeness, correctness and appropriateness.
Performance efficiency is how well the software meets processing and throughput requirements (basically how long it takes to do the job), how well it utilizes the resource of each system, and whether limitations to system requirements are reasonable. This can be simplified as time behavior, resource utilization, and capacity.
Compatibility is simply how well the system performs with other system components and software, notably any databases it must access or any processes that it must use. Most systems are not dedicated to one piece of software, so it has to be up to use resources in a way that is not to the detriment of the overall system. In addition, it must also be able to exchange information effectively as required. This can be simplified as coexistence and interoperability.
This process can be a little tricky when it comes to compatibility across multiple systems. It’s always easier to design for one operating system or web browser, so if a piece of software needs to be functional across multiple systems, this stage of software QA usually takes longer.
Usability is often one of the major aspects of a product that makes or breaks the system in the eyes of its users. Ideally, the software QA process looks at intuitive the system is and how easily it can be learned and operated. In addition, it needs to be able to prevent users from making critical errors, look easy to use, and be accessible to a wide section of the population.
This last characteristic is vital, as many users who have sight impairments or even hearing impairment can find that most software is not set up to allow for use with screen readers or have alternatives to sounds when it comes to alerts.
Reliability is simply how long it performs for a set amount of time. These include how likely issues are to be raised during normal operation, how well it can tolerate hardware or software faults, and whether the data that’s affected during a crash can be recovered.
When software QA looks at security, they want to ensure that only authorized users can access the system, how well the system prevents unauthorized access, and what systems there are to check who did what and when and how accurate these systems are.
Maintainability is all about how well the software can be updated to correct issues, increase functionality or adapt to new user environments. It might look at how modular systems are and how the base code can be adapted to re-use.
There’s also the question of analytics, so the developers can check how the software is used and what causes certain issues. For maintenance, of course, the software must be modifiable so that updates can be added to this software without a full reinstall.
Generally, software needs to be ported from one environment to another, so a software QA would look at how adaptable it is, how installable it is and how easily it can replace another piece of software as needed.
Ultimately, software QA and maintenance is a major part of the overall process, and it’s worth asking questions as to how your chosen provider handles this aspect of the development process. If you’d like to know more about our software quality assurance, talk to us today.