Handbuch

36.4
Datentreiber

Der Ausdruck datengetriebenes Testen bezieht sich auf eine verbreitete Methode bei automatisierten Tests, bei der Testfälle mehrfach mit unterschiedlichen Datensätzen ausgeführt werden. Dank des flexiblen Variablenkonzepts in QF-Test gibt es keine Einschränkungen, wie diese Daten genutzt werden können. Die häufigste Verwendung ist sicherlich für Eingabewerte in 'Event' und erwartete Ergebnisse in 'Check' Knoten.

QF-Test's Mechanismus für datengetriebenes Testen besteht aus dem 'Datentreiber' Knoten, der benutzt wird um einen Datenkontext zur Verfügung zu stellen, und verschiedenen Arten von 'Daten' Knoten. Aktuell gibt es den 'Datentabelle' Knoten, der Daten in Form einer Tabelle in QF-Test selbst speichert, den 'CSV Datei' Knoten, der Daten aus einer CSV Datei, sowie den 'Datenbank' Knoten, der Daten aus einer Datenbank und den 'Excel Datei' Knoten, der Daten aus einer Excel Datei liest. Es wird auch ein Erweiterungs-API für den Zugriff auf beliebige externe Daten zur Verfügung gestellt.

Weitere Informationen über die Zusammenarbeit der verschiedenen Teile des Datentreiber-Mechanismus finden Sie in Kapitel 17.

36.4.1
'Datentreiber'

Außer seiner besonderen Position im 'Testfallsatz' oder 'Testschritt' verhält sich ein 'Datentreiber' wie eine normale 'Sequenz'. Er stellt den Kontext für einen oder mehrere 'Daten' Knoten bereit, für den sich diese während der Ausführung des 'Datentreibers' registrieren können. Der 'Testfallsatz' iteriert dann über die Datensätze, die von den registrierten 'Daten' Knoten zur Verfügung gestellt werden und führt seine Childknoten aus, wie in Kapitel 17 beschrieben. Für diesen Zweck muss ein 'Datentreiber' innerhalb eines 'Testfallsatz' Knotens platziert werden, zwischen die optionalen 'Abhängigkeit' und 'Vorbereitung' Knoten. 'Datentreiber' Knoten können auch innerhalb von 'Testschritt' Knoten an erster Stelle platziert werden.

Enthalten in: 'Testfallsatz', 'Testschritt'.

Kinder: Beliebig

Ausführung: Wenn ein 'Testfallsatz' oder 'Testschritt' ausgeführt wird, überprüft dieser, ob ein 'Datentreiber' vorhanden ist und führt ihn aus. Der Inhalt des 'Datentreiber' Knotens ist nicht auf 'Daten' Knoten beschränkt, sondern kann beliebige ausführbare Knoten enthalten, so dass jede Form von Vorbereitung realisiert werden kann, die für das Bereitstellen der Daten notwendig ist. Damit ist es auch möglich, 'Daten' Knoten wieder zu verwenden, indem man sie in einer 'Prozedur' platziert und diese aus dem 'Datentreiber' heraus aufruft. Jeder 'Daten' Knoten, der in einem 'Datentreiber' Kontext registriert ist, wird vom 'Testfallsatz' oder 'Testschritt' auf seine Daten hin abgefragt.

Attribute:

'Datentreiber' Attribute
Abbildung 36.14:  'Datentreiber' Attribute
'Name'

Der Name eines 'Datentreibers' ist eine Art Kurzkommentar. Er wird in der Baumdarstellung der Testsuite angegeben und sollte etwas über die Art der bereitgestellten Daten aussagen.

Variabel: Nein

Einschränkungen: Keine

'Name für Schleifendurchgang im Protokoll'

Hier kann ein eigener Name für die Iterationsschritte definiert werden, der dann im Protokoll verwendet wird. Dieser kann Variablen der gebundenen Daten enthalten um damit das Auffinden eines spezifischen Iterationsschrittes zu erleichtern.

Variabel: Ja

Einschränkungen: Nein

'Name für separates Protokoll'

Mit diesem Attribut kann ein Knoten als Bruchstelle zum Abteilen eines Protokolls markiert werden. Es legt den Dateinamen für das abgeteilte Protokoll fest. Nach jeder Iteration des 'Datentreibers' wird das zugehörige Protokoll aus dem Hauptprotokoll entfernt und als eigenständiges Protokoll gespeichert. Diese Operation ist vollständig transparent, da das Hauptprotokoll eine Referenz auf das abgeteilte Protokoll erhält und somit vollständig navigierbar bleibt. Näheres zu geteilten Protokollen finden Sie in Abschnitt 8.1.4.

Dieses Attribut hat keinen Effekt, wenn die Option Geteilte Protokolle erzeugen deaktiviert ist oder geteilte Protokolle durch explizite Angabe von -splitlog im Batchmodus ausgeschaltet werden.

Es ist nicht nötig für Eindeutigkeit der Dateinamen für abgeteilte Protokolle zu sorgen. Wo nötig hängt QF-Test eine Zahl an den Dateinamen an, um Konflikte zu vermeiden. Der Dateiname darf Verzeichnisse enthalten und es können - analog zur Angabe des Dateinamens für das Protokoll im Batchmodus - folgende Platzhalter in Kombination mit einem '%' oder '+' Zeichen verwendet werden:

