Automated Software Testing

Slides:



Advertisements
Ähnliche Präsentationen
Software Engeniering II
Advertisements

M a r c – o l i v e r p a h l Informatik I – Kapitel 7 Klassen und höhere Datentypen Zusammenfassung des Kapitel 7 Küchlin, Weber, Einführung in die Informatik,
DNS-Resolver-Mechanismus
1. 2 Microsoft.NET Überblick Dirk Primbs Technologieberater Developer Platform & Strategy Group Microsoft Deutschland GmbH.
Zusammenfassung des Kapitels 8
Fakultät für informatik informatik 12 technische universität dortmund Specifications Peter Marwedel TU Dortmund, Informatik 12 Graphics: © Alexandra Nolte,
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Design by Contract with JML - Teil 2
Dipl. Inf. (FH) Paul Mizel Compilerbau.NET Compiler / Codegeneratoren / Skriptsprachen.
Universität Stuttgart Institut für Kernenergetik und Energiesysteme ACM/IEEE Code der Ethik – Die ACM/ IEEE haben gemeinsam einen Code of Ethics erstellt.
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Grundlagen der Sprache
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Das Test-Framework JUnit
Das Test-Framework JUnit
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
Objektorientierte Vererbung
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Baustein- vs. Funktionsorientierte Organisation.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 4. Methodenentwurf Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse von.
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Test Summary: m ein Fehler pro Tag m Test First m Funktionstests.
Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 1 Gesamtvorgehen 1. Textuelle Szenarios 2. Objektdiagramme 3. Klassendiagramm 4.
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Baustein- vs. funktionsorientierte Organisation.
Software Design Patterns Extreme Programming (XP).
F açade P attern By Nicolas Lanquetin. Façade Pattern Structural Pattern Bietet ein gemeinsames Interface, anstatt vieler Interfaces eines Subsystems.
DVG Verkettete Listen Verkettete Listen. DVG Verkettete Listen 2 Primitive Datentypen Vorteile: –werden direkt vom Prozessor unterstützt.
Vererbung Einfache Vererbung – Erben von abstrakten Klassen – Implementieren eines Interfaces.
© 2005 Pohlig – Taulien: Die Matheamatik-GUI als Applet Come Together 1 April 2005 Was ist ein Applet Ein Applet ist ein Javaprogramm, das die VM benutzt,
WebCast: Managed Smart Tags mit VSTO Jens Häupel.NET Technologieberater Microsoft Deutschland GmbH
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 4. Methodenentwurf Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse von.
TENEZ Hallenreservierungssystem Verwaltung von mehreren Vereinen Verwaltung von mehreren Standorten mit Hallen Kundenverwaltung Reports Mobile Version.
Objektorientierte Modellierung
Rekursive Funktionen (Fakultät)
Fighting the mud TESTING BROWNFIELD APPLICATIONS.
Tutorial im Rahmen des Software(technik)praktikums
OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt.
Test Driven Development - Romano Adler-
Unit Testing Roger Boesch Technology Solution Professional Developer Tools Microsoft Schweiz GmbH blogs.msdn.com/rogerboesch © 2004 Microsoft Corporation.
BAS5SE | Fachhochschule Hagenberg | Daniel Khan | S SPR5 MVC Plugin Development SPR6P.
Online Reservierungssytem ReSys. Einleitung Gruppenmitglieder Auftrag Technologie Eingesetzte Technologie Softwarearchitektur Software-Design Use-Cases.
Online Reservierungssytem ReSys. Einleitung Gruppenmitglieder Auftrag Technologie Eingesetzte Technologie Softwarearchitektur Software-Design Use-Cases.
Informatik – Programmierpraktikum Alexander Volodarski Gruppe 14
Your name Bedeutung von Internet- Technologien Gruppe 1 Andreas Feuerstein Philipp Hochratner Christian Weinzinger.
MVVM in Windows 8 und Windows Phone 8
PresenterCompanyContact Windows Azure ASP.NET Web-Anwendungen schnell und zuverlässig bereitstellen.
Semesterarbeit SOA CRYSTL-PIM Product Information System
Design Patterns Ein Muster (pattern) ist eine Idee, die sich in einem praktischen Kontext als nützlich erwiesen hat und dies auch in anderen sein wird.
Einfach und doppelt verkettete Listen in JAVA by Jens Weibler
Online Reservierungssytem ReSys. Einleitung Gruppenmitglieder Auftrag Technologie Eingesetzte Technologie Softwarearchitektur Software-Design Use-Cases.
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
Agile ALM for Plex/2E CM MatchPoint ALM. Themen Agenda CM MatchPoint ALM Übersicht CM MatchPoint 5.2 Web und Mobile Entwicklung Agile ALM / DevOps CM.
TDD mit MSTest Stefan Lieser Web:
TDD mit MSTest Stefan Lieser
Stefan Lieser Web:
Stefan Lieser Web:
Programmiervorkurs WS 2014/15 Methoden
Developer Day Entwicklung und Betrieb näher zusammen dank Team Foundation Server 2012 und System Center 2012 Hansjörg Scherer ALM Spezialist, Microsoft.
3. Beschreibung von Abläufen durch Algorithmen 3.4 Zufall
TDD mit MSTest Stefan Lieser Web:
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Test-Driven Development
Objektorientierung Gliederung von Daten und Funktionen zu Objekten
Cäsar-Verschlüsselung
Grundkurs Informatik mit Java
Schleifen mit der Turtle
Cäsar-Verschlüsselung
Kara: act()-Methode.
 Präsentation transkript:

