De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Workshop FitNesse & Selenium

Verwante presentaties


Presentatie over: "Workshop FitNesse & Selenium"— Transcript van de presentatie:

1 Workshop FitNesse & Selenium
1 Workshop FitNesse & Selenium Waardevolle spelers bij Agile Ontwikkeling

2 Wie ben ik? Wat doe ik? Gijs Sijpesteijn Consultant ICT
2 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

3 Onderwerpen Introductie van FitNesse Oefenen met FitNesse
3 Introductie van FitNesse Oefenen met FitNesse Introductie van Selenium Oefenen met Selenium (ism FitNesse)

4 FitNesse Stukje achtergrond
4 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 FIT = Framework for Integrated Test FIT werkt met tabelen waarin invoer waarden en verwachtte uitvoer zijn opgenomen.

5 FitNesse Architectuur
5 2 test systemen: fit & slim Fit –’classieke manier’: - wiki pagina wordt vertaald naar html en verstuurd naar de server. - de fitserver wordt opgestart en vertaald de html in fit commando’s - de fit commando’s voeren operaties op de fixtures uit - de fixtures voeren operaties uit op het system under test. Slim – ‘nieuwe manier’: - wiki pagina wordt vertaald in een set van fit instructies en naar de server gestuurd - slim executor voert operaties uit op de fixtures Voordeel slim: fixture code geen afhankelijkheid met fitnesse. (niks subclasses of annotaties) kleiner, lichter protocol. Makkelijk te porten naar ander platform. (Er is ondersteuning voor o.a. .Net, C++, Python, Ruby) interpretatie wiki en tonen test resultaat dmv slimrunners.

6 FitNesse Fixture Library
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.

7 FitNesse Wat is het? 7 “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)

8 Werken met FitNesse interface.
FitNesse Oefening 1 – FitNesse test schrijven 8 Opdrachten: FitNesse opstarten. Werken met FitNesse interface. FitNesse test opstellen in Wiki notatie. Business methode testen mbv FitNesse test.

9 FitNesse Opstarten (NOTE: Dosbox niet afsluiten. Dan stopt FitNesse)
9 Download: (nu te vinden in C:\WorkshopFitNesse\ ) Huidige versie: 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) Optie Default -p <port#> 80 -d /path/to/fitNesse/root . 2 test systemen: fit & slim Fit –’classieke manier’: - wiki pagina wordt vertaald naar html en verstuurd naar de server. - de fitserver wordt opgestart en vertaald de html in fit commando’s - de fit commando’s voeren operaties op de fixtures uit - de fixtures voeren operaties uit op het system under test. Slim – ‘nieuwe manier’: - wiki pagina wordt vertaald in een set van fit instructies en naar de server gestuurd - slim executor voert operaties uit op de fixtures Voordeel slim: fixture code geen afhankelijkheid met fitnesse. (niks subclasses of annotaties) kleiner, lichter protocol. Makkelijk te porten naar ander platform. (Er is ondersteuning voor o.a. .Net, C++, Python, Ruby) interpretatie wiki en tonen test resultaat dmv slimrunners.

10 FitNesse Opstart process
10 Na het opstarten van start_fitnesse.bat opent er een dosbox met de hiernaast getoonde output. We zien hier o.a. poort nummer (9090) waarop FitNesse bereikbaar is. 2 test systemen: fit & slim Fit –’classieke manier’: - wiki pagina wordt vertaald naar html en verstuurd naar de server. - de fitserver wordt opgestart en vertaald de html in fit commando’s - de fit commando’s voeren operaties op de fixtures uit - de fixtures voeren operaties uit op het system under test. Slim – ‘nieuwe manier’: - wiki pagina wordt vertaald in een set van fit instructies en naar de server gestuurd - slim executor voert operaties uit op de fixtures Voordeel slim: fixture code geen afhankelijkheid met fitnesse. (niks subclasses of annotaties) kleiner, lichter protocol. Makkelijk te porten naar ander platform. (Er is ondersteuning voor o.a. .Net, C++, Python, Ruby) interpretatie wiki en tonen test resultaat dmv slimrunners.

11 FitNesse Interface FitNesse is gestart en we kunnen de webserver
11 FitNesse is gestart en we kunnen de webserver (=FitNesse) benaderen op url: en zien dan de homepage zoals hiernaast afgebeeld. Gebruik de 'FitNesse' link op het bureaublad. 2 test systemen: fit & slim Fit –’classieke manier’: - wiki pagina wordt vertaald naar html en verstuurd naar de server. - de fitserver wordt opgestart en vertaald de html in fit commando’s - de fit commando’s voeren operaties op de fixtures uit - de fixtures voeren operaties uit op het system under test. Slim – ‘nieuwe manier’: - wiki pagina wordt vertaald in een set van fit instructies en naar de server gestuurd - slim executor voert operaties uit op de fixtures Voordeel slim: fixture code geen afhankelijkheid met fitnesse. (niks subclasses of annotaties) kleiner, lichter protocol. Makkelijk te porten naar ander platform. (Er is ondersteuning voor o.a. .Net, C++, Python, Ruby) interpretatie wiki en tonen test resultaat dmv slimrunners.

