Ich habe einen großen und ziemlich komplexen Zustandsautomaten geerbt. Er hat 31 mögliche Zustände, die alle wirklich benötigt werden (großer Geschäftsprozess). Er hat die folgenden Eingaben:
- Enum: Aktueller Zustand (also 0 -> 30)
- Enum: Quelle (derzeit nur 2 Einträge)
- Boolesch: Anfrage
- Boolesch: Typ
- Enum: Status (3 Zustände)
- Enum: Handhabung (3 Zustände)
- Boolesch: Abgeschlossen
Eine Aufteilung in separate Zustandsautomaten scheint nicht möglich zu sein, da jeder Zustand unterschiedlich ist. Ich habe Tests für die gebräuchlichsten Eingänge geschrieben, mit einem Test pro Eingang, wobei alle Eingänge konstant sind, außer dem Zustand.
[Subject("Application Process States")]
public class When_state_is_meeting2Requested : AppProcessBase
{
Establish context = () =>
{
//Setup....
};
Because of = () => process.Load(jas, vac);
It Current_node_should_be_meeting2Requested = () => process.CurrentNode.ShouldBeOfType<meetingRequestedNode>();
It Can_move_to_clientDeclined = () => Check(process, process.clientDeclined);
It Can_move_to_meeting1Arranged = () => Check(process, process.meeting1Arranged);
It Can_move_to_meeting2Arranged = () => Check(process, process.meeting2Arranged);
It Can_move_to_Reject = () => Check(process, process.Reject);
It Cannot_move_to_any_other_state = () => AllOthersFalse(process);
}
Niemand ist sich ganz sicher, wie die Ausgabe für jeden Zustand und jeden Satz von Eingaben aussehen sollte. Ich habe begonnen, Tests dafür zu schreiben. Allerdings muss ich etwas schreiben wie 4320 Tests (30 * 2 * 2 * 2 * 3 * 3 * 2).
Welche Vorschläge haben Sie für das Testen von Zustandsautomaten?
Editar: Ich spiele mit all den Vorschlägen und werde eine Antwort markieren, wenn ich eine gefunden habe, die am besten funktioniert.
0 Stimmen
Haben Sie zufällig schon All Pairs ausprobiert? Haben Sie eine andere Methode gefunden, die Ihren Ansprüchen genügt?
0 Stimmen
Leider ist mein Arbeitsplan im Moment ziemlich eng - ich sollte diese Woche etwas mehr Zeit haben, um mich damit zu befassen. Derzeit sieht die State Map wie die beste Lösung (h2g2java's), obwohl ich nicht vollständig in alle von ihnen noch untersucht haben.
0 Stimmen
Ich bin mir nicht sicher, ob ich das Konzept der Staatliche Karten (eigentlich habe ich am sicher, dass ich das nicht verstehe)