testdrivning med automatiska acceptanstester – praktiska erfarenheter

Post on 18-Dec-2014

661 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Automatiserade accepanstester är en stor styrka för ett system. De skall verifiera att systemet fungerar som det är tänkt efter en förändring. Men de kan bli dyrt att underhålla dem om de inte är skapta för att tåla irrelevanta förändringar. Vad skall man tänka på när man vill skapa automatiska acceptanstester? Jag delar med mig av mina praktiska erfarenheter av Selenium, använt i ett skarpt projekt. Vilka var fallgroparna och vilka var vinsterna?Talare är Sebastian de Bachtin från Dynabyte AB

TRANSCRIPT

Testdrivning med automatiska acceptanstester – praktiska

erfarenheter

Sebastian de Bachtin

Projektet

Hur vi vågade förändra ett system timmar innan lansering!

StartFörändrad funktionalitet Lansering

Förändringar innan leverans

Test

Förändrad funktionalitet

Lansering

Teamet

• Fem C# utvecklare • En JavaScript / GUI-utvecklare• En testare• En domänexpert• En projektledare

Testdrivning med automatiska acceptanstester – praktiska

erfarenheter

Fallerande test

Testdrivning med automatiska acceptanstester – praktiska

erfarenheter

Fallerande test

Implementera

Testdrivning med automatiska acceptanstester – praktiska

erfarenheter

Fallerande test

Implementera Städa upp

Testdrivning med automatiska acceptanstester – praktiska

erfarenheter

Acceptanstester skall definiera hur systemet skall uppföra sig.

Testdrivning med automatiska acceptanstester – praktiska

erfarenheter

GUI

LogikIf (maybe) { then} else

GUI

Logik

Databas

If (maybe) { then} else

Id | Text | Enable1 | a | true2 | b | false3 | c | true

GUI

Acceptanstester

Logik

Databas

If (maybe) { then} else

Id | Text | Enable1 | a | true2 | b | false3 | c | true

GUI

Acceptanstester

Logik

Databas

If (maybe) { then} else

Id | Text | Enable1 | a | true2 | b | false3 | c | true

GUI

Acceptanstester

Logik

Databas

If (maybe) { then} else

Id | Text | Enable1 | a | true2 | b | false3 | c | true

GUI

Tråkigt och tar lång tid

Automatiska acceptanstester

Logik

Databas

If (maybe) { then} else

Id | Text | Enable1 | a | true2 | b | false3 | c | true

GUI

Click(”Spara”); Assert.IsTextPresent(”Sparad”);

Acceptanstester - Selenium

Acceptanstester - Selenium

Acceptanstester - Selenium

Acceptanstester - Selenium

Acceptanstester - SeleniumClick(”Spara”);

Acceptanstester - SeleniumClick(”Spara”); Assert.IsTextPresent(”Sparad”);

Acceptanstester - SeleniumClick(”Spara”); Assert.IsTextPresent(”Sparad”);

Acceptanstester - Selenium

Selenium låste sig och kunde inte stänga ned webbläsarsessionerna.

Acceptanstester - Selenium

• 252 tester• Ca 20 minuter att köra alla tester• Körde dem en gång per dag• Tolka dem manuellt

Acceptanstester - Selenium

Tester genom grafiskt gränssnitt

Logik

Databas

If (maybe) { then} else

Id | Text | Enable1 | a | true2 | b | false3 | c | true

GUI

Tester genom grafiskt gränssnitt

Logik

Databas

If (maybe) { then} else

Id | Text | Enable1 | a | true2 | b | false3 | c | true

GUI

Assert.IsTextPresent(”Sparad”);

Tester genom grafiskt gränssnitt

Logik

Databas

If (maybe) { then} else

Id | Text | Enable1 | a | true2 | b | false3 | c | true

GUI

Assert.IsUrl(”SavedPage.aspx”);

Tester genom grafiskt gränssnitt

Logik

Databas

If (maybe) { then} else

Id | Text | Enable1 | a | true2 | b | false3 | c | true

GUIAssert.IsUrl(SAVED_PAGE_NAME);

Tester genom grafiskt gränssnitt

selenium.Click("//form[@id='frm']/table/tbody/tr[2]/td[1]/table/tbody/tr[2]/td/table/tbody/tr/td/table[3]/tbody/tr[3]/td/a");

Tester genom grafiskt gränssnitt

selenium.Click("//form[@id='frm']/table/tbody/tr[2]/td[1]/table/tbody/tr[2]/td/table/tbody/tr/td/table[3]/tbody/tr[3]/td/a");

Tester genom grafiskt gränssnitt

GetAllTheButtonsOnPage() {MatchCollection matches = Regex.Matches(html, @"(\

<button(/?[^\>]+)\>)“)...Return List<Button>

}

Tester genom grafiskt gränssnitt

Testdriv inte fram acceptanstester!

Fallerande test Implementera Städa upp

Acceptanstester - Selenium

Databas

Logik

Databas

If (maybe) { then} else

Id | Text | Enable1 | a | true2 | b | false3 | c | true

GUI

Databas

Logik

Databas

If (maybe) { then} else

Id | Text | Enable1 | a | true2 | b | false3 | c | true

GUI

Databas

Databas

Logik

Databas

If (maybe) { then} else

Id | Text | Enable1 | a | true2 | b | false3 | c | true

GUI

Databas

Logik

Databas

If (maybe) { then} else

Id | Text | Enable1 | a | true2 | b | false3 | c | true

GUI

TEST_USER_ID_ARE_ENABLED

Tester genom grafiskt gränssnitt

Logik

Databas

If (maybe) { WTF} else

Id | Text | Enable1 | a | true2 | b | false3 | c | true

GUI

Manuella tester

Logik

Databas

If (maybe) { then} else

Id | Text | Enable1 | a | true2 | b | false3 | c | true

GUI

Manuella tester

Logik

Databas

If (maybe) { then} else

Id | Text | Enable1 | a | true2 | b | false3 | c | true

GUI

Hur vi vågade förändra ett system timmar innan lansering!

StartFörändrad funktionalitet Lansering

Förändringar innan leverans

Manuella tester

Förändrad funktionalitet

Förändringar innan leverans

Förändrad funktionalitet

Automatiska acceptanstester

Manuella tester

Testdrivning med automatiska acceptanstester – praktiska

erfarenheter

Sebastian de Bachtin

top related