J'essaie d'énumérer un certain nombre de cas de défaillance pour un système sur lequel je travaille afin de faciliter l'écriture des cas de test. En gros, j'ai un groupe de "points" qui communiquent avec un nombre arbitraire d'autres points par le biais de "chemins" de données. Je veux trouver des cas de défaillance dans les trois ensembles suivants...
- Ensemble 1 - Cassez chaque chemin individuellement (trivial)
- Ensemble 2 - Pour chaque point P du système, briser les chemins de façon à ce que P soit complètement coupé du reste du système (également trivial)
- Ensemble 3 - Pour chaque point P du système, interrompre les chemins de sorte que le système soit divisé en deux groupes de points (A et B, à l'exclusion du point P), de sorte que le seul moyen d'aller du groupe A au groupe B soit de passer par le point P (c'est-à-dire que je veux forcer tout le trafic de données dans le système à passer par le point P afin de m'assurer qu'il peut suivre le rythme). Si cela n'est pas possible pour un point particulier, il faut l'ignorer.
C'est la série 3 qui me pose problème. En pratique, les systèmes auxquels j'ai affaire sont suffisamment petits et simples pour que je puisse probablement trouver une solution par "force brute" (en général, j'ai environ 12 points, chaque point étant relié à 1 à 4 autres points). Cependant, j'aimerais trouver un algorithme plus général pour ce type de problème, si quelqu'un a des suggestions ou des idées sur la façon de commencer.