Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

59
Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1

Transcript of Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

Page 1: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

Workshop FitNesse & SeleniumWaardevolle spelers bij Agile Ontwikkeling

1

Page 2: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

Wie ben ik? Wat doe ik?

• Gijs Sijpesteijn

• Consultant ICT

• In dienst bij Ordina sinds 2006

• Sinds 2007 bezig met Agile Ontwikkeling

• Agile projecten bij Microbais, SNS en Rabobank

• Cursus: Agile testen voor Java Ontwikkelaars

2

Page 3: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

Onderwerpen

• Introductie van FitNesse

• Oefenen met FitNesse

• Introductie van Selenium

• Oefenen met Selenium (ism FitNesse)

3

Page 4: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

FitNesseStukje achtergrond

• FitNesse is ontwikkeld onder aanvoering van Robert C. Martin

• FitNesse was gebouwd als uitbreiding op FIT

• FIT zorgt voor een gemeenschappelijke taal en maakt de testcases voor alle disciplines makkelijk begrijpbaar

• FIT interpreteert HTML pagina’s als testcases

• FitNesse genereert HTML pagina’s aan de hand van WIKI pagina’s

4

Page 5: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

5FitNesseArchitectuur

Page 6: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

Fixture naam Uitleg

Decision Table Noteer de input -en output waarden voor de test. Output waarden kolommen worden aangegeven met een '?' achter variabele naam

Query Table Alle kolommen worden als output gezien. Alle rijen worden gecontroleerd tegen de uitkomst van de query. VB een lijst van klanten.

Subset Query Table Zelfde als een Query table, maar nu kan je aangeven welke subset je verwacht in de query. VB een of meer klanten uit een lijst van klanten

Ordered Query Table Zelfde als een Query table, maar nu wil je de volgorde van de verschillende elementen ook controleren

Script Table Elke rij vormt een script.

Import Vergelijkbaar met java import, namespace.

Table Table Kan alles zijn wat je wilt. Fixture heeft een method: doTable.

Comment Voeg commentaar toe.

Scenario Table Kan worden aangeroepen vanuit een Decision en een Script tabel

Library Table Definieer een fixture die voor alle onderliggende pagina’s beschikbaar is. Generieke delen kan je hier in kwijt. Vb schonen database.

FitNesseFixture Library

Page 7: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

FitNesseWat is het?

“FitNesse is a software development collaboration tool”

FitNesse is een software testing tool.

FitNesse bestaat uit:

Webserver(tje)

Wiki (om testpagina’s op te stellen)

7

Page 8: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

FitNesseOefening 1 – FitNesse test schrijven

8

Opdrachten:

FitNesse opstarten. Werken met FitNesse interface. FitNesse test opstellen in Wiki notatie. Business methode testen mbv FitNesse test.

Page 9: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

Download: http://www.fitnesse.org (nu te vinden in C:\WorkshopFitNesse\ )

Huidige versie: 20110104

Start commando: java -jar fitnesse.jar

Belangrijkste opties:

Voor de workshop, gebruik de link op het bureaublad:

start_fitnesse.bat om FitNesse te starten.

(NOTE: Dosbox niet afsluiten. Dan stopt FitNesse)

9FitNesseOpstarten

.-d /path/to/fitNesse/root

80-p <port#>

DefaultOptie

Page 10: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

10FitNesseOpstart process

Na het opstarten vanstart_fitnesse.bat opent ereen dosbox met de hiernaastgetoonde output.We zien hier o.a. poort nummer (9090) waarop FitNessebereikbaar is.

Page 11: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

11FitNesseInterface

FitNesse is gestart en wekunnen de webserver(=FitNesse) benaderen opurl: http://localhost:9090/en zien dan de homepagezoals hiernaast afgebeeld.Gebruik de 'FitNesse' link op het bureaublad.

Page 12: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

FitNesseOnze eerste FitNesse test. Wat gaan we testen?

12

Een requirement voor ons SUT (System under Test), is het optellen vantwee getallen en het resultaat retourneren.We willen deze functionaliteit gaan testen m.b.v. een FitNesse test.

Aanwezig

Deze wiki-pagina gaan wijnu schrijven.

De business methode enfixture zijn reeds aanwezig. Wij schrijven voor deze oefening enkel de wiki-pagina.