Zeichen Bedeutung
% '%'-Zeichen.
+ '+'-Zeichen.
i Die aktuelle Runid wie mit -runid [<ID>] angegeben.
r Die Fehlerstufe des abgeteilten Protokolls.
w Die Anzahl der Warnungen im abgeteilten Protokoll.
e Die Anzahl der Fehler im abgeteilten Protokoll.
x Die Anzahl der Exceptions im abgeteilten Protokoll.
t Der Threadindex zu dem das abgeteilte Protokoll gehört (für Tests mit parallelen Threads).
y Das aktuelle Jahr (2 Ziffern).
Y Das aktuelle Jahr (4 Ziffern).
M Der aktuelle Monat (2 Ziffern).
d Der aktuelle Tag (2 Ziffern).
h Die aktuelle Stunde (2 Ziffern).
m Die aktuelle Minute (2 Ziffern).
s Die aktuelle Sekunde (2 Ziffern).
Tabelle 36.5:  Platzhalter für das Attribut 'Name für separates Protokoll'

Variabel: Ja

Einschränkungen: Keine, Zeichen die für Dateinamen nicht zulässig sind werden durch '_' ersetzt.

'Variablen Definitionen'

Hier können Sie Werte für Variablen definieren, die während der Ausführung der Children der Sequenz Gültigkeit besitzen. Näheres zur Arbeit mit der Tabelle finden Sie in Abschnitt 2.2.5. Eine detaillierte Erklärung zur Definition und Verwendung von Variablen finden Sie in Kapitel 7.

Variabel: Namen der Variablen nein, Werte ja

Einschränkungen: Keine

'QF-Test ID'

Die QF-Test ID ist für diesen Knoten zur Zeit ohne Bedeutung.

Variabel: Nein

Einschränkungen: Darf keines der Zeichen '\', '#', '$', '@', '&', oder '%' enthalten und nicht mit einem Unterstrich ('_') beginnen.

'Verzögerung vorher/nachher'

Mit diesen Parametern kann vor oder nach der Ausführung eine Verzögerung bewirkt werden. Sind sie nicht gesetzt, wird die Standardverzögerung aus den Optionen verwendet.

Variabel: Ja

Einschränkungen: Leer oder >0

'Bemerkung'

Hier können Sie einen beliebigen Kommentar eintragen.

Hinweis Für die ausführliche Dokumentation, insbesondere von 'Testfallsatz', 'Testfall' oder 'Prozedur' Knoten, ist dieses Textfeld womöglich nicht der geeignete Ort. Es gibt hervorragende Editoren, die wesentlich besser dafür geeignet sind. Mittels der Option Kommando für externen Editor kann ein externer Editor festgelegt werden, in dem nach Drücken von [Alt-Eingabe] oder Klicken des Edit row Buttons der Kommentar komfortabel bearbeitet werden kann.

Für einige Knoten können Sie ein spezielles Verhalten per Doctags konfigurieren, siehe Doctags.

Variabel: Ja

Einschränkungen: Keine

36.4.2
'Datentabelle'

Eine 'Datentabelle' bietet eine komfortable Schnittstelle um Testdaten in Tabellen direkt in QF-Test zu speichern. Details zum Mechanismus des datengetriebenen Testens in QF-Test finden Sie in Kapitel 17.

Enthalten in: Beliebig

Kinder: Keine

Ausführung: Die 'Datentabelle' expandiert Variablen in der Tabelle entsprechend der Option Werte von Variablen beim Binden sofort expandieren. Jede Zeile wird individuell von links nach rechts expandiert, so dass eine Zelle - innerhalb derselben Zeile - auf Variablen verweisen kann, die in einer Spalte weiter links gebunden wurden. Dann registriert sich die 'Datentabelle' im Kontext eines 'Datentreibers'. Zusätzlich wird eine Propertygruppe mit dem Namen des Knotens und den Variablen size und totalsize angelegt. size beinhaltet die Anzahl der Datensätze mit Rücksicht auf Iterationsintervalle. totalsize beinhaltet die gesamte Anzahl an Datensätzen der Datenquelle ohne Rücksicht auf Iterationsintervalle. Nachdem alle 'Daten' Knoten angemeldet wurden, fragt der zugehörige 'Testfallsatz' die Datensätze der 'Datentabelle' ab, um darüber zu iterieren. Wenn kein 'Datentreiber' Kontext verfügbar ist, wird die Propertygruppe um alle Variablen des Knotens erweitert.

Attribute:

'Datentabelle' Attribute
Abbildung 36.15:  'Datentabelle' Attribute
'Name'

Der 'Name' eines 'Daten' Knotens ist ein Pflichtattribut. Er wird benutzt, um 'Daten' Knoten im selben 'Datentreiber' Kontext zu unterscheiden. Ein 'Break' Knoten, der während des datengetriebenen Tests ausgeführt wird, kann durch Angabe dieses 'Namens' in seinem Attribut 'QF-Test ID der Schleife' gezielt die Schleife dieser 'Datentabelle' abbrechen.

Variabel: Ja

Einschränkungen: Keine

'Zählervariable'

Der Name der Variablen, an die der Index des Schleifendurchgangs gebunden wird.

Variabel: Ja

Einschränkungen: Keine

'Iterationsbereiche'

Ein Optionaler Satz von zu nutzenden Indizes oder Bereichen für die Daten. Dies ist besonders während der Testentwicklung hilfreich, um nur über einen einzelnen Index oder einen Teil der Daten zu iterieren.

Bereiche werden durch ',' getrennt. Jeder Bereich ist entweder in einzelner Index, oder ein geschlossenes Intervall der Form 'von-bis' oder 'von:bis' wobei die Angabe von 'bis' optional ist. Indizes oder Bereiche können mehrfach, überlappend oder in absteigender Richtung angegeben werden. Indizes sind 0-basiert, ein negativer Index wird vom Ende her gezählt, wobei -1 dem letzten Eintrag entspricht. Eine ungültige Syntax oder ein Index außerhalb des vorhandenen Datenbereichs führen zu einer BadRangeException.

