Next Generation Testing durch automatisierte Schnittstellentests und Servicesimulation René Meyer IBM SWG Rational Software Consulting IT-Specialist rene.meyer@de.ibm.com
Agenda Herausforderungen im Testen komplexer Anwendungen Was ist Testvirtualisierung? Lösungskomponenten und Szenarien Zusammenfassung Q&A
Situation in vielen IT-Organisationen Heutige Anwendungen bestehen aus einer Choreographie von verschiedensten Diensten und heterogenen Systemen Hohe Kosten für Testinfrastruktur und komplexe Bereitstellungsprozesse Lange Zyklen von Änderungswunsch->Fehlerbehebung->Test bis Auslieferung Späte Integrationstests Entwickler müssen einen oft einen erheblichen Anteil in die Programmierung von Schnittstellentests oder Mockups investieren, es erfolgt kein prozessorientiertes Testen Nicht-funktionale Kriterien werden viel zu spät adressiert Agile Entwicklung trifft auf organisatorische und technische Barrieren
Verteilung Zeit und Kosten beim Test Teure Testsysteme: typische Test-Labore von Großunternehmen kostet zwischen $5-30 Mio Der Betrieb von Testsystemen kostet bis zu 40% des gesamten Testbudgets Das Setup von Testumgebungen verbraucht 30% bis 50% der zur Verfügung stehenden Testzeit Verzögerung des Testbeginn durch warten auf die Testumgebung Unzureichende Automatisierungsgrade Kostenverteilung im Testbudget Zeitlicher Aufwand beim Testen Testinfrastruktur Testplanung und Testausführung Quelle: http://www.german-testing-board.info/downloads/pdf/broschuere_neu_2011.pdf 4
Kostenpflichtiger Service Noch nicht verfügbare Applikation Testdaten für Testteams Applikation mit hohem Wartungsaufwand für
Was ist Test Virtualization? Public Cloud Private Cloud Routing Service App Under Test Collaboration Content Providers EJB Third-party Services Portals Data Warehouse Directory Identity Archives Heterogene Umgebungen Business Partners Shared Services Messaging Services Capture & App Under Test File systems Model Databases Mainframe Third-party applications Services Mainframe Enterprise Packaged apps, messaging services, etc. Service Bus Virtual Services Erstellung von realen Testumgebungen: Nichtverfügbare Systeme und Applikationen Kosten für 3rd Party Applikationen Nicht praktikable Virtualisierung auf Betriebsystemebene Hohe Administrationskosten Testvirtualisierung mit Virtual Services : Simulation des Verhaltens einer Applikation/Systems beim Test Virtual Services benötigen nur Commodity Hardware Jeder Entwickler, Tester kann einfach und schnell seine eigene Testumgebung vervollständigen Bestehende Vorgehensweisen können weiterhin benutzt werden (Manuelle-, Performance-, Automatisierte-Tests)
Kontinuierliche Integrationstests durch Virtualisierung Zu testendes Teilsysteme Simulierte Teilsysteme «Echte» Teilsysteme, bereitgestellt für den Test Entwickler Umgebung Umgebung für Funktionstests Pre-Produktive Umgebung Inkrementelle Integrationstests
Mögliche Varianten für virtuelle Services Einfach Nicht-deterministisch Datengetrieben Modellgesteuert Hard-coded Antwort für eine gegebene Eingabe Eine von n hard-coded Antworten Eingabe- und/oder Ausgabedaten spezifiziert in externer Datenquelle (Excel, Datei, Datenbank) Eingabe- und/oder Ausgabedaten werden in Datenmodellen mit komplexen Beziehungen gehalten Verhaltensgesteuert Erweitert Modellgesteuert um eine zusammengestellte Funktionalität zur Verfügung zu stellen, z.b. Warenkorb, Echtzeitdaten, Börsenhandel, Bestellungsabgleich
Rational Integration Tester Abbildung und Verständnis der Architektur Definition der Integrationstests Importieren von Spezifikationen, z.b. WSDLs für Web Services Aufzeichnen von Datenverkehr Definition von Stubs und Testdaten Wiederverwendung von aufgezeichneten Tests zur Erzeugung von Stubs Nutzung von Testdaten aus Dateien oder Datenbanken Vereinfachung und Beschleunigung bei der Bereitstellung von Services/Applikationen in der Testinfrastruktur (ohne Programmier Know-How)
Unterstütze Technologien Protokolle SOA, ESB, Middleware Nachrichtenformate ActiveMQ Email (SMTP, IMAP) Files FTP/S HTTP/S JMS (JBOSS et al) IBM WebSphere MQ JBoss MQ SAP IDoc, BAPI, RFC & XI/PI Software AG s IB & IS Solace Sonic MQ TCP TIBCO Rendezvous, Smart Sockets & EMS CentraSite Oracle Fusion SCA Domain Software AG IS, BPMS Sonic ESB TIBCO ActiveMatrix UDDI Web Services WebSphere WSDL BPM Databases Log Files IMS CICS EDI/x12 formats.net Objects Bytes COBOL Copybook ebxml Fixed Width HL7 IATA Java Objects MIME OAG SOAP Software AG Broker Docs SWIFT TIBCO ActiveEnterprise XML (DTD, XSD, WSDL) Custom
Was steckt in einer Nachricht? Payload
Wie werden Nachrichten übersichtlich dargestellt? Payload Formatter Schema
Wie sind die Daten strukturiert, welches Schema wird genutzt? Payload SOAP XML Formatter Schema SWIFT COBOL Copybook DTD XSD WSDL HL7 EDI IATA Text MIME Byte Array Java Objects OAG SAP BAP/RFC FIX.Net Objects TIBCO ActiveEnterprise webmethods IB and IS Documents Custom
An welchen Stellen können einfach variable Daten genutzt werden? Payload Formatter Schema Test Data
Wie muss der Transport der Nachrichten erfolgen? Payload JMS webmethods Formatter Schema HTTP/S FTP Test Data NDM Oracle/BEA Transport JDBC Sonic MQ TCP/UDPPL/SQL Flat Files Shell commands TIBCO EMS TIBCO iprocess TIBCO Rendezvous IBM WebSphere MQ Custom Transports
Eine Testumgebung für alle/alles funktioniert nicht Maintenance Constraints Server/ Web Services Physical Test Environment 2hr. access window System Under Test Mainframe / MQ/CICS Volume Constraints Smart Device Volume Constraints Database / JDBC
Bereitstellung von paralellen Umgebungen Model and Deploy Live / Virtual System Under Test Capture & Model Web Services Capture & Model Web Services Capture & Model Web Services Test Case Repository MQ/CICS MQ/CICS MQ/CICS Smart Devices Smart Devices Smart Devices JDBC JDBC JDBC FTE SIT UAT
Rational Virtualization Test Server Bereitstellung der zentralen Umgebungen zum Betrieb von virtualisieren Systemen und Services Veröffentlichung und Management der Stubs in verschiedenen Versionen Organisation von Regressionstests Auswertung von Testergebnissen Reduziert die Kosten der Testinfrastruktur in herkömmlichen Systemen Nutzer bemerken nicht, welche Systeme oder Services virtuell sind
Rational Performance Test Server Rational Performance Test Server 1) Gegen das Gesamtsystem Wiederverwendung von bereits erstellten Testfällen Unterschied zum traditionellen Performance Tests Testen früher im Testzyklus Testen der individuellen Perfomance von Services z.b. für eine Wiederverwendung Lokalisieren von Engpässen Simulationen z.b. für eine Kapazitätsplanung System Under Test Test Authoring and Control 2) Gezielt gegen eine Applikation Web Server App Server db Server Load Generators
Nutzen im Lebenszyklus für verschiedene Stakeholder Entwickler nutzen und erstellen virtuelle Services und Service Tests auf der lokalen Arbeitsstation ohne Zugriff auf teure separate Testumgebung. Entwicklung und Test können virtuelle Services zum frühen Test von erweiterten Szenarien anwenden. Externe Teams können ohne Zugriff auf reale interne Systeme entwickeln und testen. Architekten definieren geeignete Systemgrenzen und Services für Virtualisierung. Unit Integration System System Integration User Acceptance Operability Performance Das ganze System oder einzelne Komponenten können schon frühzeitig auf Performance getestet werden. Die Nutzung von virtuellen Services ermöglicht auch hier einen umfassenden Test, falls reale Komponenten noch nicht verfügbar sind mit einem erheblich geringeren Testvorbereitungsaufwand. Virtuelle Services werden zu späteren Zeitpunkt durch immer mehr reale Services im Test ersetzt, die finale Abnahme erfolgt mit realen Services.
Zusammenfassung Signifikant niedrige Kosten für die Testinfrastruktur Verkürzung des Testzyklus Verringerung des Risikos Die Kosten für die Testinfrastruktur können um bis zu 90% reduziert werden Aufwände für die Pflege von Testinfrastrukturen können um über 80% reduziert werden Verringerung der Kosten für notwendige 3 rd Party Systeme oder gebührenpflichtige Webservices Testumgebungen können in Minuten statt in Wochen konfiguriert werden Mehr Tester haben den Fokus auf das eigentliche Testen, statt sich um die Pflege der Testumgebungen kümmern zu müssen Regressionstests können in frühen Testphasen, unabhängig von der Bereitstellung der Benutzeroberfläche durchgeführt werden Entwickler können frühzeitig auf dem Service/API Level testen Die parallele Entwicklung an verschiedenen Teilen einer Applikation oder eines Services wird durch die Virtualisierung auch für große Teams möglich Keine Big-Bang-Tests in späten Testzyklen mit hohen Kosten für die Fehlerbehebung
26 FRAGEN
Thank you!