12 Onze eerste FitNesse test. Wat gaan we testen?
12 Een requirement voor ons SUT (System under Test), is het optellen van twee getallen en het resultaat retourneren. We willen deze functionaliteit gaan testen m.b.v. een FitNesse test. Aanwezig De business methode en fixture zijn reeds aanwezig. Wij schrijven voor deze oefening enkel de wiki-pagina. Simpel voorbeeld van een optel functie. - Optellen.java is de fixture die door fitnesse wordt aangeroepen. - Iedere rij wordt aan de fixture gevoed. - De fixture zal de operatie op het sut - Fixture zal het resultaat retourneren aan de slim runner - De slim runner zal het verwachte resultaat vergelijken met werkelijke resultaat Deze wiki-pagina gaan wij nu schrijven.

13 FitNesse OptellenTest
13 De test voor de business methode zien we hiernaast afgebeeld. Naam van fixture In- en output definitie Simpel voorbeeld van een optel functie. - Optellen.java is de fixture die door fitnesse wordt aangeroepen. - Iedere rij wordt aan de fixture gevoed. - De fixture zal de operatie op het sut - Fixture zal het resultaat retourneren aan de slim runner - De slim runner zal het verwachte resultaat vergelijken met werkelijke resultaat Test gevallen

14 FitNesse OptellenTest – het verwachte testresultaat
14 Na het uitvoeren van de test door FitNesse, ver- wachten we het volgende test resultaat. Simpel voorbeeld van een optel functie. - Optellen.java is de fixture die door fitnesse wordt aangeroepen. - Iedere rij wordt aan de fixture gevoed. - De fixture zal de operatie op het sut - Fixture zal het resultaat retourneren aan de slim runner - De slim runner zal het verwachte resultaat vergelijken met werkelijke resultaat

15 FitNesse Testpagina’s toevoegen aan FitNesse
15 Gebruik de 'add child' link naast de wiki pagina naam. Voorwaarde: Namen van FitNesse test pagina’s moeten wikiwords zijn. 2 test systemen: fit & slim Fit –’classieke manier’: - wiki pagina wordt vertaald naar html en verstuurd naar de server. - de fitserver wordt opgestart en vertaald de html in fit commando’s - de fit commando’s voeren operaties op de fixtures uit - de fixtures voeren operaties uit op het system under test. Slim – ‘nieuwe manier’: - wiki pagina wordt vertaald in een set van fit instructies en naar de server gestuurd - slim executor voert operaties uit op de fixtures Voordeel slim: fixture code geen afhankelijkheid met fitnesse. (niks subclasses of annotaties) kleiner, lichter protocol. Makkelijk te porten naar ander platform. (Er is ondersteuning voor o.a. .Net, C++, Python, Ruby) interpretatie wiki en tonen test resultaat dmv slimrunners.

16 FitNesse Wiki Woord 16 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. 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 2 test systemen: fit & slim Fit –’classieke manier’: - wiki pagina wordt vertaald naar html en verstuurd naar de server. - de fitserver wordt opgestart en vertaald de html in fit commando’s - de fit commando’s voeren operaties op de fixtures uit - de fixtures voeren operaties uit op het system under test. Slim – ‘nieuwe manier’: - wiki pagina wordt vertaald in een set van fit instructies en naar de server gestuurd - slim executor voert operaties uit op de fixtures Voordeel slim: fixture code geen afhankelijkheid met fitnesse. (niks subclasses of annotaties) kleiner, lichter protocol. Makkelijk te porten naar ander platform. (Er is ondersteuning voor o.a. .Net, C++, Python, Ruby) interpretatie wiki en tonen test resultaat dmv slimrunners.

17 FitNesse OptellenTest pagina toevoegen.
17 Toevoegen van de OptellenTest pagina. Klik op de 'add child' link naast FrontPage. Kies voor 'Test' als type pagina. Name = OptellenTest Klik op 'Add' 2 test systemen: fit & slim Fit –’classieke manier’: - wiki pagina wordt vertaald naar html en verstuurd naar de server. - de fitserver wordt opgestart en vertaald de html in fit commando’s - de fit commando’s voeren operaties op de fixtures uit - de fixtures voeren operaties uit op het system under test. Slim – ‘nieuwe manier’: - wiki pagina wordt vertaald in een set van fit instructies en naar de server gestuurd - slim executor voert operaties uit op de fixtures Voordeel slim: fixture code geen afhankelijkheid met fitnesse. (niks subclasses of annotaties) kleiner, lichter protocol. Makkelijk te porten naar ander platform. (Er is ondersteuning voor o.a. .Net, C++, Python, Ruby) interpretatie wiki en tonen test resultaat dmv slimrunners.

