TEST TYPOLOGY

the best ally against legacy tests

Do not just test your code,
but also the way you design software,
and the team that delivers sofware,
and the organization that creates software.

bootstrap html templates

Metro Map of testing to a successful destination

Let us consider tests at the highest level of engineering and management of organization and process. Faithfulness tests enable to interpret a product vision as a faithful software. Working tests enable to observe the working of a software product to make it performing well, secured, safe, under control. Inspection-based tests enable organizations to learn and to improve themselves by experimenting practices. Relay tests enable to improve processes by assimilating the lessons learned.

Metro map of testing: faithfulness testing vs working testing
Metro map of testing: inspection-based testing vs relay testing

Tree of testing

Defining meaning of tests leads to refine, associate and hierarchize key concepts and informations between themselves. It avoids serious misunderstandings and confusions. Without a common language, people cannot coordinate their testing activities. Outside typology no strategy at any scale.

Typological tree of testing

Divide & Conquer Tests

Discover adaptative strategies of testing, while building an original typology of tests, from code to learning organizations.

Typology & Taxonomy of Testing

Typology is about characterization, while taxonomy is about categorization. Discover what makes the body of knowledge of GOST unique and so powerful in testing.

  • One typological model to hierarchize tests
    Any typology should have its typological model to define the classes of objects to study and to qualify the links between these classes. Thus any kind of test belongs to one typological class, so that all tests of the same class inherit the same properties.
  • Well-defined characterization to define tests
    Characterizing kinds of test is about finding a definition criterion that may be applied to all kinds of test. It is also about determining the minimal set of definition criteria (differentiating factors) to differentiate any couple of tests. If two tests are different, they should not have the same name. And a name should be used only to point one kind of test out, without it being possible to be wrong. The same characteristics are used to differentiate and characterize all kinds of test. Characterization is the key for consistent naming.
  • Rich, extensible categorization to divide tests
    Categorizing kinds of test is about finding a criterion of complementarity between many of them. Any kind of test may be categorized several times, in different ways, to be used according to its strengths and weaknesses. Categorization is the key for an effective test strategy.

Test Pyramid

Enable the proper levels of testing according to what must be tested and control how the time and the effort for performing or automating tests are used.

Test Pyramid: validation vs verification

Quadrants of testing

Travel throught the quadrants in a clockwise direction to discover the dual aims of their tests.

Software Testing Quadrants

Classification of testing

I built a table to classify all concrete tests of my typology in the same way as the periodic table of chemical elements. Here rows (periods) and columns (groups) are used to identify some properties of tests: their related layers in a software under construction and in a building process. Depending on whether they are implemented or missing, it is possible to foresee what kind of software is going to be delivered. Another way to use the periodic classification is to manage roles and skills in organizations.

From systems to be tested to deliverables to be inspected

Every test in the same row (period) has the same system under test. The size of the system grows from top to bottom as the number of layers of onion. On the left of the table, such a system is a piece of software to be tested; on the right, such a system is a deliverable with added value. Incremental development crosses all layers.

Test targets


Every test in the same column (group) has the same test target. Kinds of target cover all requirements to build softwares and to make organizations grow up. An expandable test (i.e. a metatest) in an open-minded, learning organization is a great way to keep practical knowledges from experiments over time and to make them actionable and shareable. Iterative development crosses all matters.

Cell of the periodic classification of software testing
Periodic Classification Of Software Testing

© Copyright 2018-2019 Xavier Pigeon - All Rights Reserved