Die folgende Tabelle zeigt einige Beispiele für Iterationsbereiche und die daraus resultierenden Indizes.

Iterationsbereiche Daraus resultierende Indizes
0 [0]
-2, -1 [18, 19]
1-2,4:5 [1, 2, 4, 5]
18:,-3- [18, 19, 17, 18, 19]
3-2,16:15 [3, 2, 16, 15]
Tabelle 36.6:  Beispiele für Iterationsbereiche

Hinweis Der für die 'Zählervariable' gebunde Wert entspricht dem angegebenen Index im Iterationsbereich, nicht der Zahl der tatsächlich durchgeführten Iterationen. Wenn Sie z.B. '2' angeben, führt dies zu einer einzigen Iteration mit der 'Zählervariable' '2', nicht '0'.

Variabel: Ja

Einschränkungen: Gültige Syntax und Indexwerte

'Daten'

Hier werden die aktuellen Testdaten definiert. Jede Tabellenspalte steht hierbei für eine Variable, deren Name im Spaltenkopf spezifiziert wird. Jede Zeile ist ein Datensatz, ein Wert je Variable. So bestimmt die Zeilenzahl die Anzahl der Durchläufe in der datengetriebenen Schleife. Um Ihre Daten eingeben zu können, müssen Sie als erstes Spalten zur Tabelle hinzufügen und somit die Variablen definieren. Dann können mittels neuer Zeilen die Werte festgelegt werden. Näheres zur Arbeit mit der Tabelle finden Sie in Abschnitt 2.2.5.

Variabel: Ja, sogar die Spaltentitel

Einschränkungen: Keine

'QF-Test ID'

Die QF-Test ID ist für diesen Knoten zur Zeit ohne Bedeutung.

Variabel: Nein

Einschränkungen: Darf keines der Zeichen '\', '#', '$', '@', '&', oder '%' enthalten und nicht mit einem Unterstrich ('_') beginnen.

'Verzögerung vorher/nachher'

Mit diesen Parametern kann vor oder nach der Ausführung eine Verzögerung bewirkt werden. Sind sie nicht gesetzt, wird die Standardverzögerung aus den Optionen verwendet.

Variabel: Ja

Einschränkungen: Leer oder >0

'Bemerkung'

Hier können Sie einen beliebigen Kommentar eintragen.

Hinweis Für die ausführliche Dokumentation, insbesondere von 'Testfallsatz', 'Testfall' oder 'Prozedur' Knoten, ist dieses Textfeld womöglich nicht der geeignete Ort. Es gibt hervorragende Editoren, die wesentlich besser dafür geeignet sind. Mittels der Option Kommando für externen Editor kann ein externer Editor festgelegt werden, in dem nach Drücken von [Alt-Eingabe] oder Klicken des Edit row Buttons der Kommentar komfortabel bearbeitet werden kann.

Für einige Knoten können Sie ein spezielles Verhalten per Doctags konfigurieren, siehe Doctags.

Variabel: Ja

Einschränkungen: Keine

36.4.3
'Datenbank'

Ein 'Datenbank' Knoten wird benutzt, um externe Daten aus einer Datenbank zu laden. Damit QF-Test auf die Datenbank zugreifen kann, muss vor dessen Start die jar Datei mit den Klassen des Datenbanktreibers entweder in der Umgebungsvariable CLASSPATH enthalten sein, oder in das QF-Test Pluginverzeichnis (Abschnitt 43.2) kopiert werden. Um mehr Informationen über den Aufbau einer Datenbankverbindung zu erlangen, fragen Sie einen Entwickler oder besuchen Sie www.connectionstrings.com.

Weitere Details zum Datentreiber-Mechanismus finden Sie in Kapitel 17.

Enthalten in: Beliebig

Kinder: Keine

Ausführung: Der 'Datenbank' Knoten lädt die Daten aus der Datenbank und expandiert Variablen entsprechend der Option Werte von Variablen beim Binden sofort expandieren. Jede Zeile wird individuell von links nach rechts expandiert, so dass eine Zelle - innerhalb derselben Zeile - auf Variablen verweisen kann, die in einer Spalte weiter links gebunden wurden. Dann registriert sich der 'Datenbank' im Kontext eines 'Datentreibers'. Für jedes Feld im select-Ausdruck wird eine Variable gleichen Namens definiert. Die Schreibweise (Groß/Klein) kann jedoch vom Datenbanktreiber abhängen, z.B. nur Großbuchstaben bei Oracle. Zusätzlich wird eine Propertygruppe mit dem Namen des Knotens und den Variablen size und totalsize angelegt. size beinhaltet die Anzahl der Datensätze mit Rücksicht auf Iterationsintervalle. totalsize beinhaltet die gesamte Anzahl an Datensätzen der Datenquelle ohne Rücksicht auf Iterationsintervalle. Nachdem alle 'Daten' Knoten angemeldet wurden, fragt der zugehörige 'Testfallsatz' die Datensätze der 'Datenbank' ab, um darüber zu iterieren. Wenn kein 'Datentreiber' Kontext verfügbar ist, wird die Propertygruppe um alle Variablen des Knotens erweitert.

Attribute:

'Datenbank' Attribute
Abbildung 36.16:  'Datenbank' Attribute
'Name'

Der 'Name' eines 'Daten' Knotens ist ein Pflichtattribut. Er wird benutzt, um 'Daten' Knoten im selben 'Datentreiber' Kontext zu unterscheiden. Ein 'Break' Knoten, der während des datengetriebenen Tests ausgeführt wird, kann durch Angabe dieses 'Namens' in seinem Attribut 'QF-Test ID der Schleife' gezielt die Schleife dieser 'Datentabelle' abbrechen.

Variabel: Ja

Einschränkungen: Keine

'Zählervariable'

