今日はインフラのUnitテストについて自分なりに経験したことを書いていければ良いと思っています。
ちなみにwikipediaでは、以下のように書かれています。
プログラムを構成する比較的小さな単位(ユニット)が個々の機能を正しく果たしているかどうかを検証するテスト
なるほど。確かにそうだと思います。
システムの一部のモジュールの正否判定をして、
望む挙動になるか、変な引数を入れたらエラーになるかなどを確かめます。
でもインフラのUnitテストはちょっと違うように思います。
インフラのUnitテストとは
簡単に言うと、
インフラエンジニアがソフトウェアに対して行った設定が正しく設定されているか、
正しく動作しているかを確かめるテストです。
具体例を挙げるとすると、
Postfixの場合だと「mydomain」でメールアドレスで使うドメイン名が正しく設定されているかを確認します。
Postfixの設定ファイルにgmail.comというドメイン名が設定されているとします。
mydomain = gmail.com
それをコマンドで標準出力させ、
期待する正しい値を確認します。
ここでいうと「mydomain = gmail.com」が返ってくれば単体テストは正とします。
# grep mydomain /etc/postfix/main.cf
mydomain = gmail.com
#
ちなみにデフォルト値の確認などは行いません。
なぜならシステム要件によって変更しなければいけない値だからこそ、
確認する必要があるからです。
デフォルト値はシステム要件とは関係ないので、
デフォルト値なんです。
Unitテスト項目
テスト観点を踏まえて、
Unitテストで主に確認しなければいけないと言われている点は以下になります。
・パラメータ確認
・プロセス確認
・サービス起動確認
・ポート確認
・起動停止確認、二重停止二重起動確認
・ログ確認
・エラーログ確認
・PP機能確認(Postfixならばメールが送れることを確認)
最近はServerspecやGospecなどのインフラの自動テストツールがありますが、
根本的にこの考えが出来ていないとテストコードが作れません。
皆さんの参考になれば幸いです。