Qualitätssicherung in der Softwareentwicklung

Slides:



Advertisements
Ähnliche Präsentationen
Software Engeniering II
Advertisements

Persistente Domänenmodelle mit JPA 2.0 und Bean Validation
SQL Server 2005.NET Integration Sebastian Weber Developer Evangelist Microsoft Deutschland GmbH.
Web Matrix Project Kurzüberblick Dirk Primbs Technologieberater Developer Platform Strategy Group Microsoft Deutschland GmbH.
Qualitätssicherung von Software (SWQS) Prof. Dr. Holger Schlingloff Humboldt-Universität zu Berlin und Fraunhofer FOKUS : Software Model Checking.
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Was ist Refactoring? Bevor man die Integration angeht, mag es angebracht sein, den.
es gibt (fast) nichts, was nicht anders gemacht werden könnte
FH-Hof Einbindung von JavaScript Anweisungen
Indirekte Adressierung
Java: Grundlagen der Sprache
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
Automatisches Testen und Bewerten von Java-Klassen
Fehlerabdeckung/ Regressionstest1 Testen und Analysieren von Software Fehlerbehebung und Re-Engineering Fehlerabdeckung/ Regressionstest Vortragende:
Brandenburgische Technische Universität Cottbus Program Profiling Andrzej Filipiak Übung Testen von Software SoSe 2006.
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
Software Design Patterns Extreme Programming (XP).
Web-Anwendungsentwicklung à la MVC. Übersicht Über Georg Heeg Ein industrielles Beispiel Web-Anwendungen aus Smalltalker-Sicht MVC für das Web Programmierdemo.
MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 10 Die erste, eigene Klassenbibliothek (Level 100) Presenter: Daniel Walzenbach Technologieberater.
UML Begleitdokumentation des Projekts
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Migrieren eines Sharepoint Designer Workflows zu Visual Studio .NET
Silverlight Eine Einführung. Agenda 1.Was ist Silverlight? 2.Die Silverlight Philosophie 3.Vorstellung des Szenarios 4.Einführendes Beispiel 5.Konzepte.
Test Driven Development - Romano Adler-
Unit Testing Roger Boesch Technology Solution Professional Developer Tools Microsoft Schweiz GmbH blogs.msdn.com/rogerboesch © 2004 Microsoft Corporation.
Automated Software Testing
SQL Server 2005 CLR-Integration
Michael Köster User Experience Specialist Microsoft Corporation.
Brand my SharePoint Grafische Gestaltung von SharePoint-Webseiten
Telecooperation/RBG Technische Universität Darmstadt Copyrighted material; for TUD student use only Grundlagen der Informatik I Thema 16: Ausnahmebehandlung.
Reiner Ganser Solution Architect 1stQuad Solutions GmbH Presentation Subtitle.
Agenda 13: Begrüßung & Einführung in das Thema
Windows Presentation Foundation WS 2013/14 Prof. Dr. Herrad Schmidt
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Microsoft.NET Framework: Quelle:
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 7 Folie 2 Styles (1) s.a.
Qualitätsmanagement in der Entwicklung !?. artiso solutions GmbH | Oberer Wiesenweg 25 | Blaustein | Agenda 1. Ziele und Probleme.
Testtechniken-Praktikum WS 2005/06 1 Testen mit Mock- Objekten Andreas Höfer Dr. Matthias Müller.
Projektmanagement Ziel und Umfang eines Softwareprojektes definieren
Oliver Spritzendorfer Thomas Fekete
3. Juni 2003Moritz Petersen Minimales Markup und Templates zur Erstellung von strukturierten Texten Ein Zwischenbericht zur Diplomarbeit.
Vortrag: Visual Basic Neuerungen Autor : Dennis Hoyer
Clean Code Software-Entwicklung als Handwerkskunst Thomas Nagel, November 2011.
Testtechniken-Praktikum WS 2005/06 1 Testgetriebene Entwicklung Andreas Höfer Dr. Matthias Müller mit Beiträgen von Johannes Link.
TDD mit MSTest Stefan Lieser Web:
TDD mit MSTest Stefan Lieser
Stefan Lieser Web:
Stefan Lieser Web:
cubido business solutions gmbh Haidfeldstrasse 33 A-4060 Leonding Rainer Stropek SQL Server.
Application Lifecycle Management Day 25. August 2008 Erfolgreiche Software- Entwicklung in Offshore-Projekten mit Microsoft Team Foundation Server Thomas.
Thomas Schissler – artiso solutions GmbH Artur Speth – Microsoft Deutschland GmbH.
Unified Process Historisch-Kulturwissenschaftliche Informationsverarbeitung Übung: Planung von Softwareprojekten Dozent: Christoph Stollwerk WS 2014/2015.
Übung Informatik I exercise01. 2 Inhaltsübersicht Nachbesprechung Übung 1 Individuelle Fragen/Bemerkungen.
Web und Mobile Apps Programmieren Marco Jakob Kurzvortrag OSS an Schulen
7.-8. März 2013, Rosenheim Brand my SharePoint grafische Gestaltung von SharePoint 2013-Webseiten Fabian Moritz | MVP SharePoint Server.
TDD mit MSTest Stefan Lieser Web:
OOSE nach Jacobson Sebastian Pohl/ST7 Betreuer: Prof. Dr. Kahlbrandt.
Test-Driven Development
GAME PROGRAMMING PATTERNS – FLYWEIGHT & OBSERVER Robert Nystrom Softwaretechnologie II Teil 2 Anike Schulz.
Cubido business solutions gmbh Haidfeldstrasse 33 A-4060 Leonding di(fh) Wolfgang Straßer ° Rundumblick.
Continuous Integration mit TeamCity
Test Summary: ein Fehler pro Tag Test First
 Präsentation transkript:

