320 likes | 443 Views
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. Ziele des Vortrags. Qualitätssicherung. Wozu?.
E N D
Rainer Stropek, cubidobusinesssolutionsgmbh 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 Wozu? Rainer Stropek, cubido business solutions gmbh
Qualitätssicherung vs. Testen Qualitätssicherung 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) „Qualitätssicherung sind Maßnahmen die sicherstellen sollen, dass ein Produkt oder eine Dienstleistung ein festgelegtes Qualitätsniveau erreicht.“(Wikipedia) Rainer Stropek, cubidobusinesssolutionsgmbh
Qualitätssicherung vs. Testen Qualitätssicherung 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) „Qualitätssicherung sind Maßnahmen die sicherstellen sollen, dass ein Produkt oder eine Dienstleistung ein festgelegtes Qualitätsniveau erreicht.“(Wikipedia) Rainer Stropek, cubidobusinesssolutionsgmbh
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 Rainer Stropek, cubido business solutions gmbh
Fehlertypen Rainer Stropek, cubido business solutions gmbh
Automatisierung von Tests Anwendungsbereiche 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. • Regressionstests • Funktionsorientierte Tests • Voraussetzung: Testalgorithmus ist fachlich richtig • System- und strukturorienterte Tests Rainer Stropek, cubido business solutions gmbh
Softwarealterung Rainer Stropek, cubido business solutions gmbh
Test Driven Development Rainer Stropek, cubidobusinesssolutionsgmbh
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
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()]publicstaticvoidMyClassInitialize(TestContexttestContext) • ClassCleanup • [ClassCleanup()]publicstaticvoidMyClassCleanup() • TestInitialize • [TestInitialize()]publicvoidMyTestInitialize() • TestCleanup • [TestCleanup()]publicvoidMyTestCleanup() Rainer Stropek, cubido business solutions gmbh
Tests • Testmethoden mit Attribut [TestMethod] markieren • [TestMethod]publicvoidAddSingleRow() • 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 Kommerziell (VS Tester Edition) Capture & Replay von HTTP-Requests Keine Ausführung von Logik in UI (JavaScripts) Build-Automatisierung inkl. Tests einfach (TFS) • Open Source • Layer über IE Objekt-modell • Test simuliert die Aktionen eines Benutzers direkt in IE • Build-Automatisierung inkl. Tests schwierig Rainer Stropek, cubido business solutions gmbh
Pro und ConsWatiN Pro Cons Schlecht dokumentiert Wenige Beispiele Blogs! Interaktive Anmeldung notwendig Schwierig in Daily Build zu integrieren Firefox (noch) nicht unterstützt • 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 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 HelperClasses • 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 Screen IDisposable IAssertable OverviewScreen AddEntryScreen Rainer Stropek, cubido business solutions gmbh
Template forHelper 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() { varloginFilter = ie.SelectList(Control_WindowsLoginFilter); Assert.IsTrue(loginFilter.Exists); // check that all other necessary controls are present … } public SelectListLoginFilter { get { varloginFilter = ie.SelectList(Control_WindowsLoginFilter); Assert.IsTrue(loginFilter.Exists); return loginFilter; } } } IDs zentral angeben für leichtere Wartbarkeit Assert-Methode prüft konsistenz der Maske Read-onlyproperties zum einfacheren Zugriff Rainer Stropek, cubido business solutions gmbh
Object Model for UI-Test Dialog IDisposable IAssertable HelpScreen Rainer Stropek, cubido business solutions gmbh
Popup-Dialoge window.open window.showModelessDialog Nur IE Grundproblem busy-state IE.HtmlDialog(<find>, <timeout>) • Alle Browser • IE.AttachToIE(<find>) 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
JavascriptConfim-Boxes using (varoverviewScreen = 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 • r.stropek@cubido.at oder • rainer@software-architects.at Rainer Stropek, cubido business solutions gmbh