Successful business transformation is defined by an organisation’s ability to rapidly deliver high-quality, affordable products that customers love. Key to this success is utilising continuous quality practices that enable faster and higher quality delivery – core aspects of quality engineering.
Quality engineering (QE) is building the right product and building it right. By embedding quality into not only the product itself, but also the delivery lifecycle, QE enables the delivery of secure, reliable, high-performing systems that improve customer happiness, reduce the cost of quality and accelerate time-to-market.
On the other hand, poor product quality can lead to product failure, profit loss, reputational impact, lawsuits, impact to consumers and businesses, loss of employment and in safety-critical systems, severe injury and loss of life.
Four key QE practices that reduce the likelihood of product failure by delivering quality continuously across the lifecycle are:
- Clarifying requirements
- Reducing risk
- Automating testing
- Testing continuously
1. Clarify requirements
Inaccurate requirements are still the third leading cause of project failure (PMI, 2018).
Even in Agile, user stories must be discussed and inspected for ambiguities and inconsistencies before features are built. Otherwise, teams run the risk of introducing defects, omitting customer requirements, increasing rework and missing delivery deadlines.
In addition, non-functional requirements such as performance, security, accessibility, reliability and data migration must be specified clearly and accurately as functional requirements to ensure the customer experience is not impacted by non-functional defects.
In Agile, user story reviews should be required as part of the Definition of Ready and can be achieved by applying the INVEST mnemonic. This includes reviewing both functional and non-functional requirements to ensure all are Independent, Negotiable, Valuable, Estimable, Small and Testable – with testability being a particular issue for non-functional requirements (e.g. ensuring performance requirements are measurable).
Agile teams should also practice the Three Amigos strategy to ensure business analysts, developers and testers discuss each user story, as this improves team understanding of each requirement, improving the quality and time-to-market of each developed feature.
In traditional projects, requirement inspections should be mandated under milestone gates. Integrated toolsets can then provide visibility and traceability from requirements to tests, defects and code throughout the lifecycle, ensuring each customer requirement is tracked throughout development, testing and release.
Developers spend on average 17 hours per week maintaining code (around 42.5% of their week), including debugging and refactoring, with 13.5 hours spent on technical debt and 3.9 hour on bad code. That equates to around $85 billion of rework worldwide annually.
In Australia, where the average developer salary is $101,987 per annum, that’s around $43,345 per developer, per year! Getting requirements and code right first time is critically important in reducing the cost of product development in business transformation programs.
2. Reducing risk
Requirement gaps can also be identified by considering how and why systems might fail. This is where risk assessment is one of the most effective methods for reducing the likelihood of product failure.
By identifying product, project and business risks in advance, organisations can predict the ways their systems might fail, enabling the identification of specific types of testing, test tools and test approaches that can be used to prevent such failures.
Quality risk assessments also enhance an organisation’s ability to write more complete product requirements – as product-related risks often point to gaps in the existing requirement set, which is a particularly effective for identifying gaps in non-functional requirements. And yet, less than half of organisations (47%) use risk assessments to strategise testing from a business, functional and non-functional perspective.
For Agile teams, risk assessment should be conducted during release planning, and revisited during iteration planning, to ensure the right types of testing are utilised at the optimal time, with all testing of each user story ideally completed in-iteration. For traditional teams, risk assessments should be carried out during early test planning to ensure test strategies and plans recommend the right types of testing within each delivery phase.
Standards are also an effective means of risk reduction in business transformation, particularly in regulatory environments where test evidence is required to pass audit. Standards like ISO/IEC/IEEE 29119 Software Testing can be used as a checklist for ensuring test evidence is available when required, and for improving confidence that the right testing practices have been applied to achieve greater levels of quality.
3. Automating testing
Test automation enables the type of fast and frequent delivery that is required to succeed in complex business transformation programs. Modern test automation solutions integrate with continuous integration and continuous delivery (CI/CD) frameworks to provide fast and frequent feedback, with embedded dashboards to give visibility to code quality, test coverage and defects present, as well as automated alerting and self-healing to ensure automation suites can be run continuously.
Also, in a continuous quality environment, test automation extends beyond pure functional testing and into automated non-functional testing – such as automated performance, security and accessibility testing – each of which can be integrated into CI/CD frameworks and implemented through market-leading toolsets.
However, 46% of organisations report that a lack of skilled automation staff is a key blocker to continuous testing. Engagement of automation experts also occurs too late for many organisations, with almost a quarter (24%) not achieving their desired level of automation coverage due to testing starting too late.
To maximise delivery speed in a continuous quality environment, the design of test plans and strategies covering each type of testing (including automated testing) should start in parallel with requirements gathering. Test execution for functional and non-functional test automation should also be conducted early and regularly, including in traditional and Agile environments.
In Agile, all functional and non-functional testing for each user story should ideally be completed in-iteration to avoid lengthy regression test cycles at the end of development phases, ensuring teams can meet delivery milestones.
4. Testing continuously
Continuous testing is also about embedding testing and quality practices throughout the product lifecycle, shifting quality to both the left and right. This starts with early engagement and collaboration with stakeholders, such as business, operations, user base and executive management, to align testing and product quality goals with organisational and product goals.
It then extends into the design of risk-based test strategies and plans through to in-iteration completion of all types of testing, as well as automated monitoring, alerting and self-healing of products in production.
The later defects are found, the greater the time and cost to repair, and the greater the technical debt and rework. This is particularly true in Agile when they are found after iterations are complete, and in traditional lifecycles when requirement defects are not found until after code is created.
By employing continuous testing practices that embed quality into requirements, design, code and test as early as possible, costly defects can be prevented from propagating throughout each product. However, with 78% of organisations reporting that testing starts too late in their lifecycle, and 69% of testers finding it difficult or very difficult to get involved early in product development, many appear to be struggling to shift quality to the left and test continuously.
Delivery optimisation to achieve continuous quality
To deliver quality continuously during a product’s development, organisations must optimise their product delivery frameworks and embed testing and quality practices early and throughout.
This includes measuring the existing cost, effort and value of testing and quality before and after optimisation, to enable benchmarking and future assessment of the cost and value of testing against business transformation goals. They also require a quality mindset and desire to improve product quality throughout all levels of the organisations.
This means looking for ways of continually improving the development process and the quality of each product. It also means having a customer mindset, where you view your products and services from the perspective of end-users.
Prepare for your transformation
Whether you are at the start of your business transformation journey or in the process of undergoing one, theses insights and recommendations should provide some worthwhile guidance to the needs, challenges and activities for well-executed lifecycle practices of agility, quality engineering, automation and continuous improvement as an outcome of business transformation.
Contact us today to find out how we can deliver on the solutions covered in the above steps, or simply aid you in your own transformation.