Testing
The goal of testing in PowerShell is to ensure that the code works as intended. Automatic testing ensures that this continues to be the case as code is changed over time.
Testing often begins before code is ready to execute. PSScriptAnalyzer
can look at code and provide advice on possible best practices that help prevent common mistakes. PSScriptAnalyzer
uses what is known as static analysis.
Unit testing, the testing of the smallest units of code, starts when the code is ready to execute. Tests can be created before the code when following practices such as Test-Driven Development (TDD). A unit test focuses on the smallest parts of a module, the functions, and classes. A unit test strives to validate the inner workings of a unit of code, ensuring that conditions evaluate correctly, that it terminates or returns where it should, and so on.
Testing might extend into systems and acceptance testing, although this often requires a test environment to act against. Acceptance testing may include black-box testing, which is used to verify that a command accepts known parameters and generates an expected set of results. Black-box testing, as the name suggests, does not concern itself with understanding how a block of code arrives at a result.
This chapter makes use of Pester, a PowerShell module that provides a framework for authoring tests.
This chapter covers the following topics:
- Static analysis
- Testing with Pester
This chapter makes use of several modules that must be installed; let’s cover those first.