Fondamentaux du test, revus pour l'automatisation · Leçon 3 sur 5

Tables de décision & transitions d'état

Certaines règles ne sont pas une plage de nombres — ce sont un mélange de conditions oui/non. Deux outils bien rangés garantissent que vous ne ratez jamais une combinaison, ni une mauvaise séquence. Les deux ne sont que de la fabrication de listes soigneuse.

Par Shahriyar · Mis à jour

L'idée, en une ligne

Quand plusieurs conditions oui/non se combinent, écrivez chaque combinaison et son résultat. Cette grille est une table de décision, et elle vous empêche de tester le cas nominal et de crier victoire.

Combien de lignes ?

Voyez-le à l'œuvre

En automatisation la table n'est pas un tableur — ce sont juste des données : une liste de lignes passée à un seul test. Nouvelle règle ? Ajoutez une ligne.

▸ try it
# Decision table as data: 2 conditions -> 4 rows
# (in_window, item_returned, expected_action)
rules = [
    (True,  True,  "refund"),
    (True,  False, "reject"),
    (False, True,  "reject"),
    (False, False, "reject"),
]

def decide(in_window, item_returned):
    return "refund" if in_window and item_returned else "reject"

for in_window, returned, expected in rules:
    assert decide(in_window, returned) == expected
print(f"{len(rules)} rules covered")   # 4 rules covered

Lisez-le de haut en bas : vous avez listé les quatre combinaisons, écrit la règle une fois, puis vérifié la règle contre chaque ligne. Rien ne passe à travers.

Avancé — quand l'ordre compte

Les tables de décision attrapent les mauvaises combinaisons. Mais certaines fonctionnalités ont une mémoire, où la même action signifie des choses différentes selon ce qui s'est passé avant. C'est là qu'intervient le test de transition d'état.

Basé sur le guide Decision Table Testing de Guru99 (aligné sur l'ISTQB)

Toutes les leçons de Fondamentaux du test, revus pour l'automatisation

  1. La pyramide des tests & les quadrants — quoi automatiser en premier
  2. Valeurs limites & partitionnement par équivalence comme entrées d'automatisation
  3. Tables de décision & transitions d'état
  4. Test basé sur les risques — décider quoi NE PAS automatiser
  5. Shift-left, shift-right & votre stratégie de test d'une page