LinerScript

主にシェルスクリプトだけでテスト環境が完結するタイプです。一般的にテスト対象、テストコード共に参照透過性が高く、それにともないテストを自動化した際の効率と効果も期待できますが、シェルだけで完結するタイプの製品にしか使えません。組み込みOSやネットワーク機器等が想定されます。

expect コマンド(UNIX/Linux系標準装備)

TclをベースとしたCLI環境で対話的なオペレーションを実現するためのコマンドです。元々はシステム管理者の作業を自動化するために用意されたものですが、テスト自動化エンジニアの視点からもおいしい環境と言えます。例えば、とあるサーバのssh待ち受けポートが22番ではないことを確認するexpectスクリプトは以下の様になります。

※一般的にsshのポートはdefaultから変更すべきとされています

#!/usr/bin/expect
set timeout 5
spawn ssh example.com -p $argv
expect {

"Connection refused" {puts "PASSED"; exit}

"password:" {puts "FAILED"; exit}

}
interact

上記を text1.sh などとして保存し、このまま実行するか、 expect コマンドの引数として渡す形で実行します。第一引数で閉じていることが期待されるポート番号(例えば22)を渡し、sshを別プロセスで実行し、もし "password:" という文字列が表示されれば(= そのポートで受け付けている) FAILED という文字列を返します。