Quando você executa um script, como pode ter certeza de que ele fez exatamente o que você pretendia? Talvez tenha removido um arquivo ou parado um serviço. Mas será que fez isso perfeitamente em todos os ambientes, sessões de usuário ou máquinas em que tocou? Se o seu script impacta dezenas, testar com o Pester é a sua melhor aposta.
O Pester, o poderoso módulo do PowerShell, ajuda você a escrever testes automatizados usando uma linguagem específica de domínio (DSL). Neste tutorial, você aprenderá a eliminar as suposições e criar um processo sólido para validar seus scripts.
Prepare-se e deixe o Pester aumentar sua confiança em scripts!
Instalando e Configurando o Pester
O Pester garante que as ações do seu script correspondam às suas expectativas em qualquer ambiente. Testar com o Pester é uma habilidade essencial para gerenciar infraestrutura com o PowerShell.
Mas primeiro, precisamos instalar o Pester para criar alguns testes em torno de um script que provisiona um servidor para ver como os testes do Pester funcionam.
Você pode baixar o módulo Pester
da Galeria do PowerShell:
Install-Module Pester
Se você encontrar um aviso, pode ser porque os clientes do Windows 10 (e posteriores) têm uma versão mais antiga do Pester instalada por padrão. Por exemplo, a versão 3.4.0 é frequentemente pré-instalada.
Certifique-se de remover a versão antiga para evitar conflitos:
$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
Este script assume a propriedade da pasta do Pester 3.4.0, atualiza as permissões e a remove.
Instale a versão mais recente do Pester acrescentando o parâmetro -Force
:
Install-Module Pester -Force
Pode ver outro aviso relacionado com a assinatura da nova versão. A Microsoft assinou a versão pré-instalada, enquanto o mantenedor do Pester, Jakub, assinou a versão mais recente.
Verifique a versão instalada com o seguinte comando:
Get-Module -Name Pester -ListAvailable
Criando um Arquivo de Teste Pester
Agora que o Pester está instalado, vamos criar alguns testes. Para fins de demonstração, suponha que um script tem a tarefa de instalar o recurso do Windows IIS.
Crie um script do PowerShell chamado ServerProvisioning.Tests.ps1 no diretório desejado; digamos que esteja na sua pasta ~\Documentos.
Em seguida, execute os testes do Pester com o cmdlet Invoke-Pester
:
cd ~\Documents Invoke-Pester
A execução deste comando sem testes disponíveis resulta em nenhum teste sendo executado.
Vamos adicionar alguns testes usando a estrutura de blocos hierárquicos do Pester, onde:
describe
representa uma categoria de testes, como a funcionalidade principal de um script.context
organiza opcionalmente testes em subcategorias.it
define testes individuais.
describe 'IIS' { context 'Windows features' { it 'installs the Web-Server Windows feature' { } } } describe 'RegistryTweaks' { } describe 'SoftwareInstalls' { }
Adicionando e Executando um Teste
Imagine um script que provisiona um servidor, mas esquece um passo crucial, como habilitar um recurso necessário. Se não for verificado, essa omissão pode causar problemas em cascata na produção.
Suponha que o script de provisionamento do servidor tenha sido executado e a tarefa seja confirmar se o recurso Web-Server
está instalado. Se sim, faça uma verificação manual.
Execute o seguinte comando para verificar manualmente se o recurso Web-Server
(IIS) está instalado no servidor remoto.
Invoke-Command -ComputerName SRV1 -ScriptBlock { (Get-WindowsFeature -ComputerName SRV1 -Name Web-Server).Installed }
Este comando retorna True
se o recurso estiver instalado e False
caso contrário.
Agora, adicione o seguinte ao bloco it
para automatizar este teste. O operador should
com a condição -BeTrue
afirma que o recurso está instalado.
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 } } }
Por fim, execute o teste novamente:
cd ~\documents Invoke-Pester
Como esperado, o teste falhará se o recurso não estiver instalado.
O VS Code também possui uma ótima integração com o Pester. Em vez de executar Invoke-Pester
, você pode clicar no item Run Tests
em testes individuais diretamente no VS Code. Esta ação invoca testes específicos.
Conclusão
Neste tutorial, você aprendeu como usar o Pester para automatizar testes para seus scripts PowerShell. Você cobriu os passos fundamentais para validar seus scripts de forma eficaz. Esses passos incluem instalar e configurar o Pester, criar um arquivo de teste e escrever seu primeiro teste automatizado.
Construa sobre esta base explorando como o Pester pode lidar com cenários mais avançados, como testar APIs, simular comandos ou executar validações de pré e pós-implantação.
À medida que você integra o Pester em seu fluxo de trabalho, você melhorará seus scripts e ganhará confiança em sua confiabilidade—escalando suas iniciativas de automação com confiança!
Source:
https://adamtheautomator.com/powershell-pester-testing-guide/