25 / 37 · Konzept
Prüfplanung, Coverage und unabhängige Referenzen
Testbestehen von Spezifikationserfüllung trennen und Grenzen, Kreuzbedingungen und Gegenbeispiele planen.
Lektionen sind frei lesbar. Schreibe dich ein, um deinen Fortschritt zu speichern.
Ein Prüfplan macht aus der Spezifikation prüfbare Aussagen
Ersetzen Sie „funktioniert gut“ durch Aussagen über Zustand nach Reset, normale Ausgaben, Halten bei Stopp, unzulässige Eingaben und Abschlusszeit. Verknüpfen Sie jede Aussage mit mindestens einem Test und Beobachtungspunkt, um Lücken zu erkennen.
| Aussage | Stimulus | Beobachtung |
|---|---|---|
| Resetpriorität | reset und enable gemeinsam 1 | Folgezustand ist Anfangswert |
| Datenerhalt in Reihenfolge | Asymmetrische Muster hintereinander | Alle Ausgabewerte und valid |
| Exakter Grenzumlauf | Vor und nach Maximum | M−1→0, keine Bereichsüberschreitung |
| Halten bei Stopp | Eingabewechsel, accept=0 | Gespeicherter Zustand unverändert |
| Überlappende Muster | 10101 | Treffer am dritten und fünften angenommenen Bit |
Warum die Referenz unabhängig sein muss
Kopierte SlicesSlice Auswahl eines zusammenhängenden Bitbereichs aus einem Vektor. Der Bereich bestimmt Breite und Reihenfolge des Ergebnisses. Mehr erfahren eines Schiebers können auch Indexfehler kopieren. Alternative Darstellungen wie Ganzzahlmultiplikation/modulo oder String-Suffixvergleich unterstützen gegenseitige Prüfung. Eine andere Schreibweise beweist allerdings noch keine Unabhängigkeit; prüfen Sie kleine Fälle von Hand.
Coverage zählt nicht bloß bestandene Tests
Ausgeführte Codezeilen sind nicht gleich geprüfte Funktionsfälle. Kreuzungen wie reset×enable, state×input oder full×push×pop können Fehler offenlegen. Ergänzen Sie seltene wichtige Fälle gezielt statt ausschließlich zufällig.
Kombinatorische Logik mit N Eingängen lässt sich mit Fällen vollständig prüfen, sequenzielle Logik hat zusätzlich zeitliche Eingabefolgen. Analysieren Sie Erreichbarkeit und InvariantenInvariante Bedingung, die bei jeder zulässigen Ausführung stets wahr bleiben muss. Eine FIFO mit Tiefe vier enthält etwa immer zwischen null und vier Elemente. über alle Übergänge. Endlich viele bestandene Simulationen sind kein mathematischer Beweis für unbegrenzte Zeit.
Erzeugen Sie Sollwerte unabhängig aus der Spezifikation. Speichern Sie bei Fehlern nicht nur Istwerte, sondern auch vorausgehende Eingaben und Zustände.
- Spezifikation und Stimuli: Grenzfälle und kombinierte Bedingungen wählen
- Unabhängiges Referenzmodell: Erwartungswert und Gültigkeitszeitpunkt berechnen
- Mit dem DUT vergleichen: Am selben Beobachtungszeitpunkt vergleichen
- Erste Abweichung protokollieren: Minimales Gegenbeispiel und Seed aufbewahren
Fehler verkleinern und festhalten
Notieren Sie vor der ersten Abweichung Zustand, Eingabe, Soll und Ist. Entfernen Sie unnötige Stimuli bis zum minimalen Gegenbeispiel und korrigieren Sie dann. Führen Sie neben dem geänderten Test auch bestehende Grenz- und ResetprüfungenReset Steuerung zur Rückkehr in einen festgelegten Anfangszustand. Synchron/asynchron und Priorität gegenüber anderen Steuerungen müssen definiert werden. Mehr erfahren als Regression aus.
Selbst ausprobieren
Code-Coverage ist 100%, 10.000 Zufallstests bestehen, aber reset=enable=1 wurde nie geprüft. Was fehlt?
Erklärung lesen
Prüfen Sie diese Kreuzbedingung in der Spezifikation und ergänzen Sie einen gezielten Test mit ungleich null initialisiertem Zustand, der die Priorität offenlegt. Code-Coverage oder Testanzahl ersetzen keine konkrete Funktionsprüfung.