Quando esegui uno script, come puoi essere sicuro che abbia fatto esattamente ciò che intendevi? Forse ha rimosso un file o fermato un servizio. Ma lo ha fatto in modo impeccabile in ogni ambiente, sessione utente o macchina interessata? Se il tuo script influisce su decine di elementi, testare con Pester è la scelta migliore.
Pester, il potente modulo PowerShell, ti aiuta a scrivere test automatizzati utilizzando un linguaggio di dominio specifico (DSL). In questo tutorial, imparerai ad eliminare le congetture e creare un processo robusto per convalidare i tuoi script.
Preparati e lascia che Pester aumenti la tua fiducia nello scripting!
Installazione e Configurazione di Pester
Pester garantisce che le azioni dello script corrispondano alle tue aspettative in qualsiasi ambiente. Testare con Pester è una competenza essenziale per gestire l’infrastruttura con PowerShell.
Ma prima, è necessario installare Pester per creare alcuni test attorno a uno script che provvede a un server per vedere come funzionano i test di Pester.
Puoi scaricare il modulo Pester
dalla PowerShell Gallery:
Install-Module Pester
Se incontri un avviso, potrebbe essere perché i client Windows 10 (e successivi) hanno installata per impostazione predefinita una versione precedente di Pester. Ad esempio, la versione 3.4.0 è spesso preinstallata.
Assicurati di rimuovere la vecchia versione per evitare conflitti:
$module = "C:\Program Files\WindowsPowerShell\Modules\Pester\3.4.0" takeown /F $module /A /R icacls $module /reset icacls $module /grant "*S-1-5-32-544:F" /inheritance:d /T Remove-Item -Path $module -Recurse -Force -Confirm:$false
Questo script assume la proprietà della cartella di Pester 3.4.0, aggiorna le autorizzazioni e la rimuove.
Installa l’ultima versione di Pester aggiungendo il parametro -Force
:
Install-Module Pester -Force
Potresti vedere un altro avviso riguardante la firma della nuova versione. Microsoft ha firmato la versione pre-installata, mentre il responsabile di Pester, Jakub, ha firmato l’ultima versione.
Verifica la versione installata con il seguente comando:
Get-Module -Name Pester -ListAvailable
Creazione di un File di Test Pester
Ora che Pester è installato, creiamo alcuni test. Per scopi dimostrativi, supponiamo che uno script sia incaricato di installare la funzionalità Windows IIS.
Crea uno script PowerShell chiamato ServerProvisioning.Tests.ps1 nella directory desiderata; diciamo che si trova nella cartella ~\Documenti.
Successivamente, esegui i test Pester con il cmdlet Invoke-Pester
:
cd ~\Documents Invoke-Pester
Eseguire questo comando senza test disponibili comporta l’assenza di esecuzione di test.
Aggiungiamo alcuni test utilizzando la struttura a blocchi gerarchici di Pester, dove:
describe
rappresenta una categoria di test, come ad esempio la funzionalità principale di uno script.context
organizza facoltativamente i test in sottocategorie.it
definisce singoli test.
describe 'IIS' { context 'Windows features' { it 'installs the Web-Server Windows feature' { } } } describe 'RegistryTweaks' { } describe 'SoftwareInstalls' { }
Aggiunta ed Esecuzione di un Test
Immagina uno script che provvede a un server ma trascura un passaggio cruciale, come ad esempio abilitare una funzionalità richiesta. Se non controllato, tale omissione può causare problemi a cascata in produzione.
Supponiamo che lo script di provisioning del server sia stato eseguito e il compito è confermare che la funzionalità Web-Server
sia installata. In tal caso, esegui un controllo manuale.
Esegui il seguente comando per controllare manualmente se la funzionalità Web-Server
(IIS) è installata sul server remoto.
Invoke-Command -ComputerName SRV1 -ScriptBlock { (Get-WindowsFeature -ComputerName SRV1 -Name Web-Server).Installed }
Questo comando restituisce True
se la funzionalità è installata e False
in caso contrario.
Ora, aggiungi il seguente blocco it
per automatizzare questo test. L’operatore should
con la condizione -BeTrue
afferma che la funzionalità è installata.
describe 'IIS' { context 'Windows features' { it 'installs the Web-Server Windows feature' { Invoke-Command -ComputerName SRV1 -ScriptBlock { (Get-WindowsFeature -ComputerName SRV1 -Name Web-Server).Installed } | should -BeTrue } } }
Infine, riesegui il test:
cd ~\documents Invoke-Pester
Come previsto, il test fallirà se la funzionalità non è installata.
VS Code ha anche una grande integrazione con Pester. Invece di eseguire Invoke-Pester
, puoi fare clic sull’elemento Run Tests
sui singoli test direttamente in VS Code. Questa azione invoca test specifici.
Conclusione
In questo tutorial, hai imparato come utilizzare Pester per automatizzare il testing dei tuoi script PowerShell. Hai coperto i passi fondamentali per convalidare i tuoi script in modo efficace. Questi passaggi includono l’installazione e la configurazione di Pester, la creazione di un file di test e la scrittura del tuo primo test automatizzato.
Costruisci su questa base esplorando come Pester possa gestire scenari più avanzati, come testare API, simulare comandi o eseguire validazioni pre e post-deployment.
Man mano che integri Pester nel tuo flusso di lavoro, migliorerai i tuoi script e guadagnerai fiducia nella loro affidabilità—scala con sicurezza i tuoi sforzi di automazione!
Source:
https://adamtheautomator.com/powershell-pester-testing-guide/