Der Name der Variablen, an die der Index des Schleifendurchgangs gebunden wird.

Variabel: Ja

Einschränkungen: Keine

'Iterationsbereiche'

Ein Optionaler Satz von zu nutzenden Indizes oder Bereichen für die Daten. Dies ist besonders während der Testentwicklung hilfreich, um nur über einen einzelnen Index oder einen Teil der Daten zu iterieren.

Bereiche werden durch ',' getrennt. Jeder Bereich ist entweder in einzelner Index, oder ein geschlossenes Intervall der Form 'von-bis' oder 'von:bis' wobei die Angabe von 'bis' optional ist. Indizes oder Bereiche können mehrfach, überlappend oder in absteigender Richtung angegeben werden. Indizes sind 0-basiert, ein negativer Index wird vom Ende her gezählt, wobei -1 dem letzten Eintrag entspricht. Eine ungültige Syntax oder ein Index außerhalb des vorhandenen Datenbereichs führen zu einer BadRangeException.

Die folgende Tabelle zeigt einige Beispiele für Iterationsbereiche und die daraus resultierenden Indizes.

Iterationsbereiche Daraus resultierende Indizes
0 [0]
-2, -1 [18, 19]
1-2,4:5 [1, 2, 4, 5]
18:,-3- [18, 19, 17, 18, 19]
3-2,16:15 [3, 2, 16, 15]
Tabelle 36.7:  Beispiele für Iterationsbereiche

Hinweis Der für die 'Zählervariable' gebunde Wert entspricht dem angegebenen Index im Iterationsbereich, nicht der Zahl der tatsächlich durchgeführten Iterationen. Wenn Sie z.B. '2' angeben, führt dies zu einer einzigen Iteration mit der 'Zählervariable' '2', nicht '0'.

Variabel: Ja

Einschränkungen: Gültige Syntax und Indexwerte

'SQL Abfrage'

Die SQL Abfrage, die ausgeführt wird, um die gewünschten Testdaten zu erhalten. Dies sollte ein select Ausdruck sein. Für jedes Feld im select-Ausdruck wird eine Variable gleichen Namens definiert. Die Schreibweise (Groß/Klein) kann jedoch vom Datenbanktreiber abhängen, z.B. nur Großbuchstaben bei Oracle.

Variabel: Ja

Einschränkungen: Darf nicht leer sein

'Treiberklasse'

Die Klasse des Datenbanktreibers.

Hinweis Die jar Datei mit den Klassen des Datenbanktreibers muss vor dem Start von QF-Test entweder in der Umgebungsvariable CLASSPATH oder im Pluginverzeichnis von QF-Test enthalten sein.

Hier eine Liste der gebräuchlichsten Datenbanktreiber:

Datenbank Klassenname für den JDBC-Treiber
Borland Interbase interbase.interclient.Driver
DB2 com.ibm.db2.jcc.DB2Driver
Informix com.informix.jdbc.IfxDriver
IDS Server ids.sql.IDSDriver
MS SQL Server 2000 com.microsoft.jdbc.sqlserver.SQLServerDriver
MS SQL Server 2005 com.microsoft.sqlserver.jdbc.SQLServerDriver
mSQL COM.imaginary.sql.msql.MsqlDriver
MySQL com.mysql.jdbc.Driver
Oracle oracle.jdbc.driver.OracleDriver
Pointbase com.pointbase.jdbc.jdbcUniversalDriver
PostgreSQL org.postgresql.Driver
Standard Treiber sun.jdbc.odbc.JdbcOdbcDriver
Sybase com.sybase.jdbc2.jdbc.SybDriver
Tabelle 36.8:  JDBC Treiberklassen

Variabel: Ja

Einschränkungen: Darf nicht leer sein

'Verbindung'

Der Connection String für die Datenbank. Dieser ist meist von der Form jdbc:datenbankname://datenbankserver/datenbankname.

Hier eine Liste der gebräuchlichsten Connection Strings:

Datenbank Beispiel
Derby jdbc:derby:net://datenbankserver:port/
IBM DB2 jdbc:db2://datenbank
HSQLB jdbc:hsqldb:file:datenbank
Interbase jdbc:interbase://datenbankserver/datenbank.gdb
MS SQL Server 2000 jdbc:microsoft:sqlserver://databaseserver:
port;DatabaseName=database;
MS SQL Server 2005 jdbc:sqlserver://databaseserver:
port;DatabaseName=database;
MySQL jdbc:mysql://datenbankserver/datenbank
PostgreSQL jdbc:postgresql://datenbankserver/datenbank
ODBC-Datenquellen jdbc:odbc:datenbank
Oracle Thin jdbc:oracle:thin:@datenbankserver:port:
datenbank
Sybase jdbc:sybase:tds:datenbankserver:port/datenbank
Tabelle 36.9:  'Datenbank' Verbindungen

Variabel: Ja

Einschränkungen: Darf nicht leer sein

'Datenbankbenutzer'

Der Benutzer für die Datenbank. Sollte Ihre Datenbank keinen Benutzer benötigen, lassen Sie dieses Feld einfach leer.

Variabel: Ja

Einschränkungen: Keine

'Datenbankpasswort'

Das Passwort für den Benutzer der Datenbank. Sollte Ihre Datenbank keinen Benutzer oder kein Passwort benötigen, lassen Sie dieses Feld einfach leer. Um das Passwort nach Eingabe in dieses Feld zu verschlüsseln, wählen Sie nach einem Rechts-Klick »Kennwort verschlüsseln« aus dem resultierenden Popupmenü. Geben Sie auf jeden Fall vor der Verschlüsselung einen Salt in der Option Salt für Verschlüsselung von Kennwörtern an.

Variabel: Ja