18 FitNesse De OptellenTest pagina toevoegen
18 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. 2 test systemen: fit & slim Fit –’classieke manier’: - wiki pagina wordt vertaald naar html en verstuurd naar de server. - de fitserver wordt opgestart en vertaald de html in fit commando’s - de fit commando’s voeren operaties op de fixtures uit - de fixtures voeren operaties uit op het system under test. Slim – ‘nieuwe manier’: - wiki pagina wordt vertaald in een set van fit instructies en naar de server gestuurd - slim executor voert operaties uit op de fixtures Voordeel slim: fixture code geen afhankelijkheid met fitnesse. (niks subclasses of annotaties) kleiner, lichter protocol. Makkelijk te porten naar ander platform. (Er is ondersteuning voor o.a. .Net, C++, Python, Ruby) interpretatie wiki en tonen test resultaat dmv slimrunners.

19 FitNesse De OptellenTest pagina opstellen
19 Door op de link 'OptellenTest' te klikken, komen we op de nieuwe wiki-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. 2 test systemen: fit & slim Fit –’classieke manier’: - wiki pagina wordt vertaald naar html en verstuurd naar de server. - de fitserver wordt opgestart en vertaald de html in fit commando’s - de fit commando’s voeren operaties op de fixtures uit - de fixtures voeren operaties uit op het system under test. Slim – ‘nieuwe manier’: - wiki pagina wordt vertaald in een set van fit instructies en naar de server gestuurd - slim executor voert operaties uit op de fixtures Voordeel slim: fixture code geen afhankelijkheid met fitnesse. (niks subclasses of annotaties) kleiner, lichter protocol. Makkelijk te porten naar ander platform. (Er is ondersteuning voor o.a. .Net, C++, Python, Ruby) interpretatie wiki en tonen test resultaat dmv slimrunners.

20 FitNesse De OptellenTest pagina opstellen
20 Je pagina moet er nu zo uit zien. Onze pagina is nog niet volledig. We hebben enkel de requirements van de test ingevoerd. We moeten FitNesse nu extra informatie geven om de test te kunnen uitvoeren tegen onze SUT. 2 test systemen: fit & slim Fit –’classieke manier’: - wiki pagina wordt vertaald naar html en verstuurd naar de server. - de fitserver wordt opgestart en vertaald de html in fit commando’s - de fit commando’s voeren operaties op de fixtures uit - de fixtures voeren operaties uit op het system under test. Slim – ‘nieuwe manier’: - wiki pagina wordt vertaald in een set van fit instructies en naar de server gestuurd - slim executor voert operaties uit op de fixtures Voordeel slim: fixture code geen afhankelijkheid met fitnesse. (niks subclasses of annotaties) kleiner, lichter protocol. Makkelijk te porten naar ander platform. (Er is ondersteuning voor o.a. .Net, C++, Python, Ruby) interpretatie wiki en tonen test resultaat dmv slimrunners.

21 FitNesse Testpagina van extra informatie voorzien.
21 We moeten FitNesse vertellen welk test systeem we gebruiken. FIT Slim 2 test systemen: fit & slim Fit –’classieke manier’: - wiki pagina wordt vertaald naar html en verstuurd naar de server. - de fitserver wordt opgestart en vertaald de html in fit commando’s - de fit commando’s voeren operaties op de fixtures uit - de fixtures voeren operaties uit op het system under test. Slim – ‘nieuwe manier’: - wiki pagina wordt vertaald in een set van fit instructies en naar de server gestuurd - slim executor voert operaties uit op de fixtures Voordeel slim: fixture code geen afhankelijkheid met fitnesse. (niks subclasses of annotaties) kleiner, lichter protocol. Makkelijk te porten naar ander platform. (Er is ondersteuning voor o.a. .Net, C++, Python, Ruby) interpretatie wiki en tonen test resultaat dmv slimrunners. We moeten FitNesse vertellen waar onze fixture code classes staan.

22 FitNesse Testpagina van extra informatie voorzien.
22 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 2 test systemen: fit & slim Fit –’classieke manier’: - wiki pagina wordt vertaald naar html en verstuurd naar de server. - de fitserver wordt opgestart en vertaald de html in fit commando’s - de fit commando’s voeren operaties op de fixtures uit - de fixtures voeren operaties uit op het system under test. Slim – ‘nieuwe manier’: - wiki pagina wordt vertaald in een set van fit instructies en naar de server gestuurd - slim executor voert operaties uit op de fixtures Voordeel slim: fixture code geen afhankelijkheid met fitnesse. (niks subclasses of annotaties) kleiner, lichter protocol. Makkelijk te porten naar ander platform. (Er is ondersteuning voor o.a. .Net, C++, Python, Ruby) interpretatie wiki en tonen test resultaat dmv slimrunners.

