Deel 8 - De top tools anno nu

Dit is een controversiële aflevering. Ik ga namelijk namen en rugnummers noemen. Van de beste tools anno nu. Dat is a. een momentopname en b. 'slechts' onze mening. Nou ja, 'slechts' ik heb een hoge pet op van de mening van Valori, want die is natuurlijk wel ergens op gebaseerd. Maar ja, het commentaar dat ik belangrijke tools vergeet zal niet van de lucht zijn. Ik ben benieuwd!

Eerst nog even dit: Bob van Zeist is een ouwe rot in ons vak en een nieuwe volger van de podcast. Deze week zei hij tegen me: je verhaal staat als een huis, erg compleet, goede inhoud. Ik begon al te blozen en iets te mompelen als 'och, het mag geen naam hebben...'. Maar hij ging verder, 'maaaar, zei hij "Het is meer een luisterboek, ik mis ik de 'fun' die bij mijn favoriete podcasts altijd aanwezig is (en waardoor het blijft hangen). Die kwam wel binnen natuurlijk, want hij heeft helemaal gelijk. Dit is inderdaad een luisterboek via het podcast kanaal. In aflevering 5 heb ik al uitgelegd dat dat een bewuste keuze is, maar ook aangekondigd dat die live interviews, gesprekken en groepsruzies echt nog gaan komen. Dus dat gaan we doen en na de vakantie ga je meer stemmen horen dan de mijne. Misschien wel die van Bob, over Sapienz met een z, van facebook. Waanzinnig interessant wat ze daar doen met AI, genetische algoritmes en automated testing.

Maar nu nog even de gewone tools en nog één keer mijn solo stem.

Tools en toolbeleid

We gaan een aantal verschillende tool-categorien langs. Ik zal elke categorie kort introduceren en dan een aantal namen noemen waar je ons inziens zeker naar moet kijken.

Maar let op, disclaimer disclaimer: de universele tool bestaat niet.

Laten we beginnen met tools voor ontwikkelaars, en daarna kijken naar tools voor niet-ontwikkelaars:

Tools voor ontwikkelaars

Even een taaldingetje: ontwikkelaar is de letterlijke vertaling van developer. Daarmee bedoel ik de bouwers, programmeurs en softwarespecialisten. Iedereen dus die dicht bij de code en de techniek zit. Geef die ontwikkelaars (ze zitten tegenwoordig meestal in Scrum teams) veel vrijheid bij het zelf kiezen van de best passende tools. Vrijwel altijd kiezen zij gratis open source tools óf tools die horen bij hun ontwikkelomgeving. In een .NET omgeving zullen de teams waarschijnlijk met Azure DevOps werken en onder andere de Microsoft test tools hanteren. In een Java omgeving gelden weer andere voorkeurtools.

Voor een ontwikkelaar heeft een fraaie en gebruiksvriendelijke userinterface nauwelijks voordelen. Integendeel, tools zonder GUI maar met een basic command-line interface passen makkelijker in geautomatiseerde continuous integration frameworks met Jenkins, Bamboo, TeamCity of vergelijkbare tooling.

Dus geef ze alle vrijheid om de tools te downloaden die bij hun omgeving en hun voorkeur passen. Máár, laat ze om wildgroei te voorkomen hun keuze wel uitleggen, bijvoorbeeld aan een testgilde of community die organisatiebreed meedenkt en een vinger aan de pols houdt.

Populaire ontwikkelaartools

Gratis open source tools hebben een sterke positie, vooral voor unit testen. Ze komen het best tot hun recht in handen van ervaren ontwikkelaars en bieden meestal niet de breedte die betaalde tools bieden. Maar ook dat staat niet stil en inmiddels zien we ook open source tools hoger in het W-model en de testpiramide, zoals Protractor.

Enkele populaire tools:

1. Selenium WebDriver - de grote klassieker! Een open source tool voor testen via de browserinterface. Is op zichzelf nogal kaal, en een framework eromheen verdient aanbeveling. Een voorbeeld van zo'n framework is JOSF.

Anekdote, waar komt de naam Selenium vandaan?

Dat is een leuk verhaal en ik dacht dat iedereen dat wel kende, maar gek genoeg blijkt dat niet zo te zijn, zelfs niet onder de grootste Selenium fans. Hier komt 'ie:

Toen de makers van open source tool Selenium een naam zochten was Mercury Interactive de (nogal arrogante) Israelische marktleider op het gebied van test tools. Daar wilden ze zich graag tegen afzetten. Nou, mercury is de Engelse naam voor het giftige kwik en bij een kwikvergiftiging moet je Selenium slikken. Vandaar ...

De Mercury test automation tools zoals Winrunner en Loadrunner zijn later overgenomen door HP, die het in 2016 weer heeft overgedaan aan Micro Focus, die eerder ook Borland (SilkTest) overnam.

2.     Cypress - een Selenium alternative, is laagdrempeliger en gaat meer richting een framework. Maar biedt weer iets minder vrijheid en opties voor ervaren ontwikkelaars

