Test Strategy Approaches

Testing is an integral part of a project regardless of the type of development model which is being applied.   Whether the development model is:

  •       Sequential such as waterfall, v-model & W-model; 
  •        Iterative or incremental models, such as rapid application development, and  Rational Unified Process;
  •        Agile models including SCRUM and extreme programming; or
  •        DevOps involving practices such as continuous build, integration, test, and deployment processes, creating environments on demand.

The test manager and test engineers must be properly aligned with the development model being used for the project.  Irrespective of the project’s scale, complexity, risk and development model, managing the testing process for any development project comprises of developing test artifacts, processes and systems to maximize the probability that the solution is fit for purpose within the project context.  There is not a one size fits all approach to a test strategy and management.

Quality Management

Over the past several decades, a well-defined set of methods were used during the design, production and delivery of products, which collectively became known as quality engineering.  A subsequent body of knowledge evolved which was described by various terms such as quality control or quality assurance.  Out of this quality movement a new management philosophy to encapsulate the quality system became known as the body of knowledge called “total quality management.”

According the ISO 9000-2005 standards, quality was defined as the “degree to which a set of inherent characteristics fulfills requirements.”  A well-known definition of quality by Gavin (1984), which included numerous dimensions was:

  1. Performance- the product’s ability to do the work it is supposed to do.
  2. Features- things that add to the convenience and comfort.
  3. Reliability- the ability to perform without failure over time.
  4. Conformance- the degree to which the product meets the codes of a state or community. 
  5. Durability- the length of time the product will last until it is discarded.
  6. Serviceability- the ability for making repairs easily, quickly, and at a reasonable cost.
  7. Aesthetics- sense of appeal, such as color, sound, feel, and comfort
  8. Perceived quality- the impression the product creates in the customer’s mind.  

This definition is characterized by many dimensions, and would certainly have different meanings for different types of products. 

Quality management in manufacturing and other industrial settings set a foundation of knowledge that became part of the lexicon for quality management in software engineering. 

The ISO 9000 Standard 

A quality management system comprises of the process guidelines, rules and accountability that a company works towards, including the documentation of these process descriptions, procedures, work instructions, and best practices and a mechanism to monitor and continually improve the quality management system.   The QA system documentation would usually include outlining all the business processes which are necessary to meet the company’s quality objectives. This would include development/engineering, procurement/purchasing, production and maintenance/service, and regulating all the QA protocols within each of processes within each of these areas of the business.  Most large firms seek compliance with the quality management guidelines outlined in the ISO 9000 family of standards.  

The ISO 9001: 2000 version was a more process-oriented version of the standard and made a distinction between management processes (legal roles & decision-making) and value creation (development, production, services and maintenance) and internal processes such as supply chain management, accounting, procurement/purchasing. 

The test manager should be aware that software testing forms part of the quality management set of activities necessary to produce and deliver software products which are fit for use by customers and users and comprising of the desired features. Quality management may extend to the various deliverables including requirements documents, development deliverables such as unit test results, code review information, and test deliverables.  The study and practice of the broad set of quality management activities is sometimes called software quality assurance.  Comprehensive quality management stipulates that software quality assurance occur throughout the entire software lifecycle.  This could include key competencies such as reviews, verification and validation, process standardization and software process maturity.  

Quality Management in Agile

Since the agile movement came on the scene and has become prevalent in many organisations, quality management has needed to adapt and be incorporated into the agile project methodology.

“Conventional quality management is a top-down process. A central QM team is responsible for documenting and, where it makes sense, standardising the processes involved. The team draft the process manuals and rolls out standardised processes in all relevant departments. In contrast, agile methodology is a bottom up process. Agile teams devise their own working methods, so QM staff have to learn to adapt.” (p. 148, Linz, Testing in Scrum) 

Retrospectives and Process Improvement

One of the central tenets of the ISO 9000 standard is the requirement for continual improvement, and the Sprint Retrospective that forms part of the Scrum methodology is one method of achieving this.

 Test Strategy Overview                                                          

The test strategy should describe the test approach and methodology for a project or an organisation’s general test approach and methodology.  The test strategy should be informed by the project methodology, system architecture and development lifecycle. Also the test strategy should not only be informed, whether by an organisational policy on quality assurance, but the overall project management framework (such as agile or Prince2). Importantly it should take into consideration the situational context of the project environment- the technical context, the business context and the social context.  Situational awareness means having awareness of the classic project management trade-offs in time, quality and resources for a project or programme of work.  The test strategy and the processes described within it, should be consistent with these considerations,  the business goals of the organisation and the project management framework. 