23 FitNesse De volledige testpagina.
23 Je 'OptellenTest' pagina ziet er nu zo uit en is volledig voor FitNesse om de test uit te voeren. Klik nu op 'Test' in het menu. 2 test systemen: fit & slim Fit –’classieke manier’: - wiki pagina wordt vertaald naar html en verstuurd naar de server. - de fitserver wordt opgestart en vertaald de html in fit commando’s - de fit commando’s voeren operaties op de fixtures uit - de fixtures voeren operaties uit op het system under test. Slim – ‘nieuwe manier’: - wiki pagina wordt vertaald in een set van fit instructies en naar de server gestuurd - slim executor voert operaties uit op de fixtures Voordeel slim: fixture code geen afhankelijkheid met fitnesse. (niks subclasses of annotaties) kleiner, lichter protocol. Makkelijk te porten naar ander platform. (Er is ondersteuning voor o.a. .Net, C++, Python, Ruby) interpretatie wiki en tonen test resultaat dmv slimrunners.

24 FitNesse OptellenTest - resultaat
24 Na het uitvoeren van de test door FitNesse, ver- wachten we het volgende test resultaat. Simpel voorbeeld van een optel functie. - Optellen.java is de fixture die door fitnesse wordt aangeroepen. - Iedere rij wordt aan de fixture gevoed. - De fixture zal de operatie op het sut - Fixture zal het resultaat retourneren aan de slim runner - De slim runner zal het verwachte resultaat vergelijken met werkelijke resultaat

25 FitNesse Gebruik van import fixture
25 Het is extra werk om telkens het java package op te nemen. We kunnen hiervoor de build-in fixture ‘Import' gebruiken. 2 test systemen: fit & slim Fit –’classieke manier’: - wiki pagina wordt vertaald naar html en verstuurd naar de server. - de fitserver wordt opgestart en vertaald de html in fit commando’s - de fit commando’s voeren operaties op de fixtures uit - de fixtures voeren operaties uit op het system under test. Slim – ‘nieuwe manier’: - wiki pagina wordt vertaald in een set van fit instructies en naar de server gestuurd - slim executor voert operaties uit op de fixtures Voordeel slim: fixture code geen afhankelijkheid met fitnesse. (niks subclasses of annotaties) kleiner, lichter protocol. Makkelijk te porten naar ander platform. (Er is ondersteuning voor o.a. .Net, C++, Python, Ruby) interpretatie wiki en tonen test resultaat dmv slimrunners.

26 FitNesse Gebruik van import fixture
26 Klik op 'Edit' in het menu en wijzig de wiki tekst in het volgende: Java package is verdwenen en verplaatst naar de import fixture. 2 test systemen: fit & slim Fit –’classieke manier’: - wiki pagina wordt vertaald naar html en verstuurd naar de server. - de fitserver wordt opgestart en vertaald de html in fit commando’s - de fit commando’s voeren operaties op de fixtures uit - de fixtures voeren operaties uit op het system under test. Slim – ‘nieuwe manier’: - wiki pagina wordt vertaald in een set van fit instructies en naar de server gestuurd - slim executor voert operaties uit op de fixtures Voordeel slim: fixture code geen afhankelijkheid met fitnesse. (niks subclasses of annotaties) kleiner, lichter protocol. Makkelijk te porten naar ander platform. (Er is ondersteuning voor o.a. .Net, C++, Python, Ruby) interpretatie wiki en tonen test resultaat dmv slimrunners. Klik na de aanpassingen op de 'Save' button.

27 FitNesse Gebruik van import fixture
27 Het resultaat zal eruit zien zoals de afbeelding hiernaast. 2 test systemen: fit & slim Fit –’classieke manier’: - wiki pagina wordt vertaald naar html en verstuurd naar de server. - de fitserver wordt opgestart en vertaald de html in fit commando’s - de fit commando’s voeren operaties op de fixtures uit - de fixtures voeren operaties uit op het system under test. Slim – ‘nieuwe manier’: - wiki pagina wordt vertaald in een set van fit instructies en naar de server gestuurd - slim executor voert operaties uit op de fixtures Voordeel slim: fixture code geen afhankelijkheid met fitnesse. (niks subclasses of annotaties) kleiner, lichter protocol. Makkelijk te porten naar ander platform. (Er is ondersteuning voor o.a. .Net, C++, Python, Ruby) interpretatie wiki en tonen test resultaat dmv slimrunners.

