Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von...

36
Vortrag zur Diplomarbeit Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben Andreas Hirth

Transcript of Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von...

Page 1: Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von Nutzereingaben Andreas Hirth.

Vortrag zur Diplomarbeit

Automatische Generierung von Testskript-Kommandos durch Capturing

von Nutzereingaben

Andreas Hirth

Page 2: Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von Nutzereingaben Andreas Hirth.

Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

2

Übersicht

Motivation, Intention

Realisierung

Fazit

Demonstration

Page 3: Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von Nutzereingaben Andreas Hirth.

Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

3

ATOSbisheriger Funktionsumfang

Simulation von Nutzereingaben in Testobjekte

Auslesen des Status von Elementen eines Testobjekts und Vergleich mit erwarteten Werten

Unterstützung einer Skriptsprache zur Definition von Kommandos

Speichern von Kommandoabläufen in Testskripts

Zusammenfassen von Testskripts in Testpakten

Unterstützung bei der Erstellung von Testskripts mittels intelligentem Editor

Page 4: Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von Nutzereingaben Andreas Hirth.

Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

4

ATOSeinige Einschränkungen

Quelltext des Testobjekts muss vorliegen Notwendige Informationen werden zum großen

Teil mit Softwareunterstützung aus den Fremdquellen ausgelesen – müssen per Hand nachbearbeitet, teilweise vollständig

manuell eingegeben werden– Unterstützung abhängig von

verwendeter Entwicklungsumgebung

Eigenschaften dynamisch erzeugter Fensterelemente müssen immer manuell eingegeben werden

Page 5: Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von Nutzereingaben Andreas Hirth.

Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

5

ATOSKommandoerzeugung (bisher)

Schrittweiser Aufbau der Kommandostruktur

dabei Sicherstellung der Validität erzeugter Kommandos– Invalide Kommandos können nicht erstellt werden– direkte manuelle Eingabe ist nicht vorgesehen

die meisten Kommandos bestehen aus 5 oder mehr Komponenten

Page 6: Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von Nutzereingaben Andreas Hirth.

Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

6

Neue Idee

Automatische Kommandoerzeugung – Aktionen

• der Testskriptdesigner bedient das Testobjekt auf übliche Art und Weise

• ATOS schneidet alle Eingaben mit (Capturing) und generiert daraus automatisch die entsprechenden Testskript-Kommandos (HTS)

– Tests• in einem zweiten Modus klickt der Testskriptdesigner im

laufenden Testobjekt ein Fensterelement an• ATOS generiert (nach Auswahl) automatisch Testskript-

Kommandos, die den Status des Fensterelements mit den aktuellen Werten vergleichen

• die Nutzeraktionen werden hierbei abgefangen, das Testobjekt erhält also keine Eingaben

Page 7: Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von Nutzereingaben Andreas Hirth.

Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

7

Vorteile

enormer Performance-Gewinn bei der Testskript-Erstellung

automatisch generierte Kommandos sind syntaktisch und semantisch korrekt

der zu programmierende Testfall wird bei der Erstellung direkt durchgeführt– Vermeidung von logischen Design-Fehlern

Page 8: Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von Nutzereingaben Andreas Hirth.

Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

8

Übersicht

Motivation, Intention

Realisierung– technische Grundlagen– Capturing– Integration

Fazit

Demonstration

Page 9: Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von Nutzereingaben Andreas Hirth.

Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

9

Windows-Nachrichten

Windows-Nachrichten als Basiskonzept für– Kommunikation mit und zwischen Fenstern (Dialoge,

Controls, …)– Synchronisation

• System-Queue FIFO– Übermittlung von Eingaben (Maus/Tastatur)– Timer

Page 10: Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von Nutzereingaben Andreas Hirth.

Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

10

Was sind Hooks?

Hooks erlauben es einer Applikation, eine eigene Subroutine in die systemweite Nachrichtenverarbeitung einzuschalten

Möglichkeiten:– Nachrichten "mitschneiden"– Nachrichten modifizieren oder blockieren

Systemweite vs. Thread-spezifische Hooks

Page 11: Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von Nutzereingaben Andreas Hirth.

Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

11

WH_CALLWNDPROC Hook WH_CALLWNDPROCRET Hook WH_CBT Hook WH_DEBUG Hook WH_FOREGROUNDIDLE Hook WH_GETMESSAGE Hook WH_JOURNALPLAYBACK Hook WH_JOURNALRECORD Hook WH_KEYBOARD_LL Hook WH_KEYBOARD Hook WH_MOUSE_LL Hook WH_MOUSE Hook WH_MSGFILTER and WH_SYSMSGFILTER Hooks WH_SHELL Hook

