Beispiel: Testskript.osl

Das folgende Skript wird vor der Veröffentlichung einer neuen Version als Teil eines automatisierten Tests aus einer Batch-Datei aufgerufen. Die Batch-Datei ruft das Skript für verschiedene Datenbank-Systeme auf. In diesem Testfall passiert folgendes:

  • Lege die Tabelle ‚TESTDATA‘ an.
  • Füge in die Tabelle ‚TESTDATA‘ 501 Zeilen (mit Zufallswerten) ein.
  • Selektiere die in der Tabelle ‚TESTDATA‘ enthaltenen Zeilen.
  • Lösche die in der Tabelle ‚TESTDATA‘ enthaltenen Zeilen.
  • Lösche die Tabelle ‚TESTDATA‘.

Die dabei erstellte Log-Datei, die unten exemplarisch aufgeführt ist, gibt Auskunft über den Erfolg des Tests.

----------------------------------------------------------------------------------------
-- Testskript.osl (Teil eines automatisierten Testlaufs).
----------------------------------------------------------------------------------------

-- basic declarations and settings
BATCHMODE ON;                                        --> keine Dialoge
EXTENDED INFORMATION OFF;                            --> keine detaillierten Infos
DEFINE MAKRO __file  "$(.WorkingDir)\Protokoll.txt"; --> log file
DEFINE MAKRO __start "$(.Hour):$(.Minute):$(.Second):$(.Milliseconds)";

-- open log file
OPEN FILE $(__file);

-- connect to database
CONNECT SYSTEM_DSN "LEStudioTest"; 
CHECK $(.ErrorCode) EQ 0 GOTO error;

-- write log file header
WRITE FILE $(__file) "ODBC Management Studio (Automatischer Testlauf)\n";
WRITE FILE $(__file) "-------------------------------------------------------------\n";
WRITE FILE $(__file) "Datum...: $(.Day).$(.Month).$(.Year)\n";
WRITE FILE $(__file) "DSN.....: $(.ActiveDSN)\n";
WRITE FILE $(__file) "DBMS....: $(.DBMS)\n";
WRITE FILE $(__file) "          $(.DBMS_VERSION)\n";
WRITE FILE $(__file) "ODBC....: $(.ODBC_VERSION)\n";
WRITE FILE $(__file) "OMS.....: $(.OMS_VERSION)\n";
WRITE FILE $(__file) "Exe.....: $(.OMS)\n";
WRITE FILE $(__file) "-------------------------------------------------------------\n";
WRITE FILE $(__file) "AutoStart: $(.AutoStart)\n";
WRITE FILE $(__file) "BatchMode: $(.BatchMode)\n";
WRITE FILE $(__file) "-------------------------------------------------------------\n";

----------------------------------------------------------------------------------------
-- Test-Objekte definieren:
----------------------------------------------------------------------------------------
LABEL define_test_objects;
	DEFINE MAKRO __table "TESTDATA"; -- Tabelle
	DEFINE MAKRO __col01 "i1";
	DEFINE MAKRO __col02 "i2";
	DEFINE MAKRO __col03 "c1";
	DEFINE MAKRO __count 501;        -- Anzahl anzulegender Zeilen
	WRITE FILE $(__file) "Test 1: Lege Tabelle '$(__table)' mit $(__count) Zeilen an.\n";

----------------------------------------------------------------------------------------
-- Test-Objekte anlegen:
----------------------------------------------------------------------------------------
LABEL generate_test_objects;
	WRITE FILE $(__file) "  1.1 Lege Tabelle '$(__table)' an.\n";
	CREATE TABLE $(__table) ( $(__col01) int, $(__col02) int, $(__col03) varchar(29) ); 
	CHECK $(.ErrorCode) NE -1303 GOTO table_exists; 
	CHECK $(.ErrorCode) EQ 0 GOTO error;
	GOTO generate_test_data;

	LABEL table_exists;
		WRITE FILE $(__file) "      Tabelle '$(__table)' existiert bereits. ";
		WRITE FILE $(__file) "Lösche Inhalte.\n";
		DROP TABLE `$(__table)`;
		CHECK $(.ErrorCode) EQ 0 GOTO error;
		GOTO generate_test_data;

----------------------------------------------------------------------------------------
-- Test-Daten anlegen:
----------------------------------------------------------------------------------------
LABEL generate_test_data;
	RESET;
	WRITE FILE $(__file) "  1.2 Füge $(__count) Zeilen ein.\n";
	LABEL create_test_data;
		INSERT INTO  `$(__table)`
			   ( `$(__col01)`
			   , `$(__col02)`
			   , `$(__col03)`)
		     VALUES
			   ( $(.Milliseconds)
			   , $(.Milliseconds)
			   , '$(.Hour):$(.Minute):$(.Second):$(.Milliseconds)');
		CHECK $(.ErrorCode) EQ 0 GOTO error;

		-- Wenn weniger als __count Datensätze angelegt wurden, dann 
		-- gehe wieder zur Sprungmarke 1 und lege noch Einen an.
		CHECK $(.AffectedRowsTotal) GE $(__count) GOTO create_test_data;
	RESET;

