Automated testing treats risk

By encoding and preserving knowledge, test code directly reduces uncertainty by completing information about objectives.

Every software system is designed to deliver value by helping stakeholders achieve their objectives.

Specifically, software offers two distinct types of value: behavior and structure (Martin, 2017). Behavior represents what software accomplishes today, while structure defines what software can achieve tomorrow (Beck, 2024).

Stakeholders include individuals and organizations that influence, are influenced, or recognize an influence from a software system. These stakeholders include users, customers, the software team, business stakeholders, and the community.

Objectives are the results sought to advance a mission aligned with a broader vision.

Software evolves and operates under uncertainty (Peterson, 2017).

Uncertainty is a lack of complete information about objectives. It introduces risk, which is the effect of uncertainty on objectives.

Risk represents deviations from expectations, encompassing both opportunities and threats.

The level of risk depends on consequences and their likelihood. Consequences are outcomes of events affecting objectives, while likelihood is the chance of an event occurring, expressed in general terms, probabilities, or frequencies.

Risk can be treated by modifying it to align with stakeholder objectives. Strategies include avoiding risky activities, embracing risks for opportunities, eliminating risk sources, altering likelihood or consequences, sharing risks, or retaining risks through informed decisions.

Software development and operations involve risks from various sources, including people, hardware, software, and the environment.

Automated testing treats risk by applying these strategies and benefits all stakeholders. While it indirectly treats risks related to hardware and the environment, it is especially effective at managing risks involving people and software.

Future articles will explore risks related precisely to people and software, examining their drivers, consequences on behavior, structure, and stakeholders, and how automated testing addresses them, highlighting the diverse benefits across stakeholders.

This series aims to help software teams and business stakeholders view automated testing as a core practice for treating risk, not just a technical task. Software is a medium for storing executable knowledge, with production code capturing how a system operates and test code capturing what it should achieve and why those objectives matter. By encoding and preserving knowledge, test code directly reduces uncertainty by completing information about objectives.

References

Beck, K. (2024). Tidy first?. O’Reilly Media, Inc.

International Organization for Standardization. (2022). ISO 31073:2022 Risk management — Vocabulary. https://www.iso.org/standard/79637.html

Martin, R. C. (2017). Clean architecture: A craftsman’s guide to software structure and design. Pearson.

Peterson, M. (2017). An introduction to decision theory. Cambridge University Press.

Subscribe to Adriano Di Giovanni

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe