JOSFs blog - deel 2 - de features

woensdag 26 mei 2021



Wie is JOSF?

JOSF is de naam van onze testautomatiseringsrobot. Een robot waarmee testautomatisering voor iedereen mogelijk wordt. JOSF staat voor Java Object Selenium Framework en bevat technieken die zich al hebben bewezen. Testen automatiseren met de kracht van open source, zonder programmeerkennis.

Het ontstaan van JOSF

Het eerste idee ontstond omdat elke klant die aan de slag wilde met testautomatisering en open source een eigen framework bouwde. Steeds weer vergelijkbare frameworks bouwen, vaak niet helemaal netjes volgens een architectuur. Dat kon beter vonden wij. Zo ontstond Testautomaat, de voorganger van JOSF. Een kant en klaar framework dat bij elke klant gebruikt kon worden.

Toen Selenium IDE wegviel (wat veel werd gebruikt als niet-technische oplossing) ontstond het idee voor JOSF. Old idea, New IDE, met als basis Testautomaat. Om het snel gebruiksvriendelijk te maken kozen we Drupal CMS voor de front-end. Schermen waren snel gemaakt en voor we het wisten konden we geautomatiseerde testen op een gemakkelijke manier maken.

Het grote nadeel van Drupal was dat elke keer meer dan 700mb aan software meegeleverd moest worden. En als Drupal weer een nieuwe versie had, dan moesten wij daar ook wat mee. We besloten om van Drupal af te stappen en met Angular onze eigen front-end te bouwen.

Wat kan JOSF?

We breiden JOSF continue uit met nieuwe functionaliteit. Daarin houden we rekening met de best practices, klantwensen en de ontwikkelingen in de open source wereld. Met als doel om testautomatisering voor iedereen mogelijk te maken. We nemen je mee in de belangrijkste features van JOSF.

Dashboard

In onze nieuwe JOSF (2.8) versie (binnenkort beschikbaar), hebben we een nieuw dashboard gebouwd. Dit dashboard laat onder andere zien hoeveel testen, ten opzichte van het aantal uitgevoerde testen, de afgelopen maand gefaald zijn. Dit geeft mooi de kwaliteit van de applicaties weer over een langere periode. Daarnaast zie je in het overzicht de laatste vijf gerunde playbooks en jouw vijf favoriete playbooks. Vanuit deze basis breiden we het dashboard steeds meer uit.

TestCases

Eén van de plekken om jouw testcases te automatiseren. Keyword driven. En door onze krachtige debug modus wordt het maken van je testen ook nog eens makkelijk. Wat dacht je van stap voor stap door je geautomatiseerde test lopen, breakpoints kunnen plaatsen of gewoon een debug modus opstarten en aan de slag gaan met waar je was gebleven.

In JOSF geef je drie dingen aan: de action name, het object en de data. De acties hebben wij al voor je gebouwd en bestaan onder andere uit het openen van de browser, het klikken op een element en het verifiëren van tekst. We hebben er meer dan vijftig gemaakt. En wil je er zelf één aan toevoegen? Geen probleem. Je kan zelf je eigen acties maken.

Het object is het element op de webapplicatie dat je aan wilt sturen. Met verschillende locators zoals ID, ClassName, cssSelector en Xpath kun je aangeven hoe het object te vinden is. Om de juiste locator te vinden hebben wij een page scanner gemaakt. Je ziet dan meteen hoe uniek het gevonden object is.

In het dataveld kun je aangeven welke data de actie moet gebruiken tijdens het uitvoeren. Dit kan statische data zijn of data uit een variabele. Omdat het mogelijk is om variabele te gebruiken is het ook mogelijk om een testcase data driven te maken. Maak een data storage aan in JOSF, koppel deze aan de testcase en run je testen. Wil je de data liever beheren in een Excel bestand? Dan kan deze geïmporteerd worden. Exporteren kan natuurlijk ook.

Gherkin

Een andere mogelijkheid om jouw testen te automatiseren is met feature files en step definitions. Gherkin, wie kent het niet? De syntax die gebruikt wordt bij Cucumber en Specflow. Deze syntax hebben wij ook geïntegreerd in JOSF. Schrijf scenario’s aan de hand van de Given, When, Then syntax en geef per stap, de step definitions, aan welke keywords er uitgevoerd moeten worden. Wil je deze geautomatiseerde testen data driven maken? Dan gebruik je daar de Gherkin standaard ‘Scenario Outline’ voor.

Pages & Objects

POM, ook wel Page Object Model. Een veel gebruikte ‘design pattern’ om de pagina objecten te beheren. Wij hebben het voor het gemak ‘pages & objects’ genoemd. Hier kan je per pagina alle objecten definiëren zodat er herbruikbare objecten ontstaan. Daarnaast kan je met deze objecten weer ‘page actions’ maken, zodat hiervoor weer herbruikbare componenten ontstaan. Deze herbruikbare componenten en objecten kunnen heel gemakkelijk in de geautomatiseerde testcases gebruikt worden. Zo beheer je alles op één plek en creëer je snel nieuwe testcases.

API