Page 13: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

FitNesseOptellenTest

13

De test voor de business methode zien we hiernaastafgebeeld.

Naam van fixture

In- en output definitie

Test gevallen

Page 14: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

FitNesseOptellenTest – het verwachte testresultaat

14

Na het uitvoeren van detest door FitNesse, ver-wachten we het volgendetest resultaat.

Page 15: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

Gebruik de 'add child' link naast de wiki pagina naam.

Voorwaarde: Namen van FitNesse test pagina’s moeten wikiwords zijn.

15FitNesseTestpagina’s toevoegen aan FitNesse

Page 16: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

Wiki-words zijn woorden die voldoen aan volgende regels: Begint met één of meerdere hoofdletter. Gevolgd door één of meerdere kleine letters of getallen. Gevolgd door één of meerdere hoofdletter.

16FitNesseWiki Woord

Voorbeelden: BobMartin is een wiki woord. SalesReport1972 is een wiki woord. USAforEver niet, omdat er drie kapitalen elkaar opvolgen. Usa1776 niet, omdat het woord maar een kapitaal heeft. ItDoesNotMatterHowManyCapitalsThereAreYouCanHave1000IfYouLike

Page 17: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

17FitNesseOptellenTest pagina toevoegen.

Toevoegen van de OptellenTest pagina. Klik op de 'add child' link naast FrontPage. Kies voor 'Test' als type pagina. Name = OptellenTest Klik op 'Add'

Page 18: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

18FitNesseDe OptellenTest pagina toevoegen

De pagina is aangemaakt, maar nog niet zichtbaar op de homepage.

Op de homepage, klik 'Edit' in het menu rechts. Voeg onderaan de pagina toe: !contents Klik op de 'Save' button.

Page 19: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

19FitNesseDe OptellenTest pagina opstellen

Door op de link 'OptellenTest' te klikken, komen we op de nieuwewiki-pagina. Klik op 'Edit' in het menu rechts en we komen wederom in de edit mode. We kunnen nu de test in wiki notatie opstellen. Verwijder '!contents' en voeg de test toe.

Klik op de 'Save' button.

Page 20: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

20FitNesseDe OptellenTest pagina opstellen

Je pagina moet er nu zouit zien.

Onze pagina is nog niet volledig. We hebben enkelde requirements van de testingevoerd.

We moeten FitNesse nuextra informatie geven om de test te kunnen uitvoeren tegen onze SUT.

Page 21: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

21FitNesseTestpagina van extra informatie voorzien.

We moeten FitNesse vertellen welk test systeem we gebruiken.

We moeten FitNesse vertellen waar onze fixture code classes staan.

FIT

Slim

Page 22: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

22FitNesseTestpagina van extra informatie voorzien.

Klik op 'Edit' in het menu. Voeg toe: !define TEST_SYSTEM {slim} Voeg toe: !path C:/WorkshopFitNesse/target/classes/ Voeg het java package toe aan de Optellen fixture, wijzig | Optellen | in | nl.ordina.workshopfitnesse.fixtures.Optellen | Klik op de 'Save' button

Page 23: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

23FitNesseDe volledige testpagina.

Je 'OptellenTest' pagina ziet er nu zo uit en is volledig voor FitNesse omde test uit te voeren.

Klik nu op 'Test' in het menu.

Page 24: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

FitNesseOptellenTest - resultaat

24

Na het uitvoeren van detest door FitNesse, ver-wachten we het volgendetest resultaat.

Page 25: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

25FitNesseGebruik van import fixture

Het is extra werk om telkenshet java package op te nemen. We kunnen hiervoorde build-in fixture ‘Import' gebruiken.

Page 26: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

26FitNesseGebruik van import fixture

• Klik op 'Edit' in het menu en wijzig de wiki tekst in het volgende:

Java package isverdwenen en verplaatst naar deimport fixture.

• Klik na de aanpassingen op de 'Save' button.

Page 27: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

27FitNesseGebruik van import fixture

Het resultaat zal eruitzien zoals de afbeelding hiernaast.

Page 28: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

FitNesseSpecial pages

O.a.:

• SetUp & TearDownSubwiki’s die respectievelijk voor en na de test worden uitgevoerd.

• SuiteSetUp & SuiteTearDown

