Vortrag zur Diplomarbeit

Slides:



Advertisements
Ähnliche Präsentationen
Blue J.
Advertisements

Wiederholung Betriebssystem bietet eine Abstraktion der Hardware an:
Informatik 12 | DAES Compilerbau Wintersemester 2010 / 2011 Dr. Heiko Falk Technische Universität Dortmund Lehrstuhl Informatik 12 Entwurfsautomatisierung.
JDF Tools: Einsatz bei Agfa
ixJED ixact GmbH Dr. Karsten Wendt
Ultris Version 8: Erzeugen der Formen und Anzeigen der Vorschau
Enno Rehling und Roger Butenuth, Uni-GH Paderborn: Arminius: Software für Linux-basierte SCI-Cluster Arminius: Software für Linux-basierte SCI-Cluster.
Vorstellung von PaderWAVE Generierung von Web-Anwendungen aus visuellen Spezifikationen, SS04 Projektgruppe der AG Kastens.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Paul, Morten, Yannick Blue J. Entwicklungsumgebung versteht Java Programmcode versteht Java Programmcode Für die Entwicklung eigener Software.
On a Buzzword: Hierachical Structure David Parnas.
Java: Objektorientierte Programmierung
Java: Grundlagen der Sprache
Ein Beispiel in Java.
Vers. 6: Der Konfigurationsdialog Quelle: Spieleprogrammierung mit DirectX und C++, U. Kaiser und P. Lensing, Galileo Computing (2007)
Spieleprogrammierung mit DirectX und C++
1 Named Pipes alias FIFO Haben einen Eintrag im Dateisystem und sind somit durch Zugriffsrechte identifizierbar Ermöglichen die Kommunikation zwischen.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 7 User Interfaces in Java Sommersemester 2003 Lars Bernard.
Der Testprozess als Bestandteil des SE Prozesses:
Programmieren mit JAVA
Fehlerabdeckung/ Regressionstest1 Testen und Analysieren von Software Fehlerbehebung und Re-Engineering Fehlerabdeckung/ Regressionstest Vortragende:
Seminar: Architekturbeschreibungssprachen
Excel Kurs Teil I Excel starten, Verknüpfungen auf dem Desktop anlegen. F. Bäumer.
So erstellen Sie schnell und einfach eine Übersichtsfolie Herbert Manthei
Einführung in Visual C++
DVG Einführung in Java1 Einführung in JAVA.
DVG Klassen und Objekte
Der VFP Debugger - Coverage und Profiling. © 1999 TMN-Systemberatung GmbH Der VFP Debugger n Neues Aussehen, eigene Task n Erweiterte Möglichkeiten n.
Access & Assign Methoden in Visual FoxPro Zuweisungs- und Zugriffs-Methoden.
Seite Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu wird CGI verwendet? 4Geschichtlicher Überblick 5Grundvoraussetzungen.
1 Nutzen Sie diese Powerpoint-Präsentation beim Selbstlernen oder in Veranstaltungen zur Einführung in das jeweilige Thema. Einführung Lernmodul Nutzungsbedingungen:
3D Programmierung Version 12 - Highscores. Die vom Spieler erzielte Punktzahl wird mit 5 vorgegebenen Punktzahlen verglichen und, falls nötig, in die.
Delphi Eine objektorientierte Programmiersprache © Beushausen 2000.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 7 Sitzung 7: User Interfaces in Java.
Programmieren mit MS Small Basic
Delphi II - OOP IFB Fortbildung
Grundlagen der sicheren PHP Programmierung Parametermanipulationen und Injektionslücken Stefan Esser Hardened-PHP Project.
Vortrag D. Braun, Praktikum. Übersicht Pleopatra API Pleopatra Tools Twitter Demonstration Ausblick.
P060 - IFI-Pflegedialogsystem - Termine und Nachrichten Ingenieurbüro für Informationssysteme Konzepte und Marketing Gerade Straße Buchholz i.d.N.
Einführung in die Programmierung
Flexible Datenstrukturen
Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen.
Telecooperation/RBG Technische Universität Darmstadt Copyrighted material; for TUD student use only Grundlagen der Informatik I Thema 16: Ausnahmebehandlung.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 8 Folie 2 Commands (1) s.a.
1. Entwicklungsumgebung 2. Kontextmenü 3. Compile 4. Objekt 5. Attribut 6. Klasse 7. Deklaration 8. Intialisierung.
© Gabriele Sowada © Gabriele Sowada 2 Emulation Emulation der Siemens 2002 auf dem PC unter Windows von Volker Dahrendorf Für alle.
1. Entwicklungsumgebung 2. Kontextmenü 3. Compile 4. Objekt 5. Attribut 6. Klasse 7. Deklaration 8. Intialisierung.
Java Programmierung.
Vortrag: Visual Basic Neuerungen Autor : Dennis Hoyer
Objectives Verstehen was unterDelegate verstanden wird
Erste Schritte in DELPHI
____________________________________________________________________________________________________________________________________________ Arbeit, Bildung.
Vortrag: Frames & Javascript.
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
Datenlogger-Auswerte Software GSoft
Grundlagen, Prinzipien und Aufgaben eines Betriebssystems
Die Vereinsverwaltung unter Windows 2000 Anhand der folgenden Präsentation werden Sie mit der Verwaltung des Vereins unter Windows 2000 vertraut gemacht.
Institut für Kartographie und Geoinformation Prof. Dr. L. Plümer, Dipl.-Ing. D. Dörschlag, Dr. G. Gröger Einführung in die Programmierung mit Java 13.
ATOS Weiterentwicklung GUI-Capture nach dem WinRunner Konzept Lösung des Timing-Problems.
C Tutorium – Shared Memory – Knut Stolze. 2 Shared Memory Ein Speicherbereich, auf den mehrere Prozesse Zugriff haben – Also kein privater Speicher –
Dieser Vortrag wird gesponsort von:
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Excel-Tool: Beschwerdeanalyse  Folie 1 von Bitte Makros aktivieren Das Excel-Tool funktioniert nur mit eingeschalteten Makros. Eventuell erhalten.
, Claudia Böhm robotron*SAB Anwendungsentwicklung mit dem Java und XML basierten Framework robotron*eXForms Simple Application Builder.
1. Betreuer: Prof. Dr. Jörg Striegnitz 2. Betreuer: Dr. Martin Schindler Kontextsensitive Autocompletion für Klassendiagramme in der UML/P Florian Leppers.
 Präsentation transkript:

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

