Notice: Undefined variable: home in /data/www/htdocs/infosun/st/include/config.php3 on line 3 Notice: Undefined variable: phone in /data/www/htdocs/infosun/st/include/config.php3 on line 7 Notice: Undefined variable: email in /data/www/htdocs/infosun/st/include/config.php3 on line 11 Notice: Undefined variable: icon in /data/www/htdocs/infosun/st/include/config.php3 on line 15 Notice: Undefined variable: fax in /data/www/htdocs/infosun/st/include/config.php3 on line 19 Notice: Undefined variable: lang in /data/www/htdocs/infosun/st/include/config.php3 on line 23 Notice: Use of undefined constant HTTP_ACCEPT_LANGUAGE - assumed 'HTTP_ACCEPT_LANGUAGE' in /data/www/htdocs/infosun/st/include/config.php3 on line 24 Notice: Use of undefined constant HTTP_ACCEPT_LANGUAGE - assumed 'HTTP_ACCEPT_LANGUAGE' in /data/www/htdocs/infosun/st/include/config.php3 on line 25 Notice: Undefined variable: realname in /data/www/htdocs/infosun/st/include/config.php3 on line 29 Notice: Undefined variable: userhome in /data/www/htdocs/infosun/st/include/config.php3 on line 48 Notice: Undefined variable: useremail in /data/www/htdocs/infosun/st/include/config.php3 on line 93 Notice: Use of undefined constant de - assumed 'de' in /data/www/htdocs/infosun/st/include/title.php3 on line 4 Notice: Use of undefined constant de - assumed 'de' in /data/www/htdocs/infosun/st/include/title.php3 on line 11 Software Systems Group: Software Engineering - Aufgabenblatt 7 Notice: Undefined variable: background in /data/www/htdocs/infosun/st/include/start.php3 on line 4
Notice: Use of undefined constant de - assumed 'de' in /data/www/htdocs/infosun/st/include/start.php3 on line 13 University of Passau · FIM · Software Systems Notice: Use of undefined constant de - assumed 'de' in /data/www/htdocs/infosun/st/include/start.php3 on line 26 Deutschsprachige Startseite

ST

Notice: Undefined variable: banner in /data/www/htdocs/infosun/st/include/header.php3 on line 12 Software Engineering - Aufgabenblatt 7

Testverfahren II
Universität Passau
Lehrstuhl für Softwaresysteme
Innstraße 33
Notice: Use of undefined constant de - assumed 'de' in /data/www/htdocs/infosun/st/include/header.php3 on line 36 94032 Passau, Germany

Notice: Use of undefined constant de - assumed 'de' in /data/www/htdocs/infosun/st/include/header.php3 on line 42 Phone: +49 851 509-30 91
Notice: Use of undefined constant de - assumed 'de' in /data/www/htdocs/infosun/st/include/header.php3 on line 48 Fax: +49 851 509-30 92
e-mail: snelting@fmi.uni-passau.de
WWW: http://www.infosun.fmi.uni-passau.de/st/