Typen von Hooks

The WH_CALLWNDPROC hook enables you to monitor messages sent to window procedures. The system calls a WH_CALLWNDPROC hook procedure before passing the message to the receiving window procedure

The WH_CALLWNDPROC hook enables you to monitor messages sent to window procedures. The system calls a WH_CALLWNDPROC hook procedure before passing the message to the receiving window procedure

The WH_KEYBOARD hook enables an application to monitor message traffic for WM_KEYDOWN and WM_KEYUP messages about to be returned by the GetMessage or PeekMessage function.

The WH_KEYBOARD hook enables an application to monitor message traffic for WM_KEYDOWN and WM_KEYUP messages about to be returned by the GetMessage or PeekMessage function.

The WH_MOUSE hook enables you to monitor mouse messages about to be returned by the GetMessage or PeekMessage function.

The WH_MOUSE hook enables you to monitor mouse messages about to be returned by the GetMessage or PeekMessage function.

The WH_GETMESSAGE hook enables an application to monitor messages about to be returned by the GetMessage or PeekMessage function. You can use the WH_GETMESSAGE hook to monitor mouse and keyboard input and other messages posted to the message queue.

The WH_GETMESSAGE hook enables an application to monitor messages about to be returned by the GetMessage or PeekMessage function. You can use the WH_GETMESSAGE hook to monitor mouse and keyboard input and other messages posted to the message queue.

Page 12: Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von Nutzereingaben Andreas Hirth.

Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

12

Was können Hooks nicht?

Idee:– Nachrichten verarbeiten wie in der Nachrichten-Schleife

der Fensterfunktion WndProc()– Nutzen der von Controls gesendeten Notifications

• z.B: BN_CLICKED, EN_CHANGE Control-bezogene Aktionen

Aber:– ob Controls wirkliche die benötigten Notifications senden,

ist programmabhängig– Client-Client-Nachrichten laufen nicht über die

systemweite Nachrichtenverwaltung kein Zugriff über Hooks

Page 13: Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von Nutzereingaben Andreas Hirth.

Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

13

"Mitschneiden" von Eingaben

Abfangen von reinen Eingabe-Ereignissen (Maus, Tastatur) für das Testobjekt

Mausklick:– Bestimmen des Ziel-Fensters des Mausklicks aus den

Koordinaten– Interpretation abhängig vom Typ des Fensters

Tastendruck:– Ermittlung des aktiven Fensters– Interpretation abhängig vom Typ des Fensters

Page 14: Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von Nutzereingaben Andreas Hirth.

Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

14

Bestimmen des Controltyps (1)

Ermitteln des Klassennamens des Fensters (GetClassName(…))– Edit– Static– Button

Problem 1:– Programme können Controls in ihrer Funktionalität

erweitern, ohne das Basisverhalten einzuschränken normal steuerbar über HTS-Kommandos Aber: abweichender Klassenname Lösung: nutzereditierbare Liste mit Synonymen für

Klassennamen

Page 15: Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von Nutzereingaben Andreas Hirth.

Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

15

Bestimmen des Controltyps (2)

Problem 2:– Controls desselben Typs können unterschiedliche

Eigenschaften haben (und unterschiedliche Behandlung erfordern)

Klasse "Button" realisiert eine Reihe unterschiedlichster Controls

• Pushbutton• Radiobutton• Checkbox• Groupbox

Identifizierung über gesetzte Stylebits möglich (GetWindowLong(…, GWL_STYLE))

Page 16: Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von Nutzereingaben Andreas Hirth.

Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

16

Übersicht

Motivation, Intention

Realisierung– technische Grundlagen– Capturing– Integration

Fazit

Demonstration

Page 17: Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von Nutzereingaben Andreas Hirth.

Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

17

Capturing (Übersicht)

HookHook

Daten-Segmen

t

Daten-Segmen

t

Daten-Segmen

t

Daten-Segmen

t

TestobjektTestobjekt ATOSATOS

Shared Data

Shared Data

installiert steuert

sendetInformationen

Nachrichten

AbfragenAntworten

Code-SegmentCode-Segment

Nachrichten

Page 18: Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von Nutzereingaben Andreas Hirth.

Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

18

Capturing