Qualitätssicherung in der Softwareentwicklung Rainer Stropek, cubido business solutions gmbh Bug Busters Qualitätssicherung in der Softwareentwicklung

Alle Samples inkl. Erklärungen… …sind unter http://www.software-architects.com/TechnicalArticles/TestDrivenDevelopment/tabid/83/language/de-AT/Default.aspx nachzulesen. Rainer Stropek, cubido business solutions gmbh

Ziele des Vortrags Rainer Stropek, cubido business solutions gmbh Qualitätssicherung Ihre Einstellung zu Qualitätssicherung im Softwareentwicklungsprozess verändern Testen Wissen zum Thema Testen vermitteln Beispiel Konkrete Lösungsansätze und Werkzeuge an einem Beispiel präsentieren Rainer Stropek, cubido business solutions gmbh

Qualitätssicherung Wozu? Gesetzliche Vorschriften Produkthaftung Kunden verlassen sich auf Ihr Produkt! Qualitätssicherung Wozu? Rainer Stropek, cubido business solutions gmbh

Rainer Stropek, cubido business solutions gmbh Kontra Zeitaufwand Kosten „Qualität kommt von Qual“ (Felix Magath) U.v.m. Pro Gesetzliche Vorschriften Produkthaftung Verantwortung gegenüber Kunden „Qualität besteht, wenn der Preis längst vergessen ist.“ (Henry Royce) Rainer Stropek, cubido business solutions gmbh

Qualitätssicherung vs. Testen „Qualitätssicherung sind Maßnahmen die sicherstellen sollen, dass ein Produkt oder eine Dienstleistung ein festgelegtes Qualitätsniveau erreicht.“ (Wikipedia) „Ein Test ist ein Versuch, mit dem größere Sicherheit darüber gewonnen werden soll, ob ein technischer Apparat oder ein Vorgang innerhalb der geplanten Rahmenbedingungen funktioniert oder nicht.“ (Wikipedia) Test Er unterscheidet sich vom Experiment dadurch, dass er weniger strengen formalen Kriterien (z. B. Wiederholbarkeit) unterliegt Kann einen – zumindest für die Praxis ausreichenden – positiven Nachweis erbringen Der Test demonstriert reale Vorgänge in simulierten Umgebungen. Test in der Softwareindustrie Ausführung eines Programms auf einem Computer zum Aufspüren von Programmfehlern. Ein Test ist nicht (bzw. nur in den seltensten Fällen) Formale Verifizierung, also ein Beweis der Korrektheit eines Programmes Qualitätssicherung Es geht nicht etwa darum, die Qualität eines Produktes zu optimieren, sondern ein vorgegebenes – also gegebenenfalls auch ein niedriges – Niveau zu halten. Rainer Stropek, cubido business solutions gmbh