Einschränkungen: Keine

'QF-Test ID'

Die QF-Test ID ist für diesen Knoten zur Zeit ohne Bedeutung.

Variabel: Nein

Einschränkungen: Darf keines der Zeichen '\', '#', '$', '@', '&', oder '%' enthalten und nicht mit einem Unterstrich ('_') beginnen.

'Verzögerung vorher/nachher'

Mit diesen Parametern kann vor oder nach der Ausführung eine Verzögerung bewirkt werden. Sind sie nicht gesetzt, wird die Standardverzögerung aus den Optionen verwendet.

Variabel: Ja

Einschränkungen: Leer oder >0

'Bemerkung'

Hier können Sie einen beliebigen Kommentar eintragen.

Hinweis Für die ausführliche Dokumentation, insbesondere von 'Testfallsatz', 'Testfall' oder 'Prozedur' Knoten, ist dieses Textfeld womöglich nicht der geeignete Ort. Es gibt hervorragende Editoren, die wesentlich besser dafür geeignet sind. Mittels der Option Kommando für externen Editor kann ein externer Editor festgelegt werden, in dem nach Drücken von [Alt-Eingabe] oder Klicken des Edit row Buttons der Kommentar komfortabel bearbeitet werden kann.

Für einige Knoten können Sie ein spezielles Verhalten per Doctags konfigurieren, siehe Doctags.

Variabel: Ja

Einschränkungen: Keine

36.4.4
'Excel Datei'

Ein 'Excel Datei' Knoten wird benutzt, um externe Daten aus einer Excel Datei zu laden. In der ersten Zeile müssen die Namen der Variablen definiert werden und in den weiteren Zeilen die zu bindenden Werte, wobei jede Zeile einem Testdatensatz entspricht.

Hinweis Die korrekte Darstellung der Zelleninhalte vom Typ "Datum", "Zeit" oder "Währung" kann nicht immer sicher gestellt werden, da Excel den Wert und das Format der Zelle getrennt voneinander speichert und die verwendete Java Bibliothek nicht alle Möglichkeiten unterstützt. Dennoch sollte der 'Excel Datei' Knoten weitestgehend korrekt arbeiten. Sollte es zu Problemen mit diesen Formaten kommen, ändern Sie bitte in der Excel Datei den Typ der betroffenen Zellen auf "Text". In QF-Test werden nach dem Einlesen sowieso alle Werte als Strings behandelt.

Weitere Details zum Datentreiber-Mechanismus finden Sie in Kapitel 17.

Enthalten in: Beliebig

Kinder: Keine

Ausführung: Der 'Excel Datei' Knoten liest die Daten aus der Excel Datei und expandiert Variablen entsprechend der Option Werte von Variablen beim Binden sofort expandieren. Jede Zeile wird individuell von links nach rechts expandiert, so dass eine Zelle - innerhalb derselben Zeile - auf Variablen verweisen kann, die in einer Spalte weiter links gebunden wurden. Dann registriert sich der 'Excel Datei' im Kontext eines 'Datentreibers'. Zusätzlich wird eine Propertygruppe mit dem Namen des Knotens und den Variablen size und totalsize angelegt. size beinhaltet die Anzahl der Datensätze mit Rücksicht auf Iterationsintervalle. totalsize beinhaltet die gesamte Anzahl an Datensätzen der Datenquelle ohne Rücksicht auf Iterationsintervalle. Nachdem alle 'Daten' Knoten angemeldet wurden, fragt der zugehörige 'Testfallsatz' die Datensätze der 'Excel Datei' ab, um darüber zu iterieren. Wenn kein 'Datentreiber' Kontext verfügbar ist, wird die Propertygruppe um alle Variablen des Knotens erweitert.

Attribute:

'Excel Datei' Attribute
Abbildung 36.17:  'Excel Datei' Attribute
'Name'

Der 'Name' eines 'Daten' Knotens ist ein Pflichtattribut. Er wird benutzt, um 'Daten' Knoten im selben 'Datentreiber' Kontext zu unterscheiden. Ein 'Break' Knoten, der während des datengetriebenen Tests ausgeführt wird, kann durch Angabe dieses 'Namens' in seinem Attribut 'QF-Test ID der Schleife' gezielt die Schleife dieser 'Datentabelle' abbrechen.

Variabel: Ja

Einschränkungen: Keine

'Zählervariable'

Der Name der Variablen, an die der Index des Schleifendurchgangs gebunden wird.

Variabel: Ja

Einschränkungen: Keine

'Iterationsbereiche'

Ein Optionaler Satz von zu nutzenden Indizes oder Bereichen für die Daten. Dies ist besonders während der Testentwicklung hilfreich, um nur über einen einzelnen Index oder einen Teil der Daten zu iterieren.

Bereiche werden durch ',' getrennt. Jeder Bereich ist entweder in einzelner Index, oder ein geschlossenes Intervall der Form 'von-bis' oder 'von:bis' wobei die Angabe von 'bis' optional ist. Indizes oder Bereiche können mehrfach, überlappend oder in absteigender Richtung angegeben werden. Indizes sind 0-basiert, ein negativer Index wird vom Ende her gezählt, wobei -1 dem letzten Eintrag entspricht. Eine ungültige Syntax oder ein Index außerhalb des vorhandenen Datenbereichs führen zu einer BadRangeException.

Die folgende Tabelle zeigt einige Beispiele für Iterationsbereiche und die daraus resultierenden Indizes.

Iterationsbereiche Daraus resultierende Indizes
0 [0]
-2, -1 [18, 19]
1-2,4:5 [1, 2, 4, 5]
18:,-3- [18, 19, 17, 18, 19]
3-2,16:15 [3, 2, 16, 15]
Tabelle 36.10:  Beispiele für Iterationsbereiche

