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

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

Transcript of Rainer Stropek, cubido business solutions gmbh Bug Busters Qualitätssicherung in der...

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

Rainer Stropek, cubido business solutions gmbh

Bug BustersQualitätssicherung in der Softwareentwicklung

Page 3: Rainer Stropek, cubido business solutions gmbh Bug Busters Qualitätssicherung in der Softwareentwicklung.

Rainer Stropek, cubido business solutions gmbh

Ziele des VortragsBeispiel• K

onkrete Lösungsansätze und Werkzeuge an einem Beispiel präsentieren

Page 4: Rainer Stropek, cubido business solutions gmbh Bug Busters Qualitätssicherung in der Softwareentwicklung.

Rainer Stropek, cubido business solutions gmbh

QualitätssicherungWozu?

Page 5: Rainer Stropek, cubido business solutions gmbh Bug Busters Qualitätssicherung in der Softwareentwicklung.

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)

• U.v.m.

Page 6: Rainer Stropek, cubido business solutions gmbh Bug Busters Qualitätssicherung in der Softwareentwicklung.

Qualitätssicherung vs. Testen

Qualitätssicherung

„Qualitätssicherung sind Maßnahmen die

sicherstellen sollen, dass ein Produkt oder eine Dienstleistung ein

festgelegtes Qualitätsniveau erreicht.“

(Wikipedia)

Testen

„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)

Rainer Stropek, cubido business solutions gmbh

Page 7: Rainer Stropek, cubido business solutions gmbh Bug Busters Qualitätssicherung in der Softwareentwicklung.

Qualitätssicherung vs. Testen

Qualitätssicherung

„Qualitätssicherung sind Maßnahmen die

sicherstellen sollen, dass ein Produkt oder eine Dienstleistung ein

festgelegtes Qualitätsniveau erreicht.“

(Wikipedia)

Testen

„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)

Rainer Stropek, cubido business solutions gmbh

Testen

Prozess-begleitende Maßnahme

n

Page 8: Rainer Stropek, cubido business solutions gmbh Bug Busters Qualitätssicherung in der Softwareentwicklung.

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.

Page 9: Rainer Stropek, cubido business solutions gmbh Bug Busters Qualitätssicherung in der Softwareentwicklung.

Rainer Stropek, cubido business solutions gmbh

Ziele des Vortrags

Testen• W

issen zum Thema Testen vermitteln

Page 10: Rainer Stropek, cubido business solutions gmbh Bug Busters Qualitätssicherung in der Softwareentwicklung.

Rainer Stropek, cubido business solutions gmbh

FehlertypenRegressions-tests, diversi-fizierende Tests

Re-gressions-fehler

Usability Tests

Fehler im

Bedien-

konzept

Schwierig!Fuzzing?

Design-

fehlerFunktions-orienterte Tests, diversifizierende Tests

Logische

Fehler

Systemtests, Struktur-orientierte Tests

Laufzeit-

fehler

Compiler

Syntax-

fehler

Page 11: Rainer Stropek, cubido business solutions gmbh Bug Busters Qualitätssicherung in der Softwareentwicklung.

Rainer Stropek, cubido business solutions gmbh

Automatisierung von Tests

Anwendungsbereiche

• Regressionstests• Funktionsorientierte Tests

– Voraussetzung: Testalgorithmus ist fachlich richtig

• System- und strukturorienterte Tests

Ziele

• 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.

Page 12: Rainer Stropek, cubido business solutions gmbh Bug Busters Qualitätssicherung in der Softwareentwicklung.

Rainer Stropek, cubido business solutions gmbh

Softwarealterung

Page 13: Rainer Stropek, cubido business solutions gmbh Bug Busters Qualitätssicherung in der Softwareentwicklung.

Rainer Stropek, cubido business solutions gmbh

Testauto-matisierung

Entwicklungs-prozess

Test Driven

Development

Page 14: Rainer Stropek, cubido business solutions gmbh Bug Busters Qualitätssicherung in der Softwareentwicklung.

Test Driven Development

Rainer Stropek, cubido business solutions gmbh

Verstehen

Test entwickeln

Test schlägt fehl!

Funktion entwickeln

Test erfolgreich

Refactoring

Page 15: Rainer Stropek, cubido business solutions gmbh Bug Busters Qualitätssicherung in der Softwareentwicklung.

Rainer Stropek, cubido business solutions gmbh

Variante von Pair Programming

Spezifikation

Lösungs-entwicklerin

Test-entwicklerin

Anwendungs-programm

Unit Tests

Verifizieren des Anwendungs-programms

Page 16: Rainer Stropek, cubido business solutions gmbh Bug Busters Qualitätssicherung in der Softwareentwicklung.

Rainer Stropek, cubido business solutions gmbh

Ziele des VortragsBeispiel• K