28 FitNesse Special pages
28 O.a.: SetUp & TearDown Subwiki’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.

29 FitNesse Optimalizeren van FitNesse.
29 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. 2 test systemen: fit & slim Fit –’classieke manier’: - wiki pagina wordt vertaald naar html en verstuurd naar de server. - de fitserver wordt opgestart en vertaald de html in fit commando’s - de fit commando’s voeren operaties op de fixtures uit - de fixtures voeren operaties uit op het system under test. Slim – ‘nieuwe manier’: - wiki pagina wordt vertaald in een set van fit instructies en naar de server gestuurd - slim executor voert operaties uit op de fixtures Voordeel slim: fixture code geen afhankelijkheid met fitnesse. (niks subclasses of annotaties) kleiner, lichter protocol. Makkelijk te porten naar ander platform. (Er is ondersteuning voor o.a. .Net, C++, Python, Ruby) interpretatie wiki en tonen test resultaat dmv slimrunners.

30 FitNesse Optimalizeren van FitNesse - root pagina.
30 2 test systemen: fit & slim Fit –’classieke manier’: - wiki pagina wordt vertaald naar html en verstuurd naar de server. - de fitserver wordt opgestart en vertaald de html in fit commando’s - de fit commando’s voeren operaties op de fixtures uit - de fixtures voeren operaties uit op het system under test. Slim – ‘nieuwe manier’: - wiki pagina wordt vertaald in een set van fit instructies en naar de server gestuurd - slim executor voert operaties uit op de fixtures Voordeel slim: fixture code geen afhankelijkheid met fitnesse. (niks subclasses of annotaties) kleiner, lichter protocol. Makkelijk te porten naar ander platform. (Er is ondersteuning voor o.a. .Net, C++, Python, Ruby) interpretatie wiki en tonen test resultaat dmv slimrunners. Link onderaan pagina opent de 'root' wiki pagina. Klik op de link.

31 FitNesse Optimalizeren van FitNesse - root pagina.
31 Klik op 'Edit' in het menu. Voeg de twee onderstaande regels toe. Klik op de 'Save' button. 2 test systemen: fit & slim Fit –’classieke manier’: - wiki pagina wordt vertaald naar html en verstuurd naar de server. - de fitserver wordt opgestart en vertaald de html in fit commando’s - de fit commando’s voeren operaties op de fixtures uit - de fixtures voeren operaties uit op het system under test. Slim – ‘nieuwe manier’: - wiki pagina wordt vertaald in een set van fit instructies en naar de server gestuurd - slim executor voert operaties uit op de fixtures Voordeel slim: fixture code geen afhankelijkheid met fitnesse. (niks subclasses of annotaties) kleiner, lichter protocol. Makkelijk te porten naar ander platform. (Er is ondersteuning voor o.a. .Net, C++, Python, Ruby) interpretatie wiki en tonen test resultaat dmv slimrunners.

32 FitNesse Optimalizeren van FitNesse - root pagina.
32 De 'root' wiki pagina ziet er nu zo uit. De informatie geldt nu voor elke wiki test pagina. 2 test systemen: fit & slim Fit –’classieke manier’: - wiki pagina wordt vertaald naar html en verstuurd naar de server. - de fitserver wordt opgestart en vertaald de html in fit commando’s - de fit commando’s voeren operaties op de fixtures uit - de fixtures voeren operaties uit op het system under test. Slim – ‘nieuwe manier’: - wiki pagina wordt vertaald in een set van fit instructies en naar de server gestuurd - slim executor voert operaties uit op de fixtures Voordeel slim: fixture code geen afhankelijkheid met fitnesse. (niks subclasses of annotaties) kleiner, lichter protocol. Makkelijk te porten naar ander platform. (Er is ondersteuning voor o.a. .Net, C++, Python, Ruby) interpretatie wiki en tonen test resultaat dmv slimrunners.

33 FitNesse Optimalizeren van FitNesse – Toevoegen 'SetUp'.
33 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' 2 test systemen: fit & slim Fit –’classieke manier’: - wiki pagina wordt vertaald naar html en verstuurd naar de server. - de fitserver wordt opgestart en vertaald de html in fit commando’s - de fit commando’s voeren operaties op de fixtures uit - de fixtures voeren operaties uit op het system under test. Slim – ‘nieuwe manier’: - wiki pagina wordt vertaald in een set van fit instructies en naar de server gestuurd - slim executor voert operaties uit op de fixtures Voordeel slim: fixture code geen afhankelijkheid met fitnesse. (niks subclasses of annotaties) kleiner, lichter protocol. Makkelijk te porten naar ander platform. (Er is ondersteuning voor o.a. .Net, C++, Python, Ruby) interpretatie wiki en tonen test resultaat dmv slimrunners.

