Serverspecとは?
Serverspecは、サーバーの構成などのインフラ環境を自動でテストするOSSのテスティングフレームワーク。
CloudFormationなどを使って自動で環境構築した場合に、仕様通りの環境が正しく構成されているかが分かりにくいので、Serverspecを使って自動でテストするのがラクである。
Serverspecの概要はここ。
ServerSpecでテストする環境
今回テストを実施する環境は、
AWS環境構築7で作成したEC2とRDSに対して、ALBを追加したもの。
ローカルPCからSSHでEC2に接続して、そのEC2上で自分自身(localhost)をテストする。
なぜCloudFormationで作成した前回の環境を使わないのかと言うと、ちょっと色々インストールがめんどくさいからw
今回は、あくまでもServerspecを使ってみたいというのがメインテーマなので、前回の環境を使ったテストは、次回以降の記事で。(今本当に時間がないw)
Serverspecを使うためにインストールが必要なもの
- ruby
- gem
- bundler
- rake
- serverspec
1~3まではインストール済みなので、rakeとserverspecをインストールしていく。
rakeとserverspecのインストール
rakeとは、rubyで処理内容を定義するビルドツール。
Rakefileというものがあって、これはrakeが実行する処理を定義できる。(Makefileみたいなもの。)
まずは、Gemfileにrakeとserverspecを記載。
source 'https://rubygems.org' gem 'rake' gem 'serverspec'
Gemfileが書けたら、bundle installを実行
Serverspecの初期設定
rakeとserverspecがインストールできたら、次はServerspecの初期設定。
まずは、テストフォルダを作成(作らなくてもいいが、作った方が分かりやすいので作っておく。)
mkdir test2
作成したtest2フォルダに移動して、Serverspecの初期化
bundle exec serverspec-init
- OS typeは「UN*X」を選択
- backend type(接続方法)は「Exec(local)」を選択
初期設定が完了すると、いくつかファイルが増えている
sample_apl
∟ test2
| ・Rakefile
| ・.rspec
∟ spec
| ・spec_helper.rb
∟ localhost
・sample_spec.rb ※テストスクリプト本体
Serverspecのテスト実行
bundle exec rake spec
80番ポートがListen状態になっているかどうかをテストする。
Faileという結果が表示されている。(Serverspecとしてのテスト自体は実行されている)
テストをPassさせる方法や、デフォルトで指定されている以外のテストを実行する場合については、次の記事に書く。
今回は、ひとまずServerspecのテストコードを動かす環境を作成することができたのでこれでおしまい。