Frage

Ich habe ein SAT-Solver für Problem 2-Erfüllbarkeit geschrieben, jemand bitte geben Sie mir einen Testfall mit sagen 10000 Literale, die nur ein erfüllbar Zuordnung hat das heißt nur eine Lösung

The format can be:(for 3 literals)
2            // No of clauses and then each clause
2 3
1 -2
corresponding to
(b+c).(a+!b)
War es hilfreich?

Lösung

Testabdeckung in der Regel schwierig ist, die meisten der Zeit, die Sie gerade um einen Faktor oder eine andere vergessen.

ich in der Regel geht in wenigen Schritten:

  1. Stellen Sie sicher, dass es ein triviales Problem löst (oder etwas)
  2. Test Grenzfälle / Randbedingungen: 0-Klausel zum Beispiel
  3. Test Fehler Hüllen: schlecht formatierte Eingabe, Probleme ohne Lösung
  4. Test Leistung / Mass Injection (siehe wenn das Programm nicht unter Last nicht abstürzen, nicht undicht, ...)

2) und 3) sind so ziemlich austauschbar, 4) sollte nur kommen, wenn Sie Wege haben diese Art von Informationen zu untersuchen (Benchmarking, Erkennung von Speicherlecks ...).

Ein wichtiger Punkt ist, dass Sie nicht Ihren Code Reverse Engineering sollten die Tests zu schreiben, weil Sie Ihren Code würde am Ende zu testen, aber nicht die Prüfung, dass es die Spezifikationen gehorcht.

Wenn es ein Haus-Projekt ist, Spezifikationen sind in der Regel informell, aber es gibt sie noch (im Kopf) und das ist sie nach, dass Sie die Testfälle erzeugen sollten.

Andere Tipps

Ist dieser Ansatz funktionieren?

 (a + b ).(a + !b) 

Dies kann nur satisified werden, wenn ein wahr ist.

 (a + !b).(!a + !b)

Kann nur erfüllt werden, wenn b falsch ist. Daher

  (a + b ).(a + !b).(a + !b).(!a + !b)

gibt Completely Werte für a und b. Wir können nun erweitern diese für eine beliebige Anzahl von Literalen.

So testen Sie die App, die Sie auch widersprüchlich requriements geben könnte, also etwas ohne Lösung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top