Qualitätssicherung vs. Testen … Prozess-begleitende Maßnahmen „Qualitätssicherung sind Maßnahmen die sicherstellen sollen, dass ein Produkt oder eine Dienstleistung ein festgelegtes Qualitätsniveau erreicht.“ (Wikipedia) „Ein Test ist ein Versuch, mit dem größere Sicherheit darüber gewonnen werden soll, ob ein technischer Apparat oder ein Vorgang innerhalb der geplanten Rahmenbedingungen funktioniert oder nicht.“ (Wikipedia) Qualitätssicherung umfasst eine Reihe von Maßnahmen; eine davon ist Testen Rainer Stropek, cubido business solutions gmbh

Auswirkung von Qualitätssicherung auf Entwicklungsprozess Spezifikation - Breadth first vs. Depth first “If you are faced with time constraints, cut features instead of unit-testing code” Over-Engineering Stellenwert von QA und Testen Ist der Praktikant der richtige Qualitätsmanager? Rollenverteilung Entwickler vs. Tester Aufgabenverteilung, Schnittstellen Commander „Data“ Lernen, lernen, lernen U.v.m. Breadth first vs. Depth first Breadth first Spec every feature Design every feature Code every feature Test every feature Depth first Spec, design, code and test one feature Move to the next feature Extreme sind nicht zu empfehlen Guter Weg High-level breadth design Quickly switch into depth-first Microsoft: Feature Crews, angewandt bei MS Office TDD unterstützt diesen Ansatz Over-engineering Don't write any more code than is absolutely required Features stehen im Mittelpunkt Testing gets fun Test at the end Coding is finished Tests are a pain Write tests first Starts with tests that fail Good feeling when tests start to succeed Positive reinforcement for unit testing by using TDD TDD kann mit Pair Programming verbunden werde Einer schreibt Tests, der andere Code; regelmäßiges Wechseln Tester vs. Developer Developer schreiben Unit Tests Developer sind verantwortlich für die Code Qualität Tester... ...finden die Bugs, die Developer nicht fanden. ...sammeln Daten und werten Qualitätskennzahlen aus Sie kontrollieren die Code Qualität der Developer ...Testen unter Kundenbedingungen, nicht Entwicklungsbedingungen Macht man das, wird Testen schwieriger Daten sammeln und auswerten Jeder Entwickler hat gewisse Eigenschaften Anzahl lines per day, bugs per 1Mio Lines, typische Fehler, etc. Die Eigenschaften können aufgezeichnet und analysiert werden Geziehlte Gegenmaßnahmen Weniger Bugs, bessere Planbarkeit Beispiel MS: Team aus 15-20 devs produzieren 3-5 test bugs statt 3000-5000 Rainer Stropek, cubido business solutions gmbh

Ziele des Vortrags Rainer Stropek, cubido business solutions gmbh Qualitätssicherung Ihre Einstellung zu Qualitätssicherung im Softwareentwicklungsprozess verändern Testen Wissen zum Thema Testen vermitteln Rainer Stropek, cubido business solutions gmbh

Fehler im Bedien-konzept Fehlertypen Re-gressions-fehler Regressions-tests, diversi-fizierende Tests Fehler im Bedien-konzept Usability Tests Design- fehler Schwierig! Fuzzing? Logische Fehler Funktions-orienterte Tests, diversifizierende Tests Laufzeit-fehler Systemtests, Struktur-orientierte Tests Syntax-fehler Compiler Regressionsfehler Fehler, der in einer früheren Programmversion bereits behoben wurde, der aber in einer späteren Programmversion wieder auftaucht Primärer Einsatzbereich von automatisiertem Testen Regression = Rückgang, Rückführung oder Rückschritt Regressionstests Wiederholung aller oder einer Teilmenge aller Testfälle, um Nebenwirkungen von Modifikationen in bereits getesteten Teilen der Software aufzuspüren Fehler im Bedienkonzept Das Programm verhält sich anders als es einzelne oder viele Anwender erwarten, obwohl es technisch an sich fehlerfrei arbeitet Schwierig durch automatisiertes Testen zu finden Designfehler Fehler im Grundkonzept, entweder bei der Definition der Anforderungen an die Software, oder bei der Entwicklung des Softwaredesigns, auf dessen Grundlage das Programm entwickelt wird Im Sicherheitsbereich Fuzzing denkbar Logische Fehler falscher Problemlösungsansatz oder der Algorithmus ist nicht korrekt Können durch automatisiertes Testen gefunden werden Voraussetzung: Test basiert auf korrektem Algorithmus Funktionsorientierte Tests geprüft wird, inwieweit das Testobjekt die vorgegebenen Spezifikationen erfüllt Black Box Tests Diversifizierende Tests verschiedene Versionen einer Software gegeneinander testen Vergleich der Testergebnisse der verschiedenen Versionen Ein Testfall gilt als erfolgreich absolviert, wenn die Ausgaben der unterschiedlichen Versionen identisch sind Laufzeitfehler inkorrekten Implementierung der gewünschten Funktionalität im Programm Programm zeigt unerwünschtes Verhalten Absturz Speicherfehler Speicherleck, hängende Pointer Semantische Fehler Strukturorientierte Tests bestimmen Testfälle auf Basis des Softwarequellcodes Ziel: Möglichst komplette Abdeckung von Kontroll- und Datenfluss durch Testfälle White Box Tests Rainer Stropek, cubido business solutions gmbh

