Features and relationship between testing and software quality
The concept of quality is intuitively an aspect of fundamental importance in software design; reality, instead, leads us to notice that this aspect is not always clear, also because it is difficult to identify the very meaning of the term quality and the object of comparison with which to compare our product to ensure that this is not sufficiently “good”. The quality is defined according to the IEEE as: “The degree of combination of appropriate elements that express the pleasing characteristics of a software”.
In fact, what is pleasant and what is not seems to be a completely subjective question, but without a doubt the definition sheds light on many aspects. Quality can be assessed through the measurable attributes of a software. How can we measure the quality of the software? We must necessarily consider software as a set of different aspects:
- Software: Testability, functionality, completeness
- Database: Data organization
- Source code: Simplicity, maintainability, scalability
- Accessory data: Error density (must be minimum)
If for each of these elements, depending on their size, we express a numerical quantity, we can sum the individual quantities and obtain a tangible quantity that expresses the “goodness” of the product: comparing this quantity with that measured on other software we have a qualitative comparison , which allows us to get a ranking of the best products available. This is the technique used by benchmarks to verify the reliability and quality of products and by anyone who wishes to compare similar products in order to understand which are the best.
But how does the test activity relate to the quality of the software? Without a doubt, testing an application in order to solve the bugs present helps to improve the quality of the product, because it makes it work properly; but not enough. In other words, testing means matching the product with the customer’s design specifications; if, at the outset, these specifications are not realized with reference to the usability requirements as an example, the test cannot guarantee quality in the product. The task of the tester is therefore to identify anomalies and communicate them, NOT to align the product to the desired standards. Quality can be planned and obtained in the design and construction phase, never in the testing phase.