DevOpsPester – Het test framework voor PowerShell

Pester – Het test framework voor PowerShell

In de wereld van ontwikkelaars wordt al jaren gebruik gemaakt van het geautomatiseerd testen van de geschreven code. Het automatisch testen zorgt ervoor dat er over de geschreven code beter wordt nagedacht en bugs sneller ontdekt worden, de code kwaliteit wordt verhoogd en daardoor de code veiliger wordt. Voor PowerShell bestaat ook zo’n framework genaamd Pester. Dit is een framework gebaseerd op Behaviour Driven Development (BDD). Met BDD geef je in simpele leesbare termen aan wat je verwacht dat de uitkomst is van de test. Pester is standaard beschikbaar in Windows 10, maar om de laatste versie te kunnen gebruiken, is het aan te raden om het volgende commando uit te voeren:

Install-Module Pester -Force –SkipPublisherCheck

De –Force flag wordt gebruikt om Pester te updaten van versie 3 naar de laatste versie. Zonder de flag –SkipPublisherCheck kan de nieuwe versie niet geïnstalleerd worden, omdat Pester geen Microsoft product is, maar de standaardversie wel met een Microsoft certificaat is geplaatst.

Een aantal voorbeelden
Als eerste voorbeeld hebben we een eenvoudige PowerShell calculator functie geschreven. Met de functie kunnen we basis calculaties doen op basis van 2 getallen. Deze functie is opgeslagen in Demo.ps1.

Pester – Het test framework voor PowerShell

Om de functie te testen is de volgende Pester test geschreven. Deze test is opgeslagen in Demo.tests.ps1.

Pester – Het test framework voor PowerShell

Omdat het script en het testscript dezelfde naam hebben, koppelt Pester de bestanden automatisch aan elkaar. Om Pester aan te roepen gebruiken we het volgende commando:
Invoke-Pester
Als je 1 specifieke test uit het testscript wilt runnen, kan je een filter opgeven. In dit geval wordt het als volgt opgegeven
Invoke-Pester -FullNameFilter “Start-Calc”
Pester 5 laat standaard alleen de tests zien die mislukt zijn. Omdat we alle resultaten willen zien, voegen we er nog 1 commando aan toe
Invoke-Pester -FullNameFilter “Start-Calc” -Show all

Wat je in deze test ziet gebeuren, is dat we alle manieren van calculeren aanroepen en de juiste uitkomst verwachten. Ook wordt er gecontroleerd of een foutieve invoer netjes wordt afgehandeld. Deze test geeft het volgende resultaat:

Pester – Het test framework voor PowerShell

Pester laat zien welke test fout is gegaan en waarom. Ook worden de regelnummers uit het testscript en het script meegegeven zodat het vinden van de regel waar de test fout is gegaan eenvoudig is.

Als tweede voorbeeld gaan we een string omzetten naar een array. Vervolgens controleren we met Pester of de waardes aanwezig zijn.

Pester – Het test framework voor PowerShell

Pester – Het test framework voor PowerShellNa het draaien van het volgende commando hebben we resultaat.
invoke-pester -FullNameFilter "Add-ValueToArray" -Show All

Pester – Het test framework voor PowerShell

Nu we weten welke testen er fout gaan, kunnen we deze oplossen en alle tests in één keer draaien.

Invoke-Pester -Show All

Pester – Het test framework voor PowerShell

Conclusie

Met Pester is het mogelijk om de functionaliteit van PowerShell scripts te testen. Hiermee is te valideren dat de scripts werken zoals verwacht. Fouten worden sneller ontdekt en toekomstige wijzigingen in het script hebben de validatie dat de oudere code nog steeds naar behoren functioneert. Met deze twee voorbeelden is er maar een klein gedeelte van de mogelijkheden getoond. Ga voor meer informatie en voorbeelden naar https://pester.dev.

Peter Barendse, DevOps Engineer

  • Wil jij ook werken aan een Modern Ontwikkelproces bij klanten? Bekijk vacatures!
  • Neem contact met ons op

    Contactverzoek

    • Dit veld is bedoeld voor validatiedoeleinden en moet niet worden gewijzigd.
  • Pascal Kruijmel

    Account Manager

    Plan een meeting

      • LinkedIn
      • Mail
      • Telefoon
      • 085 – 487 52 22
        pascalk@delta-n.nl
        Connect met Pascal
        invisible box