Automatisierung von Tests Anwendungsbereiche Ziele Regressionstests Funktionsorientierte Tests Voraussetzung: Testalgorithmus ist fachlich richtig System- und strukturorienterte Tests Der Softwarealterung entgegenwirken Echte Qualitätssicherung statt zufälliger Tests Kostenersparnis Ein Bug, der nach Auslieferung entdeckt wird, kostet ca. 20x soviel wie ein Bug, der im Rahmen der Entwicklung bzw. des Tests gefunden wird U.v.m. Rainer Stropek, cubido business solutions gmbh

Softwarealterung Rainer Stropek, cubido business solutions gmbh

Testauto-matisierung Entwicklungs-prozess Test Driven Development Rainer Stropek, cubido business solutions gmbh

Test Driven Development Verstehen Test entwickeln Test schlägt fehl! Funktion entwickeln Test erfolgreich Refactoring Rainer Stropek, cubido business solutions gmbh

Variante von Pair Programming Spezifikation Lösungs-entwicklerin Test- entwicklerin Anwendungs-programm Unit Tests Verifizieren des Anwendungs-programms Rainer Stropek, cubido business solutions gmbh

Ziele des Vortrags Rainer Stropek, cubido business solutions gmbh Qualitätssicherung Ihre Einstellung zu Qualitätssicherung im Softwareentwicklungsprozess verändern Testen Wissen zum Thema Testen vermitteln Beispiel Konkrete Lösungsansätze und Werkzeuge an einem Beispiel präsentieren Rainer Stropek, cubido business solutions gmbh

Demo Implementation Data Access Layer nach Test Driven Development-Prinzipien Spezifikation Werkzeuge Visual Studio 2008 Unit Test Funktion (jetzt Professional Edition!) Linq Zur Umsetzung der Data Access Layer Rainer Stropek, cubido business solutions gmbh

Testinitialisierung Methoden über Attribute markieren ClassInitialize [ClassInitialize()] public static void MyClassInitialize(TestContext testContext) ClassCleanup [ClassCleanup()] public static void MyClassCleanup() TestInitialize [TestInitialize()] public void MyTestInitialize() TestCleanup [TestCleanup()] public void MyTestCleanup() Rainer Stropek, cubido business solutions gmbh

Tests Testmethoden mit Attribut [TestMethod] markieren Ausführen [TestMethod] public void AddSingleRow() Ausführen Mit Test – Run/Debug Mit dem Test List Editor Prüfungen mit Assert-Methoden Rainer Stropek, cubido business solutions gmbh

Demo Implementation UI nach Test Driven Development-Prinzipien Spezifikation Werkzeuge Visual Studio 2008 Unit Test Funktion (jetzt Professional Edition!) WatiN Zur UI-Testautomatisierung Rainer Stropek, cubido business solutions gmbh

WatiN vs. VS Web Tests WatiN Web Tests Open Source Layer über IE Objekt-modell Test simuliert die Aktionen eines Benutzers direkt in IE Build-Automatisierung inkl. Tests schwierig Kommerziell (VS Tester Edition) Capture & Replay von HTTP-Requests Keine Ausführung von Logik in UI (JavaScripts) Build-Automatisierung inkl. Tests einfach (TFS) Rainer Stropek, cubido business solutions gmbh