Hinweis Der für die 'Zählervariable' gebunde Wert entspricht dem angegebenen Index im Iterationsbereich, nicht der Zahl der tatsächlich durchgeführten Iterationen. Wenn Sie z.B. '2' angeben, führt dies zu einer einzigen Iteration mit der 'Zählervariable' '2', nicht '0'.

Variabel: Ja

Einschränkungen: Gültige Syntax und Indexwerte

'Name der Excel Datei'

Der Name der Excel Datei aus der die Testdaten gelesen werden sollen. Relative Pfadangaben werden relativ zum Verzeichnis der Testsuite aufgelöst.

Der Knopf über dem Attribut öffnet einen Dialog in dem die Excel Datei interaktiv ausgewählt werden kann. Den Dialog erreichen Sie auch mittels [Shift-Return] oder [Alt-Return], sofern sich der Fokus im Textfeld befindet.

Variabel: Ja

Einschränkungen: Darf nicht leer sein

'Name des Tabellenblatts'

Der Name des Tabellenblatts aus dem die Testdaten gelesen werden sollen.

Variabel: Ja

Einschränkungen: Keine

'Datumsformat vorgeben'

In diesem Textfeld können Sie ein Datumsformat vorgeben, welches für alle aus der Excel Datei geladenen Zellen vom Typ "Datum" verwendet werden soll. Dieses Format muss wie für die Java Klasse SimpleDateFormat spezifiziert sein, d.h. 'd' für Tag, 'M' für Monat und 'y' für Jahr. Mit 'dd' werden zwei Stellen für den Tag reserviert, analog dazu gibt es 'MM', 'yy' oder 'yyyy'.

Variabel: Ja

Einschränkungen: Keine

'Variablen in Zeilen'

Wenn dieses Attribute angehakt ist, werden die Namen der Variablen aus der ersten Zeile der Excel Datei ausgelesen, sonst aus der ersten Spalte.

Variabel: Ja

Einschränkungen: Keine

'QF-Test ID'

Die QF-Test ID ist für diesen Knoten zur Zeit ohne Bedeutung.

Variabel: Nein

Einschränkungen: Darf keines der Zeichen '\', '#', '$', '@', '&', oder '%' enthalten und nicht mit einem Unterstrich ('_') beginnen.

'Verzögerung vorher/nachher'

Mit diesen Parametern kann vor oder nach der Ausführung eine Verzögerung bewirkt werden. Sind sie nicht gesetzt, wird die Standardverzögerung aus den Optionen verwendet.

Variabel: Ja

Einschränkungen: Leer oder >0

'Bemerkung'

Hier können Sie einen beliebigen Kommentar eintragen.

Hinweis Für die ausführliche Dokumentation, insbesondere von 'Testfallsatz', 'Testfall' oder 'Prozedur' Knoten, ist dieses Textfeld womöglich nicht der geeignete Ort. Es gibt hervorragende Editoren, die wesentlich besser dafür geeignet sind. Mittels der Option Kommando für externen Editor kann ein externer Editor festgelegt werden, in dem nach Drücken von [Alt-Eingabe] oder Klicken des Edit row Buttons der Kommentar komfortabel bearbeitet werden kann.

Für einige Knoten können Sie ein spezielles Verhalten per Doctags konfigurieren, siehe Doctags.

Variabel: Ja

Einschränkungen: Keine

36.4.5
'CSV Datei'

Eine 'CSV Datei' wird benutzt, um externe Daten aus einer Datei zu laden und für datengetriebene Tests bereit zu stellen. CSV steht für Comma-separated Values - also für durch Komma getrennte Werte, welches ein Standardformat für Textdateien darstellt. Hierbei steht jede Zeile in der Datei für einen Datensatz, dessen Werte durch ein Trennzeichen separiert werden. Als Trennzeichen wird oft, aber nicht ausschließlich, ein Komma (',') verwendet. Bei der Benutzung in einem 'CSV Datei' Knoten muss die erste Zeile der CSV Datei die Namen der Variablen enthalten, die gebunden werden sollen. In den weiteren Zeilen folgen dann die Werte für die einzelnen Iterationsschritte.

Leider gibt es bei CSV Dateien uneinheitliche Definitionen für Spezialfälle wie das Schützen von Sonderzeichen (quoting), die Behandlung von Leerzeichen oder Trennzeichen in Werten oder mehrzeilige Werte. Aktuell existieren zwei de-facto Standards. Einen benutzt Microsoft Excel und einen der Rest der Welt. QF-Test unterstützt beide. Weitere Details zum Datentreiber-Mechanismus finden Sie in Kapitel 17.

Enthalten in: Beliebig

Kinder: Keine

Ausführung: Der 'CSV Datei' Knoten liest die Daten aus der CSV Datei und expandiert Variablen entsprechend der Option Werte von Variablen beim Binden sofort expandieren. Jede Zeile wird individuell von links nach rechts expandiert, so dass eine Zelle - innerhalb derselben Zeile - auf Variablen verweisen kann, die in einer Spalte weiter links gebunden wurden. Dann registriert sich der 'CSV Datei' im Kontext eines 'Datentreibers'. Zusätzlich wird eine Propertygruppe mit dem Namen des Knotens und den Variablen size und totalsize angelegt. size beinhaltet die Anzahl der Datensätze mit Rücksicht auf Iterationsintervalle. totalsize beinhaltet die gesamte Anzahl an Datensätzen der Datenquelle ohne Rücksicht auf Iterationsintervalle. Nachdem alle 'Daten' Knoten angemeldet wurden, fragt der zugehörige 'Testfallsatz' die Datensätze der 'CSV Datei' ab, um darüber zu iterieren. Wenn kein 'Datentreiber' Kontext verfügbar ist, wird die Propertygruppe um alle Variablen des Knotens erweitert.

