Looking for SEW2a 1xHIT Methoden test answers and solutions? Browse our comprehensive collection of verified answers for SEW2a 1xHIT Methoden at elearning.tgm.ac.at.
Get instant access to accurate answers and detailed explanations for your course questions. Our community-driven platform helps students succeed!
showInputDialog
Für die grafikbasierte Eingabe wird die Klassenmethode der Klasse benötigt. Ein Aufruf dieser Methode erzeugt ein Eingabe-showInputDialog
JOptionPane
In der API-Dokumentation ist die Methode folgendermaßen angegeben:showInputDialog
Um die Methode zu verwenden müssen die selben Punkte nacheinander überlegt werden, wie bei selbstgeschriebenen Methoden.showInputDialog
Überprüfen, ob es sich um eine Klassenmethode handelt: Ist das Schlüsselwort static in der Methodendokumentation vorhanden? Bei dieser Methode: Ja, d.h. es ist eine Klassenmethode, damit hat der Aufruf die Struktur:JOptionPane.showInputDialog
Für jeden Formalparameter in der Methodendefinition muss ein Aktualparameter (= aktueller Wert) festgelegt werden:
Erster Parameter: dieser ist vom Objekttyp (erkennbar am großen Anfangsbuchstaben). Hier kann man angeben zu welcher grafischen Oberflächenkomponente der Eingabedialog dazu gehört. Nachdem wir erst viel, viel später grafische Oberflächen verwenden, kann derzeit der Wert (ausgeschrieben, nicht die Ziffer 0) angegeben werden, der bei Objekten als Ersatz für "nichts" verwendet wird.Component
Zweiter Parameter: Ebenfalls ein Objekttyp, der dafür steht, dass man irgendeine beliebige Nachricht als Objekt angegeben kann. Nachdem String ein Objektdatentyp ist, können auch Variablen oder Literale vom Typ String dafür verwendet werden, z.B:"Eingabe bitte:"
Überprüfen, ob eine Auffangvariable benötigt wird (Rückgabetyp ≠ Bei dieser Methode: , d.h. es wird eine Auffangvariable vom Typ void
) oder nicht (Rückgabetyp = void
):Welchen Rückgabetyp hat die Methode?String
String
benötigt.
Die Methode für die grafikbasierten Eingabedialoge ist in der Klasse definiert.
Der Name der Methode für die grafikbasierten Eingabedialoge lautet .
Das Schlüsselwort in der API-Dokumentation dieser Methode zeigt an, dass es sich um eine
Klassenmethoden werden grundsätzlich mit .
aufgerufen.
Diese Methode wird daher konkret mit .
aufgerufen.
Für den ersten Parameter werden wir derzeit immer den Wert einsetzen, weil wir keine selbst programmierte grafische Oberfläche haben, mit der wir unseren Eingabedialog verbinden wollen.
Als zweiter Parameter wird
Diese Methode benötigt
Der Rückgabetyp der Methode ist , deshalb muss auch die Auffangvariable den Typ haben.
Fortsetzen bzw. Continue: Hierbei wird die schrittweise Ausführung des Programms unterbrochen und das Programm wird in normaler Geschwindigkeit fortgesetzt, solange bis die Ausführung des Programms wieder zu einem Breakpoint kommt.
Abbrechen bzw. Terminate: Die Programmausführung wird komplett abgebrochen und damit beendet.
Durch das Anklicken von wird der Debugmodus unterbrochen und das Programm in "normaler" Weise fortgesetzt.
Auch wenn Continue angeklickt wurde, kann die Programmausführung durch einen erneut unterbrochen werden.
Durch das Auswählen von wird die Programmausführung komplett gestoppt und beendet.
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:
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.
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 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.
Mit "Step" und "Step Into" kann das Programm im Debugmodus
Wenn das Programm bei keinem Methodenaufruf steht, gibt es auch
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
Die meisten IDEs haben eine Möglichkeit Programme in Einzelschritten auszuführen. Dies kann aus folgenden Gründen notwendig sein:
Mein Programm hat einen Fehler im Programmablauf, den ich finden und
beheben möchte
Das Programm, mit dem man den Quellcode eines Programms Schritt für Schritt ausführen kann, nennt man = 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 , d.h. Fehler im Programmablauf und in der Programmlogik.
Die Schritte um mit dem Debugger zu arbeiten sind in den folgenden Abschnitten beschrieben.
Durch einen Breakpoint wird die normale Programmausführung unterbrochen (engl. = 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.
Um die Fehlersuche in Programmen zu unterstützen, bieten die meisten IDEs einen an.
Mit dem Debugger kann man ein Programm
Um mit dem Debugger zu arbeiten muss man zunächst einen setzen.
Durch den Breakpoint
Ein Breakpoint kann bei folgenden Anweisungen nicht gesetzt werden:
Bevor ein Breakpoint gesetzt werden kann, muss der Quellcode
Im Debugger-Fenster sieht man die folgenden Informationen:
Für das vorige Beispiel wurde ein erster Programmentwurf mit folgendem Quellcode geschrieben:
| import |
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:
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)"
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.
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?
Für das vorige Beispiel wurde ein erster Programmentwurf mit folgendem Quellcode geschrieben:
| import |
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:
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)"
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.
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?
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.
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:
Die Anzahl der einzugebenden Zahlen
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:
eine negative Anzahl ist nicht sinnvoll
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:
positive Zahlen
negative Zahlen
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)"
|
|
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 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 (Testabdeckung) beschreibt dabei, wie vollständig dies gelungen ist.
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 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.
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
Es ist aber auch wichtig
Bei den Grenzfällen passieren die
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. ; 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ß.
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.
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. ; 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ß.
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.
Get Unlimited Answers To Exam Questions - Install Crowdly Extension Now!