Pro und Cons WatiN Pro Cons Funktioniert einwandfrei Viele Empfehlungen Scott Guthrie (GM Microsoft Developer Division) Scott Hanselmann U.v.m. Recorder verfügbar Ideal zum Einstieg Kostenlos TDD möglich Schlecht dokumentiert Wenige Beispiele Blogs! Interaktive Anmeldung notwendig Schwierig in Daily Build zu integrieren Firefox (noch) nicht unterstützt Rainer Stropek, cubido business solutions gmbh

WatiN Basiskonzepte Zentrale Klasse IE Klassen je HTML-Element new IE( url ) IE.AttachToIE( AttributeConstraint ) Klassen je HTML-Element Details siehe http://watin.sourceforge.net/ Suche über Klasse AttributeConstraint ie.Link(Find.ById("testlinkid")).Url Rainer Stropek, cubido business solutions gmbh

UI-Test Helper Classes Design Goals Kapseln von häufig geänderten Elementen (z.B. Control-IDs, etc.) UI-Tests lesbarer machen Effizienzsteigerung bei der Testentwicklung Rainer Stropek, cubido business solutions gmbh

Object Model for UI-Test IDisposable Screen IAssertable OverviewScreen AddEntryScreen Rainer Stropek, cubido business solutions gmbh

Template for Helper Class class OverviewScreen : Screen, IAssertable { private const string url = "http://localhost/BugBustersWeb"; private const string Control_WindowsLoginFilter = "lstUsers"; // Constants for all control IDs // … public OverviewScreen() : base(url) { } public void AssertControls() var loginFilter = ie.SelectList(Control_WindowsLoginFilter); Assert.IsTrue(loginFilter.Exists); // check that all other necessary controls are present … } public SelectList LoginFilter get Assert.IsTrue(loginFilter.Exists); return loginFilter; } IDs zentral angeben für leichtere Wartbarkeit Assert-Methode prüft konsistenz der Maske Read-only properties zum einfacheren Zugriff Rainer Stropek, cubido business solutions gmbh

Object Model for UI-Test IDisposable Dialog IAssertable HelpScreen Rainer Stropek, cubido business solutions gmbh

Popup-Dialoge Alle Browser IE.AttachToIE(<find>) Nur IE window.open window.showModelessDialog Alle Browser IE.AttachToIE(<find>) Nur IE Grundproblem busy-state IE.HtmlDialog(<find>, <timeout>) Var dialog = IE.AttachToIE( Find.ByUrl(url)); Var dialog = parentScreen.ie.HtmlDialog( Find.ByUrl(url), 2); Rainer Stropek, cubido business solutions gmbh

WaitForComplete, Click, ClickNoWait IE.WaitForComplete Wartet, bis IE meldet, dass die Seite komplett geladen ist Wichtig für Script, die dynamisch Daten nachladen Click vs. ClickNoWait Click ruft intern WaitForComplete auf Manchmal unerwünscht (z.B. wenn Dialog geöffnet wird) ClickNoWait ruft WaitForComplete nicht auf Rainer Stropek, cubido business solutions gmbh

Javascript Confim-Boxes using (var overviewScreen = new OverviewScreen()) { … var confirm = new ConfirmDialogHandler(); using (new UseDialogOnce(screen.ie.DialogWatcher, confirm)) { screen.CancelLink.ClickNoWait(); confirm.WaitUntilExists(); confirm.OKButton.Click(); overviewScreen.ie.WaitForComplete(); } } Rainer Stropek, cubido business solutions gmbh

Zusammenfassung Qualitätssicherung ist wichtig! Entscheiden Sie sich für das für Sie passende Qualitätsniveau und erreichen sie es! Testen ist ein Teil der Qualitätssicherungsmaßnahmen Integrieren Sie das Testen z.B. mit TDD in Ihren Entwicklungsprozess Sie werden sehen, es zahlt sich aus! Rainer Stropek, cubido business solutions gmbh

Ressourcen WatiN Case Complete Test Driven Development http://watin.sourceforge.net/ Case Complete http://www.casecomplete.com/ Test Driven Development Guter Einstieg bei http://en.wikipedia.org/wiki/Test_driven_development Persönlicher Kontakt r.stropek@cubido.at oder rainer@software-architects.at Rainer Stropek, cubido business solutions gmbh