Upload
christian-baranowski
View
1.588
Download
2
Embed Size (px)
Citation preview
Software Technik
Christian Baranowski
HTWG Konstanz
Vorgehensmodelle und Agile Software Entwicklung
WiederholungOberflächentests mit Selenium
OberflächentestsEinführung in Selenium
Selenium Core
Selenium IDE
Selenium RC
Selenium Core
open /JugsBase/zinsrechner.jsp
type betrag 20.0
type zinsatz 22.0
type laufzeit 100.0
clickAndWait submit
assertTextPresent 8649939365.27 Euro
Action - TabelleSelenium Befehl
Target
Argumente
am Beispiel eines Zinsrechner
Selenium IDECapture & Replay Tests mit Selenium
Action Tabelle
Selenium Remote ControlAnbindung Selenium in Java Code als Test Treiber
JAVA, PHP...
Selenium Server
Selenium Core
HTTP Proxy SUTWebapplikation
BrowserFirefox, IE
Vorgehensmodelle
Prozesse1
Methoden2
Werkzeuge3
Was ist Software Technik ?
• Vorhersehbare, planbare und kontrollierbare Software-Entwicklungsprojekte
• Prozess Optimierungen
• Zertifizierbarkeit
• Prozessqualität
Warum Vorgehensmodelle?
Beherrschung komplexer Prozesse
• Reihenfolge der Arbeitsabläufe (Phasen)
• Rahmenwerk (Framework)
• Fertigstellungskriterien (Umfang und Inhalt)
• Verantwortlichkeiten und Kompetenzen (Rollen)
• notwendige Mitarbeiterqualifikationen (Zertifikate)
• definierte Standards, Richtlinien und Werkzeuge
Was ist ein Vorgehensmodell?
Klassische Modelle
• Wasserfall
• V-Modell
• RUP
• Spiralmodell
• ...
Welche Vorgehensmodell gibt es?
Agile Modelle
• Scrum
• Extreme Programming (XP)
• Crystal
• ...
Softwarelebenszyklus
Problem Analyse
System Spezifikation
Umsetzung
System Testen
Betrieb und Wartung
Analyse und Umsetzung
Projekt Phasen
Test
Systemtest
Integrationstest
Modultest
Implementierung
Architektur Design
Spezifikation
Requirement Analysis
Testing
System Design
Coding
Delivery
Wasserfallmodell
• klare Abgrenzung der einzelnen Phasen
• einfache Möglichkeiten der Planung und Kontrolle
• bei stabilen Anforderungen und klarer Abschätzung von Kosten und Umfang sehr effektives Modell
Vorteile Wasserfall
• Abgrenzungsproblem
• Abfolgeproblem
• Das Modell ist nur auf einfache Projekte anwendbar
• Unflexibel gegenüber Änderungen und im Vorgehen
• Frühes Festschreiben der Anforderungen ist sehr problematisch
• Einführung des Systems sehr spät nach Beginn des Entwicklungszyklus
• Fehler werden unter Umständen spät erkannt (Big Bang)
Nachteile Wasserfall
Nachteile Wasserfall
0
20
40
60
80
Requirement Analysis System Design Coding Testing Delivery
Typischer Projektverlaufgeplanter Verlauf
Aufwand in PT
Wasserfall Phasen
Wir merken erst hier wir haben ein Problem!!!
V-Modell
Anforderungsdefinition
Funktionaler Systementwurf
Technischer Systementwurf
Komponenten-spezifikation
Programmierung
Komponententest
Integrationstest
Systemtest
Abnahmetest
Konstruktionsphasen Te
stph
asen
V-Modell XT
Quelle: V-Modell-XT Releases 1.3 Dokumentation
• Anpassung an projektspezifische Anforderungen
• Integration vieler Aspekte des Entwicklungsprozesses
• Standardisierung der Abwicklung von Systemerstellungsprojekten
Vorteile V-Modell
• Zu allgemein für kleine und mittlere Software-Modelle
• Sehr bürokratisch
• ...
Nachteile V-Modell
Agile Software Entwicklung
We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
• Individuals and interactions over processes and tools
• Working software over comprehensive documentation
• Customer collaboration over contract negotiation
• Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more.
Manifesto for Agile Software Development
http://agilemanifesto.org/
iterative Softwareentwicklung
Quelle: Wikipedia DE
Extreme Programming (XP)
Quelle: Wikipedia
Extreme Programming (XP)
Quelle: Wikipedia
Extreme Programming (XP)
Quelle: Wikipedia
Kommunikation
Team
Planning Poker
Quelle: http://www.agile42.com/cms/pages/poker/
Domain Driven Design
ENTITIES VALUE OBJECT SERVICES
REPOSITORIES FACTORIES
Pair Programming
Refactoring Grundlagen
Refactoring
„Refactoring bezeichnet in der Software-Entwicklung die manuelle oder automatisierte Strukturverbesserung von Quelltexten unter Beibehaltung des beobachtbaren Verhaltens. Dabei sollen die Lesbarkeit, Verständlichkeit, Wartbarkeitund Erweiterbarkeit verbessert werden, mit dem Ziel, den jeweiligen Aufwand für Fehleranalyse und funktionale Erweiterungen deutlich zu senken.“ - Wikipedia
Fundamentaler Refactoring Prozess
1.) Erstelle einen Test (Unit-Test) mit möglich 100% Abdeckung
2.) Führe den Test aus (Green bar)
3.) Refactoring
4.) Führe den Test aus (Green bar)
Refactoring Patterns•Rename Class, Field, Method
•Extrahiere Methode
•Extrahiere lokale Variable
•Extrahiere Konstante
•Extrahiere Interface
•...
Refactoring Patterns in Eclipse
Übung 1
•Probieren Sie die Refactoring Methoden: Extrahiere Methode, Extrahiere lokale Variable, Extrahiere Konstante, Extrahiere InterfaceIn der Quicksort Beispiel Klasse aus
•Nutzen Sie Ihren Test um sicherzustellen dass Sie lediglich die Struktur ändern
Test Driven Development
Test Driven Development
Testgetriebene Entwicklung bezeichnet man eine Agile Methode zur Entwicklung einer Software, bei der Software-Tests vor den zu testenden Komponenten entwickelt werden.
Test Driven Development Prozess
1.) Erstelle einen kleinen Test
2.) Führe alle Tests aus wobei der neue nicht funktioniert (Red bar)
3.) Erfülle den Test mit möglichst wenig Code
4.) Führe alle Tests aus, wobei alle Grün (Green-Bar)
5.) Refactoring - z.B. Entferne duplizierten Code
Red Bar to Green Bar Pattern
Test List Pattern
•Es empfiehlt sich beim TDD eine TODO Liste zu führen mit den Funktionen die noch umgesetzt werden soll
•Man spricht im TDD hier vom Test List Pattern - Test Driven Development by Example Kent Beck
Geld Beispiel
Produkt Anzahl Preis Summe
Füller 10 10 € 100 €
Schokolade 5 25 € 125 €
TODO Liste:• 10 € * 10 = 100 €
Geld Beispiel
TODO Liste:•10 € * 10 = 100 €
•Betrag sollte private sein
• Euro Nebeneffekte
Geld Beispiel
TODO Liste:•10 € * 10 = 100 €
•Betrag sollte private sein
•Euro Nebeneffekte
• equals()•hashCode()
Geld Beispiel
TODO Liste:•10 € * 10 = 100 €
• Betrag sollte private sein•Euro Nebeneffekte
•equals()
•hashCode()
•Equals null und object
TDD Vorteile
•Tests
•Hohe Code Abdeckung
•Gray-Box Testing statt White-Box
•Erfüllung der Anforderungen ist messbar
•Durchführung eines Refactoring ist mit wenig Fehlern behaftet
•Die Unit-Testsuite stellt eine „ausführbare Spezifikation“ dar
TDD Nachteile
•Entwickler die keine Erfahrung in der testgetriebenen Entwicklung besitzen ist die Umsetzung schwierig
•Hohes Test KnowHow bei den Entwickler nötig (kann man auch als Vorteil sehen)
•Hohe Anforderungen an Werkzeuge z.B. IDE
Übung 2
•Erstellen Sie Testgetrieben eine Software Komponente die die Anzahl der Wörter in einem Text zählt
•Beispiel: „Hallo hallo Beispiel TEXT für Text.“Ergebnis:
Hallo Beispiel Text für
2 1 2 1
Zusammenfassung Vorgehensmodelle
Scrum
Quelle: scrumalliance.org
Betrachten wir nächste Woche vor der Klausur Vorbereitung ausführlich ...
ArchitekturWeb Anwendungen
(Geschäftsanwendungen)
Fassade Geschäfts- klassen
Test- Client
Web- Client
ArchitekturWeb Anwendungen
ArchitekturWeb Anwendungen
Browser/HTML
JSF/JSP
BackingBeans
Fassade
Geschäftsklassen
Datenbank
DTO
Repository
Einführung in Java Server Faces
Übung 3
•Erstellen Sie ein einfaches Formular zum erstellen eines Tasks mit JSF.
•Nutzen Sie als Basis den Coderahmen für die Übung.