Transcript
Page 1: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Testdrivning med automatiska acceptanstester – praktiska

erfarenheter

Sebastian de Bachtin

Page 2: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Projektet

Page 3: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

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

StartFörändrad funktionalitet Lansering

Page 4: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Förändringar innan leverans

Test

Förändrad funktionalitet

Lansering

Page 5: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Teamet

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

Page 6: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Testdrivning med automatiska acceptanstester – praktiska

erfarenheter

Page 7: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Fallerande test

Testdrivning med automatiska acceptanstester – praktiska

erfarenheter

Page 8: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Fallerande test

Implementera

Testdrivning med automatiska acceptanstester – praktiska

erfarenheter

Page 9: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Fallerande test

Implementera Städa upp

Testdrivning med automatiska acceptanstester – praktiska

erfarenheter

Page 10: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Acceptanstester skall definiera hur systemet skall uppföra sig.

Testdrivning med automatiska acceptanstester – praktiska

erfarenheter

Page 11: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

GUI

Page 12: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

LogikIf (maybe) { then} else

GUI

Page 13: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Logik

Databas

If (maybe) { then} else

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

GUI

Page 14: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Acceptanstester

Logik

Databas

If (maybe) { then} else

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

GUI

Page 15: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Acceptanstester

Logik

Databas

If (maybe) { then} else

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

GUI

Page 16: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Acceptanstester

Logik

Databas

If (maybe) { then} else

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

GUI

Tråkigt och tar lång tid

Page 17: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Automatiska acceptanstester

Logik

Databas

If (maybe) { then} else

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

GUI

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

Page 18: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Acceptanstester - Selenium

Page 19: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Acceptanstester - Selenium

Page 20: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Acceptanstester - Selenium

Page 21: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Acceptanstester - Selenium

Page 22: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Acceptanstester - SeleniumClick(”Spara”);

Page 23: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

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

Page 24: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

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

Page 25: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Acceptanstester - Selenium

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

Page 26: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Acceptanstester - Selenium

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

Page 27: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Acceptanstester - Selenium

Page 28: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Tester genom grafiskt gränssnitt

Logik

Databas

If (maybe) { then} else

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

GUI

Page 29: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Tester genom grafiskt gränssnitt

Logik

Databas

If (maybe) { then} else

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

GUI

Assert.IsTextPresent(”Sparad”);

Page 30: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

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”);

Page 31: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

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

Page 32: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

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");

Page 33: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

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");

Page 34: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Tester genom grafiskt gränssnitt

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

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

}

Page 35: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Tester genom grafiskt gränssnitt

Testdriv inte fram acceptanstester!

Fallerande test Implementera Städa upp

Page 36: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Acceptanstester - Selenium

Page 37: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Databas

Logik

Databas

If (maybe) { then} else

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

GUI

Page 38: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Databas

Logik

Databas

If (maybe) { then} else

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

GUI

Databas

Page 39: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Databas

Logik

Databas

If (maybe) { then} else

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

GUI

Page 40: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Databas

Logik

Databas

If (maybe) { then} else

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

GUI

TEST_USER_ID_ARE_ENABLED

Page 41: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Tester genom grafiskt gränssnitt

Logik

Databas

If (maybe) { WTF} else

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

GUI

Page 42: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Manuella tester

Logik

Databas

If (maybe) { then} else

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

GUI

Page 43: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Manuella tester

Logik

Databas

If (maybe) { then} else

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

GUI

Page 44: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

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

StartFörändrad funktionalitet Lansering

Page 45: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Förändringar innan leverans

Manuella tester

Förändrad funktionalitet

Page 46: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Förändringar innan leverans

Förändrad funktionalitet

Automatiska acceptanstester

Manuella tester

Page 47: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Testdrivning med automatiska acceptanstester – praktiska

erfarenheter

Sebastian de Bachtin

Page 48: Testdrivning med automatiska acceptanstester – praktiska erfarenheter
Page 49: Testdrivning med automatiska acceptanstester – praktiska erfarenheter
Page 50: Testdrivning med automatiska acceptanstester – praktiska erfarenheter

Top Related