160 likes | 280 Views
Automated Software Testing. Sebastian Heil. Motivation. Agile Software Development Manuelle Tests aufwändig Alles „Auf einen Klick“. Was ist automatisierbar?. Testfallerstellung Testausführung Testauswertung und – dokumentation. Ziele (der Automatisierung). Verbesserung der Qualität
E N D
Automated Software Testing Sebastian Heil
Motivation • Agile Software Development • Manuelle Tests aufwändig • Alles „Auf einen Klick“ Automated Software Testing - Sebastian Heil
Was ist automatisierbar? • Testfallerstellung • Testausführung • Testauswertung und – dokumentation Automated Software Testing - Sebastian Heil
Ziele (der Automatisierung) • Verbesserung der Qualität • Tests als Spezifikation • Fehlervermeidung • Fehlerlokalisation • Minderung des Risikos • Tests als Sicherungsnetz • Einfache Ausführung • Hohe Coverage Automated Software Testing - Sebastian Heil
Ansätze Code-drivenTesting GUI Testing Indirekt über GUI • Direkt • Quellcode public classTestClassToTest { … @Test public voidtestMethodToTest() { ClassToTestsut = newClassToTest() intval = sut.methodToTest(0); assertEquals(42, val); } … } … site = 'http://www.google.com‘ b = Watir::Browser.new browser b.goto(site) b.text_field(:name, "q").set(“gaedke") b.button(:name, "btnG").click ifb.text.include?(“TU Chemnitz") puts "Test Passed. Found the test string” elseputs "Test Failed! Couldn’t find test string” end … Automated Software Testing - Sebastian Heil
Ansätze Code-drivenTesting GUI Testing Indirekt über GUI • Direkt • Quellcode public classTestClassToTest { … @Test public voidtestMethodToTest() { ClassToTestsut = newClassToTest() intval = sut.methodToTest(0); assertEquals(42, val); } … } … site = 'http://www.google.com‘ b = Watir::Browser.new browser b.goto(site) b.text_field(:name, "q").set(“gaedke") b.button(:name, "btnG").click ifb.text.include?(“TU Chemnitz") puts "Test Passed. Found the test string” elseputs "Test Failed! Couldn’t find test string” end … Automated Software Testing - Sebastian Heil
Prinzipien der Automatisierung • Front Door First • Aussagekräftige Tests • Keine Veränderungen am SUT • Testabdeckung maximieren, Testüberdeckung minimieren • Separate, spezifische Tests Automated Software Testing - Sebastian Heil
Unit Testing • Unit: kleines Stück isolierter Quellcode, meist Klasse • Unit Test: Quellcode, ruft zu testende Unit auf • Überprüfung von Annahmen • Vergleich von Ist- und Sollergebnis • Getestet wird logischer Code Automated Software Testing - Sebastian Heil
Unit vs. System/Integration Testing Unit Testing System/Integration Testing Test von mehreren voneinander abhängigen Modulen als Gruppe Testet Zusammenspiel Schwerer automatisierbar Aufwändiger erst nach vorangeschrittener Entwicklung • Test einer einzelnen Unit in Isolation • Testet Programmlogik • Automatisiert • Schnell • Von Anfang an Automated Software Testing - Sebastian Heil
Automatisierungsstrategien • Recorded Tests • Data-Driven Tests • Scripted Tests Automated Software Testing - Sebastian Heil
Test Automation Frameworks Robot User xUnit Code-drivenTesting Scripted Tests Test Runner Library Assertion Methods 4-Phasen Test Beispiel: JUnit • GUI Testing • Recorded Tests • Test Recorder • Test Runner • Beispiel: Selenium Automated Software Testing - Sebastian Heil
xUnit Automated Software Testing - Sebastian Heil
xUnit Automated Software Testing - Sebastian Heil
Beispiel: Selenium Automated Software Testing - Sebastian Heil
Beispiel: JUnit Automated Software Testing - Sebastian Heil
Quellen • The Art of Unit Testing: With Examples in .NET • TU Darmstadt: JUnit 4 Tutorial • Software Test Automation: Myths and Facts • xUnit Test Patterns: Refactoring Test Code • Selenium • Automated Software Testing Automated Software Testing - Sebastian Heil