Übersicht Motivation, Intention Realisierung Fazit Demonstration Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

ATOS bisheriger 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 Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

ATOS einige 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 Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

ATOS Kommandoerzeugung (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 Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

Neue Idee Automatische Kommandoerzeugung Aktionen Tests 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 Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

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 Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

Übersicht Motivation, Intention Realisierung Fazit Demonstration technische Grundlagen Capturing Integration Fazit Demonstration Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

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 Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

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 Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

Typen von Hooks 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 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_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_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. Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

Was können Hooks nicht? Idee: Aber: 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 Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

"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 Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

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 Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

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)) Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

Übersicht Motivation, Intention Realisierung Fazit Demonstration technische Grundlagen Capturing Integration Fazit Demonstration Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

Capturing (Übersicht) Nachrichten Hook Code-Segment installiert steuert Nachrichten Daten-Segment Shared Data Daten-Segment sendet Informationen Testobjekt ATOS Antworten Abfragen Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

Capturing ATOS installiert Hooks für den Thread des Testobjekts Übersicht 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 Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

Capturing (Beispiel 1) Beispiel Übermittlung der Information zum Ereignis "linke Maustaste gedrückt" #define WM_CAPTURE_LMOUSEDOWN USER+100 ... SendMessage( hWnd, // Dialog des Capturing-Moduls WM_CAPTURE_LMOUSEDOWN, wParam, // LOWORD: x-Koordinate // HIWORD: y-Koordinate lParam // Handle des Zielfensters ); Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

Capturing (Beispiel 2) Beispiel Übermittlung der Information zum Ereignis "Tastatureingabe" #define WM_CAPTURE_KEY USER+102 ... SendMessage( hWnd, // Dialog des Capturing-Moduls WM_CAPTURE_KEY, wParam, // LOWORD: 0 // HIWORD: virtueller Tastenkode lParam // Handle des Fensters mit dem // Fokus ); Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

Interpretation der Eingaben (Mausklick) Übersicht 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) Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

Interpretation der Eingaben (Tastatur) Übersicht 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 Taste z.B: Button SPACE Klick Button ENTER Klick Checkbox ENTER Tastendruck ENTER Button 'A' - Editbox 'A' Wert setzen Combobox 'A' Auswahl oder Wert setzen Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

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 Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

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 Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

Übersicht Motivation, Intention Realisierung Fazit Demonstration technische Grundlagen Capturing Integration Fazit Demonstration Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

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 Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

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 Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

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 Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

Klasse '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; - LineList * mCommandList; - LineList * mPostCommands; - LineList * mPreCommands; - unsigned short munWorkingMode; - unsigned short munLastCmdCreationMode; - LRESULT (*mfnStartTestSelDlg)(HWND, Line *) ; - LineList * mControlTypeSynonyms; + 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); Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

Trennung von GUI und Logik Hook installiert, steuert ATOS Logik GUI CapturingProcessor Testsequenz sendet Nachrichten übermittelt Daten steuert startet ATOS Capturing Dialog Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

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 Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

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 Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

Übersicht Motivation, Intention Realisierung Fazit Demonstration Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

Fazit und Ausblick Erreichte Ziele Erweiterungen, Verbesserungen 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 Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

Übersicht Motivation, Intention Realisierung Fazit Demonstration Rechner Editor Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben

Vielen Dank für Ihre Aufmerksamkeit! Diskussion Vielen Dank für Ihre Aufmerksamkeit! Andreas Hirth, Automatische Generierung von Testskript-Kommandos durch Capturing von Nutzereingaben