The test strategy should include the levels of testing. Depending upon the scope, technology, complexity and risk of the project these levels will vary from project to project. Typically test levels would begin with component testing, then integration and system testing and usually user and operational acceptance testing. In highly agile projects these levels are executed in small increments in short timeframes.

 The following are some example of various test strategies:

  1. Methodical Strategy which could be based upon software quality characteristics, involving predetermined test conditions, based upon international quality standards such as ISO25000 (which replaced ISO9126).  This could include a collection of logical test conditions which are associated with a particular application, functional and/or non-functional areas. 
  2. Process or standard-compliant strategies, such as biomedical devices subject to compliance standards (for example the FDA), requires the test team to follow a set of processes defined by the standards committee or other panel of experts.  This would necessitate developing procedures that address compliance specifications and the relevant standards documentation.
  3. Consultative strategies may be appropriate where the test team relies on the knowledge and skill of one or more key stakeholders such as architects, developers, business analysts and product specialists.  
  4. Model-based strategies and model-based testing, involves the generation of test input data, based upon a model which is the information about the domains of the input values and the test generation involves clever selection and combination of a subset of those values to produce test input data.  For example, in model-based performance testing of mobile device application, models could be developed of incoming and outgoing network traffic, active and inactive users, and resulting processing load, based upon current usage and trends over time.  Also models might be developed to considering the current production environment’s  hardware, software, data capacity, network and infrastructure. Models may be developed for expected throughput rates, response times, and resource allocation. 
  5. Analytical strategies, including risk-based testing, where the test team analyses the test conditions to cover and conducts a risk assessment which informs the level of test coverage. 
  6. Agile strategies – are used when the development project(s) adopt agile development practices.  An agile testing strategy is based upon a whole team approach .  This could include agile programmers using test-driven development (TDD).  The following diagram illustrates a well-recognized framework for an agile testing strategy in the book, Agile Testing: A practical guide for testers and agile teams:  

Eclectic Test Strategy

Depending on the context, in order to address various technical and business drivers, such as security compliance, agile methodology and the level of design documentation or its absence, the test strategy may need to be eclectic in its approach. This means that rather than a monolithic approach which narrowly focuses on a particular method, such as a methodical strategy, an eclectic strategy encompasses various approaches. In my own experience, it is often valuable to combine a methodical approach which is complimented with a risk-based assessment and prioritisation of functions and with non-planned exploratory testing techniques. Exploratory testing techniques relies upon the level of skill and experience of the tester(s) involved in test execution. In summary, an eclectic test strategy may well yield greater breadth of testing than a single focused testing framework.

 Trade-off Decisions  

Most projects require a trade-off between quality, schedule, budget and features. These trade-offs may be known at the beginning of the project or may become apparent during later phases of the project. The test manager should be aware of the inter-dependencies between these project components (time, resources and quality) and be prepared to participate in trade-off decisions. While the test manager should always defend quality, there are times when quality is not the most important aspect of the project. The test manager must be able to objectively analyse what changes in the schedule, budget or feature set may affect the overall quality of the project, for better or worse. For example adding unplanned features into a project may reduce the overall quality as the testing resources are spread more thinly but the new feature may be critical to the acceptability of the project.

 While the test manager may not agree with a project trade-offs particularly those that may lower the overall quality of the delivered product, the manager must be able to provide the information to the stakeholders so that everyone can clearly understand the anticipated impact of the change. For example, if the net result of a proposed changes to reduce the testing time for all components by one third, what does this mean for the overall quality and in terms of the solution being fit for use by the customer? The test manager should be able to explain the impact of the reduction in testing in terms of the increased risk to the product quality and should clearly explain areas that will receive less or no testing a result of the added features.

 Change Management

Changes to project scope can influence the overall schedule budget features and quality goals of the project. Changes must also be managed in order to be tracked, scheduled, and assist regarding impact. A good change management system is a requirement for a well-managed project. The test manager, in particular, needs to track changes that affect the original estimates and schedules. These changes are not necessarily limited to additions or deletions of features. Any change that affects the testing aspects of the project must be taken into consideration. For example, if the development team does not receive a server that is required for compatibility testing, the testing schedule will be affected.   

Can software engineering contribute to solving the climate crisis?

Who feels a sense of urgency to be a part of the solution to the climate crisis? How can software engineers be involved in projects that contribute, even in a small way, to preventing global warming to less than 1.5 Celsius by the end of the century?  The short answer is yes there are numerous use cases in which software engineering can positively impact the planet and climate change.   

Glasgow Climate Summit

