logo

Crowdly

SEW2a 1xHIT Methoden

Шукаєте відповіді та рішення тестів для SEW2a 1xHIT Methoden? Перегляньте нашу велику колекцію перевірених відповідей для SEW2a 1xHIT Methoden в elearning.tgm.ac.at.

Отримайте миттєвий доступ до точних відповідей та детальних пояснень для питань вашого курсу. Наша платформа, створена спільнотою, допомагає студентам досягати успіху!

Programm schrittweise ausführen:

Durch Anklicken eines Buttons kann man nun die nächste Anweisung

ausführen und damit das Programm um einen Schritt weiter schalten. Dafür

gibt es 2 Varianten:

  1. Schritt hinein bzw. Step into:

    Dabei wird ein Programmschritt - eine Programmanweisung -

    ausgeführt. Danach wird das Programm wieder angehalten, so dass man

    sich die Veränderung im Programm, die dieser Schritt bewirkt hat,

    ansehen kann. Wenn der Programmschritt, der ausgeführt werden soll,

    ein Methodenaufruf ist, so wird die Ausführung innerhalb der Methode

    fortgesetzt, sofern die Methodendefinition verfügbar ist. Dies ist

    normalerweise bei selbst geschriebenen Methoden der Fall. Methoden

    der Java-Bibliothek, die aufgerufen werden, werden daher immer als

    ein Schritt ausgeführt.

     

  2. Schritt über bzw. Step:

    Dieser Befehl funktioniert ähnlich wie "Step Into", nur dass ein

    Methodenaufruf immer in einem Schritt bearbeitet wird, und die

    Ausführung nie in der Methode fortgesetzt wird.

     

Unabhängig davon, ob man Step oder Step Into

wählt, wird in BlueJ

die gerade aktive Zeile markiert. Wenn allerdings beim Aufruf einer

selbst definierten Methode

Step Into

aufgerufen wird, wird der

Quellcode dieser Methode geöffnet und die Ausführung dort fortgesetzt.

Um dies zu zeigen, wurde in dem Beispiel-Programm wurde das

Inkrementieren in eine Methode verlegt:

Nachdem Step Into

ausgewählt wurde, wird der Quellcode der Methode

erhoehen in der Klasse Zaehlen geöffnet.

Wie hier gut zu sehen ist, sind die Variablen der main-Methode innerhalb

der Methode erhoehen nicht mehr gültig. Die beiden Methoden (main und

erhoehen) haben komplett getrennte Variablenbereiche, die nichts

voneinander wissen. Nur durch den Aufruf (siehe Bild darüber) wurde der

Wert der Variablen anzNegativ in den Wert der Variablen zahl (diese ist

der 1. Parameter) kopiert und die Parameter-Variable damit

initialisiert. Die Variable des zweiten Parameters namens wert wurde

durch den Aufruf mit der Zahl 1 initialisiert.

Auch wenn sich die Ausführung innerhalb einer Methode befindet, kann die

Debugger-Ansicht in die main-Methode gewechselt werden, um z.B. die

Variablenwerte oder die Aufrufzeile zu kontrollieren:

Nach dem die Methode mit Step

schrittweise abgearbeitet wurde, wird

sie beendet und das Programm kehrt zu der Zeile zurück, in der die

Methode aufgerufen wurde.

Das Debuggen kann nun fortgesetzt werden, bis der entsprechende Fehler

gefunden wurde.

Ergänze folgende Zusammenfassung:

  • Mit "Step" und "Step Into" kann das Programm im Debugmodus

    ausgeführt werden.

  • Wenn das Programm bei keinem Methodenaufruf steht, gibt es auch

    Unterschied zwischen "Step" und "Step Into".

  • Wenn das Programm bei einem Methodenaufruf steht, dann wird durch das Anklicken von "Step",

  • Wenn das Programm bei einem Methodenaufruf steht, dann wird durch das Anklicken von "Step Into",

  • Wenn man sich innerhalb einer Methode befindet, kann auf die

    gewechselt werden, um die Aufrufzeile und die dortigen Variablen zu untersuchen.

Переглянути це питання

Debuggen

Die meisten IDEs haben eine Möglichkeit Programme in Einzelschritten

auszuführen. Dies kann aus folgenden Gründen notwendig sein:

  1. Mein Programm hat einen Fehler im Programmablauf, den ich finden und

    beheben möchte

  2. Man sieht vor sich ein unbekanntes Programm und möchte es verstehen

Das Programm, mit dem man den Quellcode eines Programms Schritt für

Schritt ausführen kann, nennt man

Debugger (vom engl. bug

=

Programmfehler = Käfer, wörtlich übersetzt wäre es wohl "Entfehlerer"

bzw. "Entkäferer"). Wie der Name schon sagt, ist sein eigentlicher

Zweck, Programmierer*innen beim Fehlersuchen und -entfernen zu

unterstützen. Dabei geht es um

logische bzw. semantische Fehler

,

d.h. Fehler im Programmablauf und in der Programmlogik.

Die Schritte um mit dem Debugger zu arbeiten sind in den folgenden

Abschnitten beschrieben.

Haltepunkt bzw. Breakpoint setzen:

Durch einen Breakpoint wird die normale Programmausführung unterbrochen

(engl.

break

= unterbrechen) und der Debugger wird gestartet, wenn er

nicht schon durch einen vorherigen Breakpoint gestartet ist. Ein

Breakpoint lässt sich nicht bei Kommentaren oder rein deklarativen

Anweisungen setzen (z.B. nicht bei einer Variablendeklaration oder einer

Methodenkopfzeile).