3.     JUnit - klassieker en blijver onder Java-ontwikkelaars en -testers. NUnit is de variant voor .NET omgevingen.

4.     Protractor - van Google, populair voor het testen van Angular en AngularJS front-ends

5.     Robot Framework - krachtig, keyword driven, python based, werkt met o.a. Selenium

Tools voor API testen

Dit zijn de tools in het middendeel van de testpiramide. Zij slaan de GUI over en praten via de 'Application Program Interface' met het doelsysteem. Dat gaat via serviceberichten, die als het via het web gaat 'webservices' worden genoemd. Het berichtenverkeer gaat via standaard protocollen, waarvan SOAP en REST de meest bekende zijn.

Veelgebruikte tools in deze categorie zijn:

1.       SoapUI van SmartBear - kent een open source versie en een betaalde Pro versie

2.       SOA test van Parasoft - zeer compleet, met krachtige AI en machine learning

3.       Postman - veelgebruikte populaire tool voor ontwikkelaars én testers

4.       RestAssured - voor REST services in een Java omgeving, met BDD support

5.       JMeter - performancetesten én API testen

6.       Tosca - behalve GUI testen ook API testen

Gebruikerstools

Soms is de toolset van de ontwikkelaars voldoende en maken ook niet-ontwikkelaars daar gebruik van. Maar vanuit gebruikersperspectief ligt een breed inzetbare functionele test tool voor E2E ketentesten bovenin de testpiramide meer voor de hand. Voor gebruik daar is een fraaie en gebruiksvriendelijke userinterface wél een groot voordeel.

Populaire betaalde tools voor niet-ontwikkelaars

Onderzoeksbureau Gartner actualiseert regelmatig hun zogenaamde 'Magic Quadrant voor test automation tools'. Daarin vind je alleen de commerciele, betaalde tools. De laatste update is van november 2018 en die hebben we naast de Valori praktijk en onze ervaringen in de Nederlandse markt gelegd. Daarmee komen we op het volgende lijstje van breed inzetbare tools voor niet-ontwikkelaars:

1.     Tosca van Tricentis : compleet, repository based, 'codevrij' testen componeren

2.     Micro Focus UFT (voorheen HP Quick Test Pro) en Silk Test (voorheen Borland)

3.     IBM-Rational: sterke CI en DevOps support

4.     Eggplant - technologie onafhankelijk door slimme beeldherkenning en OCR

5.     ICTestAutomation van Trendic: idem, op basis van de CitraTest engine

Deze tools bieden een rijke functionaliteit, veel integratiemogelijkheden[1] en brede inzetbaarheid, ook in handen van niet-ontwikkelaars. Het kost wat, maar dan heb je ook wat.

In hetzelfde rijtje horen de volgende tools thuis, met de kanttekening dat ze traditioneel meer op ontwikkelaars en integratie met het ontwikkelproces en continuous integration zijn gericht:

1.     Microsoft - De complete .NET IDE, inclusief testsupport in Visual Studio en Azure DevOps (voorheen TFS, VSTS).

2.     Ranorex - ook .NET focus, betaalbaar alternatief

3.     Smartbear - Testcomplete: sterk in keyword-driven testing, veel integratiemogelijkheden)

Tools voor mobile testing

Voor het testen van mobiele applicaties zijn er ook genoeg mogelijkheden, bijvoorbeeld als onderdeel van of add-on bij de besproken tools.

Daarnaast zijn er tools die zich primair richten op mobile testing. Bekende gespecialiseerde voorbeelden daarvan zijn:

1.     Appium - kort door de bocht: Selenium voor mobile apps. IOS en Android.

2.     Sauce labs - sterk in testen via de cloud, met zowel echte devices als hardware-emulators en simulators

3.     Micro Focus Mobile Center - vergelijkbaar, voormalig HP

4.     Microsoft Visual Studio App Center, met het Xamarin cross-browser ontwikkel- en testplatform

Geautomatiseerd performance-, load- en stresstesten

Tot nutoe ging het vooral over tools voor functioneel testen. Maar we hebben al vastgesteld dat ook de manier waarop die functionaliteit wordt geboden belang is. We willen het ook snel, veilig, vriendelijk, enzovoort. De non-functionals dus.

Ook hier is het tool-aanbod riant, zeker voor performancetesten. Logisch, want functioneel testen kun je handmatig doen, maar het simuleren van grote aantallen gelijktijdige gebruikers of het aanbieden van grote hoeveelheden data is handmatig niet te doen. Toolondersteuning is hier dan ook geen optie maar noodzaak.