Views of those involved vary widely in relation to the degree of success of the recent Glasgow Climate Summit. British host of the event, Boris Johnson, told leaders that it was ‘one minute to midnight’ on the doomsday clock.  But at the 11th hour of the Summit during which India and China, due to their reliance on coal, changed the wording of the agreement to ‘phase down’ rather than ‘phase out’ coal, Johnson observed the result was ‘tinged with disappointment’ and giving the result just over ‘6 out of 10’. 

The climate summit at the least appeared to facilitate a sense of urgency among nations of moving more quickly towards the goal of mitigating the impact of climate change.

Through the COP26 negotiations in Glasgow, 140 countries strengthened their 2030 emissions targets, which was an improvement on the previous Paris Agreement.

“Glasgow has not closed the emissions gap in 2030, which is vital to keeping 1.5C alive, but it has set up an urgent process to address this gap, inviting countries to submit more ambitious national climate targets by the end of 2022,” Bill Hare, senior scientist and chief executive at Climate Analytics, said.

The real test of COP26 was a success is whether the promises made are turned into reality.

Each leader involved in policy decisions might consider the diverse range of solutions which are systematically described and ranked in Paul Hawken’s book, Drawdown: The Most Comprehensive Plan Ever Proposed to Reverse Global Warming.  Hawken ranked the solutions based upon the amount of greenhouse gases they can potentially avoid or remove from the atmosphere. Energy efficiencies in refrigeration is at the top of the list.  

Software engineering and climate solutions

How can software engineers get involved and contribute to the climate emergency?

There are numerous technologies and use cases which contribute to more sustainable climate change solutions at different scales.  For example, systems dynamics modelling and predictive analytics, energy markets and carbon pricing mechanisms systems, energy optimisation and smart metering, internet of things, smart grids to name a few.  

Easterbrook’s paper Climate Change: A Grand Software Challenge, summarizes the types of projects that software engineers could use their skills to contribute to climate change solutions.  Easterbrook reminds us that software engineering is part of the problem as well as the solution:

“Software plays a major role, both as part of the problem and as part of the solution. A large part of the massive growth of energy consumption in the past few decades is due to the manufacture and use of computing and communication technologies, and the technological advances they make possible.”

Easterbrook points out the benefits to climate science:  

“… software also provides the critical infrastructure that supports the scientific study of climate change, and the use of that science by society. Software allows us to process vast amounts of geoscientific data, to simulate earth system processes, to assess the implications, and to explore possible policy responses. Software models allow scientists, activists and policymakers to share data, explore scenarios, and validate assumptions.”  

Easterbrook categorizes the ways in which software engineering can contribute to solutions associated with mitigating climate change as follows:

  • Computer-supported science;
  • Software for decision-making;
  • Green IT.

Computers-supported science 

This category includes software development and optimisation of systems dynamic modelling for the earth’s systems, data-intensive science, and electronic notebook and workflow tools.

Software for decision-making

Easterbrook details various applications for software that is used for information sharing to improve public understanding of science and to improve decision-making at various levels.

Green IT

Green IT is concerned with improving power consumption of software and its infrastructure.

On-Premises versus Cloud Infrastructure

One of the significant determinants of energy efficiency in organisations is whether an organisation’s datacentre is on premises or outsourced to a cloud provider.  The Natural Resources Defense Council conducting an independent analysis detailing some of the factors to consider which are attributable to how effective the cloud solution is in mitigating climate change including:  server utilisation, the carbon footprint of the electricity used to power data centers, power usage effectiveness, and hardware efficiency.   

Source: Natural Resources Defense Council (Oct, 2012) Is Cloud Computing Always Greener?

Small, medium and large businesses and NGOs could consider the relative carbon footprint of each option when it comes to deciding where their datacentre will reside and when considering alternative cloud service providers, one criteria could be which provider is the most environmentally friendly in the long term.

Software engineers can get involved in projects concerning climate science, decision-making, systems dynamic modelling and predictive analytics, education, and green IT projects.  Parts of the climate solution include the development of smart cities, electric transportation, smart grids, energy efficiency at all scales and carbon pricing mechanisms.  Software engineers can play a part in one of the defining challenges of the 21st century.

References

Easterbrook, Steve  Climate Change: A Grand Software Challenge

Hawken, Paul (2018). Drawdown: The Most Comprehensive Plan Ever Proposed to Reverse Global Warming

Mims, Christopher, (Aug, 2010) How coders can help fight climate change,    https://www.technologyreview.com/2010/08/31/200618/how-coders-can-help-fight-climate-change/

Natural Resources Defense Council (Oct, 2012) Is Cloud Computing Always Greener?

Slezak, Michael (14 Nov 2021) COP26 has wrapped up in Glasgow. So was the climate summit a success?  https://www.abc.net.au/news/2021-11-14/was-cop26-a-success-glasgow-climate-pact/100619070