知識マップ: PesterによるPowerShellのテスト整備 ── 運用スクリプトを壊しにくくする実務の型

記事「PesterによるPowerShellのテスト整備 ── 運用スクリプトを壊しにくくする実務の型」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。

この記事はPowerShellの運用スクリプトをPester v5で壊しにくくする実務手順を、テスト対象を守る仕組みの関係として整理します。Pesterは$TestDriveで本物のファイルに触れずにファイル操作を検証し、Mockで削除や通知のような危険操作を実行せず呼び出し条件だけを確認します。削除対象を選ぶ関数を危険な変更処理より先に切り出してテストし、日時をGet-Dateの直接呼び出しではなく引数として渡すことでテストの不安定性を防ぎます。GitHub ActionsやAzure PipelinesはPesterの実行を自動化しますが、Windowsに同梱される旧バージョンのPesterとは別に明示的な再インストールが必要で、社内プロキシやTLS設定がInstall-Moduleによるモジュール導入を妨げることもあります。

PesterによるPowerShellテスト整備の知識マップPesterがPowerShellスクリプトを検証するテストフレームワークであり、TestDriveでファイル操作を、Mockで削除等の危険操作を安全に検証し、対象選定関数を危険操作より先に固め、日時を引数化してテストの不安定性を防ぎ、GitHub ActionsやAzure PipelinesでCIとして自動化する一方、Windows同梱の旧バージョンとの違いや社内プロキシによる導入阻害に注意する必要があることを示す図利用する利用する利用する利用する利用する軽減する推奨される対応軽減する自動化する自動化する両立しない両立しないで確認できる利用する前提とするより先に行うべき防止する利用するPesterPowerShell$TestDrivePesterのモック(Mock)Pesterのタグ(Tag)PesterのCode CoverageSupportsShouldProcess(-WhatIf)危険操作(削除・移動・上書きなど)GitHub ActionsAzure Pipelines社内プロキシ/TLSによるモジュール導入の阻害Install-ModuleによるPowerShell Galleryからの導入閉域ネットワーク対象選定を切り出した関数日付の引数化(Now引数)テストの不安定性(flaky test)

概念間の関係(全18件)

図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。

主要概念の定義

Pester
PowerShellスクリプトの自動テストを書くためのテストフレームワーク。
PowerShell
オブジェクトパイプラインとエラー処理機構を持つ、Microsoftが最も堅牢で最新のWindows自動化に推奨するコマンドラインシェル兼スクリプト言語。
SupportsShouldProcess(-WhatIf)
PowerShellの関数に-WhatIf/-Confirmパラメーターを持たせ、実行前に何が行われるかを予行確認できるようにするCmdletBindingの機構。
Pesterのモック(Mock)
Pesterが提供する、実際のコマンドの呼び出しをテスト用の代替実装に差し替える機能。
$TestDrive
Pesterがテストごとに用意する、テスト終了時に自動的に削除される一時フォルダーを指す変数。
GitHub Actions
GitHubが提供する、リポジトリのイベントをトリガーにワークフローを実行するCI/CDサービス。
Azure Pipelines
Microsoftが提供する、ビルド・テスト・デプロイのパイプラインを実行するCI/CDサービス。
社内プロキシ/TLSによるモジュール導入の阻害
社内プロキシ未設定・TLS 1.2未有効・NuGetプロバイダー未導入などが重なり、社内端末からのInstall-ModuleがPowerShell Galleryに到達できず失敗する状態。
閉域ネットワーク
インターネットに接続せずに運用する隔離されたネットワーク。
危険操作(削除・移動・上書きなど)
削除・移動・上書き・サービス再起動・権限変更のような、少しの条件ミスが事故につながるPowerShellの変更操作。
Install-ModuleによるPowerShell Galleryからの導入
PowerShell Galleryが公開するモジュールを、Install-Moduleコマンドレットでローカルにインストールする手段。
対象選定を切り出した関数
削除・移動などの変更処理から、対象を選ぶロジックだけを独立した関数として切り出す設計。戻り値をテストで確認しやすくする。
日付の引数化(Now引数)
関数内でGet-Dateを直接使わず、日時を引数として外部から渡せるようにする設計。テストで日付を固定できるようにする。

機械可読データ

このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。