Zum Hauptinhalt springen

Alle Tests grün, neun Monate zu billig verkauft

Ein Konfigurator berechnete den Preis für ein zweites Teil mit null. Die Berechnung war getestet, der Server rechnete nach, das Schema war gültig. Warum drei Sicherungen nichts sahen und was jetzt anders ist.

Aus Projekten Technische Entscheidungen Preisberechnung Tests Konfigurator

Die Summe, die stehen blieb

Ein Konfigurator für Maßanfertigung. Der Kunde legt ein Teil mit Maßen an, wählt Material, sieht den Preis. Legt er ein zweites Teil an, bleibt die Summe stehen. Er kann so bestellen, und die Bestellung läuft durch den Shop, als wäre alles in Ordnung.

Der Betreiber merkte es, als er selbst ausprobierte, was ein Kunde ihm beschrieben hatte. Der Fehler bestand seit neun Monaten. Ausgelöst hatte ihn eine Änderung, die für sich genommen richtig war: Ein fest hinterlegtes Standardmaterial wurde entfernt, damit der Kunde bewusst wählen muss.

Drei Sicherungen, alle grün

Das System hatte, was man sich wünscht. Die Preisformel war mit Tests abgedeckt. Der Server rechnete jeden Preis vor der Übergabe an den Shop selbst nach, statt ihn aus dem Browser zu übernehmen. Ein Schema prüfte jede Konfiguration auf Gültigkeit.

Die Ursache saß zwischen zwei Schritten. Das Material wird im Materialschritt einmal auf alle Teile geschrieben, die es in diesem Moment gibt. Ein später angelegtes Teil bekam nichts. Die Preisfunktion bewertete ein Teil ohne Material mit null je Quadratmeter, rechnete das korrekt durch, und die Summe blieb stehen.

Jede der drei Sicherungen beantwortete die Frage, für die sie gebaut war, und zwar richtig.

Die Tests prüften die Berechnung mit Teilen, die im Test bereits ein Material hatten. Sie bewiesen die Formel für die Eingaben, die der Test baut. Ob die Anwendung diese Eingaben je erzeugt, sagt ein solcher Test nicht. Der Fehler lag zwischen zwei Modulen, die jedes für sich grün waren.

Die Nachrechnung schützte vor manipulierten Preisen. Sie beantwortete die Frage, ob die Zahl zur Eingabe passt. Sie beantwortete nicht, ob die Eingabe eine ist, aus der überhaupt ein gültiger Preis entstehen kann.

Das Schema erlaubte Teile ohne Material. Es meldete solche Konfigurationen ausdrücklich als gültig, weil das Material aus Sicht des Schemas optional war.

Nichts im System stellte die Frage: Kann dieser Preis sein?

Der zweite Fall ist ein Zeichen

Ein halbes Jahr vor dieser Meldung war dasselbe schon einmal aufgetreten. Damals bei einem Produkt mit Festpreis, das kein Material braucht. Damals wurde es behoben, indem dieses eine Produkt einen festen Preis bekam. Das Symptom war weg. Der Mechanismus blieb.

Ein Fall, der zum zweiten Mal auftritt, sagt fast immer dasselbe: Beim ersten Mal wurde das Vorkommen repariert und nicht die Regel. Die Regel lautete hier: Ein Wert, der einmal auf alle Elemente verteilt wird, erreicht nur die Elemente, die es in diesem Moment gibt. Jedes neue Element muss ihn erneut bekommen.

Was jetzt anders ist

Ein neu angelegtes Teil übernimmt Material und Einstellungen des ersten. Das schließt den bekannten Weg. Es schließt nicht den nächsten, den noch niemand kennt.

Deshalb steht am letzten Punkt vor dem Geld eine Prüfung, die nicht davon abhängt, wie der Zustand entstanden ist. Der Server weist jede Bestellung ab, die ein Teil ohne Material, ohne Maße oder mit Gesamtpreis null enthält. Nicht mit einer Korrektur, sondern mit einer Fehlermeldung und einem Eintrag in der Fehlerüberwachung.

Darunter liegt ein zweites Netz mit anderer Logik. Fällt der Preis eines Teils unter die reine Materialsumme, gehen zwei Mails und eine Warnung in die Überwachung. Eine Mail an die Bestelladresse des Shops, eine intern. Dieses Netz blockiert nie. Es fängt, was die Prüfung darüber nicht kennt.

Ein Test läuft jetzt alle 27 Materialkombinationen, die das Schema erlaubt, gegen die Preistabellen. Und alle gespeicherten Bestellungen wurden nachgerechnet. Drei bezahlte und ausgelieferte Bestellungen waren zu einem Bruchteil des Preises durchgegangen.

Vier Entscheidungen, und wogegen

Das zweite Netz ist ein Alarm und keine zweite Sperre. Eine zweite Sperre hätte dieselbe Logik und dieselben blinden Flecken wie die erste. Ein Alarm mit anderer Logik fängt auch, was die Sperre nicht kennt.

Für ein Teil ohne eigenen Materialsatz gilt im Netz der Satz des ersten Teils, nicht null. Sonst ergibt genau der gemeldete Fall keinen Fehlbetrag, und das Netz schweigt in dem Moment, für den es gebaut wurde.

Der Mindestpreis je Quadratmeter wurde nicht als Sicherheitsnetz angehoben. Er wäre dann eine zweite Preistabelle, die mit der ersten auseinanderlaufen kann.

Der Alarm geht per Mail an die Menschen, die die Bestellung vor der Fertigung in der Hand haben, nicht nur in die Fehlerüberwachung. Ein Alarm ist so gut wie die Person, die ihn liest.

Drei Fragen, die sich übertragen lassen

Welche Zahl im System bedeutet Geld? Preis, Rabatt, Menge, Gewicht für den Versand. Für jede dieser Zahlen gibt es einen letzten Punkt, bevor sie wirkt. Dort gehört eine Prüfung hin, ob die Zahl überhaupt möglich ist.

Was prüfen die vorhandenen Sicherungen wirklich? Jede beantwortet eine Frage. Die Lücke liegt zwischen den Fragen. Ein Test, der den Zustand fertig hinstellt, prüft die Rechnung und nicht den Weg dorthin.

Wo landet der Alarm? Eine Warnung in einem Werkzeug, das niemand täglich öffnet, ist kein Alarm. Er muss dort ankommen, wo gehandelt wird, bevor die Maschine läuft.

Weitere Artikel

Betrieb und Sicherheit

Wenn der Fehler sich als Erfolg meldet

Monitoring Prüfung Betrieb

Eine Karte lieferte jede Kachel mit Status 200 und einem Wasserzeichen darüber. Eine Testmail kam an, mit der falschen Antwortadresse. Warum Monitoring grün sein kann, während das Ergebnis unbrauchbar ist.

Weiterlesen

Aus Projekten

Verkauft ist nicht produziert

PDF Fertigungsdaten Automatisierung

Ein Konfigurator nahm Bestellungen entgegen, aber zwischen Bestellung und Maschine saß ein Designer und prüfte jede Datei. Was nötig war, damit dieser Schritt entfällt.

Weiterlesen

Aus Projekten

Wenn Software absichtlich nichts ausrechnet

Fachlogik Datenqualität Immobilien

In einem Backoffice für Immobilienvermittlung liefert die Bewertung kein Ergebnis, sobald die Wohnfläche fehlt. Das ist kein fehlendes Feature, sondern der Zweck.

Weiterlesen

Haben Sie Fragen?

Kontakt aufnehmen