ATOS installiert Hooks für den Thread des Testobjekts– WH_MOUSE Mausklicks– WH_KEYBOARD Tastatureingaben– WH_CALLWNDPROC Menüaufrufe

jede Nachricht, die einen der installierten Hooks betrifft, durchläuft zunächst die zugehörige Hook-Funktion (im Kontext des Testobjekts)– Analyse der Nachricht– ggf. Informationsübermittlung an ATOS mittels

nutzerdefinierter Nachricht– ggf. Stoppen der Übermittlung Testobjekt erhält die

Nachricht nicht

ÜbersichtÜbersicht

Page 19: Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von Nutzereingaben Andreas Hirth.

Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

19

Capturing (Beispiel 1)

Beispiel Übermittlung der Information zum Ereignis "linke Maustaste gedrückt"

#define WM_CAPTURE_LMOUSEDOWN USER+100...SendMessage(hWnd, // Dialog des Capturing-ModulsWM_CAPTURE_LMOUSEDOWN,wParam, // LOWORD: x-Koordinate

// HIWORD: y-KoordinatelParam // Handle des Zielfensters

);

Page 20: Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von Nutzereingaben Andreas Hirth.

Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

20

Capturing (Beispiel 2)

Beispiel Übermittlung der Information zum Ereignis "Tastatureingabe"

#define WM_CAPTURE_KEY USER+102...SendMessage(hWnd, // Dialog des Capturing-ModulsWM_CAPTURE_KEY,wParam, // LOWORD: 0

// HIWORD: virtueller TastenkodelParam // Handle des Fensters mit dem

// Fokus);

Page 21: Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von Nutzereingaben Andreas Hirth.

Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

21

Interpretation der Eingaben (Mausklick)

Mausklick (links)– Prüfen, ob Drücken der Maustaste und Loslassen auf demselben

Control stattfanden– Ermitteln des Control-Typs– Prüfen des Control-Status (aktiviert)– Generieren eines Kommandos in Abhängigkeit vom Control-Typ

• Button Klick• Radiobutton Auswahl• Checkbox Setzen/Löschen• Listbox Auswahl (ggf. Mehrfachauswahl mehrere

Kommandos)• Combobox Auswahl oder Wert• Tab Auswahl• Editbox, Static -

– bei bestimmten Controls überflüssige Zwischenkommandos vermeiden (z.B. Editbox, Listbox, Combobox)

ÜbersichtÜbersicht

Page 22: Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von Nutzereingaben Andreas Hirth.

Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

22

Interpretation der Eingaben (Tastatur)

Tastatureingabe– Prüfen des virtuellen Tastenkodes – Ermitteln des Control-Typs (des aktuell fokusierten

Fensters)– ggf. Generierung eines Kommandos in Abhängigkeit vom

Typ des Controls und der gedrückten Tastez.B:

• Button SPACE Klick• Button ENTER Klick• Checkbox ENTER Tastendruck ENTER• Button 'A' -• Editbox 'A' Wert setzen• Combobox 'A' Auswahl oder Wert setzen

ÜbersichtÜbersicht

Page 23: Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von Nutzereingaben Andreas Hirth.

Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

23

Capturing von Menüaktionen (1. Möglichkeit)

1. Möglichkeit: Auswerten von WM_COMMAND Notification

– das high-order word von wParam gibt Auskunft, ob es sich um eine Menüaktion handelt

– Aber: unzuverlässig– Aber: nachträglich keine Möglichkeit, das Fenster zu

ermitteln, zu dem das Menü gehörte nicht realisiert

Page 24: Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von Nutzereingaben Andreas Hirth.

Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

24

Capturing von Menüaktionen (2. Möglichkeit)

2. Möglichkeit (wurde realisiert): Auswerten der WM_MENUSELECT Notification

– Nachricht wird immer empfangen, wenn der Cursor über einen neuen Menüpunkt kommt oder mittels Tastatur zu einem anderen Menüpunkt gesprungen wird

– zwischen auswählbaren und nicht auswählbaren (inaktive, Trennlinien, Submenüs) Menüpunkten unterscheiden

– aktives Rechteck des Menüpunkts speichern und bei nächstem Klick-Ereignis Treffer prüfen

– Fenster, das das Menü aufgerufen hat ermitteln zum Zeitpunkt der ersten WM_INITMENU Notification

Page 25: Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von Nutzereingaben Andreas Hirth.

Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

25

Übersicht

Motivation, Intention

Realisierung– technische Grundlagen– Capturing– Integration

Fazit

Demonstration

