Ensuring the quality of software is one of the most important activities in the software lifecycle. Software quality has evolved into a parallel lifecycle process alongside the development lifecycle with quality concerns factored in at every stage of the software lifecycle. This is a welcome development according to Ovum.
In a new report, the independent technology analyst firm looks at recent trends in the software quality space and emerging models in software testing. Software quality is critical to business because IT is no longer just about keeping the lights on and supporting the business.
Chandranshu Singh, Ovum Senior Analyst, Software, and author of the report, says: “Organizations need to ensure that all functional as well as non-functional requirements are not only tested adequately, but are also on schedule”.
While one may think that paying more attention to software quality at every stage of the software lifecycle will increase the cost of software development as well as the time to market, this is not the case. By considering software quality issues before the QA phase, organizations can not only reduce the cost of quality, but also shorten the time to market or time to deployment because the defects get caught earlier in the lifecycle.
Some common challenges associated with software testing stem from deficiencies in the test process and not the activity of testing itself.
Estimating the test effort is one of the mains issues that plague test teams in many organizations. For this reason, agile development methodologies stress the inaccuracy of estimates and advise practitioners to take them only as guidelines to be revised as and when new information becomes available.
Singh adds: “This approach leads to realistic planning and ensures that the project stays on track because the team does not commit itself to its first estimate, which by definition would be furthest from the actual time/effort required”.
IT departments often face a disconnect between their software development and software quality processes. Agile methodologies have challenged the traditional view of testing and have led to new approaches that are being adopted by software quality teams regardless of the development methodology followed. Current models in software testing have emerged from agile environments. Agile development methodologies have had a significant impact on software processes. The basic assumption that Agile methodologies challenged was that testing could only be taken up after entire application source code was available. Approaches such as test-driven development (TDD) and behaviour-driven development (BDD) are codified software testing best practices that emerged from agile environments.
Singh comments: “TDD emphasizes testing and tests are written to validate requirements before coding starts and code is then measured against tests. This approach is more efficient as it requires developers to think about quality early in the lifecycle”.
Another concept led by agile methodologies is BDD. BDD expresses requirements in a language understood by both business and IT, thereby extending the principles of TDD to the business.
Singh says: “BDD is a mainstream and common way to express business requirements. It is an effective method for capturing feature requests from business users. Typical requirement expression format in BDD is a triplet that includes user role, feature requested, and expected business benefit.”
“BDD is a relatively new feature in the complex landscape of software development, but it attempts to solve some problems that are fundamental to the nature of software development activities. BDD is an interesting space to watch, and organizations should move beyond expressing requirements in terms of software behaviour and embrace BDD frameworks to facilitate easier automation of their quality processes,” concludes Singh.