Rainer Stropek, cubido business solutions gmbh Bug Busters Qualitätssicherung in der...
-
Upload
tielo-allers -
Category
Documents
-
view
105 -
download
1
Transcript of Rainer Stropek, cubido business solutions gmbh Bug Busters Qualitätssicherung in der...
Rainer Stropek, cubido business solutions gmbh
Bug BustersQualitätssicherung in der Softwareentwicklung
Rainer Stropek, cubido business solutions gmbh
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 VortragsBeispiel• K
onkrete Lösungsansätze und Werkzeuge an einem Beispiel präsentieren
Rainer Stropek, cubido business solutions gmbh
QualitätssicherungWozu?
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.
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
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
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.
Rainer Stropek, cubido business solutions gmbh
Ziele des Vortrags
Testen• W
issen zum Thema Testen vermitteln
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
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.
Rainer Stropek, cubido business solutions gmbh
Softwarealterung
Rainer Stropek, cubido business solutions gmbh
Testauto-matisierung
Entwicklungs-prozess
Test Driven
Development
Test Driven Development
Rainer Stropek, cubido business solutions gmbh
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 VortragsBeispiel• K
onkrete 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– [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
• 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)
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
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
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
ScreenIDisposable
OverviewScreenIAssertable AddEntryScreen
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
Rainer Stropek, cubido business solutions gmbh
Object Model for UI-Test
DialogIDisposable
HelpScreenIAssertable
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));
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– 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]