onkrete Lösungsansätze und Werkzeuge an einem Beispiel präsentieren

Page 17: Rainer Stropek, cubido business solutions gmbh Bug Busters Qualitätssicherung in der Softwareentwicklung.

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

Page 18: Rainer Stropek, cubido business solutions gmbh Bug Busters Qualitätssicherung in der Softwareentwicklung.

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()

Page 19: Rainer Stropek, cubido business solutions gmbh Bug Busters Qualitätssicherung in der Softwareentwicklung.

Rainer Stropek, cubido business solutions gmbh

Tests

• Testmethoden mit Attribut [TestMethod] markieren– [TestMethod]public void AddSingleRow()

• Ausführen– Mit Test – Run/Debug– Mit dem Test List Editor

• Prüfungen mit Assert-Methoden

Page 20: Rainer Stropek, cubido business solutions gmbh Bug Busters Qualitätssicherung in der Softwareentwicklung.

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

Page 21: Rainer Stropek, cubido business solutions gmbh Bug Busters Qualitätssicherung in der Softwareentwicklung.

Rainer Stropek, cubido business solutions gmbh

WatiN vs. VS Web Tests

WatiN

• Open Source

• Layer über IE Objekt-modell– Test simuliert die Aktionen

eines Benutzers direkt in IE

• Build-Automatisierung inkl. Tests schwierig

Web Tests

• Kommerziell (VS Tester Edition)

• Capture & Replay von HTTP-Requests– Keine Ausführung von

Logik in UI (JavaScripts)

• Build-Automatisierung inkl. Tests einfach (TFS)

Page 22: Rainer Stropek, cubido business solutions gmbh Bug Busters Qualitätssicherung in der Softwareentwicklung.

Rainer Stropek, cubido business solutions gmbh

Pro und Cons WatiN

Pro

• 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

Cons

• Schlecht dokumentiert• Wenige Beispiele

– Blogs!• Interaktive Anmeldung

notwendig– Schwierig in Daily Build zu

integrieren• Firefox (noch) nicht unterstützt

Page 23: Rainer Stropek, cubido business solutions gmbh Bug Busters Qualitätssicherung in der Softwareentwicklung.

Rainer Stropek, cubido business solutions gmbh

WatiN Basiskonzepte

• Zentrale Klasse IE– 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

Page 24: Rainer Stropek, cubido business solutions gmbh Bug Busters Qualitätssicherung in der Softwareentwicklung.

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

Page 25: Rainer Stropek, cubido business solutions gmbh Bug Busters Qualitätssicherung in der Softwareentwicklung.

Rainer Stropek, cubido business solutions gmbh

Object Model for UI-Test

ScreenIDisposable

OverviewScreenIAssertable AddEntryScreen

Page 26: Rainer Stropek, cubido business solutions gmbh Bug Busters Qualitätssicherung in der Softwareentwicklung.

Rainer Stropek, cubido business solutions gmbh

Template for Helper Classclass 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 { var loginFilter = ie.SelectList(Control_WindowsLoginFilter); Assert.IsTrue(loginFilter.Exists); return loginFilter; } }}

IDs zentral angeben für

leichtere Wartbarkeit

Assert-Methode prüft konsistenz

der MaskeRead-only properties zum

einfacheren Zugriff

Page 27: Rainer Stropek, cubido business solutions gmbh Bug Busters Qualitätssicherung in der Softwareentwicklung.

Rainer Stropek, cubido business solutions gmbh

Object Model for UI-Test

DialogIDisposable

HelpScreenIAssertable

Page 28: Rainer Stropek, cubido business solutions gmbh Bug Busters Qualitätssicherung in der Softwareentwicklung.

Rainer Stropek, cubido business solutions gmbh

Popup-Dialoge

window.open

• Alle Browser• IE.AttachToIE(<find>)

window.showModelessDialog

• Nur IE• Grundproblem busy-state• IE.HtmlDialog(<find>,

<timeout>)

Var dialog = parentScreen.ie.HtmlDialog( Find.ByUrl(url), 2);

Var dialog = IE.AttachToIE( Find.ByUrl(url));

Page 29: Rainer Stropek, cubido business solutions gmbh Bug Busters Qualitätssicherung in der Softwareentwicklung.

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

Page 30: Rainer Stropek, cubido business solutions gmbh Bug Busters Qualitätssicherung in der Softwareentwicklung.

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(); }}

Page 31: Rainer Stropek, cubido business solutions gmbh Bug Busters Qualitätssicherung in der Softwareentwicklung.

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!

Page 32: Rainer Stropek, cubido business solutions gmbh Bug Busters Qualitätssicherung in der Softwareentwicklung.

Rainer Stropek, cubido business solutions gmbh

Ressourcen

• WatiN– 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– [email protected] oder– [email protected]