Testautomation in verteilten Ausführungsumgebungen cc gmbh Bernhard Moritz Bernhard.Moritz@cc-gmbh.de
Testautomation in verteilten Ausführungsumgebungen Symposium Testen im System- und Software-Life-Cycle 28.11.2007, Ostfildern, TAE Bernhard Moritz Kreuzberger Ring 36 65205 Wiesbaden Telefon 0611 94204-0 Telefax 0611 94204-44 Bernhard.Moritz@cc-gmbh.de tae_2007_vortrag_testautomation_v01d.odp 2
Übersicht Überblick über Software-Prozeßautomation Verteilte Ausführungsumgebungen Erwartungen an Testautomation Automatisierte Testprozesse Problembereiche tae_2007_vortrag_testautomation_v01d.odp 3
CC - Ihr Partner für die konsequente IT-Zukunftssicherung Wer wir sind... CC ist ein unabhängiges Software-Entwicklungs- und Beratungsunternehmen unterstützt Kunden bei der Planung und Realisierung komplexer IT-Projekte unterstützt Kunden bei der Entwicklung maßgefertigter Lösungen bietet Qualitätssicherungswerkzeuge für die Programmierung Was wir anbieten... CC Das Unternehmen Dienstleistungen Schlüsselfertige Lösungen bei der Entwicklung von Individualsoftware, professioneller Open Source Service, Software Wartung und Evolution En@bling Software Werkzeuge zur Unterstützung und Optimierung des Software-Entwicklungsund Wartungsprozesses Training Individuelle Trainingsprogramme zur Implementierung von Qualitätsmanagement-Systemen, Programmierstandards und zum Wartungsmanagement tae_2007_vortrag_testautomation_v01d.odp 4
Software-Prozeßautomation Software-Prozeßautomation integriert Werkzeugfunktionen zu Arbeitsabläufen nach den Vorgaben eines Vorgehensmodells unterstützt Mitarbeiter bei der Durchführung von Aufgaben im Software- Entwicklungszyklus verhindert Benutzerfehler bei kritischen Aufgaben sorgt für die Einhaltung von Konventionen dokumentiert die erfolgreiche Durchführung von Aufgaben erzeugt Kennzahlen zur Projektsteuerung bzw. Prozeßverbesserung tae_2007_vortrag_testautomation_v01d.odp 5
Verteilte Ausführungsumgebungen tae_2007_vortrag_testautomation_v01d.odp 6
Verteilte Ausführungsumgebungen Verteilte Ausführungsumgebungen sind gekennzeichnet durch: Vielfalt von Hardware und Betriebssoftware Vielfalt von verwendeten Programmiersprachen Vielfalt von Datenhaltungsformen Vielfalt von Kommunikationsformen Verteilung von Funktionalität in einem Netzwerk Mehrfache Bereitstellung identischer Funktionalität (Wieder-) Verwendung von Software, Frameworks Unterschiedliche Darstellungsmöglichkeiten an den Endgeräten tae_2007_vortrag_testautomation_v01d.odp 7
Software-Entwicklung Die verwendeten Mittel haben sich in den vergangenen Jahren dramatisch verändert: Hardware, Basis-Software Programmiersprachen Entwicklungsmethoden Werkzeuge Die Anwendungen sind komplexer geworden und immer heterogener So etwas, wie unternehmensübergreifende de facto Standards gibt es so gut wie gar nicht mehr. Die Abhängigkeiten von Software-Elementen untereinander lassen sich nicht mehr durch einfache statische Analysen ermitteln tae_2007_vortrag_testautomation_v01d.odp 8
Software-Entwicklung Die technischen Möglichkeiten werden heute gnadenlos ausgenutzt: Vorgehensmodelle entstehen oft erst im Nachhinein Mit jedem Projekt werden neue Wege erprobt Nicht jede Technik wird von Anfang an verstanden Die Anwendungen sind heute nicht mehr wie aus einem Guß, alle technischen Mittel, auch solche, die sich nicht etabliert haben, finden sich in einem Stück Software. Hinzukommt, daß häufig eine Integration mit den bestehenden Software-Systeme unbedingt erforderlich ist. tae_2007_vortrag_testautomation_v01d.odp 9
Software-Entwicklung Leitmotive: Wiederverwendbarkeit Skalierbarkeit Flexibilität Portabilität Als Konsequenz werden häufig handelsübliche oder selbstgestrickte Frameworks zum Einsatz gebracht. Gelegentlich werden sogar Frameworks und Anwendungssoftware zeitgleich entwickelt, was einen erheblichen Wartungsaufwand bereits während der Entwicklung nach sich zieht. Oft unterscheidet sich die Entwicklungsumgebung auch stark von der eigentlichen Ausführungsumgebung. tae_2007_vortrag_testautomation_v01d.odp 10
Testen im Software-Entwicklungszyklus Von vielen Testern wird Testen nach wie vor für einen integralen Bestandteil des Software-Entwicklungszyklus gehalten. Andererseits verspricht jede neue Entwicklungsmethodik die Qualtität von Software durch konstruktive Maßnahmen zu verbessern, so daß schnell der Eindruck entstehen kann, Testen sei in der neuen Welt eigentlich kein Thema mehr. Am Ende der Entwicklung stellt sich dann häufig heraus, daß die erreichte Qualität noch nicht vollständig überzeugt. Symptom: Über Last- und Streßtests wird eher nachgedacht, als über Tests der Funktionalität. tae_2007_vortrag_testautomation_v01d.odp 11
Test-Automation Nicht alle Aufgaben beim Testen lassen sich automatisieren Viele der Testaufgaben können weiterhin lokal bewältigt werden Die höhere Komplexität der Anwendungssoftware stellt sich dabei aber durchaus als eine Herausforderung an die Testmethodik dar Ein Aufgabenfeld des Testens eignet sich besonders gut zur Automation: Die Testdurchführung Insbesondere die Durchführung von Regressionstests erscheint heute notwendiger denn je tae_2007_vortrag_testautomation_v01d.odp 12
Durchführung von Tests tae_2007_vortrag_testautomation_v01d.odp 13
Automatisierbare Aufgaben Testdatenbestände werden benannt und archiviert Archivierte Bestände werden in der Ausführungsumgebung bereitgestellt Die zu testende Anwendung wird vorbereitet und bereitgestellt Ausführung der Software in der Testumgebung Die Resultate der Ausführung werden archiviert Die Resultate der Ausführung werden bewertet Zusammengefaßt: + Kopieren + Laden + Vergleichen + Ausführung z.b. durch + Skripte + Test-Treiber tae_2007_vortrag_testautomation_v01d.odp 14
Bereitstellung von Testdaten Werden unterschiedliche Datenhaltungssysteme verwendet, kommen in der Regel systemspezifische Werkzeuge zum Einsatz ist zu klären, wie zusammengehörige Bestände abgelegt werden, zentral oder dezentral Nimmt die Anzahl der Lade-, Entlade- oder Kopieroperationen zu Auch andere als persistente Daten sind beim Test von Bedeutung: Systemspezifische Konfigurationseinstellungen (z.b. Registry-Einträge) Betriebssystemspezifische Dateisysteme Shared-Memory, Transaction-Queues, Caching tae_2007_vortrag_testautomation_v01d.odp 15
Bereitstellung von Testobjekten Ein plattformübergreifendes Konfigurationsmanagement ist unabdingbar Bei der Herstellung von verteilter Software treffen verschiedene Generationen von Programmierern aufeinander Bestimmte Eigenarten der Software treten erst zu Tage, wenn sie außerhalb von Entwicklungsumgebungen betrieben wird. Laufzeitbibliotheken und 3rd-Party-Software müssen ebenfalls verwaltet werden Die Abhängigkeiten der verschiedenen Software-Elemente läßt sich nicht mehr durch statische Analysen ermitteln (dynamische Calls, Reflection) Die statische Semantik an den Schnittstellen zwischen Software-Elementen wird häufig nicht mehr während des Übersetzens geprüft. Konfigurationsdaten müssen gelegentlich wie Software selbst behandelt werden tae_2007_vortrag_testautomation_v01d.odp 16
Testdurchführung Testumgebungen erfordern Aufwendige Deployment Prozeduren Aufwendige Initialisierungsoperationen Aufwendige Konfiguration zentraler Services Eine Synchronisation der verschiedenen Server Die Einhaltung von Reihenfolgen bei der Initialisierung Stubs für nicht steuerbare externe Schnittstellen Eine sorgfältige Analyse von Log-Files tae_2007_vortrag_testautomation_v01d.odp 17
Problembereiche bei der Testdurchführung Wiederholbarkeit herstellen Isolierung von Testumgebung Verhindern von Störungen, Verfälschungen Prüfung der ordnungsgemäßen Verarbeitung Meldungen von Werkzeugfunktionen und Basis-Software bewerten Analyse von Log-Files Widerstand gegen Tests Testbarkeit der Anwendung Fehlende Parametrisierbarkeit von Basissystemen und Werkzeugen Die Menge der zu bearbeitenden Daten und Programme tae_2007_vortrag_testautomation_v01d.odp 18
Werkzeugfunktionen Werkzeughersteller haben es schwer! Unzählige Konstellationen von Hardware- und Basis-Software müssen unterstützt werden Nicht alle Hersteller von Basis-Software legen die erforderlichen Schnittstellen rechtzeitig offen Heute verwendete Werkzeuge zur Herstellung und zum Test von Software passen nicht immer zusammen: Fehlende Schnittstellen Proprietäre Ablageformate Unterschiedliche Grundannahmen (Entwicklungsmodelle) tae_2007_vortrag_testautomation_v01d.odp 19
Testbarkeit Testbarkeit ist der Grad, zu dem ein Softwareprodukt das Testen ermöglicht (IEEE). Ein direktes Mass für die Testbarkeit eines Softwareproduktes sind die relativen Testkosten (im Verhältnis zu vergleichbaren Systemen). Die Testbarkeit wird wesentlich durch folgende Eigenschaften der Software bestimmt: Größe und Komplexität Abhängigkeiten zwischen Systemteilen Aufteilung von Verantwortlichkeiten auf Systemteile ("Separation of Concerns") Lokalität der Wirkung von Fehlern Kontrollierbarkeit und Beobachtbarkeit Eingebaute Testfunktionalität Unterstützung von Systemdiagnose im laufenden Betrieb Automatisierbarkeit von Tests tae_2007_vortrag_testautomation_v01d.odp 20
Testbarkeit Anforderungen an die Testbarkeit: Der Einsatz von Werkzeugen muß sorgfältig geplant werden, insbesondere Capture- & Replay-Werkzeuge stellen Anforderungen an Testobjekte, die spätestens in der Designphase der Software berücksichtigt werden müssen. Alternativ kann die Software bereits während der Entwicklung so instrumentiert werden, das die Software im Test gut beobachtet werden kann, so daß die Entwicklung von plattformunabhängigen Testtreibern ermöglicht wird. In verteilten Umgebungen ist die Verfügbarkeit von Testtreibern bzw. -Stubs von großer Bedeutung. Nach Möglichkeit sollte sich jeder beteiligte Client oder Server separat betreiben lassen. tae_2007_vortrag_testautomation_v01d.odp 21
Werkzeugfunktionen Capture & Replay Code Coverage Ausführung Ressourcen-Monitor Performance-Analyse Capture & Replay Code Coverage Entwicklung Debugging Protokoll-Mitschnitt Konfigurationsmanagement Testmanagement Statische Analyse Testdaten-Bearbeitung Testfallermittlung Code Coverage Datenbank DB-Utilities Testauswertung Vergleichswerkzeug Archivierung Prozessautomation tae_2007_vortrag_testautomation_v01d.odp 22
Testautomation in verteilten Ausführungsumgebungen Grundsätzlich ist ein System zur Automation von Testaufgaben den selben technischen Gegebenheiten ausgeliefert, wie die zu testende Anwendung. Auch die zur Automation benötigte Qualifikation von Mitarbeitern wächst. Die Koordination der Aktivitäten auf den beteiligten Rechnern stellt dabei eine besondere Herausforderung dar. Die Kommunikation zwischen dem Arbeitsplatz des Testers, und dem Testautomaten kann in der Praxis recht aufwendig sein. tae_2007_vortrag_testautomation_v01d.odp 23
Testdurchführung für verteilte Anwendungen Die Anzahl der Programmiersprachen und Datenhaltungsformen hat zugenommen Die Komplexität der Ausführungsumgebung ist insgesamt höher (Hardware, Basis-Software, Frameworks) Kopier- und Lade- und Steueroperationen über Netzwerk Viele der Werkzeuge lassen sich nicht mehr von außen steuern Dieselbe Funktionalität wird für verschiedene Plattformen benötigt Capture- und Replay-Tools werden zum Abenteuer Synchronisation und Kontrolle der Operationen ist schwieriger Der Aufwand zur Automation multipliziert sich mit der Vielfalt der Umgebungs-Elemente!! tae_2007_vortrag_testautomation_v01d.odp 24
Fazit Der Aufwand zur Testautomation steigt mit der Komplexität der Ausführungsumgebung. Wozu die ganze Mühe? Also: Damit der Erfolg des Tests nicht durch Mängel in der Testausführung gefährdet wird Damit alle Schritte der Testdurchführung nachvollziehbar dokumentiert werden können Damit die Tests in der notwendigen Breite überhaupt durchgeführt werden Die Automation der Testdurchführung ist notwendiger denn je Der Aufwand läßt sich etwas reduzieren, wenn Automation rechtzeitig berücksichtigt wird tae_2007_vortrag_testautomation_v01d.odp 25