zertifizierter Softwaretester Lernplattform mit Übungsfragen zum Thema Softwaretest

Erklären Sie am folgenden Beispiel die Datenflu...

Fragen-ID

453

test

Übungsfrage

Erklären Sie am folgenden Beispiel die Datenflussanalyse.


function max (a : int, b : int) {
  c : int;
  if ( a > b ) {
    c = a;
  } else {
    c = b;
  }
}

Welche der folgenden Antworten enthält alle im obigen Programmausschnitt möglichen Zugriffssequenzen für die vorhandenen Datenobjekte?

wrong

a: drru und dru

b: dru und drru

c: udu und udru

wrong

a: drru und dru

b: dru und ddrru

c: udru und udru

wrong

a: drrdu und dru

b: dru und drru

c: udru und udru

richtig

a: drru und dru

b: dru und drru

c: udu und udu

Kommentare

Bitte um Erklärung

Hallo, 

 

ich habe noch eine Fragen zu folgender Zeile: 

function max (a : int, b : int) {  //a & b defined

  c : int;  //c undefined

Warum ist denn die Variable c hier auch nicht defined? a und b sind genau so initialisiert oder nicht? 

Laut ISTQB ist die Varianle definiert auch wenn sie nur initialisiert wird, siehe unten.  Laut ISTQB gibt es auch nur folgenden Variablen Aktionen : d = defined , u = used, k=killed

Bitte um kurze Erklärung. Vielen Dank. 

 

ISTQB: 

Ein verbreitetes Verfahren wird als Define-Use (Definieren-Verwenden) Notation bezeichnet, wobei der Lebenszyklus jeder Variablen in drei bestimmte Aktionen unterteilt wird: 

d: wenn die Variable definiert oder initialisiert wird (d: defined) 

u: wenn die Variable verwendet oder für eine Berechnung oder Entscheidung gelesen wird (u: used) 

k: wenn die Variable gelöscht oder zerstört wird oder nicht mehr erreichbar ist (k: killed) 

http://www.german-testing-board.info/wp-content/uploads/2016/07/CTAL_Leh...

Hallo,ja, du liegst meiner

Hallo,

ja, du liegst meiner Meinung nach richtig:

c : int;  //c defined

sollte es eigentlich heißen.

Viele Grüße,

die Redaktion

Erklärung der Anomalien

Hallo alle zusammen,

ich schaffe es hier nicht, die Kombinationen der Anomalien richtig zu erkennen.Ich weiß, dass es folgende Anomalien gibt:
ur  undefined referencing: es wird praktisch auf eine Variable gezeigt, die nicht definiert wurde, sprich ihr wurde kein Wert zugewisen.

dd defined defined: hier wird einer Variable praktisch zweimal ein Wert zugewiesen.
du und hier wird eine Variable uberschrieben (vorher wurde sie definiert), auf sie wurde zwischendurch nicht referenziert (gezeigt).

Ich tue es mir schwer mit den Zeichenfolgen wie z. B.  drru und dru.
Ich könnte die Kombinationen erkennen und richtig lesen, wenn sie so stünden urdddu etc.
Aber wenn nur drr angegeben wird, wie soll ich die Zeichenfolge richtig lesen? defined redefined redefined?

Wer kann mir bitte hier helfen? :)

Lieben Dank!

Hallo

Hallo, ur, dd, du sind lediglich die unzulässigen Datenflussanomalien. Also eine fehlerhafte Zugriffssequenz auf ein Datenobjekt.  Mögliche Zugriffsarten:
  • d=defined: immer wenn ein konkreter Wert zugewiesen wird (int a = 1)
  • r=referenced: immer wenn der Wert der Variable gelesen wird. zB {a=b //a defined & b referenced}  oder auch bei Vergleichsoperationen {if(a < b) //a & b referenced} oder return-Anweisungen
  • u=undefined: immer wenn der Wert der Variable undefiniert ist. In diesen Aufgaben eigentlich nur beim Verlassen des Scopes {..}
drru bedeutet also, dass eine Variable die Zugriffssequenz defined->referenced->referenced->undefined durchläuft. Zur Aufgabe: 

function max (a : int, b : int) {  //a & b defined

  c : int;  //c undefined

  if ( a > b ) {  //a & b referenced

    c = a; //c defined, a referenced

  } else {

    c = b; //c defined, b referenced

  }

} //a, b, c undefined, da sie den Scope verlassen haben


Die aktuelle Zugriffsart der Variablen habe ich in die dazugehörigen Zeilen geschrieben. Je nach Ergebnis der If-Abfrage bekommt man eine andere Sequenz für die Variablen, weshalb in den Lösungsoptionen immer 2 angegeben sind. Wenn man nun von oben nach unten alle Variablen beobachtet, bekommt man die Sequenzen:
  • a: drru (if-Abfrage liefert true) oder dru (if-Abfrage liefert false)
  • b: dru (if-Abfrage liefert true) oder drru (if-Abfrage liefert false)
  • c. udu (egal wie die if-Abfrage ausfällt)
 Wie man schon sieht, habe ich ein anderes Ergebnis als die Lösung. Laut Lösung:c: udru und udru. Dies würde bedeuten, dass c referenziert wird, jedoch geschieht dies nie in der angegebenen Funktion. Es müsste "udu und udu" heißen. Ich schätze mal der Originalcode hatte ein "return c" als letzte Anweisung, was dann das udru rechtfertigen würde.

Hi mouschd,danke für die

Hi mouschd,

danke für die anschauliche und ausführliche Erklärung!! Ich habe die Antwortmöglichkeit bei c: udu angepasst. Ich denke, dass es so stimmt, wie du es beschreibst.

Viele Grüße,

die Redaktion

Kommentar hinzufügen

Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt.
  • Internet- und E-Mail-Adressen werden automatisch umgewandelt.
  • Zulässige HTML-Tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <br> <p> <table> <tr> <td> <img>

Weitere Informationen über Formatierungsoptionen

CAPTCHA
Diese Frage hat den Zweck zu testen, ob Sie ein menschlicher Benutzer sind und um automatisiertem Spam vorzubeugen.
9 + 1 =
Das einfache mathematische Problem ist zu lösen und das Ergebnis einzugeben. Z.B. muss für 1+3 der Wert 4 eingegebene werden.