subtitle

RaiseTechの各種コースをはじめとしたイロイロな学習の記録

構築したAWS環境をServerspecを使って自動テストする

Serverspecとは?

Serverspecは、サーバーの構成などのインフラ環境を自動でテストするOSSのテスティングフレームワーク。

CloudFormationなどを使って自動で環境構築した場合に、仕様通りの環境が正しく構成されているかが分かりにくいので、Serverspecを使って自動でテストするのがラクである。

Serverspecの概要はここ



ServerSpecでテストする環境

今回テストを実施する環境は、

AWS環境構築7で作成したEC2とRDSに対して、ALBを追加したもの。

ローカルPCからSSHでEC2に接続して、そのEC2上で自分自身(localhost)をテストする。


なぜCloudFormationで作成した前回の環境を使わないのかと言うと、ちょっと色々インストールがめんどくさいからw

今回は、あくまでもServerspecを使ってみたいというのがメインテーマなので、前回の環境を使ったテストは、次回以降の記事で。(今本当に時間がないw)



Serverspecを使うためにインストールが必要なもの

  1. ruby
  2. gem
  3. bundler
  4. rake
  5. 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のテストコードを動かす環境を作成することができたのでこれでおしまい。