Discussion:
SQS - Testauswahlkriterium
(zu alt für eine Antwort)
Damian Lukowski
2008-03-17 14:27:23 UTC
Permalink
Hallo,

ich habe ein kleines Verständnisproblem mit der Definition des
Testauswahlkriteriums und der Angemessenheit von Tests.
Für ein gegebenen Programm P mit seiner Spezifikation S, definiert ein
Testauswahl-Kriterium die Bedingungen, die die Menge der Testfälle erfüllen
müssen.
Bspl: "Alle Anweisungen von P müssen einmal ausgeführt werden!".
Welche Menge von Testfällen? Die Definition impliziert, dass es genau
_eine_ solche Testfallmenge gibt. Man soll es wohl vielmehr als
"irgendeine Menge" verstehen, nehme ich an. Es kann also mehrere
Testfallmengen geben, die einem Testauswahlkriterium genügen. Bei der
Äquivalenzklassenbildung nimmt man ja auch irgendwelche Repräsentanten.
Ein Programm P ist angemessen zu einem gegebenen Auswahlkriterium
getestet, wenn die Menge der Testfälle, die diesem Kriterium genügt, keinen
Fehler in P findet (d.h. erfolglos ist).
Wieder wird von _der_ Menge der Testfälle gesprochen. Was ist hier
gemeint? Irgendeine Testfallmenge, die dem Kriterium genügt? Wenn ja,
muss dann _jede_ Testfallmenge, die dem Kriterium genügt, erfolglos
sein, oder reicht es, wenn eine Testfallmenge _existiert_, die dem
Auswahlkriterium genügt und erfolglos ist?

Ich nehme an, es geht um Existenz. Die Entscheidungsprozedur sähe dann
wie folgt aus:
Nehme das Testauswahlkriterium K, konstruiere daraus eine Menge von
Testfällen, die dem Kriterium genügt. Teste das Programm P anhand der
Testfälle. Falls keine Fehler gefunden werden, ist P angemessen zu K
getestet.

Das Ganze macht meiner Ansicht nach allerdings keinen Sinn, denn K kann
jeglicher Blödsinn sein.
Angenommen P berechnet die Funktion P(n) := n+1 mod 42; gewünscht ist
aber P(n) := n+1, und K ist das Kriterium: "Alle Eingaben zwischen 1 und
40 werden getestet".
Dann findet die Testfallmenge {Teste 1, ..., Teste 40} keine Fehler, und
P wäre dann angeblich angemessen zu K getestet. Die Testfallmenge {Teste
1, ..., Teste 42} genügt aber auch dem Kriterium K, und findet einen
Fehler. Das steht auch im Widerspruch zum Monotonicity-Axiom von Weyuker.

Kann mich da bitte jemand erleuchten?