Page 26: Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von Nutzereingaben Andreas Hirth.

Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

26

Ziele für die Integration in das ATOS-Grundsystem

die ATOS-Testsuite soll weiterhin wie bisher nutzbar bleiben

die Erweiterung soll sich möglichst ohne Bruch in das ATOS-System einfügen

die generierten Kommandos müssen gültige HTS-Befehle darstellen– generierte Kommandos sollen nachbearbeitet werden

können

Page 27: Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von Nutzereingaben Andreas Hirth.

Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

27

Integration eines neuen Dialogs

Beschränkung auf notwendige und sinnvolle Steuer- und Informationselemente– selbsterklärende Bedienung– geringer Platzbedarf

Dialog wird im Vordergrund gehalten

optisches Feedback bei Generierung neuer Kommandos– grün neues Kommando erfolgreich erzeugt– gelb letztes Kommando erfolgreich modifiziert– rot Fehler bei der Kommandoerzeugung

Page 28: Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von Nutzereingaben Andreas Hirth.

Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

28

Modellierung der neuen Klasse'CapturingProcessor'

Funktionalität– Hookinstallation, -steuerung– Auswertung der Hook-Nachrichten– Ermittlung weiterer benötigter Informationen aus dem

Testobjekt– Generierung von kommentierten Kommandos– Undo-Funktion

Page 29: Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von Nutzereingaben Andreas Hirth.

Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

29

Klasse 'CapturingProcessor'CapturingProcessor

- struct TEMPORARYDATA {UINT uiVal;HWND hWnd;HMENU hMenu;RECT area;

} mTempData;- unsigned short munInternalState;- bool mbHookRunning;- HWND mhRunningAppWnd;- DWORD mdwRunningAppPId;- HWND mhCallingDlgWnd;- UINT muiGeneratedCmdsCnt;

+ CapturingProcessor(const char* szConfigFilePath);+ virtual ~CapturingProcessor();+ bool Initialize(const char* szAppPath,

LRESULT (*fnStartTestSelDlg)(HWND, Line *), HWND hDlgWnd);+ void Uninitialize();+ HWND GetRunningAppTopMostWnd();+ bool StartCapturing(HWND hWndMsgTarget);+ bool StopCapturing();+ bool SetWorkingMode(unsigned short NewWorkingMode);+ unsigned short GetWorkingMode();+ Line * Undo();+ unsigned short GetLastCmdCreationMode();+ UINT GetGeneratedCmdsCnt();+ LineList * GetCommands(bool bClearCommands);+ void ClearCommands();+ char * GetCtrlInfo(HWND hCtrl);+ Line * CaptureClick(HWND hCtrl, POINT pt);+ Line * CaptureKey(HWND hCtrl, UINT uiKeyCode);+ Line * CaptureMenuCmd(HMENU hMenu, UINT uiMenuItemID);+ Line * CaptureMenuInit(HWND hWnd);- bool ImportTypeSynonymsFile(char *szFilename);- HWND StartApplication(char *szPath);- void PreparePreAndPostCommands();- UINT GetControlType(HWND hWndControl, char *szName);- BOOL IsRunningAppWndValid();- void MaskQuotes(char * szText);- static BOOL CALLBACK EnumWindowsProc(HWND hWnd,

LPARAM lParam);

- Line * CaptureClickACTION(HWND hCtrl, POINT pt);- Line * CaptureKeyACTION(HWND hCtrl, UINT uiKeyCode);- Line * CaptureMenuCmdACTION(HMENU hMenu,

UINT uiMenuItemID);- Line * CaptureMenuInitACTION(HWND hWnd);- Line * CaptureClickTEST(HWND hCtrl, POINT pt);- bool CreateCmdEDITBOX(HWND hCtrl, Line *commentLine,

Line *commandLine);- bool CreateCmdBUTTON(HWND hCtrl, Line *commentLine,

Line *commandLine);- bool CreateCmdTAB(HWND hCtrl, Line *commentLine,

Line *commandLine);- bool CreateCmdLISTBOX(HWND hCtrl, Line *commentLine,

Line *commandLine);- bool CreateCmdLISTBOXMULTISEL(HWND hCtrl,

Line *commentLine, Line *commandLine, UINT uiCmdArraySize);

- bool CreateCmdCOMBOBOX(HWND hCtrl, Line *commentLine, Line *commandLine);

- bool CreateCmdMENU(HWND hWnd, HMENU hMenu, UINT uiMenuItemID, Line *commentLine, Line *commandLine);

