Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Qualitätssicherung in der Softwareentwicklung

Ähnliche Präsentationen


Präsentation zum Thema: "Qualitätssicherung in der Softwareentwicklung"—  Präsentation transkript:

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

2 Alle Samples inkl. Erklärungen…
…sind unter nachzulesen. Rainer Stropek, cubido business solutions gmbh

3 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

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

5 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

6 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

7 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

8 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 devs produzieren 3-5 test bugs statt Rainer Stropek, cubido business solutions gmbh

9 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

10 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

11 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

12 Softwarealterung Rainer Stropek, cubido business solutions gmbh

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

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

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

16 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

17 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

18 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

19 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

20 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

21 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

22 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

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

24 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

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

26 Template for Helper Class
class OverviewScreen : Screen, IAssertable { private const string url = " 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

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

28 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

29 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

30 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

31 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

32 Ressourcen WatiN Case Complete Test Driven Development
Case Complete Test Driven Development Guter Einstieg bei Persönlicher Kontakt oder Rainer Stropek, cubido business solutions gmbh


Herunterladen ppt "Qualitätssicherung in der Softwareentwicklung"

Ähnliche Präsentationen


Google-Anzeigen