Automated Software Testing Sebastian Heil

Automated Software Testing - Sebastian Heil Motivation Agile Software Development Manuelle Tests aufwändig Alles „Auf einen Klick“ Manuelle Tests > Aufwändig, nicht für komplexe Systeme Ständiges Testen zur Qualitätssicherung Automated Software Testing - Sebastian Heil

Was ist automatisierbar? Testfallerstellung Testausführung Testauswertung und – dokumentation Oft zu hohe Ansprüche / Erwartungen Erstellung != Finden, Höhere Sprache/Abstraktion z.B. tabelle, skriptsprache, imperative / objektorientierte sprachen > internes Repräsentation Ausf: Sammeln aller Tests und Ausführen – Exceptions behandeln A/D: Ist-Soll-Vergleich, Übersichtliche Darstellung Automated Software Testing - Sebastian Heil

Ziele (der Automatisierung) Verbesserung der Qualität Tests als Spezifikation Fehlervermeidung Fehlerlokalisation Minderung des Risikos Tests als Sicherungsnetz Einfache Ausführung Hohe Coverage Ziele: Test im allgemeinen, speziell automatisierte Spez: erwartetes Verhalten d. SUT noch vor Implementierung> Ausführbare Spezifikation Verm: Tests vor Check-In Lok: Nutzertests: Unerwartetes Verhalten Unit Tests: Warum/Wo Netz: Legacy-Code, Regression-Tests, Experimentelles Ändern > „dafür ist dieser Parameter“ AW 82 (19) Automated Software Testing - Sebastian Heil