Attribute:

'CSV Datei' Attribute
Abbildung 36.18:  'CSV Datei' Attribute
'Name'

Der 'Name' eines 'Daten' Knotens ist ein Pflichtattribut. Er wird benutzt, um 'Daten' Knoten im selben 'Datentreiber' Kontext zu unterscheiden. Ein 'Break' Knoten, der während des datengetriebenen Tests ausgeführt wird, kann durch Angabe dieses 'Namens' in seinem Attribut 'QF-Test ID der Schleife' gezielt die Schleife dieser 'Datentabelle' abbrechen.

Variabel: Ja

Einschränkungen: Keine

'Zählervariable'

Der Name der Variablen, an die der Index des Schleifendurchgangs gebunden wird.

Variabel: Ja

Einschränkungen: Keine

'Iterationsbereiche'

Ein Optionaler Satz von zu nutzenden Indizes oder Bereichen für die Daten. Dies ist besonders während der Testentwicklung hilfreich, um nur über einen einzelnen Index oder einen Teil der Daten zu iterieren.

Bereiche werden durch ',' getrennt. Jeder Bereich ist entweder in einzelner Index, oder ein geschlossenes Intervall der Form 'von-bis' oder 'von:bis' wobei die Angabe von 'bis' optional ist. Indizes oder Bereiche können mehrfach, überlappend oder in absteigender Richtung angegeben werden. Indizes sind 0-basiert, ein negativer Index wird vom Ende her gezählt, wobei -1 dem letzten Eintrag entspricht. Eine ungültige Syntax oder ein Index außerhalb des vorhandenen Datenbereichs führen zu einer BadRangeException.

Die folgende Tabelle zeigt einige Beispiele für Iterationsbereiche und die daraus resultierenden Indizes.

Iterationsbereiche Daraus resultierende Indizes
0 [0]
-2, -1 [18, 19]
1-2,4:5 [1, 2, 4, 5]
18:,-3- [18, 19, 17, 18, 19]
3-2,16:15 [3, 2, 16, 15]
Tabelle 36.11:  Beispiele für Iterationsbereiche

Hinweis Der für die 'Zählervariable' gebunde Wert entspricht dem angegebenen Index im Iterationsbereich, nicht der Zahl der tatsächlich durchgeführten Iterationen. Wenn Sie z.B. '2' angeben, führt dies zu einer einzigen Iteration mit der 'Zählervariable' '2', nicht '0'.

Variabel: Ja

Einschränkungen: Gültige Syntax und Indexwerte

'Name der CSV Datei'

Der Name der CSV Datei aus der die Testdaten gelesen werden sollen. Relative Pfadangaben werden relativ zum Verzeichnis der Testsuite aufgelöst.

Der Knopf über dem Attribut öffnet einen Dialog in dem die CSV Datei interaktiv ausgewählt werden kann. Den Dialog erreichen Sie auch mittels [Shift-Return] oder [Alt-Return], sofern sich der Fokus im Textfeld befindet.

Variabel: Ja

Einschränkungen: Darf nicht leer sein

'Kodierung der Datei'

Eine optionale Kodierung für die CSV Datei, z.B "UTF-8". Ist keine Kodierung angeben, wird die Datei mit der Standard-Kodierung der Java VM gelesen.

Variabel: Ja

Einschränkungen: Die Kodierung muss von der Java VM unterstützt werden.

'Microsoft Excel CSV Format lesen'

Wenn diese Option gesetzt ist, versucht QF-Test die CSV Datei gemäß dem von Microsoft Excel verwendeten Format einzulesen.

Variabel: Ja

Einschränkungen: Keine

'Trennzeichen'

Mit diesem Attribut können sie das Zeichen festlegen, welches zur Trennung der Datenwerte in der CSV Datei verwendet wird. Wenn kein Trennzeichen definiert ist, wird das Komma (',') als Standardwert genutzt. Wenn 'Microsoft Excel CSV Format lesen' gesetzt ist, wird dieses Attribut ignoriert.

Variabel: Ja

Einschränkungen: Keine

'QF-Test ID'

Die QF-Test ID ist für diesen Knoten zur Zeit ohne Bedeutung.

Variabel: Nein

Einschränkungen: Darf keines der Zeichen '\', '#', '$', '@', '&', oder '%' enthalten und nicht mit einem Unterstrich ('_') beginnen.

'Verzögerung vorher/nachher'

Mit diesen Parametern kann vor oder nach der Ausführung eine Verzögerung bewirkt werden. Sind sie nicht gesetzt, wird die Standardverzögerung aus den Optionen verwendet.

Variabel: Ja

Einschränkungen: Leer oder >0

'Bemerkung'

Hier können Sie einen beliebigen Kommentar eintragen.

Hinweis Für die ausführliche Dokumentation, insbesondere von 'Testfallsatz', 'Testfall' oder 'Prozedur' Knoten, ist dieses Textfeld womöglich nicht der geeignete Ort. Es gibt hervorragende Editoren, die wesentlich besser dafür geeignet sind. Mittels der Option Kommando für externen Editor kann ein externer Editor festgelegt werden, in dem nach Drücken von [Alt-Eingabe] oder Klicken des Edit row Buttons der Kommentar komfortabel bearbeitet werden kann.

Für einige Knoten können Sie ein spezielles Verhalten per Doctags konfigurieren, siehe Doctags.

Variabel: Ja

Einschränkungen: Keine

36.4.6
'Datenschleife'