----------------------------------------------------------------------------------------
-- Analyse:
----------------------------------------------------------------------------------------
WRITE FILE $(__file) "  1.3 Selektiere alle Daten auf Tabelle $(__table).\n";
GRIDVIEW OFF;
SELECT * FROM `$(__table)`;
CHECK $(.ErrorCode) EQ 0 GOTO error;
WRITE FILE $(__file) "      Es wurden $(.AffectedRows) Zeilen selektiert.\n";
CHECK $(.AffectedRows) EQ $(__count) GOTO error;

WRITE FILE $(__file) "  1.4 Lösche alle Daten aus Tabelle $(__table).\n";
DELETE FROM `$(__table)`;
CHECK $(.ErrorCode) EQ 0 GOTO error;
WRITE FILE $(__file) "      Es wurden $(.AffectedRows) Zeilen gelöscht.\n";
CHECK $(.AffectedRows) EQ $(__count) GOTO error;

WRITE FILE $(__file) "  1.5 Lösche Tabelle $(__table).\n";
DROP TABLE `$(__table)`;
CHECK $(.ErrorCode) EQ 0 GOTO error;

GOTO success;

----------------------------------------------------------------------------------------
-- Fehler:
----------------------------------------------------------------------------------------
LABEL error;
	WRITE FILE $(__file) "  1.6 Ergebnis: !!!!! TEST WAR NICHT ERFOLGREICH! !!!!!\n";
	WRITE FILE $(__file) "      FehlerCode: $(.ErrorCode)\n";
	WRITE FILE $(__file) "      $(.ErrorText)\n";
	GOTO ende;

----------------------------------------------------------------------------------------
-- Erfolg:
----------------------------------------------------------------------------------------
LABEL success;
	WRITE FILE $(__file) "  1.6 Ergebnis: ***** ERFOLG, KEINE FEHLER! ***** \n";
	GOTO ende;

----------------------------------------------------------------------------------------
-- Abschluss
----------------------------------------------------------------------------------------
LABEL ende;
	DEFINE MAKRO __ende  "$(.Hour):$(.Minute):$(.Second):$(.Milliseconds)";
	WRITE FILE $(__file) "-------------------------------------------------------------\n";
	WRITE FILE $(__file) "Start...: $(__start)\n";
	WRITE FILE $(__file) "Ende....: $(__ende)\n";
	WRITE FILE $(__file) "Laufzeit: $(.RunningTime) msecs.\n";
	WRITE FILE $(__file) "-------------------------------------------------------------\n";
	CLOSE FILE $(__file);
	EXECUTE PROGRAM notepad.exe $(__file);

	UNDEFINE MAKRO __start;
	UNDEFINE MAKRO __ende;
	UNDEFINE MAKRO __file;
	UNDEFINE MAKRO __table;
	UNDEFINE MAKRO __col01;
	UNDEFINE MAKRO __col02;
	UNDEFINE MAKRO __col03;
	UNDEFINE MAKRO __count;
	DISCONNECT;
	BATCHMODE OFF;
	EXIT SHUTDOWN;

----------------------------------------------------------------------------------------
-- ENDE
----------------------------------------------------------------------------------------

War die Ausführung des Skripts erfolgreich, dann enthält die Logdatei in etwa folgende Informationen:

ODBC Management Studio (Automatischer Testlauf)
————————————————————-
Datum…: 09.04.2015
DSN…..: [Benutzer-DSN]: dBASE Files
DBMS….: ACCESS
04.00.0000
ODBC….: 03.80.0000
OMS…..: 2.2.1.0 (32 Bit)
Exe…..: C:\Program Files (x86)\cherware.de\ODBC Management Studio\OMS32.exe
————————————————————-
AutoStart: Off
BatchMode: On
————————————————————-
Test 1: Lege Tabelle ‚TESTDATA‘ mit 501 Zeilen an.
1.1 Lege Tabelle ‚TESTDATA‘ an.
1.2 Füge 501 Zeilen ein.
1.3 Selektiere alle Daten auf Tabelle TESTDATA.
Es wurden 501 Zeilen selektiert.
1.4 Lösche alle Daten aus Tabelle TESTDATA.
Es wurden 501 Zeilen gelöscht.
1.5 Lösche Tabelle TESTDATA.
1.6 Ergebnis: ***** ERFOLG, KEINE FEHLER! *****
————————————————————-
Start…: 23:52:17:197
Ende….: 23:52:18:387
Laufzeit: 1202 msecs.
————————————————————-

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.