De testautomatisering piramide. Voor velen een bekende strategie. Automatiseer zoveel mogelijk testen op de unitlaag, automatiseer de integratietesten op API-laag en zo weinig mogelijk de acceptatietesten op UI-laag. Toch zie je vaak dat er alleen testen op de UI-laag worden gedaan. Enerzijds omdat de tool of framework alleen het automatiseren van deze laag ondersteunt. Anderzijds omdat vaak wordt gedacht vanuit het handmatig testen via de UI. Het ziet er daarnaast ook nog eens leuk uit.

Wij vinden echter dat er meer testen op de API-laag gedaan moeten worden. Daarom hebben we het mogelijk gemaakt om API’s te testen met JOSF. Je kan een swagger of wsdl-bestand inladen en de verschillende requests worden voor je klaar gezet. Maak daarna verschillende berichten aan, maak de waardes variabel en gebruik ze in jouw geautomatiseerde testen. Even valideren of de response correct is of bepaalde waardes opslaan in een variabele voor het volgende bericht en je hebt jouw API-test geautomatiseerd.

Playbook

Als je jouw testen geautomatiseerd hebt, dan moeten deze natuurlijk ook uitgevoerd worden. Het liefst gebundeld, zodat je setjes aan testen uit kan voeren wanneer dat noodzakelijk is. Daarvoor hebben we de playbooks bedacht. Nadat je een playbook hebt aangemaakt kun je daaronder verschillende playlists aanmaken. Met deze playlists kan je volgorde aanbrengen in de uit te voeren testen. Bijvoorbeeld eerst een playlist met pre-condities, daarna de geautomatiseerde testen en afsluiten met een playlist met de post-condities. Bij elke playlist geef je met tags aan welke testen toegevoegd moeten worden. Bij elke testcase of feature file is het namelijk mogelijk om meerdere tags op te slaan om aan te geven waar deze test toe behoort. Denk daarbij aan een regressietest, een smoketest, een test om een bepaald gedeelte van de applicatie testen of om aan te geven bij welke user story de test hoort. Het kan natuurlijk ook een test zijn om testdata klaar te zetten. Na het creëren van de playlist is het mogelijk om te controleren of alle testen correct zijn gekoppeld. Nu is het een kwestie van op de play knop klikken om alle verzamelde testen door JOSF uit te laten voeren.

Omgevingenbeheer

De welbekende OTAP straat. Elke omgeving een andere url en user credentials. Daarnaast misschien nog wel omgevingsafhankelijke configuratie. Wil je de testen op verschillende omgevingen uitvoeren dan kan dit nog wel eens voor een probleem zorgen. In JOSF is het mogelijk om eerst een omgeving te definiëren en dan voor die omgeving aan te geven welke omgevingsspecifieke data er allemaal nodig is. Deze gegevens worden voor je in een variabele gezet die je weer kan gebruiken in je geautomatiseerde testen. Bij het openen van een url geef je niet meer de volledige url op, maar verwijs je heel simpel naar de variabele. In JOSF kan je aangeven op welke omgeving je uiteindelijk de testen uit wilt voeren.

Multi browser

In JOSF is het mogelijk om jouw testen op elke browser uit te voeren. Standaard hebben we alvast Firefox, Internet Explorer, Chrome en Chrome headless toegevoegd. In onze nieuwste versie controleert JOSF meteen of de nieuwste versie van jouw browser is geïnstalleerd. Als dat zo is worden automatisch de bijbehorende webdrivers gedownload. Ook is het mogelijk om een connectie te maken met bijvoorbeeld Sauce Labs en per connectie aan te geven op welke machine, met welke OS en met welke browser je de testen uit wilt voeren.

CI/CD

Last but not least een CI/CD integratie. JOSF beschikt over een command line interface. Daarmee kun je JOSF aansturen via een commando. Met dit commando is het mogelijk om aan te geven welke playbook je op welke omgeving, met welke browser uit wilt voeren. De command line interface kan je vanuit bijvoorbeeld een pipeline tool zoals Jenkins of AzureDevops aanspreken. Zodra JOSF klaar is met het uitvoeren van de testen geeft de command line interface de resultaten terug en wordt er een jUnit-bestand gecreëerd. Met het jUnit-bestand kunnen de resultaten ook worden getoond in de pipeline.

Zelf met JOSF aan de slag?

JOSF bestaat uit een betaalde en een gratis variant. Uiteindelijk willen we testautomatisering voor iedereen beschikbaar maken. De functionaliteit om jouw UI-testen te automatiseren is gratis te gebruiken. Zo kan je pages & objects maken, de UI testen automatiseren, testen uitvoeren op verschillende browsers via de playbooks en gebruik maken van omgevingenbeheer. Wil je ook met API-testen en met CI/CD aan de slag? Dan heb je JOSF Pro nodig. Zo kunnen wij JOSF verder blijven ontwikkelen.

Ben je geïnteresseerd in wat JOSF voor jou kan betekenen? Neem dan contact op met Stephan Dijkman of stuur een mailtje naar josf@valori.nl en wie weet spreken we elkaar snel.


Heb je de eerste blog al gelezen? JOSFs Blog 1 - van innovatie naar idee

Wil je meteen zelf met JOSF aan de slag? Download JOSF hier

Download JOSF