Testdrivning med automatiska acceptanstester – praktiska erfarenheter

924 views

Published on

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

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
924
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Testdrivning med automatiska acceptanstester – praktiska erfarenheter

  1. 1. Testdrivning med automatiska acceptanstester – praktiska erfarenheter Sebastian de Bachtin
  2. 2. Projektet
  3. 3. Hur vi vågade förändra ett system timmar innan lansering! Start Förändrad funktionalitet Lansering
  4. 4. Förändringar innan leverans Test Förändrad funktionalitet Lansering
  5. 5. Teamet <ul><li>Fem C# utvecklare </li></ul><ul><li>En JavaScript / GUI-utvecklare </li></ul><ul><li>En testare </li></ul><ul><li>En domänexpert </li></ul><ul><li>En projektledare </li></ul>
  6. 6. Testdrivning med automatiska acceptanstester – praktiska erfarenheter
  7. 7. Fallerande test Testdrivning med automatiska acceptanstester – praktiska erfarenheter
  8. 8. Fallerande test Implementera Testdrivning med automatiska acceptanstester – praktiska erfarenheter
  9. 9. Fallerande test Implementera Städa upp Testdrivning med automatiska acceptanstester – praktiska erfarenheter
  10. 10. Acceptanstester skall definiera hur systemet skall uppföra sig. Testdrivning med automatiska acceptanstester – praktiska erfarenheter
  11. 11. GUI
  12. 12. Logik If (maybe) { then } else GUI
  13. 13. Logik Databas If (maybe) { then } else Id | Text | Enable 1 | a | true 2 | b | false 3 | c | true GUI
  14. 14. Acceptanstester Logik Databas If (maybe) { then } else Id | Text | Enable 1 | a | true 2 | b | false 3 | c | true GUI
  15. 15. Acceptanstester Logik Databas If (maybe) { then } else Id | Text | Enable 1 | a | true 2 | b | false 3 | c | true GUI
  16. 16. Acceptanstester Logik Databas If (maybe) { then } else Id | Text | Enable 1 | a | true 2 | b | false 3 | c | true GUI Tråkigt och tar lång tid
  17. 17. Automatiska acceptanstester Logik Databas If (maybe) { then } else Id | Text | Enable 1 | a | true 2 | b | false 3 | c | true GUI Click(”Spara”); Assert.IsTextPresent(”Sparad”);
  18. 18. Acceptanstester - Selenium
  19. 19. Acceptanstester - Selenium
  20. 20. Acceptanstester - Selenium
  21. 21. Acceptanstester - Selenium
  22. 22. Acceptanstester - Selenium Click(”Spara”);
  23. 23. Acceptanstester - Selenium Click(”Spara”); Assert.IsTextPresent(”Sparad”);
  24. 24. Acceptanstester - Selenium Click(”Spara”); Assert.IsTextPresent(”Sparad”);
  25. 25. Acceptanstester - Selenium Selenium låste sig och kunde inte stänga ned webbläsarsessionerna.
  26. 26. Acceptanstester - Selenium <ul><li>252 tester </li></ul><ul><li>Ca 20 minuter att köra alla tester </li></ul><ul><li>Körde dem en gång per dag </li></ul><ul><li>Tolka dem manuellt </li></ul>
  27. 27. Acceptanstester - Selenium
  28. 28. Tester genom grafiskt gränssnitt Logik Databas If (maybe) { then } else Id | Text | Enable 1 | a | true 2 | b | false 3 | c | true GUI
  29. 29. Tester genom grafiskt gränssnitt Logik Databas If (maybe) { then } else Id | Text | Enable 1 | a | true 2 | b | false 3 | c | true GUI Assert.IsTextPresent(” Sparad ”);
  30. 30. Tester genom grafiskt gränssnitt Logik Databas If (maybe) { then } else Id | Text | Enable 1 | a | true 2 | b | false 3 | c | true GUI Assert.IsUrl(” SavedPage.aspx ”);
  31. 31. Tester genom grafiskt gränssnitt Logik Databas If (maybe) { then } else Id | Text | Enable 1 | a | true 2 | b | false 3 | c | true GUI Assert.IsUrl(SAVED_PAGE_NAME);
  32. 32. Tester genom grafiskt gränssnitt selenium.Click(&quot;//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&quot;);
  33. 33. Tester genom grafiskt gränssnitt selenium.Click(&quot;//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&quot;);
  34. 34. Tester genom grafiskt gränssnitt GetAllTheButtonsOnPage() { MatchCollection matches = Regex.Matches(html, @&quot;(<button(/?[^>]+)>)“) ... Return List<Button> }
  35. 35. Tester genom grafiskt gränssnitt Testdriv inte fram acceptanstester! Fallerande test Implementera Städa upp
  36. 36. Acceptanstester - Selenium
  37. 37. Databas Logik Databas If (maybe) { then } else Id | Text | Enable 1 | a | true 2 | b | false 3 | c | true GUI
  38. 38. Databas Logik Databas If (maybe) { then } else Id | Text | Enable 1 | a | true 2 | b | false 3 | c | true GUI Databas
  39. 39. Databas Logik Databas If (maybe) { then } else Id | Text | Enable 1 | a | true 2 | b | false 3 | c | true GUI
  40. 40. Databas Logik Databas If (maybe) { then } else Id | Text | Enable 1 | a | true 2 | b | false 3 | c | true GUI TEST_USER_ID_ARE_ENABLED
  41. 41. Tester genom grafiskt gränssnitt Logik Databas If (maybe) { WTF } else Id | Text | Enable 1 | a | true 2 | b | false 3 | c | true GUI
  42. 42. Manuella tester Logik Databas If (maybe) { then } else Id | Text | Enable 1 | a | true 2 | b | false 3 | c | true GUI
  43. 43. Manuella tester Logik Databas If (maybe) { then } else Id | Text | Enable 1 | a | true 2 | b | false 3 | c | true GUI
  44. 44. Hur vi vågade förändra ett system timmar innan lansering! Start Förändrad funktionalitet Lansering
  45. 45. Förändringar innan leverans Manuella tester Förändrad funktionalitet
  46. 46. Förändringar innan leverans Förändrad funktionalitet Automatiska acceptanstester Manuella tester
  47. 47. Testdrivning med automatiska acceptanstester – praktiska erfarenheter Sebastian de Bachtin

×