34 FitNesse Optimalizeren van FitNesse – 'SetUp' bewerken.
34 Klik op de 'SetUp' link op de homepagina. Klik 'Edit' in het menu. Voeg de onderstaande regels toe. Klik op de 'Save' button 2 test systemen: fit & slim Fit –’classieke manier’: - wiki pagina wordt vertaald naar html en verstuurd naar de server. - de fitserver wordt opgestart en vertaald de html in fit commando’s - de fit commando’s voeren operaties op de fixtures uit - de fixtures voeren operaties uit op het system under test. Slim – ‘nieuwe manier’: - wiki pagina wordt vertaald in een set van fit instructies en naar de server gestuurd - slim executor voert operaties uit op de fixtures Voordeel slim: fixture code geen afhankelijkheid met fitnesse. (niks subclasses of annotaties) kleiner, lichter protocol. Makkelijk te porten naar ander platform. (Er is ondersteuning voor o.a. .Net, C++, Python, Ruby) interpretatie wiki en tonen test resultaat dmv slimrunners.

35 FitNesse Optimalizeren van FitNesse – 'SetUp' resultaat.
35 De 'SetUp' wiki pagina ziet er nu zo uit. Deze wiki pagina wordt voor iedere FitNesse test uitgevoerd. We kunnen nu de inmiddels overbodige informatie uit de 'OptellenTest' FitNesse test verwijderen. 2 test systemen: fit & slim Fit –’classieke manier’: - wiki pagina wordt vertaald naar html en verstuurd naar de server. - de fitserver wordt opgestart en vertaald de html in fit commando’s - de fit commando’s voeren operaties op de fixtures uit - de fixtures voeren operaties uit op het system under test. Slim – ‘nieuwe manier’: - wiki pagina wordt vertaald in een set van fit instructies en naar de server gestuurd - slim executor voert operaties uit op de fixtures Voordeel slim: fixture code geen afhankelijkheid met fitnesse. (niks subclasses of annotaties) kleiner, lichter protocol. Makkelijk te porten naar ander platform. (Er is ondersteuning voor o.a. .Net, C++, Python, Ruby) interpretatie wiki en tonen test resultaat dmv slimrunners.

36 FitNesse Optimalizeren van FitNesse – Opschonen OptellenTest.
36 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. 2 test systemen: fit & slim Fit –’classieke manier’: - wiki pagina wordt vertaald naar html en verstuurd naar de server. - de fitserver wordt opgestart en vertaald de html in fit commando’s - de fit commando’s voeren operaties op de fixtures uit - de fixtures voeren operaties uit op het system under test. Slim – ‘nieuwe manier’: - wiki pagina wordt vertaald in een set van fit instructies en naar de server gestuurd - slim executor voert operaties uit op de fixtures Voordeel slim: fixture code geen afhankelijkheid met fitnesse. (niks subclasses of annotaties) kleiner, lichter protocol. Makkelijk te porten naar ander platform. (Er is ondersteuning voor o.a. .Net, C++, Python, Ruby) interpretatie wiki en tonen test resultaat dmv slimrunners. Klik op de 'Save' button.

37 FitNesse Optimalizeren van FitNesse – Opschonen OptellenTest.
37 De 'OptellenTest' pagina ziet er nu zo uit. Let op de automatisch toegevoegde 'SetUp' wiki. 2 test systemen: fit & slim Fit –’classieke manier’: - wiki pagina wordt vertaald naar html en verstuurd naar de server. - de fitserver wordt opgestart en vertaald de html in fit commando’s - de fit commando’s voeren operaties op de fixtures uit - de fixtures voeren operaties uit op het system under test. Slim – ‘nieuwe manier’: - wiki pagina wordt vertaald in een set van fit instructies en naar de server gestuurd - slim executor voert operaties uit op de fixtures Voordeel slim: fixture code geen afhankelijkheid met fitnesse. (niks subclasses of annotaties) kleiner, lichter protocol. Makkelijk te porten naar ander platform. (Er is ondersteuning voor o.a. .Net, C++, Python, Ruby) interpretatie wiki en tonen test resultaat dmv slimrunners.

38 FitNesse De gangbare werkwijze.
38 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. 2 test systemen: fit & slim Fit –’classieke manier’: - wiki pagina wordt vertaald naar html en verstuurd naar de server. - de fitserver wordt opgestart en vertaald de html in fit commando’s - de fit commando’s voeren operaties op de fixtures uit - de fixtures voeren operaties uit op het system under test. Slim – ‘nieuwe manier’: - wiki pagina wordt vertaald in een set van fit instructies en naar de server gestuurd - slim executor voert operaties uit op de fixtures Voordeel slim: fixture code geen afhankelijkheid met fitnesse. (niks subclasses of annotaties) kleiner, lichter protocol. Makkelijk te porten naar ander platform. (Er is ondersteuning voor o.a. .Net, C++, Python, Ruby) interpretatie wiki en tonen test resultaat dmv slimrunners.