Subwiki’s die respectievelijk voor en na de suite worden uitgevoerd.

• root

Wiki pagina waarin globale variabelen kunnen worden gezet.

28

Page 29: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

29FitNesseOptimalizeren van FitNesse.

Opdrachten:

!define TEST_SYSTEM {slim} verplaatsen naar 'root' wikipagina. !path c:/workshopfitnesse/target/classes verplaatsen naar 'root' wikipagina. Toevoegen van 'SetUp' wiki-pagina. Verplaatsen van Import fixture uit ‘OptellenTest’ naar 'SetUp' wiki-pagina.

Page 30: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

30FitNesseOptimalizeren van FitNesse - root pagina.

Link onderaan pagina opent de 'root' wiki pagina.Klik op de link.

Page 31: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

31FitNesseOptimalizeren van FitNesse - root pagina.

Klik op 'Edit' in het menu. Voeg de twee onderstaande regels toe. Klik op de 'Save' button.

Page 32: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

32FitNesseOptimalizeren van FitNesse - root pagina.

De 'root' wiki pagina ziet er nu zo uit.

De informatie geldt nuvoor elke wiki testpagina.

Page 33: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

33FitNesseOptimalizeren van FitNesse – Toevoegen 'SetUp'.

Klik op het logo om naar de homepagina te navigeren. Klik op de 'add child' link naast FrontPage. Kies voor 'Normal' als type pagina. Name = SetUp Klik op 'Add'

Page 34: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

34FitNesseOptimalizeren van FitNesse – 'SetUp' bewerken.

Klik op de 'SetUp' link op de homepagina. Klik 'Edit' in het menu. Voeg de onderstaande regels toe. Klik op de 'Save' button

Page 35: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

35FitNesseOptimalizeren van FitNesse – 'SetUp' resultaat.

De 'SetUp' wiki pagina ziet er nu zo uit.

Deze wiki pagina wordt voor iedere FitNesse testuitgevoerd.

We kunnen nu de inmiddelsoverbodige informatie uit de 'OptellenTest' FitNessetest verwijderen.

Page 36: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

36FitNesseOptimalizeren van FitNesse – Opschonen OptellenTest.

Navigeer naar de homepagina door op het logo te klikken. Klik op de link 'OptellenTest' Klik 'Edit' in het menu. Verwijder alle code, behalve de fixture tabel.

Klik op de 'Save' button.

Page 37: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

37FitNesseOptimalizeren van FitNesse – Opschonen OptellenTest.

De 'OptellenTest' pagina ziet er nu zo uit.

Let op de automatischtoegevoegde 'SetUp' wiki.

Page 38: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

38FitNesseDe gangbare werkwijze.

We hebben nu enkel de FitNesse test moeten opstellen, maar normaal zal de procedure zijn:

SUT uitbreiden met functionaliteit. FitNesse testpagina opstellen die de requirements van de nieuwe functionaliteit testen. Fixture code schrijven die de wiki pagina verbindt met het SUT.

Of in een TDD ( Test Driven Design ) omgeving: • FitNesse testpagina opstellen die de requirements van de nieuwe functionaliteit testen.• Fixture code schrijven die de wiki pagina verbindt met het SUT.• SUT uitbreiden met functionaliteit.

Page 39: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

39FitNesseDe fixture code en business methode nader bekeken.

Open Eclipse d.m.v. link op het bureaublad. Navigeer naar: WorkshopFitNesse/src/main/java/nl/ordina/workshopfitnesse/fixtures/Optellen Of gebruik shortkey: <ctrl>+<shift>+r en type 'Optellen' De fixture Optellen opent.

Page 40: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

40FitNesseDe fixture code nader bekeken.

Page 41: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

41FitNesseDe business methode nader bekeken.

In Eclipse, navigeer naar: WorkshopFitNesse/src/main/java/nl/ordina/workshopfitnesse/aandelen/ business/OptellenBusiness Of gebruik shortkey: <ctrl>+<shift>+r en type 'OptellenBusiness' De business service OptellenBusiness opent.

Page 42: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

SeleniumStukje achtergrond

• Selenium IDE – Firefox plugin om gebruikers acties op te nemen en af te spelen.

• Selenium Server – Afspelen selenium scripts.

