Transforming Application Quality Through Software Quality Optimization
Software vendors recognize the need to deliver high quality products free of major defects to avoid revenue loss, brand damage and escalating support costs. However, as software cycles are compressed, QA is pressured to deliver the impossible: defect-free software within an ever-shrinking timeframe. Quality efforts are the most time-consuming, costly and labor-intensive aspect of product development, representing as much as 60 percent of the total cost of development, according to Gartner. Yet many organizations still view QA as a discrete end stage in the development process. Sandwiched in between late development schedules and aggressive application release deadlines, QA teams have little time to detect and resolve errors.
Moreover, today’s on-demand software requires that applications continually adapt to the needs of the user community, squeezing QA time even further. In this environment, it no longer makes sense for QA to be the sole party responsible for software quality. Quality initiatives are most effective when they occur throughout the application development lifecycle, in parallel with development efforts. This allows the organization to apply the intellectual capital and experience of those involved in the application design to the quality design strategy.
Another potential area for quality improvement is through the development of consistent quality practices and processes. Often project teams operate as individual “silos” that utilize their own approach to quality. This results in disconnected practices that foster inconsistencies throughout the development process. Even worse, many development teams still rely on manual and homegrown approaches, such as documenting errors in spreadsheets and viewing logs to locate problem code. This decentralized approach adds to the cost and complexity of quality practices, leading to the loss of quality-related information, duplication of efforts, lack of version control and ultimately a lack of visibility into an application’s quality status. Companies need a standard process for defining, measuring, managing and improving software quality processes and ultimately, software quality.
Software Quality Optimization (SQO) is an advanced approach to software quality that connects all quality stakeholders to improve software quality and performance. By employing SQO strategies, quality stakeholders are able to effectively automate and manage the processes associated with defining, measuring, managing, and improving software quality. SQO achieves this through a multi-pronged approach. First, it brings discipline and structure to the testing process to foster repeatable, reusable quality assets. Second, it promotes communication and collaboration between organizations across the application lifecycle, bringing a more holistic approach to quality initiatives. Lastly, SQO fosters alignment of quality priorities with business goals.
SQO focuses on four aspects of quality:
Defining application quality goals and the metrics against which quality will be measured. This involves using an agreed-upon set of criteria and standard methodology for defining what success means in your business. Quality metrics are identified based on business goals and drivers, defining a desired level of quality, and measuring current quality to set a baseline. Quality management systems must centralize the definition of quality and the metrics associated with tracking quality levels so that all stakeholders are aligned around the same goals and work from the same information. This way, application release readiness decisions are made based on the attainment of predefined quality metrics.
Measuring application quality. Once the guidelines are in place, stakeholders can measure application quality status and progress against the previously defined quality benchmarks. These benchmarks set the stage for objective analysis and decision making about overall application quality and its readiness for release.
Managing quality throughout the entire application lifecycle. This involves integrating the people, processes and technologies involved in architecting an application. By gaining this level of visibility throughout the process, decision makers can more effectively allocate resources, dynamically adapt to new business requirements and be more proactive in identifying and resolving issues that could interfere with the application’s quality or release date.
Improving quality on an ongoing basis. The concept of improved quality practices needs to be reintroduced into the process. For example, reusing test assets and leveraging internal resources can have a tremendous impact on software quality and development costs not only in the current release of an application, but in subsequent versions as well. Bringing new efficiencies into the quality process helps ensure time-to-market goals are met without sacrificing product quality.
Finally, there are five key elements that make up an effective quality management system.
Requirements management involves capturing, organizing and documenting key business requirements and verifying that they are testable. The system should provide shared access to requirements so that development and testing teams can work in parallel. As developers begin to build the features specified in the requirements, QA can create the test strategy and test plans. By capturing the history of requirements, users can determine the impact of changes on a test plan or release schedule.
Test planning. With clear insight into which features must be tested to meet key requirements, personnel can design the most appropriate tests, define the nature of the test, test type (for example, regression, functional, or performance), level of testing (unit, system, integration, pre-production release) and platforms to be tested. Test planning should include the ability to map results against predefined goals to determine how well the plan meets stated objectives.
Test execution. To improve the efficiency of testing, a quality management system should provide centralized access to test assets, including requirements, test plans, test scripts, test schedules, coverage and quality metrics. Development teams gain an efficient way to schedule and manage distributed test executions, maximize the productivity of testing efforts and shorten the testing cycle between builds. This is particularly useful for distributed development teams.
Issue management. Automatically recording and tracking defects and monitoring resolution across multiple products and releases gives users early clues into potential quality issues and ensures traceability throughout the application lifecycle. Providing fully documented and precise information about defects enables developers to easily reproduce errors for rapid resolution. Users should have an aggregated view of overall application quality, encompassing manual, unit, functional, regression and load tests.
Reporting. It is essential that all stakeholders have up-to-the-minute access to consistent quality status and related quality information based on the level of detail they need. Management also needs a high-level, summary view of the testing process so they can quickly understand what progress has been made against the overall project plan.