Grüße
Damian
Alexander Gran
2008-03-18 03:41:41 UTC
Permalink
Post by Damian Lukowski
Welche Menge von Testfällen? Die Definition impliziert, dass es genau
_eine_ solche Testfallmenge gibt. Man soll es wohl vielmehr als
"irgendeine Menge" verstehen, nehme ich an. Es kann also mehrere
Testfallmengen geben, die einem Testauswahlkriterium genügen. Bei der
Äquivalenzklassenbildung nimmt man ja auch irgendwelche Repräsentanten.
Ja. Das Kriterium ist quasi eine Anforderung die die Testfall(menge)
erfüllen muss/müssen.
Post by Damian Lukowski
Ein Programm P ist angemessen zu einem gegebenen Auswahlkriterium
getestet, wenn die Menge der Testfälle, die diesem Kriterium genügt,
keinen Fehler in P findet (d.h. erfolglos ist).
Wieder wird von _der_ Menge der Testfälle gesprochen. Was ist hier
gemeint? Irgendeine Testfallmenge, die dem Kriterium genügt? Wenn ja,
ja.
Post by Damian Lukowski
muss dann _jede_ Testfallmenge, die dem Kriterium genügt, erfolglos
um Gottes willen.
Post by Damian Lukowski
sein, oder reicht es, wenn eine Testfallmenge _existiert_, die dem
Auswahlkriterium genügt und erfolglos ist?
Es genügt, wenn eine dem Testfallkriterium genügende Menge keinen Fehler
findet. Denn wenn alle durchlaufen müssten, könnte man sich häufig das
Kriterium sparen: die Menge aller Testfälle ist vielleicht nicht endlich,
aber verdammt groß. Eine dem Kriterium entsprechende Menge kann schon groß
sein, aber die Vereinigung aller Mengen wird recht oft die Menge von allen
Möglichen Testfällen sein.
Post by Damian Lukowski
Ich nehme an, es geht um Existenz. Die Entscheidungsprozedur sähe dann
Nehme das Testauswahlkriterium K, konstruiere daraus eine Menge von
Testfällen, die dem Kriterium genügt. Teste das Programm P anhand der
Testfälle. Falls keine Fehler gefunden werden, ist P angemessen zu K
getestet.
genau.
Post by Damian Lukowski
Das Ganze macht meiner Ansicht nach allerdings keinen Sinn, denn K kann
jeglicher Blödsinn sein.
Ja, aber darum sollte man das erstens sinnvoll wählen, und zweitens die
Testfälle dennoch sinnvoll konsturieren, aber..
Post by Damian Lukowski
Angenommen P berechnet die Funktion P(n) := n+1 mod 42; gewünscht ist
aber P(n) := n+1, und K ist das Kriterium: "Alle Eingaben zwischen 1 und
40 werden getestet".
Dann findet die Testfallmenge {Teste 1, ..., Teste 40} keine Fehler, und
P wäre dann angeblich angemessen zu K getestet. Die Testfallmenge {Teste
1, ..., Teste 42} genügt aber auch dem Kriterium K, und findet einen
Fehler. Das steht auch im Widerspruch zum Monotonicity-Axiom von Weyuker.
Ich habe mich mit den Axiomen nie im Detail beschäftigt (und das orginal
Paper ist online gerade nicht zu bekommen), aber ich nehme mal schwer an,
das damit das gilt ein gültiges Testauswahlkriterium verwendet werden muss.
Denn sonst ist die Statement Coverage aussage ja auch Quatsch.

Viele Grüße
Alex
--
Some operating systems are called `user friendly',
Linux however is `expert friendly'.
Encrypted Mails welcome. Send spam to ***@gmx.net, please.
PGP-Key at http://www.grans.eu/misc/pgpkey.asc | Key-ID: 0x6D7DD291
Alexander Gran
2008-03-18 03:49:04 UTC
Permalink
Post by Damian Lukowski
Welche Menge von Testfällen? Die Definition impliziert, dass es genau
_eine_ solche Testfallmenge gibt. Man soll es wohl vielmehr als
"irgendeine Menge" verstehen, nehme ich an. Es kann also mehrere
Testfallmengen geben, die einem Testauswahlkriterium genügen. Bei der
Äquivalenzklassenbildung nimmt man ja auch irgendwelche Repräsentanten.
Ja. Das Kriterium ist eine Anforderung die die Testfallmenge
erfüllen muss.
Post by Damian Lukowski
Ein Programm P ist angemessen zu einem gegebenen Auswahlkriterium
getestet, wenn die Menge der Testfälle, die diesem Kriterium genügt,
keinen Fehler in P findet (d.h. erfolglos ist).
Wieder wird von _der_ Menge der Testfälle gesprochen. Was ist hier
gemeint? Irgendeine Testfallmenge, die dem Kriterium genügt? Wenn ja,
ja.
Post by Damian Lukowski
muss dann _jede_ Testfallmenge, die dem Kriterium genügt, erfolglos
um Gottes willen!
Post by Damian Lukowski
sein, oder reicht es, wenn eine Testfallmenge _existiert_, die dem
Auswahlkriterium genügt und erfolglos ist?
Es genügt, wenn eine dem Testfallkriterium genügende Menge keinen Fehler
findet. Denn wenn alle durchlaufen müssten, könnte man sich häufig das
Kriterium sparen: die Menge aller möglichen Testfälle ist vielleicht nicht
endlich, aber verdammt groß. Eine dem Kriterium entsprechende Menge kann
schon groß sein, aber die Vereinigung aller dieser Mengen wird recht oft
die Menge von allen Möglichen Testfällen sein.
In dem Beispiel mit der vollständigen Anweisungsüberdeckung ist das zum
Beispiel so, nehme Trivialprogramm:
public int toll(int input) {
return input+1;
}
Jeder Testfall genügt dem Kriterium alle Anweisungen zu überdecken. Jetzt
hängt die Sinnhaftigkeit an der Spezifikation: Wenn die lautet:
a.) gebe input + 1 zurück, mit Überlauf (bra bra, randfälle, bra)
ist alles ok, dann schlägt jeder Testfall an.
Lautet die Spezifikation aber
b.) gebe 1 zurück
schlägt jeder Testfall außer input = 0 an.