Automated Software Testing - Sebastian Heil Ansätze Code-driven Testing GUI Testing Direkt Quellcode Indirekt über GUI public class TestClassToTest { … @Test public void testMethodToTest() { ClassToTest sut = new ClassToTest() int val = sut.methodToTest(0); assertEquals(42, val); } … site = 'http://www.google.com‘ b = Watir::Browser.new browser b.goto(site) b.text_field(:name, "q").set(“gaedke") b.button(:name, "btnG").click if b.text.include?(“TU Chemnitz") puts "Test Passed. Found the test string” else puts "Test Failed! Couldn’t find test string” end Interaktion des Tests mit Software CDT: Test als Quellcode, direkt, tendenziell höhere Coverage, genauer, aufwändiger Automated Software Testing - Sebastian Heil

Automated Software Testing - Sebastian Heil Ansätze Code-driven Testing GUI Testing Direkt Quellcode Indirekt über GUI public class TestClassToTest { … @Test public void testMethodToTest() { ClassToTest sut = new ClassToTest() int val = sut.methodToTest(0); assertEquals(42, val); } … site = 'http://www.google.com‘ b = Watir::Browser.new browser b.goto(site) b.text_field(:name, "q").set(“gaedke") b.button(:name, "btnG").click if b.text.include?(“TU Chemnitz") puts "Test Passed. Found the test string” else puts "Test Failed! Couldn’t find test string” end Interaktion des Tests mit Software CDT: Test als Quellcode, direkt, tendenziell höhere Coverage, genauer, aufwändiger GT: Test als Skript welches GUI-Interaktion nutzt, indirekt, wartungsintensiver, fehleranfälliger, einfacher, Regressionstests für fertige Software, „Automatisierung von Nutzertests“ Watir, Ruby-Basiert Automated Software Testing - Sebastian Heil

Prinzipien der Automatisierung Front Door First Aussagekräftige Tests Keine Veränderungen am SUT Testabdeckung maximieren, Testüberdeckung minimieren Separate, spezifische Tests FDF: tests über public interface, keine Backdoor-Manipulation der SUT – hoher Wartungsaufwand für Tests AT: keine extrem langen Tests, Lesbarkeit, Wartungsaufwand gering wie möglich SUT: Gefahr: Tests verlieren Aussagekraft, manchmal nötig für indirekte Eingaben: Testspezifische Subklassen SEP: Fehlerlokalisierung AW 102ff Automated Software Testing - Sebastian Heil

Automated Software Testing - Sebastian Heil Unit Testing Unit: kleines Stück isolierter Quellcode, meist Klasse Unit Test: Quellcode, ruft zu testende Unit auf Überprüfung von Annahmen Vergleich von Ist- und Sollergebnis Getestet wird logischer Code Logischer Code: (IF, LOOP, SWITCH, Berechnungen) Nicht default Getter/Setter Keine DB-Interaktion/ Netzwerk Automated Software Testing - Sebastian Heil

Unit vs. System/Integration Testing Unit Testing System/Integration Testing Test einer einzelnen Unit in Isolation Testet Programmlogik Automatisiert Schnell Von Anfang an Test von mehreren voneinander abhängigen Modulen als Gruppe Testet Zusammenspiel Schwerer automatisierbar Aufwändiger erst nach vorangeschrittener Entwicklung Automated Software Testing - Sebastian Heil

Automatisierungsstrategien Recorded Tests Data-Driven Tests Scripted Tests AW 341 (278) Rec: Benutzerinteraktion aufnehmen und abspielen, schnell zu erstellen Data: gleiche Aktionen, unterschiedliche Daten, Test-Datei + Interpreter, gut für Nichtinformatiker Script: explizit als Code, f. fast alle Unit, Programier- u. Testerfahrung Automated Software Testing - Sebastian Heil

Test Automation Frameworks Robot User xUnit GUI Testing Recorded Tests Test Recorder Test Runner Code-driven Testing Scripted Tests Test Runner Library Assertion Methods 4-Phasen Test Beispiel: JUnit Separation Ausführungslogik/Testlogik Robo: Runner spielt aufgenommene Interaktion ab xUnit: JUnit, CppUnit, NUnit, PyUnit, … Runner sucht alle Testcases, ruft Testmethoden auf; Assertion Methods: Erwartetes Erbenis - assertTrue() Gleichheit - Equal() Erw. Excep. - Raises() Fuzzy – Equal() mit Toleranz Testmethoden: nutzen Assertion Methoden, 1 Methode 1 Test 4Phase: für jede Methode Setup Ausführung Verifikation Aufräumen AW 410 (347) Beispiel: Selenium Automated Software Testing - Sebastian Heil

Automated Software Testing - Sebastian Heil xUnit Automated Software Testing - Sebastian Heil

Automated Software Testing - Sebastian Heil xUnit Automated Software Testing - Sebastian Heil

Automated Software Testing - Sebastian Heil Beispiel: Selenium Automated Software Testing - Sebastian Heil

Automated Software Testing - Sebastian Heil Beispiel: JUnit Automated Software Testing - Sebastian Heil

Automated Software Testing - Sebastian Heil Quellen The Art of Unit Testing: With Examples in .NET TU Darmstadt: JUnit 4 Tutorial Software Test Automation: Myths and Facts xUnit Test Patterns: Refactoring Test Code Selenium Automated Software Testing Automated Software Testing - Sebastian Heil