Ein Breakpoint kann in BlueJ durch Anklicken der entsprechenden Zeile in

der Seitenleiste gesetzt werden, solange der Quellcode schon kompiliert

wurde (erkennbar an der weißen Seitenleiste):

Wenn das Programm ausgeführt wird, stoppt es dann automatisch an der

Stelle, wo der Breakpoint gesetzt wurde. Dabei wird auch der Debugger

geöffnet:

Im Debugger werden die Methoden und all ihre Variablen mit ihren Werten

angezeigt.

Ergänze folgende Zusammenfassung:

  • Um die Fehlersuche in Programmen zu unterstützen, bieten die meisten IDEs einen an.

  • Mit dem Debugger kann man ein Programm

    ausführen.

  • Um mit dem Debugger zu arbeiten muss man zunächst einen setzen.

  • Durch den Breakpoint

    die Programmausführung bei der Zeile, wo der Breakpoint gesetzt wurde.

  • Ein Breakpoint kann bei folgenden Anweisungen nicht gesetzt werden:

  • Bevor ein Breakpoint gesetzt werden kann, muss der Quellcode

    werden.

  • Im Debugger-Fenster sieht man die folgenden Informationen:

Переглянути це питання

Beispielablauf:

Für das vorige Beispiel wurde ein erster Programmentwurf mit folgendem Quellcode geschrieben:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

import

javax.swing.JOptionPane;

/**

* In diesem Programm wird die Anzahl der positiven und die Anzahl

* der negativen Zahlen in einer Zahlenfolge ausgegeben. Die

* Gesamtanzahl der Zahlen in der Zahlenfolge muss zuvor eingegeben

* werden.

* @author Lisa Vittori

* @version 2017-03-28

*/

public class

PositiveNegative {

public static void

main(String[] args) {

String eingabe;

int

anzahl, zahl, anzPositiv, anzNegativ;

anzPositiv =

0

;

anzNegativ =

0

;

eingabe = JOptionPane.

showInputDialog(null, "Wie viele"

+

" Zahlen solle eingegeben werden?"

);

anzahl = Integer.

parseInt

(eingabe);

if(anzahl >= 0

) {

for(;anzahl >= 0

; anzahl--) {

eingabe = JOptionPane.

showInputDialog(null, "Bitte"

+

" geben Sie eine zu überprüfende Zahl ein."

);

zahl = Integer.

parseInt

(eingabe);

if(zahl > 0

) {

anzPositiv++;

}

else

{

anzNegativ++;

}

}

JOptionPane.

showMessageDialog(null, anzPositiv + " positive"

+

" Zahl(en), " + anzNegativ + " negative Zahl(en)"

);

}

else

{

JOptionPane.

showMessageDialog(null, "Als Anzahl sind"

+

" nur positive Zahlen (größer als 0) erlaubt!"

);

}

}

}

 

Wenn man mit dem obigen Programm die einzelnen Testfälle im

Testprotokoll durchgeht, dann ist folgendes Ergebnis zu sehen:

Nr.

NF/GF/FF

Eingabe:

anzahl

Eingabe:

zahl

Erwartetes Ergebnis:

Ok?

1

NF

5

beliebig

5 Zahlen können eingegeben werden

X

2

GF

1

beliebig

1 Zahl kann eingegeben werden.

X

3

GF

0

---

Fehlermeldung, das Programm wird danach beendet

X

4

FF

-1

----

Fehlermeldung, das Programm wird danach beendet

Ok

5

NF

1

5

Ausgabe: "1 positive Zahl(en), 0 negative Zahl(en)"

X

6

NF

1

-7

Ausgabe: "0 positive Zahl(en), 1 negative Zahl(en)"

X

7

GF

1

1

Ausgabe: "1 positive Zahl(en), 0 negative Zahl(en)"

X

8

GF

1

-1

Ausgabe: "0 positive Zahl(en), 1 negative Zahl(en)"

X

9

GF

1

0

Ausgabe: "0 positive Zahl(en), 0 negative Zahl(en)"

X

10

NF

5

1,-1,2,-3,0

Ausgabe: "2 positive Zahl(en), 2 negative Zahl(en)"

X

 

Die fehlgeschlagenen Testfälle liefern statt des erwarteten Ergebnisses

folgendes Ergebnis:

  • Testfall 1: 6 Zahlen können eingegeben werden
  • Testfall 2: 2 Zahlen können eingegeben werden
  • Testfall 3: 1 Zahl kann eingegeben werden
  • Testfall 5: 2 Zahlen können eingegeben werden
  • Testfall 6: 2 Zahlen können eingegeben werden
  • Testfall 7: 2 Zahlen können eingegeben werden
  • Testfall 8: 2 Zahlen können eingegeben werden
  • Testfall 9: 2 Zahlen können eingegeben werden
  • Testfall 10: 6 Zahlen können eingegeben werden

Aus der Fehlerart kann man unter Umständen schnell auf den Fehler

schließen. So funktioniert offenbar die Wiederholung der Eingabe nicht

richtig und es wird die Eingabe zu oft wiederholt. Die Zeile, die für

das Wiederholen der Eingabe zuständig ist, ist der Schleifenkopf in

Zeile 20. Hier kann mit der Korrektur angesetzt werden. Die neue Zeile

20 sieht folgendermaßen aus (

> statt >= ):