Bei b.) könnte man das Programm (bei dem stumpfen Kriterium) also angemessen
testen, ohne den Fehler zu finden, wobei jede andere Testfallmenge den
Fehler finden würde. Verlangt man aber jede andere auch zu prüfen, testet
man automatisch wieder alle möglichen Testfälle.
Post by Damian Lukowski
Ich nehme an, es geht um Existenz. Die Entscheidungsprozedur sähe dann
Nehme das Testauswahlkriterium K, konstruiere daraus eine Menge von
Testfällen, die dem Kriterium genügt. Teste das Programm P anhand der
Testfälle. Falls keine Fehler gefunden werden, ist P angemessen zu K
getestet.
genau.
Post by Damian Lukowski
Das Ganze macht meiner Ansicht nach allerdings keinen Sinn, denn K kann
jeglicher Blödsinn sein.
Ja, aber darum sollte man das erstens sinnvoll wählen, und zweitens die
Testfälle dennoch sinnvoll konsturieren, aber..
Post by Damian Lukowski
Angenommen P berechnet die Funktion P(n) := n+1 mod 42; gewünscht ist
aber P(n) := n+1, und K ist das Kriterium: "Alle Eingaben zwischen 1 und
40 werden getestet".
Dann findet die Testfallmenge {Teste 1, ..., Teste 40} keine Fehler, und
P wäre dann angeblich angemessen zu K getestet. Die Testfallmenge {Teste
1, ..., Teste 42} genügt aber auch dem Kriterium K, und findet einen
Fehler. Das steht auch im Widerspruch zum Monotonicity-Axiom von Weyuker.
Ich habe mich mit den Axiomen nie im Detail beschäftigt (und das orginal
Paper ist online gerade nicht zu bekommen), aber ich nehme mal schwer an,
das damit das gilt ein gültiges Testauswahlkriterium verwendet werden muss.
Denn sonst ist die Statement Coverage aussage ja auch Quatsch.

Viele Grüße
Alex
--
Some operating systems are called `user friendly',
Linux however is `expert friendly'.
Encrypted Mails welcome. Send spam to ***@gmx.net, please.
PGP-Key at http://www.grans.eu/misc/pgpkey.asc | Key-ID: 0x6D7DD291
Alexander Gran
2008-03-18 04:08:12 UTC
Permalink
Post by Alexander Gran
Post by Damian Lukowski
Angenommen P berechnet die Funktion P(n) := n+1 mod 42; gewünscht ist
aber P(n) := n+1, und K ist das Kriterium: "Alle Eingaben zwischen 1 und
40 werden getestet".
Dann findet die Testfallmenge {Teste 1, ..., Teste 40} keine Fehler, und
P wäre dann angeblich angemessen zu K getestet. Die Testfallmenge {Teste
1, ..., Teste 42} genügt aber auch dem Kriterium K, und findet einen
Fehler. Das steht auch im Widerspruch zum Monotonicity-Axiom von Weyuker.
Ich habe mich mit den Axiomen nie im Detail beschäftigt (und das orginal
Paper ist online gerade nicht zu bekommen), aber ich nehme mal schwer an,
das damit das gilt ein gültiges Testauswahlkriterium verwendet werden
muss. Denn sonst ist die Statement Coverage aussage ja auch Quatsch.
Ähh, korrektur, das macht in der Tat alles keinen Sinn. Kein Plan was da los
ist. Im letzten Buch (Software-Engeneering) von Prof. Lichter steht da auch
garnix mehr zu.

Viele Grüße
Alex
--
Some operating systems are called `user friendly',
Linux however is `expert friendly'.
Encrypted Mails welcome. Send spam to ***@gmx.net, please.
PGP-Key at http://www.grans.eu/misc/pgpkey.asc | Key-ID: 0x6D7DD291
Loading...