- bool CreateCmdKEY(UINT uiKeyCode, Line *commentLine, Line *commandLine);

- bool CreateTestCmd(HWND hCtrl, Line *commentLine, Line *commandLine, UINT uiCmdArraySize, unsigned short unTestMode);

- void AddCommandToList(Line **commentLine, Line **commandLine, UINT uiCmdArraySize);

- unsigned short GetKeyHandlingForCtrl(UINT uiKeyCode, UINT uiControlType);

- bool IsLastCmdOfCtrl(char *szControl, HWND hCtrl);

- LineList * mCommandList;- LineList * mPostCommands;- LineList * mPreCommands;- unsigned short munWorkingMode;- unsigned short munLastCmdCreationMode;- LRESULT (*mfnStartTestSelDlg)(HWND, Line *) ;- LineList * mControlTypeSynonyms;

Page 30: Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von Nutzereingaben Andreas Hirth.

Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

30

HookHook

Trennung von GUI und Logik

ATOSATOS

GUIGUILogikLogik

TestsequenzTestsequenz

startet

sendetNachrichten

installiert, steuert

übermittelt Datensteuert

CapturingProcessorCapturingProcessor

ATOSATOS

Capturing DialogCapturing Dialog

Page 31: Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von Nutzereingaben Andreas Hirth.

Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

31

Besonderheiten aus dem Capturing erzeugter HTS-Kommandos

"herkömmliche" HTS-Befehle beinhalten verbale Bezeichner an Stelle der numerischen Identifikatoren von Controls– die Zuordnung wird durch Informationen aus URF-Dateien

hergestellt

beim Capturing werden die numerischen Identifikatoren ermittelt– Rückwärts-Zuordnung über Daten aus URF-Dateien wäre möglich,

würde aber dem Ziel einer Quelltext-Unabhängigkeit entgegenstehen

– projektgebundenes Umschalten zwischen entweder Nutzung der manuellen Testskript-Erstellung oder des Capturings widerspricht Zielstellung

"herkömmliche" und generierte HTS-Befehle sollen innerhalb derselben Testsequenz kombiniert werden können Einführung eines "Schalters" zum Deaktivieren der Substitutionen

beim Übersetzen der Kommandos von HTS nach ATS

Page 32: Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von Nutzereingaben Andreas Hirth.

Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

32

Neues HTS-Kommando NOSUBST

Erweiterte HTS-Syntax– anweisung = aktionsschritt | auswertungsschritt

|interaktion | dateioperation |loopstruktur | kommentar | deakt_kommando | nosubst_kommando

...nosubst_kommando = NOSUBST,anweisung

Kommandos mit dem Präfix NOSUBST werden normal verarbeitet, bis auf folgende Einschränkungen:– an Stelle von Control-Bezeichnern oder Menübäumen werden

die entsprechenden numerischen Identifikatoren der Controls oder Menükommandos erwartet

NOSUBST-Kommandos können im ATOS-Befehls-Editor bearbeitet werden, eine automatische Fehlerkontrolle ist jedoch nicht möglich

Page 33: Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von Nutzereingaben Andreas Hirth.

Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

33

Übersicht

Motivation, Intention

Realisierung

Fazit

Demonstration

Page 34: Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von Nutzereingaben Andreas Hirth.

Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

34

Fazit und Ausblick

Erreichte Ziele– zuverlässiges Capturing der Nutzeraktionen durch

Interpretation von Eingabe-Nachrichten auf niedrigem Level

– schnelle, intuitive Generierung von Aktions- und Testkommandos

– Unterstützung des Testens von Applikationen, für die kein Quellkode vorliegt

– saubere Einbettung in das ATOS Grundsystem– Möglichkeit der kombinierten Verwendung von manueller

Testskript-Erstellung und Capturing

Erweiterungen, Verbesserungen– Verwendung der URF-Daten zur Kommando-Generierung,

wenn vorhanden– ggf. Unterstützung weiterer Controls

• Abhängig auch von Unterstützung durch HTS

Page 35: Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von Nutzereingaben Andreas Hirth.

Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

35

Übersicht

Motivation, Intention

Realisierung

Fazit

Demonstration– Rechner– Editor

Page 36: Vortrag zur Diplomarbeit Automatische Generierung von Testskript- Kommandos durch Capturing von Nutzereingaben Andreas Hirth.

Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

36

Diskussion

Vielen Dank für Ihre Aufmerksamkeit!