• Selenium Client Drivers – Aansturen van selenium server.

Support voor Java, Ruby, C#, Python.

42

In een notendop: Selenium automatiseert browsers.

Selenium levert een set van tools om tests uit te voeren tegen een webapplicatie.

Page 43: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

SeleniumArchitectuur

43

SUT in een browser

Selenium Server(web-acties op SUT)

Selenium Client Driver(programma code of selenium script)

Page 44: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

Selenium - FitnesseArchitecture

44

Selenium server

com.neuri.webfixture.WebTest http(s)

Selenium Client Driver

Maken wij.

Page 45: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

SeleniumOefening 1 – Selenium test schrijven

45

Opdrachten:

Test applicatie starten. Selenium Server starten. FitNesse test opstellen.

Page 46: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

46SeleniumOefening 1 – Test applicatie starten

Gebruik start_app.bat op het bureaublad om de test applicatie te starten. Na het opstarten van start_app.bat opent er een dosbox met de hieronder getoonde output.We zien o.a. het poort nummer (9999) waarop de test applicatie is gestart.

Page 47: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

47SeleniumOefening 1 – Test applicatie starten

De test applicatie is nu bereikbaar op: http://localhost:9999/aandelen/Of gebruik de link ‘open_app’ op het bureaublad.

Page 48: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

Download: http://seleniumhq.org/download/ (nu te vinden in C:\WorkshopFitNesse\ )

Huidige versie: 2.6.0

Start commando: java -jar selenium-server.jar

Belangrijkste opties:

Voor de workshop, gebruik de link op het bureaublad:

start_selenium.bat om de Selenium Server te starten.

(NOTE: Dosbox niet afsluiten. Dan stopt Selenium Server)

48SeleniumOpstarten Selenium Server

4444-p <port#>

DefaultOptie

Page 49: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

49SeleniumOefening 1 – Selenium Server starten

Gebruik start_selenium.bat op het bureaublad om de Selenium Server te starten. Na het opstarten van start_selenium.bat opent er een dosbox met de hieronder getoonde output.We zien o.a. het poort nummer (4444) waarop de Selenium Server is gestart.

Page 50: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

SeleniumOefening 1 – FitNesse test toevoegen.

50

Selecteer de FitNesse webinterface in de browser. Klik op de 'add child' link naast FrontPage. Kies voor 'Test' als type pagina. Name = WebTest Klik op 'Add'

Page 51: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

SeleniumOefening 1 – FitNesse test toevoegen.

51

Klik op de link ‘WebTest’ op de homepagina. Klik op ‘Edit’ in het menu. Klik op de ‘webtest’ link op het bureaublad. Kopieer de inhoud van het bestand. (ctrl+a, ctrl+c) Selecteer FitNesse en plak de inhoud van het clipboard. (ctrl+v) Klik op de ‘Save‘ button.

Page 52: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

SeleniumOefening 1 – FitNesse test toevoegen.

52

De ‘WebTest' wiki pagina ziet er nu (deels) zo uit.

Page 53: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

SeleniumOefening 1 – FitNesse test nader bekeken.

53

Page 54: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

SeleniumOefening 1 – FitNesse test nader bekeken.

54

Page 55: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

SeleniumHoe vindt Selenium elementen?

55

<a href="…" id="b-AAPL">

Page 56: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

SeleniumOefening 1 – FitNesse test afspelen.

56

Page 57: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

SeleniumOpschonen WebTest.

57

Deze kunnen mooi naar ‘root’ wiki pagina.

Deze definities zijn specifiek voor Selenium tests. Je kan ze opnemen in een aparte ‘SetUp’ voor Selenium Tests.

Page 58: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

Links:

• FitNesse: http://www.fitnesse.org/

• FitNesse tutorial: http://schuchert.wikispaces.com/FitNesse.Tutorials

• Selenium: http://seleniumhq.org/

• WebTest: http://www.fitnesse.info/webtest/

• FitNesse tutorials: http://schuchert.wikispaces.com/FitNesse.Tutorials

• Agile tools: http://www.methodsandtools.com/

• FitLibrary: http://sourceforge.net/projects/fitlibrary/

Literatuur:

• FIT for Software Development

Websites en literatuur: 58

Page 59: Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling 1.

59

www.ordina.nl