Testverfahren II

  1. Das folgende Programm soll funktional getestet werden. Es berechnet den größten gemeinsamen Teiler zweier Zahlen, die größer als Null sind:

    int berechneGGT (int ZahlA, int ZahlB);

    Der Rückgabewert des Programmes ist der größte gemeinsame Teiler von ZahlA und ZahlB.

    Folgende Testfälle werden angewandt:

    a ZahlA = 2 ZahlB = 4
    ZahlA = -2 ZahlB = 4
    ZahlA = 2 ZahlB = -4
    ZahlA = 2100 ZahlB = 4
    ZahlA = 2 ZahlB = 2100
    b ZahlA = 0 ZahlB = 0
    c ZahlA = 1 ZahlB = 1
    ZahlA = MAXINT ZahlB = MAXINT
    ZahlA = 2 ZahlB = 0
    ZahlA = 0 ZahlB = 4
    ZahlA = MAXINT+1 ZahlB = 2
    ZahlA = 2 ZahlB = MAXINT+1
    d ZahlA = 2 ZahlB = 4
    ZahlA = 5 ZahlB = 7
    ZahlA = 12 ZahlB = 32
    ZahlA = 22 ZahlB = 456

    Welche funktionalen Testverfahren wurden in den Beispielen a bis d verwendet? Wie kam die Auswahl der Testdaten zustande?

  2. Betrachten Sie das nachfolgende C-Programm.

    void test()
    {
      int j;
      int i = 0;
      for (i = 0; i < 10; i++)
        j++;
    }
    
    1. Erstellen Sie einen Kontrollflußgraphen für das Programm.

    2. Stellen Sie die Datenflüsse tabellarisch zusammen. Welche Anomalien lassen sich auf diese Weise feststellen?

  3. Gegeben sei der folgende Programmausschnitt. Er implementiert eine Funktion GetWord, die für eine Textposition c in einem Text t Beginn (begin) und Ende (end) des umgebenden Wortes zurückgeben soll. Ist c nicht Bestandteil eines Wortes, wird succ auf FALSE gesetzt, sonst auf TRUE.

    Nehmen Sie an, daß keine Shortcut-Evaluation bei AND stattfindet!

         1	MODULE Entities;
         2	...
         3	TYPE Text = ARRAY [1..10000] OF CHAR;
         4	TYPE Position = CARDINAL;
         5	...
         6	PROCEDURE GetWord( t : Text; c : Position;
         7	                   VAR succ : BOOLEAN;
         8	                   VAR begin, end : Position );
         9	
        10	CONST wordLetters = {"A".."Z", "a".."z", "0".."9"};
        11	
        12	BEGIN
        13	  succ  := FALSE;
        14	  begin := c;
        15	  end   := c;
        16	  IF c > 0 AND c <= 10000 THEN
        17	    IF NOT t[c] IN wordLetters 
        18	    THEN succ := FALSE
        19	    ELSE WHILE begin >= 1 AND 
        20	               t[begin] IN wordLetters DO
        21	           begin := begin - 1;
        22	         END;
        23           begin := begin + 1;
        24	         WHILE end < 10001 AND
        25	               t[end] IN wordLetters DO
        26	           end := end + 1;
        27	         END;
        28           end := end - 1;
        29	         succ := TRUE;
        30	    END; 
        31	  END;
        32	END GetWord;
        33	...
        34	END Entities.
    

    Um begründbare Aussagen über die Fehlerwahrscheinlichkeit zu machen, benutzen Sie dieses Mal statistische Testverfahren.

    1. Bestimmen Sie s=5 Testfallklassen D1,..., Ds.

    2. Schätzen Sie das Lastprofil P ein; d.h. für jede Testfallklasse i die Wahrscheinlichkeit Pi ihres Auftretens, so daß $ \sum_{i=1}^{s}$Pi = 1.

    3. Geben Sie n >= 10 Testdatensätze an, die Sie zunächst anhand der Wahrscheinlichkeiten Pi auf die einzelnen Klassen Di verteilen, so daß $ \sum_{i=1}^{s}$ni . Pi = n.

    4. Testen Sie nun die Implementierung mit Ihren n Testdatensätzen. Bestimmen Sie anhand der Ergebnisse die Korrektheitswahrscheinlichkeit Ki = 1 - fi/ni, wobei fi die Anzahl der Fehler in der Klasse Di ist. Wie ist die Gesamtkorrektheitswahrscheinlichkeit R der Implementierung?

    5. Um die Testgenauigkeit zu steigern, können Sie die Varianz minimieren. Hierfür bestimmen Sie neue ni anhand der in der Vorlesung vorgestellten Formel.

      Nehmen wir an, Sie sollten 1000 Testfälle erzeugen. Wie sind die Testfälle nun verteilt?

      Was passiert, wenn ein Ki den Wert 0 oder 1 annimmt?

  4. Die Güte Ihrer Testdatensätze kann weiter gesteigert werden, indem Sie sie auf Mutationen des zu testenden Programms anwenden. Bestimmen Sie wenigstens fünf Mutanten des umseitigen Programms und schätzen Sie die Restfehlerzahl anhand der im Skript angegebenen Formel ab.

  5. Wenn Sie von einem Programm nur wissen, daß es außer Zuweisungen nur

    1. 4 Verzweigungen
    2. 4 Schleifen

    enthält - wieviele Testfälle braucht man für die folgenden Abdeckungskriterien im schlechtesten Falle?

    1. Anweisungsüberdeckung
    2. Zweigüberdeckung
    3. Bedingungsüberdeckung
    4. Pfadüberdeckung

    Es soll dabei jeweils eine 100% Überdeckung erforderlich sein.

  6. In der folgenden Abbildung sind drei Kontrollflußgraphen dargestellt. Berechnen Sie für alle Graphen die zyklomatische Zahl ZZ(P). Vergleichen Sie das Ergebnis mit Ihrem intuitiven Eindruck von der Komplexität der Graphen.


Lehrstuhl Softwaresysteme <snelting@fmi.uni-passau.de> - Notice: Use of undefined constant de - assumed 'de' in /data/www/htdocs/infosun/st/include/footer.php3 on line 9 Last modified: 12/10/2003