Bei einem 'Datenschleife' Knoten handelt es sich um eine einfache Schleife, bei der eine einzelne Variable als Schleifenzähler gebunden wird. So können 'Testfälle' mehrfach ausgeführt werden, indem sie in einen 'Testfallsatz' mit einem 'Datentreiber' und einer 'Datenschleife' gelegt werden.

Enthalten in: Beliebig

Kinder: Keine

Ausführung: Bei ihrer Ausführung registriert sich die 'Datenschleife' lediglich im Kontext eines 'Datentreibers'. Die Zählvariable wird als Variable gesetzt. Zusätzlich wird eine Propertygruppe mit dem Namen des Knotens und den Variablen size und totalsize angelegt. size beinhaltet die Anzahl der Datensätze mit Rücksicht auf Iterationsintervalle. totalsize beinhaltet die gesamte Anzahl an Datensätzen der Datenquelle ohne Rücksicht auf Iterationsintervalle. Nachdem alle 'Daten' Knoten angemeldet wurden, fragt der zugehörige 'Testfallsatz' die Datensätze der 'Datenschleife' ab, um darüber zu iterieren. Wenn kein 'Datentreiber' Kontext verfügbar ist, wird die Propertygruppe um alle Variablen des Knotens erweitert.

Attribute:

'Datenschleife' Attribute
Abbildung 36.19:  'Datenschleife' Attribute
'Name'

Der 'Name' eines 'Daten' Knotens ist ein Pflichtattribut. Er wird benutzt, um 'Daten' Knoten im selben 'Datentreiber' Kontext zu unterscheiden. Ein 'Break' Knoten, der während des datengetriebenen Tests ausgeführt wird, kann durch Angabe dieses 'Namens' in seinem Attribut 'QF-Test ID der Schleife' gezielt die Schleife dieser 'Datentabelle' abbrechen.

Variabel: Ja

Einschränkungen: Keine

'Zählervariable'

Der Name der Variablen, an die der Index des Schleifendurchgangs gebunden wird.

Variabel: Ja

Einschränkungen: Keine

'Iterationsbereiche'

Ein Optionaler Satz von zu nutzenden Indizes oder Bereichen für die Daten. Dies ist besonders während der Testentwicklung hilfreich, um nur über einen einzelnen Index oder einen Teil der Daten zu iterieren.

Bereiche werden durch ',' getrennt. Jeder Bereich ist entweder in einzelner Index, oder ein geschlossenes Intervall der Form 'von-bis' oder 'von:bis' wobei die Angabe von 'bis' optional ist. Indizes oder Bereiche können mehrfach, überlappend oder in absteigender Richtung angegeben werden. Indizes sind 0-basiert, ein negativer Index wird vom Ende her gezählt, wobei -1 dem letzten Eintrag entspricht. Eine ungültige Syntax oder ein Index außerhalb des vorhandenen Datenbereichs führen zu einer BadRangeException.

Die folgende Tabelle zeigt einige Beispiele für Iterationsbereiche und die daraus resultierenden Indizes.

Iterationsbereiche Daraus resultierende Indizes
0 [0]
-2, -1 [18, 19]
1-2,4:5 [1, 2, 4, 5]
18:,-3- [18, 19, 17, 18, 19]
3-2,16:15 [3, 2, 16, 15]
Tabelle 36.12:  Beispiele für Iterationsbereiche

Hinweis Der für die 'Zählervariable' gebunde Wert entspricht dem angegebenen Index im Iterationsbereich, nicht der Zahl der tatsächlich durchgeführten Iterationen. Wenn Sie z.B. '2' angeben, führt dies zu einer einzigen Iteration mit der 'Zählervariable' '2', nicht '0'.

Variabel: Ja

Einschränkungen: Gültige Syntax und Indexwerte

'Anzahl Wiederholungen'

Dieser Wert legt die Anzahl der Durchgänge für die Ausführung fest.

Dieses Attribut ist prädestiniert für den Einsatz von Variablen. Wenn Sie die Anzahl Wiederholungen z.B. auf $(count) setzen, können Sie den Wert für die Variable count in den Variablen der Suite (vgl. Kapitel 7) auf 1 oder 2 setzen. Das vereinfacht das Erstellen und Ausprobieren der Testsuite.

Wenn Sie den Test dann ernsthaft ausführen, z.B. automatisch mittels qftest -batch, können Sie durch Angabe von -variable count=100 auf der Kommandozeile den Wert für count nach Belieben variieren.

Variabel: Ja

Einschränkungen: >0

'QF-Test ID'

Die QF-Test ID ist für diesen Knoten zur Zeit ohne Bedeutung.

Variabel: Nein

Einschränkungen: Darf keines der Zeichen '\', '#', '$', '@', '&', oder '%' enthalten und nicht mit einem Unterstrich ('_') beginnen.

'Verzögerung vorher/nachher'

Mit diesen Parametern kann vor oder nach der Ausführung eine Verzögerung bewirkt werden. Sind sie nicht gesetzt, wird die Standardverzögerung aus den Optionen verwendet.

Variabel: Ja

Einschränkungen: Leer oder >0

'Bemerkung'

Hier können Sie einen beliebigen Kommentar eintragen.

Hinweis Für die ausführliche Dokumentation, insbesondere von 'Testfallsatz', 'Testfall' oder 'Prozedur' Knoten, ist dieses Textfeld womöglich nicht der geeignete Ort. Es gibt hervorragende Editoren, die wesentlich besser dafür geeignet sind. Mittels der Option Kommando für externen Editor kann ein externer Editor festgelegt werden, in dem nach Drücken von [Alt-Eingabe] oder Klicken des Edit row Buttons der Kommentar komfortabel bearbeitet werden kann.

Für einige Knoten können Sie ein spezielles Verhalten per Doctags konfigurieren, siehe Doctags.

Variabel: Ja

Einschränkungen: Keine