39 FitNesse De fixture code en business methode nader bekeken.
39 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. 2 test systemen: fit & slim Fit –’classieke manier’: - wiki pagina wordt vertaald naar html en verstuurd naar de server. - de fitserver wordt opgestart en vertaald de html in fit commando’s - de fit commando’s voeren operaties op de fixtures uit - de fixtures voeren operaties uit op het system under test. Slim – ‘nieuwe manier’: - wiki pagina wordt vertaald in een set van fit instructies en naar de server gestuurd - slim executor voert operaties uit op de fixtures Voordeel slim: fixture code geen afhankelijkheid met fitnesse. (niks subclasses of annotaties) kleiner, lichter protocol. Makkelijk te porten naar ander platform. (Er is ondersteuning voor o.a. .Net, C++, Python, Ruby) interpretatie wiki en tonen test resultaat dmv slimrunners.

40 FitNesse De fixture code nader bekeken.
40 2 test systemen: fit & slim Fit –’classieke manier’: - wiki pagina wordt vertaald naar html en verstuurd naar de server. - de fitserver wordt opgestart en vertaald de html in fit commando’s - de fit commando’s voeren operaties op de fixtures uit - de fixtures voeren operaties uit op het system under test. Slim – ‘nieuwe manier’: - wiki pagina wordt vertaald in een set van fit instructies en naar de server gestuurd - slim executor voert operaties uit op de fixtures Voordeel slim: fixture code geen afhankelijkheid met fitnesse. (niks subclasses of annotaties) kleiner, lichter protocol. Makkelijk te porten naar ander platform. (Er is ondersteuning voor o.a. .Net, C++, Python, Ruby) interpretatie wiki en tonen test resultaat dmv slimrunners.

41 FitNesse De business methode nader bekeken.
41 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. 2 test systemen: fit & slim Fit –’classieke manier’: - wiki pagina wordt vertaald naar html en verstuurd naar de server. - de fitserver wordt opgestart en vertaald de html in fit commando’s - de fit commando’s voeren operaties op de fixtures uit - de fixtures voeren operaties uit op het system under test. Slim – ‘nieuwe manier’: - wiki pagina wordt vertaald in een set van fit instructies en naar de server gestuurd - slim executor voert operaties uit op de fixtures Voordeel slim: fixture code geen afhankelijkheid met fitnesse. (niks subclasses of annotaties) kleiner, lichter protocol. Makkelijk te porten naar ander platform. (Er is ondersteuning voor o.a. .Net, C++, Python, Ruby) interpretatie wiki en tonen test resultaat dmv slimrunners.

42 Selenium Stukje achtergrond
42 In een notendop: Selenium automatiseert browsers. Selenium levert een set van tools om tests uit te voeren tegen een webapplicatie. 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. Selenium IDE is een extensie voor Firefox. (Helaas geen andere browser support) Het stelt je in staat om gebruiker acties in een webapplicatie op te nemen en terug te spelen. Selenium Remote control, afstandbediening, stelt je instaat om elke gewenste taal tests script op te stellen die je kan laten uitvoeren tegen je webapplicatie in een browser. Selenium Grid, stelt je instaat om je tests gedistribueerd af te spelen over verschillende server. Dus tests in meerdere browsers op meerdere machines. Ik ga de Selenium IDE demonstreren. De andere twee vallen buiten de doelstelling van de presentatie.

43 Selenium Architectuur
43 SUT in een browser Selenium Server (web-acties op SUT) Selenium IDE is een extensie voor Firefox. (Helaas geen andere browser support) Het stelt je in staat om gebruiker acties in een webapplicatie op te nemen en terug te spelen. Selenium Remote control, afstandbediening, stelt je instaat om elke gewenste taal tests script op te stellen die je kan laten uitvoeren tegen je webapplicatie in een browser. Selenium Grid, stelt je instaat om je tests gedistribueerd af te spelen over verschillende server. Dus tests in meerdere browsers op meerdere machines. Ik ga de Selenium IDE demonstreren. De andere twee vallen buiten de doelstelling van de presentatie. Selenium Client Driver (programma code of selenium script)

44 Selenium Client Driver
Selenium - Fitnesse Architecture 44 Maken wij. com.neuri.webfixture.WebTest http(s) Selenium Client Driver Selenium server

45 Test applicatie starten. Selenium Server starten.
Selenium Oefening 1 – Selenium test schrijven 45 Opdrachten: Test applicatie starten. Selenium Server starten. FitNesse test opstellen.

