psys = pn
n
ist die Anzahl der Komponenten im System.
p
ist die Wahrscheinlichkeit, dass eine einzelne Komponente korrekt ist.
psys
ist die Wahrscheinlichkeit, dass das gesamte System korrekt ist.
faculty.
faculty
spezifiziert.
faculty
implementiert.
faculty
sollten in einem globalen Modultest integriert werden.
Ein Modultest prüft alle testbaren Komponenten eines Moduls auf Korrektheit.
faculty
ausimplementiert,
wobei
faculty
vor,
während
und
nach
(d. h. immer!)
der Implementation getestet werden kann.
/* SPEZIFIKATION: faculty
*
* Die Fakultätsfunktion n! aus der Stochastik.
* Im Falle (-1 < n < 16) soll n! zurückgegeben werden,
* ansonsten -1.
*/
long faculty(int n)
{
/* ... hier fehlt noch die Implementation ... */
return 0;
}
/* VERIFIKATION: faculty
*
* Testet alle notwendigen Fälle der Fakultätsfunktion,
* gleichwohl ob bereits implementiert oder nicht.
*
* Dabei werden besonders die Grenzfälle betrachtet!
*/
int testFaculty()
{
if (faculty(-2) != -1) return 0;
else if (faculty(-1) != -1) return 0; // Grenzfall
else if (faculty(0) != 1) return 0; // Grenzfall
else if (faculty(1) != 1) return 0; // Grenzfall
else if (faculty(2) != 2) return 0;
else if (faculty(3) != 6) return 0;
else if (faculty(4) != 24) return 0;
else if (faculty(5) != 120) return 0;
else if (faculty(15) != 2004310016) return 0; // Grenzfall
else if (faculty(16) != -1) return 0; // Grenzfall
else if (faculty(17) != -1) return 0;
else return 1; // sonst kein Fehlschlag!
}
void testMathModule()
{
// ...
/* Testfälle zu faculty können jederzeit ausgeführt werden! */
if (testFaculty()) printf("faculty() okay!\n");
else printf("faculty() NOT okay!\n");
// ...
}
/* IMPLEMENTATION: faculty
*
* Die Fakultätsfunktion n! aus der Stochastik.
* Im Falle (-1 < n < 16) soll n! zurückgegeben werden,
* ansonsten -1.
*/
long faculty(int n)
{
if (n < 0) return -1;
else if (n > 15) return -1;
else if (n == 0) return 1;
else return n * faculty(n - 1);
}
faculty()
nun endlich ausimplementiert ist, kann sogleich der Mathematiktest mit der Funktion
testMathModule()
durchgeführt werden.
Gegebenenfalls muss die Implementierung von
faculty()
nachkorrigiert werden.