1 / 32

Bug Busters

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

dreama
Download Presentation

Bug Busters

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Rainer Stropek, cubidobusinesssolutionsgmbh Bug Busters Qualitätssicherung in der Softwareentwicklung

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

  3. Ziele des Vortrags Rainer Stropek, cubido business solutions gmbh

  4. Qualitätssicherung Wozu? Rainer Stropek, cubido business solutions gmbh

  5. Rainer Stropek, cubido business solutions gmbh

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

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

  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. Rainer Stropek, cubido business solutions gmbh

  9. Ziele des Vortrags Rainer Stropek, cubido business solutions gmbh

  10. Fehlertypen Rainer Stropek, cubido business solutions gmbh

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

  12. Softwarealterung Rainer Stropek, cubido business solutions gmbh

  13. Rainer Stropek, cubido business solutions gmbh

  14. Test Driven Development Rainer Stropek, cubidobusinesssolutionsgmbh

  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

  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()]publicstaticvoidMyClassInitialize(TestContexttestContext) • ClassCleanup • [ClassCleanup()]publicstaticvoidMyClassCleanup() • TestInitialize • [TestInitialize()]publicvoidMyTestInitialize() • TestCleanup • [TestCleanup()]publicvoidMyTestCleanup() Rainer Stropek, cubido business solutions gmbh

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

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

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

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

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

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

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

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

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

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

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

More Related