46 Selenium Oefening 1 – Test applicatie starten
46 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. 2 test systemen: fit & slim Fit –’classieke manier’: - wiki pagina wordt vertaald naar html en verstuurd naar de server. - de fitserver wordt opgestart en vertaald de html in fit commando’s - de fit commando’s voeren operaties op de fixtures uit - de fixtures voeren operaties uit op het system under test. Slim – ‘nieuwe manier’: - wiki pagina wordt vertaald in een set van fit instructies en naar de server gestuurd - slim executor voert operaties uit op de fixtures Voordeel slim: fixture code geen afhankelijkheid met fitnesse. (niks subclasses of annotaties) kleiner, lichter protocol. Makkelijk te porten naar ander platform. (Er is ondersteuning voor o.a. .Net, C++, Python, Ruby) interpretatie wiki en tonen test resultaat dmv slimrunners.

47 Selenium Oefening 1 – Test applicatie starten
47 De test applicatie is nu bereikbaar op: Of gebruik de link ‘open_app’ op het bureaublad. 2 test systemen: fit & slim Fit –’classieke manier’: - wiki pagina wordt vertaald naar html en verstuurd naar de server. - de fitserver wordt opgestart en vertaald de html in fit commando’s - de fit commando’s voeren operaties op de fixtures uit - de fixtures voeren operaties uit op het system under test. Slim – ‘nieuwe manier’: - wiki pagina wordt vertaald in een set van fit instructies en naar de server gestuurd - slim executor voert operaties uit op de fixtures Voordeel slim: fixture code geen afhankelijkheid met fitnesse. (niks subclasses of annotaties) kleiner, lichter protocol. Makkelijk te porten naar ander platform. (Er is ondersteuning voor o.a. .Net, C++, Python, Ruby) interpretatie wiki en tonen test resultaat dmv slimrunners.

48 Selenium Opstarten Selenium Server
48 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) Optie Default -p <port#> 4444 2 test systemen: fit & slim Fit –’classieke manier’: - wiki pagina wordt vertaald naar html en verstuurd naar de server. - de fitserver wordt opgestart en vertaald de html in fit commando’s - de fit commando’s voeren operaties op de fixtures uit - de fixtures voeren operaties uit op het system under test. Slim – ‘nieuwe manier’: - wiki pagina wordt vertaald in een set van fit instructies en naar de server gestuurd - slim executor voert operaties uit op de fixtures Voordeel slim: fixture code geen afhankelijkheid met fitnesse. (niks subclasses of annotaties) kleiner, lichter protocol. Makkelijk te porten naar ander platform. (Er is ondersteuning voor o.a. .Net, C++, Python, Ruby) interpretatie wiki en tonen test resultaat dmv slimrunners.

49 Selenium Oefening 1 – Selenium Server starten
49 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. 2 test systemen: fit & slim Fit –’classieke manier’: - wiki pagina wordt vertaald naar html en verstuurd naar de server. - de fitserver wordt opgestart en vertaald de html in fit commando’s - de fit commando’s voeren operaties op de fixtures uit - de fixtures voeren operaties uit op het system under test. Slim – ‘nieuwe manier’: - wiki pagina wordt vertaald in een set van fit instructies en naar de server gestuurd - slim executor voert operaties uit op de fixtures Voordeel slim: fixture code geen afhankelijkheid met fitnesse. (niks subclasses of annotaties) kleiner, lichter protocol. Makkelijk te porten naar ander platform. (Er is ondersteuning voor o.a. .Net, C++, Python, Ruby) interpretatie wiki en tonen test resultaat dmv slimrunners.

50 Selenium Oefening 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'

51 Selenium Oefening 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.

52 Selenium Oefening 1 – FitNesse test toevoegen.
52 De ‘WebTest' wiki pagina ziet er nu (deels) zo uit.

53 Selenium Oefening 1 – FitNesse test nader bekeken.
53

54 Selenium Oefening 1 – FitNesse test nader bekeken.
54

55 Selenium Hoe vindt Selenium elementen?
55 <a href="…" id="b-AAPL">

56 Selenium Oefening 1 – FitNesse test afspelen.
56

57 Selenium Opschonen WebTest.
57 Deze definities zijn specifiek voor Selenium tests. Je kan ze opnemen in een aparte ‘SetUp’ voor Selenium Tests. Deze kunnen mooi naar ‘root’ wiki pagina.

58 Websites en literatuur:
58 Links: FitNesse: FitNesse tutorial: Selenium: WebTest: FitNesse tutorials: Agile tools: FitLibrary: Literatuur: FIT for Software Development

59 59


Download ppt "Workshop FitNesse & Selenium"

Verwante presentaties


Ads door Google