Pattern Language

Tags: pattern, pattern language, metaautomation

The quality automation problem space is the scope of opportunities to automate measuring, recording, and delivering quality information on the SUT to the people and processes of the software business.

Quality automation code implements solution(s) within the quality automation problem space.

MetaAutomation is a pattern language that presents an ideal solution for the quality automation space focusing on driving and measuring the SUT and making the resulting quality information available to the business.

My book on MetaAutomation (3rd Edition) describes this in much more detail and provides means for readers to get involved in clarifying and adding to the MetaAutomation pattern language, to make it a living pattern language, used and nurtured by the software quality community to improve software productivity and the happiness of people who do it.

The MetaAutomation pattern map

The table below describes the patterns very briefly.

Pattern Name

Problem

Solution

Hierarchical Steps

How to record all interaction details with the SUT to support query and analysis?

SUT-driving code to create at runtime an extensible hierarchy, like XML.

Atomic Check

How to maximize the value, trustworthiness, speed, and scalability of quality data?

Make each check independent and drive the SUT to verify one requirement or requirement cluster per check.

Event-Driven Check

Events drive the SUT, internally and externally. How to get fast, repeatable, trustworthy measurements of functional quality?

The SUT subscribes to external events from the automation. Verifications wait on events as needed.

Extension Check

How can the team get fast and trustworthy feedback on quality issues that cannot be driven deterministically?

Instrument or measure the SUT on the non-deterministic quality aspect and store the data in the artifact of another check. Run verification(s) on the data created by the first check.

Precondition Pool

Is there a way to boost check performance, make checks more reliable, and improve check run data?

Actively manage preconditions out-of-line in a pool or pools.

Parallel Run

How can the business run many checks quickly, to scale with available computing resources?

Distribute runs of the individual checks across (virtual) machines or environments.

Smart Retry

How can automation not interrupt team members with false positives and check failures that need reproducing?

For configured root causes of a fail, immediately retry the check for a total of 2-3 tries, and group resulting data.

Automated Triage

How can automation direct notifications of check failures to select responsible individuals, rather than everybody?

Send actionable notifications only to those who would act.

Queryable Quality

What does the team need to get queryable and interactive role-appropriate views, not just of check results, but of detailed SUT behavior and performance as well?

Create a link-able, query-able interactive portal to show the data, starting with business-facing details and allowing drill-down to technology-facing details.