for(;anzahl > 0; anzahl--) {

Nach Ausbessern dieses Fehlers muss das Testen wiederholt werden. Im

Testprotokoll wird der Erfolg oder Misserfolg neuerlich festgehalten:

Nr.

NF/GF/FF

Eingabe:

anzahl

Eingabe:

zahl

Erwartetes Ergebnis:

Ok?

1

NF

5

beliebig

5 Zahlen können eingegeben werden

Ok

2

GF

1

beliebig

1 Zahl kann eingegeben werden.

Ok

3

GF

0

---

Fehlermeldung, das Programm wird danach beendet

X

4

FF

-1

----

Fehlermeldung, das Programm wird danach beendet

Ok

5

NF

1

5

Ausgabe: "1 positive Zahl(en), 0 negative Zahl(en)"

Ok

6

NF

1

-7

Ausgabe: "0 positive Zahl(en), 1 negative Zahl(en)"

Ok

7

GF

1

1

Ausgabe: "1 positive Zahl(en), 0 negative Zahl(en)"

Ok

8

GF

1

-1

Ausgabe: "0 positive Zahl(en), 1 negative Zahl(en)"

Ok

9

GF

1

0

Ausgabe: "0 positive Zahl(en), 0 negative Zahl(en)"

X

10

NF

5

1,-1,2,-3,0

Ausgabe: "2 positive Zahl(en), 2 negative Zahl(en)"

X

 

Tatsächliche Ergebnisse:

  • Testfall 3: keine Fehlermeldung, statt dessen Ausgabe: "0 positive

    Zahl(en), 0 negative Zahl(en)"

  • Testfall 9: Ausgabe: "0 positive Zahl(en), 1 negative Zahl(en)"
  • Testfall 10: Ausgabe: "2 positive Zahl(en), 3 negative Zahl(en)"

Das Ergebnis dieses Testablaufs ist schon besser, aber das Programm ist

offenbar noch immer fehlerhaft. Es sind also noch weitere Korrekturen

mit nachfolgenden Tests notwendig. Der Prozess wird so lange wiederholt,

bis keine Fehler mehr auftreten.

In professionellen Programmierumgebungen werden solche Tests möglichst

automatisiert abgearbeitet. Damit wird vermieden, dass das Ausbessern

eines Bugs, eine Reihe weiterer neuer Bugs nach sich zieht.

Beim Test Driven Development

werden solche Tests auch entworfen,

bevor noch der Quellcode begonnen wird. Das Ziel ist dann mit jedem

Entwicklungsschritt mehr Testfälle auf "OK" bzw. grün zu setzen. Auch

abseits davon entspricht es guter Programmierpraxis, die Testfälle zu

entwerfen bevor mit der eigentlichen Programmentwicklung begonnen wird.

Durch das Entwerfen der Testfälle werden bestimmte Bereiche der

Aufgabenstellung bereits gründlich analysiert und auf besonders zu

berücksichtigende Fälle eingegangen. Dies kann bei der

Programmentwicklung helfen.

Beantworte die folgenden Fragen:

  • Welche Programmzeile muss geändert werden, um den verbleibenden Fehler, der durch Testfall 3 erkannt wird, zu beheben?

  • Was muss statt der fehlerhaften Zeile geschrieben werden, um den Fehler, der durch Testfall 3 erkannt wird, zu beheben (ohne führende Leerzeichen/Tabs)?

  • Welche Programmzeile muss geändert werden, um den verbleibenden Fehler, der durch die Testfälle 9 und 10 erkannt wird, zu beheben (es gibt natürlich mehrere Lösungsvarianten, aber nur eine, wo nur eine Programmzeile geändert werden muss)?

  • Was muss statt der fehlerhaften Zeile geschrieben werden, um den Fehler, der durch die Testfälle 9 und 10 erkannt wird, zu beheben (ohne führende Leerzeichen/Tabs)?

  • Wie nennt man die Herangehensweise beim Programmieren, bei der zuerst die Testfälle entworfen werden, und dann bei jedem weiteren Schritt versucht wird, einen weiteren Testfall auf "OK" zu setzen?

Bitte beantworten Sie alle Teile der Frage.
Переглянути це питання

Beispielablauf:

Für das vorige Beispiel wurde ein erster Programmentwurf mit folgendem Quellcode geschrieben:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

import

javax.swing.JOptionPane;

/**

* In diesem Programm wird die Anzahl der positiven und die Anzahl

* der negativen Zahlen in einer Zahlenfolge ausgegeben. Die

* Gesamtanzahl der Zahlen in der Zahlenfolge muss zuvor eingegeben

* werden.

* @author Lisa Vittori

* @version 2017-03-28

*/

public class

PositiveNegative {

public static void

main(String[] args) {

String eingabe;

int

anzahl, zahl, anzPositiv, anzNegativ;

anzPositiv =

0

;

anzNegativ =

0

;

eingabe = JOptionPane.

showInputDialog(null, "Wie viele"

+

" Zahlen solle eingegeben werden?"

);

anzahl = Integer.

parseInt

(eingabe);

if(anzahl >= 0

) {

for(;anzahl >= 0

; anzahl--) {

eingabe = JOptionPane.

showInputDialog(null, "Bitte"

+

" geben Sie eine zu überprüfende Zahl ein."

);

zahl = Integer.

parseInt

(eingabe);

if(zahl > 0

) {

anzPositiv++;

}

else

{

anzNegativ++;

}

}

JOptionPane.

showMessageDialog(null, anzPositiv + " positive"

+

" Zahl(en), " + anzNegativ + " negative Zahl(en)"

);

}

else

{

JOptionPane.

showMessageDialog(null, "Als Anzahl sind"

+

" nur positive Zahlen (größer als 0) erlaubt!"

);

}

}

}

 

Wenn man mit dem obigen Programm die einzelnen Testfälle im

Testprotokoll durchgeht, dann ist folgendes Ergebnis zu sehen:

Nr.

NF/GF/FF

Eingabe:

anzahl

Eingabe:

zahl

Erwartetes Ergebnis:

Ok?

1

NF

5

beliebig

5 Zahlen können eingegeben werden

X

2

GF

1

beliebig

1 Zahl kann eingegeben werden.

X

3

GF

0

---

Fehlermeldung, das Programm wird danach beendet

X

4

FF

-1

----

Fehlermeldung, das Programm wird danach beendet

Ok

5

NF

1

5

Ausgabe: "1 positive Zahl(en), 0 negative Zahl(en)"

X

6

NF

1

-7

Ausgabe: "0 positive Zahl(en), 1 negative Zahl(en)"

X

7

GF

1

1

Ausgabe: "1 positive Zahl(en), 0 negative Zahl(en)"

X

8

GF

1

-1

Ausgabe: "0 positive Zahl(en), 1 negative Zahl(en)"

X

9

GF

1

0

Ausgabe: "0 positive Zahl(en), 0 negative Zahl(en)"

X

10

NF

5

1,-1,2,-3,0

Ausgabe: "2 positive Zahl(en), 2 negative Zahl(en)"

X

 

Die fehlgeschlagenen Testfälle liefern statt des erwarteten Ergebnisses

folgendes Ergebnis:

  • Testfall 1: 6 Zahlen können eingegeben werden
  • Testfall 2: 2 Zahlen können eingegeben werden
  • Testfall 3: 1 Zahl kann eingegeben werden
  • Testfall 5: 2 Zahlen können eingegeben werden
  • Testfall 6: 2 Zahlen können eingegeben werden
  • Testfall 7: 2 Zahlen können eingegeben werden
  • Testfall 8: 2 Zahlen können eingegeben werden
  • Testfall 9: 2 Zahlen können eingegeben werden
  • Testfall 10: 6 Zahlen können eingegeben werden

Aus der Fehlerart kann man unter Umständen schnell auf den Fehler

schließen. So funktioniert offenbar die Wiederholung der Eingabe nicht

richtig und es wird die Eingabe zu oft wiederholt. Die Zeile, die für

das Wiederholen der Eingabe zuständig ist, ist der Schleifenkopf in

Zeile 20. Hier kann mit der Korrektur angesetzt werden. Die neue Zeile

20 sieht folgendermaßen aus (

> statt >= ):

for(;anzahl > 0; anzahl--) {

Nach Ausbessern dieses Fehlers muss das Testen wiederholt werden. Im

Testprotokoll wird der Erfolg oder Misserfolg neuerlich festgehalten:

Nr.

NF/GF/FF

Eingabe:

anzahl

Eingabe:

zahl

Erwartetes Ergebnis:

Ok?

1

NF

5

beliebig

5 Zahlen können eingegeben werden

Ok

2

GF

1

beliebig

1 Zahl kann eingegeben werden.

Ok

3

GF

0

---

Fehlermeldung, das Programm wird danach beendet

X

4

FF

-1

----

Fehlermeldung, das Programm wird danach beendet

Ok

5

NF

1

5

Ausgabe: "1 positive Zahl(en), 0 negative Zahl(en)"

Ok

6

NF

1

-7

Ausgabe: "0 positive Zahl(en), 1 negative Zahl(en)"

Ok

7

GF

1

1

Ausgabe: "1 positive Zahl(en), 0 negative Zahl(en)"

Ok

8

GF

1

-1

Ausgabe: "0 positive Zahl(en), 1 negative Zahl(en)"

Ok

9

GF

1

0

Ausgabe: "0 positive Zahl(en), 0 negative Zahl(en)"

X

10

NF

5

1,-1,2,-3,0

Ausgabe: "2 positive Zahl(en), 2 negative Zahl(en)"

X

 

Tatsächliche Ergebnisse:

  • Testfall 3: keine Fehlermeldung, statt dessen Ausgabe: "0 positive

    Zahl(en), 0 negative Zahl(en)"

  • Testfall 9: Ausgabe: "0 positive Zahl(en), 1 negative Zahl(en)"
  • Testfall 10: Ausgabe: "2 positive Zahl(en), 3 negative Zahl(en)"

Das Ergebnis dieses Testablaufs ist schon besser, aber das Programm ist

offenbar noch immer fehlerhaft. Es sind also noch weitere Korrekturen

mit nachfolgenden Tests notwendig. Der Prozess wird so lange wiederholt,

bis keine Fehler mehr auftreten.

In professionellen Programmierumgebungen werden solche Tests möglichst

automatisiert abgearbeitet. Damit wird vermieden, dass das Ausbessern

eines Bugs, eine Reihe weiterer neuer Bugs nach sich zieht.

Beim Test Driven Development

werden solche Tests auch entworfen,

bevor noch der Quellcode begonnen wird. Das Ziel ist dann mit jedem

Entwicklungsschritt mehr Testfälle auf "OK" bzw. grün zu setzen. Auch

abseits davon entspricht es guter Programmierpraxis, die Testfälle zu

entwerfen bevor mit der eigentlichen Programmentwicklung begonnen wird.

Durch das Entwerfen der Testfälle werden bestimmte Bereiche der

Aufgabenstellung bereits gründlich analysiert und auf besonders zu

berücksichtigende Fälle eingegangen. Dies kann bei der

Programmentwicklung helfen.

Beantworte die folgenden Fragen:

  • Welche Programmzeile muss geändert werden, um den verbleibenden Fehler, der durch Testfall 3 erkannt wird, zu beheben?

  • Was muss statt der fehlerhaften Zeile geschrieben werden, um den Fehler, der durch Testfall 3 erkannt wird, zu beheben (ohne führende Leerzeichen/Tabs)?

  • Welche Programmzeile muss geändert werden, um den verbleibenden Fehler, der durch die Testfälle 9 und 10 erkannt wird, zu beheben (es gibt natürlich mehrere Lösungsvarianten, aber nur eine, wo nur eine Programmzeile geändert werden muss)?

  • Was muss statt der fehlerhaften Zeile geschrieben werden, um den Fehler, der durch die Testfälle 9 und 10 erkannt wird, zu beheben (ohne führende Leerzeichen/Tabs)?

  • Wie nennt man die Herangehensweise beim Programmieren, bei der zuerst die Testfälle entworfen werden, und dann bei jedem weiteren Schritt versucht wird, einen weiteren Testfall auf "OK" zu setzen?

Переглянути це питання

Programmbeispiel:

Schreibe ein Programm, das eine beliebige Anzahl an Zahlen eingeben

lässt und dann ausgibt, wie viele positive und wie viele negative Zahlen

eingegeben wurden. Am Beginn muss zusätzlich eingegeben werden, wie

viele Zahlen insgesamt für das Zählen eingegeben werden sollen.

Anforderungsanalyse und Definition der Testfälle

Die Aufgabenstellung ist bewusst etwas vage gehalten, um nicht zu viel

vorwegzunehmen. Aber auch Aufgabenstellungen in der Praxis sind im

ersten Anlauf oft nicht vollständig (mehr dazu im Gegenstand

„Informationstechnische Projekte"). In der gegebenen Aufgabenstellung

kommen 2 grundsätzlich verschiedene Eingaben vor:

  1. Die Anzahl der einzugebenden Zahlen

  2. Die jeweilige Zahl, die gezählt werden soll.

Für die Anzahl

sind keine genauen Kriterien definiert, aber ein paar

wichtige Bedingungen ergeben sich aus dem logischen Zusammenhang:

  1. eine negative Anzahl ist nicht sinnvoll

  2. 0 als Anzahl ist ebenfalls nicht sinnvoll

Damit ergeben sich folgende Werte, die zu testen sind:

  • NF: ein beliebiger positiver Wert

  • FF: ein beliebiger negativer Wert

  • GF (FF): 0 (ist noch ein Fehlerfall, aber an der Grenze zum NF)

  • GF (NF): 1 (ist schon ein gültiger Normalfall, aber an der Grenze zum

    FF)

Für die zweite Eingabe - die Zahl

, die gezählt werden soll - sind andere Fälle wichtig. Wir haben 2

Kategorien, die gezählt werden:

  1. positive Zahlen

  2. negative Zahlen

  3. und was ist mit 0? Diese Zahl ist weder positiv noch negativ und darf bei

    keinem gezählt werden.

Damit ergeben sich als zu testende Werte:

  • NF: beliebige positive Zahl

  • NF: beliebige negative Zahl

  • GF (NF): 1 (kleinste positive Zahl und damit an der Grenze zur

    neutralen Zahl)

  • GF (NF): 0 (ist keine falsche Eingabe, aber darf nicht gezählt werden)

  • GF (NF): -1 (größte negative Zahl und damit an der Grenze zur neutralen

    Zahl)

  • NF: mehrere verschiedene Werte (notwendig, um die Anforderung

    "Zählen" wirklich zu überprüfen)

Mit diesen Überlegungen kann man nun einen Testplan aufstellen. Ein

Testprotokoll enthält mögliche Eingabewerte und die dazu erwarteten

Ergebnisse. Zusätzlich empfiehlt es sich die Testfälle

durchzunummerieren, damit man sich später darauf beziehen kann.

Nr.

NF/GF/FF

Eingabe:

anzahl

Eingabe:

zahl

Erwartetes Ergebnis:

Ok?

1

NF

5

beliebig

5 Zahlen können eingegeben werden

 

2

GF

1

beliebig

1 Zahl kann eingegeben werden.

 

3

GF

0

---

Fehlermeldung, das Programm wird danach beendet

 

4

FF

-1

----

Fehlermeldung, das Programm wird danach beendet

 

5

NF

1

5

Ausgabe: "1 positive Zahl(en), 0 negative Zahl(en)"

 

6

NF

1

-7

Ausgabe: "0 positive Zahl(en), 1 negative Zahl(en)"

 

7

GF

1

1

Ausgabe: "1 positive Zahl(en), 0 negative Zahl(en)"

 

8

GF

1

-1

Ausgabe: "0 positive Zahl(en), 1 negative Zahl(en)"

 

9

GF

1

0

Ausgabe: "0 positive Zahl(en), 0 negative Zahl(en)"

 

10

NF

5

1,-1,2,-3,0

Ausgabe: "2 positive Zahl(en), 2 negative Zahl(en)"

 

 

Löse folgende Aufgabenstellung:

Führe eine Anforderungsanalyse für folgende Aufgabenstellung durch:

Für ein Zeiterfassungssystem sollen die Arbeitszeiten berechnet werden. Die Arbeitszeit beginnt jeden Tag um 8:00. Die Endzeit ist flexibel. Lies bei dem Programm zuerst ein, wie viele Arbeitstage erfasst werden sollen. Lies anschließend zu jedem Arbeitstag die Endzeit ein, indem du zuerst die Stunde und dann die Minuten einliest (also, wenn die Arbeitszeit um 12:45 endet, wird zuerst 12 und dann 45 eingelesen). Anschließend soll die Summe der Arbeitszeiten für jeden Tag berechnet und im Format Stunden:Minuten (hh:mm) ausgegeben werden.

  • Welche grundsätzlichen Eingabewerte umfasst das Programm:

  • Bei welchen der folgenden möglichen Werte, handelt es sich für die Anzahl der Arbeitstage um einen Normalfall

    (Achtung, auch Grenzfälle können entweder Normalfälle oder Fehlerfälle sein):

  • Bei welchen der folgenden möglichen Werte, handelt es sich für die Anzahl der Arbeitstage um einen Fehlerfall

    (Achtung, auch Grenzfälle können entweder Normalfälle oder Fehlerfälle sein):

  • Bei welchen der folgenden möglichen Werte, handelt es sich für die Anzahl der Arbeitstage um einen Grenzfall

    (Achtung, auch Normalfälle oder Fehlerfälle können Grenzfälle sein):

  • Bei welchen der folgenden möglichen Werte, handelt es sich für die Stundenwerte um einen Normalfall

    (Achtung, auch Grenzfälle können entweder Normalfälle oder Fehlerfälle sein):

  • Bei welchen der folgenden möglichen Werte, handelt es sich für die Stundenwerte um einen Fehlerfall

    (Achtung, auch Grenzfälle können entweder Normalfälle oder Fehlerfälle sein):

  • Bei welchen der folgenden möglichen Werte, handelt es sich für die Stundenwerte um einen Grenzfall

    (Achtung, auch Normalfälle oder Fehlerfälle können Grenzfälle sein):

  • Bei welchen der folgenden möglichen Werte, handelt es sich für die Minutenwerte um einen Normalfall

    (Achtung, auch Grenzfälle können entweder Normalfälle oder Fehlerfälle sein):

  • Bei welchen der folgenden möglichen Werte, handelt es sich für die Minutenwerte um einen Fehlerfall

    (Achtung, auch Grenzfälle können entweder Normalfälle oder Fehlerfälle sein):

  • Bei welchen der folgenden möglichen Werte, handelt es sich für die Minutenwerte um einen Grenzfall

    (Achtung, auch Normalfälle oder Fehlerfälle können Grenzfälle sein):

Переглянути це питання

Testfälle:

Testfälle beschreiben die durchzuführenden Tests und bilden damit die Testszenarien:

Ein Testfall ist eine Reihe von Eingabewerten mit ihren erwarteten

Ergebnissen.

Auch notwendige Vorbedingungen bzw. abschließende Handlungen, die für

den Test gelten und notwendig sind, werden im Testfall angegeben. In

diesem ersten Betrachten des Themas "Testen" genügt allerdings die

gegebene einfache Definition.

Ausgangspunkt für das Erstellen von Testfällen sind die Anforderungen an

das Programm. Deshalb ist die Anforderungsanalyse der erste Schritt, um

überhaupt Tests definieren zu können. Dabei muss möglichst für jede

Anforderung an das Programm mindestens einen Testfall definiert werden.

Der Begriff

Coverage

(Testabdeckung) beschreibt dabei, wie

vollständig dies gelungen ist.

Eingabewerte

Es ist bei Programmen oft unmöglich alle möglichen Eingabewerte zu

testen. Deswegen ist es üblich die Eingabewerte in Gruppen bzw. Blöcke

zu unterteilen, die so gewählt werden, dass eine möglichst vollständige

Coverage

erreicht wird. Diese Blöcke werden auch als Testklassen bezeichnet. Für jede Testklasse sollen dann mindestens 3

verschiedene Bereiche betrachtet werden:

  • Normalfälle (NF): Eingabewerte, die sicher ein gültiges Ergebnis

    liefern

  • Grenzfälle(GF): Eingabewerte, die an Grenze zwischen den Blöcken oder

    an Grenzen von Normalfällen zu Fehlerfällen liegen.

  • Fehlerfälle (FF): Fehlerfälle, sind Eingabe-Werte, die außerhalb des

    sinnvollen Bereiches liegen und im Programm zu einer gewollten

    Fehlermeldung führen. Diese sind auch oft ein ganz eigener Block.

Ergänze folgende Zusammenfassung:

  • Ein stellt ein einzelnes Testszenario dar.

  • Dabei beschreibt der Testfall welche verwendet werden und welche zu diesen Werten herauskommen sollen, also erwartet werden.

  • Der erste Schritt zur Entwicklung der Testfälle ist die . Durch sie werden die Eingaben mit ihren erwarteten Ergebnissen beschrieben.

  • Die Anforderungen sollen durch die Tests möglichst vollständig abgedeckt werden. Wenn dies gut gelingt, spricht man von einer guten .

  • Da man bei den meisten Programmen unmöglich alle möglichen Eingabewerte testen kann, werden diese Eingabewerte in unterteilt.

  • Für jede Testklasse sollen zunächst einmal die

    betrachtet werden. Dabei handelt es sich um Eingabewerte, die sicher ein gültiges Ergebnis liefern.

  • Es ist aber auch wichtig

    zu testen. Das sind Fälle, wo die Eingabewerte ungültig sind, und das Programm dabei auch eine Fehlermeldung ausgeben muss.

  • sind Eingabewerte, die genau am Übergang vom Normalfall zum Fehlerfall oder aber auch am Übergang zwischen verschiedenen Testklassen liegen.

  • Bei den Grenzfällen passieren die

    Fehler. Sie müssen daher besonders gut getestet werden.

Переглянути це питання

Testen und Debuggen

Testen

Testen ist die systematische Suche nach Fehlern. Damit soll ein

möglichst sicherer Umgang mit dem Programm gewährleistet werden. Nachdem

alle Programme von Menschen entwickelt werden, kommen Fehler in

Programmen vor. Je mehr Zeilen ein Programm besitzt, desto

wahrscheinlicher ist das Auftreten von Fehlern. Es gibt zwei wichtige

Arten:

  • Syntax-Fehler: Programmanweisungen, die nicht den Regeln der

    Programmiersprache entsprechend geschrieben wurden; Solche Fehler kann

    der Compiler gut erkennen. Sie werden deswegen auch als

    Compiler-Fehler oder auch grammatikalische Fehler bezeichnet.

  • Semantik-Fehler: Fehler, die in der Bedeutung des Programms liegen,

    d.h. in der Programm-Logik. Diese Fehler können vom Compiler nicht

    erkannt werden. Sie werden deshalb oft auch als Logik-Fehler oder

    umgangssprachlich als Bugs bezeichnet.

Beim Testen geht es um das Aufspüren von semantischen Fehlern.

Damit Fehler gefunden werden können, muss ein Programmablauf immer

wieder mit verschiedensten Szenarien durchgespielt werden. Um die

Chancen zu erhöhen, mit diesen Szenarien auch wirklich die Fehler zu

finden, müssen diese Szenarien nach einem bestimmten System entwickelt

werden. Je nach Herangehensweise werden prinzipiell 2 Arten von Tests

unterschieden:

  • Black-Box-Testen: Dabei wird das Programm als "schwarze Box"

    betrachtet, dessen Innenleben nicht bekannt ist. Allein aus der

    Programmbeschreibung bzw. Aufgabenstellung werden die Szenarien

    abgeleitet, die für das Testen herangezogen werden.

  • White-Box-Testen: Hier werden die Testfälle und Testverfahren aus dem

    Wissen über den internen Aufbau des Programms abgeleitet.

Da oft keine klaren Grenzen gezogen werden können, wurde als Begriff

Gray-Box-Testen eingeführt bzw. wird in moderner Literatur die obige

Unterscheidung gar nicht mehr getroffen (vgl.

Introduction in Software-Testing

; Paul Ammann, Jeff Offutt;

Cambridge University Press, 2016).

Ein Zugang, der von vielen Anfängern verwendet wird, ist das

"Ausprobieren" von Software. Beim Ausprobieren wird oft nur ein

einziger typischer Programmablauf durchgeführt und wenn dieser das

gewünschte Ergebnis liefert, wird das Ausprobieren beendet. Die

Wahrscheinlichkeit dabei Fehler zu finden ist nicht sehr groß.

Ausprobieren ist nicht Testen.

Ergänze folgende Zusammenfassung:

  • Im Gegensatz zum Ausprobieren werden beim Testen die Fehler gesucht.

  • Das Testen dient nicht dazu, -Fehler aufzuspüren, denn diese werden vom Compiler erkannt.

  • Beim Testen können hingegen logische Fehler, d.h. -Fehler, gefunden werden.

  • Die einfachere Herangehensweise beim Testen ist das -Testen, weil dabei nur von der Aufgabenstellung bzw. der Programmbeschreibung ausgegangen wird.

  • Beim -Testen wird auf die genauen Programmablauf im Quellcode eingegangen, um die Testszenarien zu entwerfen.

  • Da aber oft die Entwickler selbst die Tests entwerfen und dabei natürlich die Kenntnis über den Quellcode einfließen lassen, spricht man auch öfters von -Testen.

  • Ausprobieren ist mit Testen gleichzusetzen, da das Ausprobieren oft nur ein Szenario umfasst und nicht systematisch abläuft.

Bitte beantworten Sie alle Teile der Frage.
Переглянути це питання

Testen und Debuggen

Testen

Testen ist die systematische Suche nach Fehlern. Damit soll ein

möglichst sicherer Umgang mit dem Programm gewährleistet werden. Nachdem

alle Programme von Menschen entwickelt werden, kommen Fehler in

Programmen vor. Je mehr Zeilen ein Programm besitzt, desto

wahrscheinlicher ist das Auftreten von Fehlern. Es gibt zwei wichtige

Arten:

  • Syntax-Fehler: Programmanweisungen, die nicht den Regeln der

    Programmiersprache entsprechend geschrieben wurden; Solche Fehler kann

    der Compiler gut erkennen. Sie werden deswegen auch als

    Compiler-Fehler oder auch grammatikalische Fehler bezeichnet.

  • Semantik-Fehler: Fehler, die in der Bedeutung des Programms liegen,

    d.h. in der Programm-Logik. Diese Fehler können vom Compiler nicht

    erkannt werden. Sie werden deshalb oft auch als Logik-Fehler oder

    umgangssprachlich als Bugs bezeichnet.

Beim Testen geht es um das Aufspüren von semantischen Fehlern.

Damit Fehler gefunden werden können, muss ein Programmablauf immer

wieder mit verschiedensten Szenarien durchgespielt werden. Um die

Chancen zu erhöhen, mit diesen Szenarien auch wirklich die Fehler zu

finden, müssen diese Szenarien nach einem bestimmten System entwickelt

werden. Je nach Herangehensweise werden prinzipiell 2 Arten von Tests

unterschieden:

  • Black-Box-Testen: Dabei wird das Programm als "schwarze Box"

    betrachtet, dessen Innenleben nicht bekannt ist. Allein aus der

    Programmbeschreibung bzw. Aufgabenstellung werden die Szenarien

    abgeleitet, die für das Testen herangezogen werden.

  • White-Box-Testen: Hier werden die Testfälle und Testverfahren aus dem

    Wissen über den internen Aufbau des Programms abgeleitet.

Da oft keine klaren Grenzen gezogen werden können, wurde als Begriff

Gray-Box-Testen eingeführt bzw. wird in moderner Literatur die obige

Unterscheidung gar nicht mehr getroffen (vgl.

Introduction in Software-Testing

; Paul Ammann, Jeff Offutt;

Cambridge University Press, 2016).

Ein Zugang, der von vielen Anfängern verwendet wird, ist das

"Ausprobieren" von Software. Beim Ausprobieren wird oft nur ein

einziger typischer Programmablauf durchgeführt und wenn dieser das

gewünschte Ergebnis liefert, wird das Ausprobieren beendet. Die

Wahrscheinlichkeit dabei Fehler zu finden ist nicht sehr groß.

Ausprobieren ist nicht Testen.

Ergänze folgende Zusammenfassung:

  • Im Gegensatz zum Ausprobieren werden beim Testen die Fehler gesucht.

  • Das Testen dient nicht dazu, -Fehler aufzuspüren, denn diese werden vom Compiler erkannt.

  • Beim Testen können hingegen logische Fehler, d.h. -Fehler, gefunden werden.

  • Die einfachere Herangehensweise beim Testen ist das -Testen, weil dabei nur von der Aufgabenstellung bzw. der Programmbeschreibung ausgegangen wird.

  • Beim -Testen wird auf die genauen Programmablauf im Quellcode eingegangen, um die Testszenarien zu entwerfen.

  • Da aber oft die Entwickler selbst die Tests entwerfen und dabei natürlich die Kenntnis über den Quellcode einfließen lassen, spricht man auch öfters von -Testen.

  • Ausprobieren ist mit Testen gleichzusetzen, da das Ausprobieren oft nur ein Szenario umfasst und nicht systematisch abläuft.

Переглянути це питання

Schreibe den Aufruf der Methode aus der main-Methode Klasse Eingabe für folgende Aufgabenstellung (wenn keine Parameter oder Rückgabewerte angegeben sind, dann hat die Methode auch keine):

Gegeben ist eine Methode mit dem Namen schule in der Klasse Anzeigen, bei der der Text TGM auf der Konsole ausgegeben wird.

Переглянути це питання

Analysiere folgende Aufgabenstellungen und beantworte die dazugehörigen Fragen:

1. Methode

Schreibe in der Klasse Dreieck eine Methode istDreieck. Die Methode soll die drei Seitenlängen eines Dreiecks a, b und c als Dezimalzahlen-Parameter übernehmen und überprüfen ob es sich um ein gültiges Dreieck handelt. Das Dreieck ist dann gültig, wenn die Summe der beiden kleineren Seite größer als die größte Seite ist. Wenn das Dreieck gültig ist, soll true zurückgegeben werden, sonst false.

  • Welchen Namen hat die Methode?

  • Wieviele Parameter hat die Methode?

  • Welche/n Datentyp/en hat/haben die Parameter? Achte auf die Reihenfolge und trenne mehrere Datentypen durch einen Beistrich

  • Was für einen Rückgabetyp braucht die Methode?

Schreibe nun anhand der Informationen die Kopfzeile der Methode (ohne geschwungene Klammer) auf:

2. Methode

Schreibe in der Klasse Dreieck eine Methode umfang. Die Methode soll die drei Seitenlängen eines Dreiecks a, b und c als Dezimalzahlen-Parameter übernehmen und den Umfang (U = a + b + c) berechnen und zurück geben. Die Berechnung soll allerdings nur stattfinden, wenn das übergebene Dreieck gültig ist, sonst soll 0 zurückgegeben werden. Verwende für die Überprüfung, ob es sich um ein gültiges Dreieck handelt die 1. Methode aus der Klasse namens istDreieck.

  • Welchen Namen hat die Methode?

  • Wieviele Parameter hat die Methode?

  • Welche/n Datentyp/en hat/haben die Parameter? Achte auf die Reihenfolge und trenne mehrere Datentypen durch einen Beistrich

  • Was für einen Rückgabetyp braucht die Methode?

Schreibe nun anhand der Informationen die Kopfzeile der Methode (ohne geschwungene Klammer) auf:

3. Methode

Schreibe in die Klasse Dreieck eine Methode umfangFormatiert. Die Methode soll die drei Seitenlängen eines Dreiecks a, b und c als Dezimalzahlen-Parameter übernehmen und den Umfang (U = a + b + c) berechnen und schön formatiert als Text zurückgeben. Der zurückgegebene Text soll dabei genau folgender Form entsprechen: Umfang: a + b + c = berechneter Umfang . Verwende für die Berechnung des Umfangs die 2. Methode namens umfang aus dieser Klasse.

  • Welchen Namen hat die Methode?

  • Wieviele Parameter hat die Methode?

  • Welche/n Datentyp/en hat/haben die Parameter? Achte auf die Reihenfolge und trenne mehrere Datentypen durch einen Beistrich

  • Was für einen Rückgabetyp braucht die Methode?

Schreibe nun anhand der Informationen die Kopfzeile der Methode (ohne geschwungene Klammer) auf:

Kopiere oder merk dir die Kopfzeilen für die nächste Fragen

Переглянути це питання

Хочете миттєвий доступ до всіх перевірених відповідей на elearning.tgm.ac.at?

Отримайте необмежений доступ до відповідей на екзаменаційні питання - встановіть розширення Crowdly зараз!