Met de termen performancetesten en loadtesten bedoelen we meestal het aanbrengen van een belasting die we in de praktijk ook verwachten. Als dat gedurende lange tijd gebeurt heet het reliability testen, soak testen of endurance testen. Stresstesten of piektesten is het bewust overschríjden van deze limieten om te kijken hoe het systeem zich daaronder gedraagt en vervolgens weer herstelt. Oftewel gaat het gecontroleerd door de knieën ( op z'n engels: 'graceful degradation') en komt het als de belasting wegvalt weer in de oude staat terug. Blijvend verminkte databases of foutieve transacties mogen zelfs bij extreme overbelasting niet voorkomen.

De gespecialiseerde tools bieden allerlei voorzieningen om grote aantallen gelijktijdige gebruikers te simuleren en daarmee in de tijd variërende belasting profielen aan te bieden. Dat kan helemaal 'in huis', maar de gewenste bulkbelasting kan ook via de cloud worden gehuurd of gekocht. Dit soort 'Performance Validatie Services' is vaak goedkoper dan wanneer alle benodigde licenties moeten worden aangeschaft.

Voorbeelden van grote merken in tools voor performancetesten zijn:

1.     Loadrunner van Micro Focus (voorheen van HP) - dat was decennialang met afstand dé tool met nog steeds de grootste range aan ondersteunde protocollen

2.     Neoload van Neotys - komt dicht in de buurt van Loadrunner, volgens velen beter

3.     AppDynamics van Cisco - performance testing & monitoring, ook mobile

4.     Webload van Radview - specifiek voor webapplicaties

Ook hier zijn goedkope alternatieven beschikbaar in de open-source hoek, zoals:

5.     JMeter - sinds 1998 dé performance tool in de Java community, inmiddels groot en zeer compleet en zelfs aanbevolen door Microsoft

Microsoft hád overigens zelf iets goeds: Visual Studio Load Test. Perfecte tool, maar ondergewaardeerd en helaas discontinued na Visual Studio 2019

6.     Gatling - niet voor niets populair, maar minder uitgebreid dan Jmeter. Geen GUI, past goed in een CI-pipeline en is mede daarom soms de betere keuze voor ontwikkelaars

Deze performance tools uit de open source hoek zijn verrassend krachtig en prima inzetbaar. Waar ze soms achterblijven zijn de monitors die gedurende de metingen allerlei grootheden in het doelsysteem registreren. Plus de analysefaciliteiten om uit die grootheden ook echt informatie te kunnen halen.

Performancetesten, met name het analyseren en repareren van performance bottlenecks, is een discipline apart, waarvoor een behoorlijke dosis technische knowhow vereist is. Onderschat dit niet, ook niet de kosten van de bijbehorende experts. De kosten van aanschaf van een goede tool kunnen hierbij in het niet vallen.

Tools voor Security testen

Zonder in details te vervallen doe ik ook hier graag nog enkele toolsuggesties. Security tools kunnen prima helpen om een basisniveau van security te waarborgen en valideren.

Maar bedenk wel: in de wapenwedloop tussen ethical hackers en criminal hackers zal menselijke intelligentie en creativiteit altijd een hoofdrol houden.

De toolnamen bieden gelijk een mooie sfeerimpressie van het taaltje in de (ethical) hackers community ??.

  1. OWASP-checkers - ZAP (populair!), Webscarab, Acunetix, SQL injectors
  2. Attack en Denial of Service tools - LOIC, XOIC, HULK, R-U-Dead-Yet
  3. Penetratietesten - Metasploit, Wireshark, Acunetix, W3AF
  4. 'Brute force' password hackers - Aircrack-NG, John the Ripper, Rainbow Crack

Je snapt het wel, dit deed ik niet in de hoop dat je deze namen gaat onthouden, maar gewoon voor de fun.

Wat je misschien wel wilt onthouden of allang weet is de OWASP top-10 checklist. OWASP staat voor 'Open Web Application Security Project' en hun regelmatig geactualiseerde checklist benoemt de 10 meest voorkomende kwetsbaarheden. Het is een belangrijk referentiekader bij security testen.

Meer tools

Tot slot: naast geautomatiseerd testen kunnen tools op veeeel meer fronten helpen. Vooral de betaalde tools hebben voorzieningen voor test management, requirements management en beheer van test cases en test data.

Daarnaast zijn er talloze tools voor specifieke taken. Een universeel hulpmiddel zijn uiteraard spreadsheets. Excel kan voor zo ongeveer alles worden ingezet. Spreadsheets zijn qua onderhoud en beheer natuurlijk uiterst berucht, dat is waar. Maar ze zijn wel heel flexibel en om heel eerlijk te zijn: ik ben veel adaptiever en agile met mijn zelf gebouwde Valori SmartSCRIPT tool dan met de grote dure test management tools van IBM, Micro Focus of Microsoft.

Maar ik gebruikte dan ook al Excel toen Bill Gates nog software voor Apple maakte en mensen een Apple kochten omdat ze met Excel wilden werken. Ja ja, mijn dochter Muriël studeert ook geschiedenis, de appel valt niet ver van de boom.

Als je die SmartSCRIPT tool eens wilt proberen: je vindt hem onder Tools en templates op www.smartest.nl (met 1 t in het midden).